From c3628c096df4b0d943385f610d95bc2dae92a4d8 Mon Sep 17 00:00:00 2001 From: Mael Gaonach <mael.gaonach@esrf.fr> Date: Mon, 6 Nov 2023 16:46:58 +0100 Subject: [PATCH] Resolve "Implement new landing page" --- .eslintignore | 7 + .gitignore | 81 +- .gitlab-ci.yml | 46 +- .gitlab/validate.yml | 8 + .prettierignore | 1 + .prettierrc | 3 + .vscode/settings.json | 27 + Dockerfile | 15 - LICENSE | 21 - Readme.md | 79 +- apps/doi-landing-page/.eslintignore | 4 + apps/doi-landing-page/.eslintrc.cjs | 26 + apps/doi-landing-page/.gitignore | 24 + apps/doi-landing-page/.prettierignore | 25 + apps/doi-landing-page/.prettierrc | 3 + apps/doi-landing-page/index.html | 13 + apps/doi-landing-page/package.json | 41 + apps/doi-landing-page/pnpm-lock.yaml | 4820 +++++ .../doi-landing-page/public/esrf-white.png | Bin apps/doi-landing-page/public/favicon.ico | Bin 0 -> 2958 bytes apps/doi-landing-page/src/App.scss | 19 + apps/doi-landing-page/src/App.tsx | 19 + apps/doi-landing-page/src/config/config.ts | 3 + apps/doi-landing-page/src/hooks/path.ts | 22 + .../src/landingPage/LandingPage.tsx | 13 + .../src/landingPage/LandingPageContainer.tsx | 21 + apps/doi-landing-page/src/main.tsx | 9 + apps/doi-landing-page/src/routes.tsx | 20 + .../src/routing/AppRouter.tsx | 17 + .../src/routing/PageNotFound.tsx | 5 + apps/doi-landing-page/src/vite-env.d.ts | 1 + apps/doi-landing-page/tsconfig.json | 14 + apps/doi-landing-page/tsconfig.node.json | 9 + apps/doi-landing-page/vite.config.ts | 12 + build.sh | 1 - myHttpd.conf | 544 - package.json | 18 + packages/doi/.eslintignore | 4 + packages/doi/.eslintrc.cjs | 26 + packages/doi/.gitignore | 24 + packages/doi/.prettierignore | 1 + packages/doi/.prettierrc | 3 + packages/doi/package.json | 56 + packages/doi/src/assets/orcid.png | Bin 0 -> 821 bytes packages/doi/src/components/CopyValue.tsx | 59 + .../doi/src/components/DOIInfo/DOIBadge.tsx | 57 + .../doi/src/components/DOIInfo/DOICited.tsx | 54 + .../src/components/DOIInfo/DOIDataAccess.tsx | 72 + .../src/components/DOIInfo/DOIDescription.tsx | 14 + .../DOIInfo/DOIExperimentReport.tsx | 18 + .../DOIInfo/DOIExperimentReportESRF.tsx | 81 + .../doi/src/components/DOIInfo/DOIInfo.tsx | 62 + .../src/components/DOIInfo/DOIMetatada.tsx | 143 + .../components/DOIInfo/DOIParticipants.tsx | 70 + .../src/components/DOIInfo/DOIReference.tsx | 72 + .../doi/src/components/DOIInfo/DOIRelated.tsx | 32 + .../doi/src/components/DOIInfo/DOITitle.tsx | 5 + .../doi/src/components/DOIInfo/DOITypes.tsx | 37 + packages/doi/src/components/DOINotFound.tsx | 5 + .../doi/src/components/FetchAndDisplayDOI.tsx | 41 + packages/doi/src/components/Loading.tsx | 10 + packages/doi/src/config/config.ts | 47 + packages/doi/src/constants/doi.ts | 17 + packages/doi/src/fetch/crosscite.ts | 12 + packages/doi/src/fetch/datacite.ts | 11 + packages/doi/src/fetch/fetching.tsx | 167 + packages/doi/src/fetch/icatplus.ts | 21 + packages/doi/src/fetch/opencitation.ts | 11 + packages/doi/src/fetch/userportal.ts | 11 + packages/doi/src/index.tsx | 2 + packages/doi/src/model/datacite.ts | 65 + packages/doi/src/model/doi.ts | 19 + packages/doi/src/model/icatplus.ts | 12 + packages/doi/src/model/opencitation.ts | 10 + packages/doi/src/utils/accessibility.ts | 33 + packages/doi/src/utils/datacite.ts | 87 + packages/doi/src/utils/icatplus.ts | 6 + packages/doi/src/utils/userportal.ts | 41 + packages/doi/tsconfig.json | 10 + packages/doi/tsconfig.node.json | 9 + packages/doi/vite.config.ts | 34 + pnpm-lock.yaml | 5119 +++++ pnpm-workspace.yaml | 3 + run.sh | 1 - tsconfig.json | 30 + www/.htaccess | 22 - www/Gruntfile.js | 102 - www/bower.json | 44 - www/css/doi.css | 371 - www/dev.html | 94 - www/dev.tpl.html | 74 - www/googlea9107bd1e2baeb72.html | 1 - www/index.html | 93 - www/karma.conf.js | 74 - www/min/components.min.js | 17691 ---------------- www/min/doi.min.js | 1123 - www/min/output.min.css | 6 - www/min/precompiled.templates.min.js | 7 - www/package.json | 38 - www/sitemap.txt | 522 - www/src/ESRF-DC-142893590.js | 137 - www/src/ESRF-DC-142915526.js | 81 - www/src/author.js | 120 - www/src/beamlineurl.js | 116 - www/src/citation.js | 80 - www/src/constants.js | 4 - www/src/doiData.js | 35 - www/src/doicontroller.js | 308 - www/src/doiview.js | 215 - www/src/event.js | 31 - www/src/experimentalreportcontroller.js | 84 - www/src/googleMetadataObject.js | 55 - www/src/images/88x31.png | Bin 1468 -> 0 bytes www/src/images/ajaxloader.gif | Bin 7364 -> 0 bytes www/src/images/esrfLogoBlue.png | Bin 28059 -> 0 bytes www/src/images/favicon.ico | Bin 15086 -> 0 bytes www/src/jsonextractor.js | 293 - www/src/metadataTableHelper.js | 66 - www/templates/badges_tpl.js | 36 - www/templates/doinotfound2_tpl.js | 1 - www/templates/doinotfound_tpl.js | 9 - www/templates/experimentalreport_tpl.js | 49 - www/templates/landingpage_tpl.js | 143 - www/templates/metadata_tpl.js | 105 - www/templates/welcome_tpl.js | 72 - www/tests/citation.test.js | 40 - www/tests/doiController.test.js | 83 - www/tests/doiData.test.js | 22 - www/tests/googleMetadataObject.test.js | 47 - www/tests/jsonExtractor.test.js | 124 - www/tests/readme.txt | 4 - www/tests/resources/doiLibrary.resource.js | 180 - .../googleMetadataLibrary.resource.js | 90 - .../googleMetadataObject.resource.js | 239 - www/tests/resources/jsonExtractor.resource.js | 289 - www/tests/testSamples.js | 101 - 136 files changed, 11980 insertions(+), 24256 deletions(-) create mode 100644 .eslintignore create mode 100644 .gitlab/validate.yml create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .vscode/settings.json delete mode 100644 Dockerfile delete mode 100644 LICENSE create mode 100644 apps/doi-landing-page/.eslintignore create mode 100644 apps/doi-landing-page/.eslintrc.cjs create mode 100644 apps/doi-landing-page/.gitignore create mode 100644 apps/doi-landing-page/.prettierignore create mode 100644 apps/doi-landing-page/.prettierrc create mode 100644 apps/doi-landing-page/index.html create mode 100644 apps/doi-landing-page/package.json create mode 100644 apps/doi-landing-page/pnpm-lock.yaml rename www/src/images/esrflogo.png => apps/doi-landing-page/public/esrf-white.png (100%) create mode 100644 apps/doi-landing-page/public/favicon.ico create mode 100644 apps/doi-landing-page/src/App.scss create mode 100644 apps/doi-landing-page/src/App.tsx create mode 100644 apps/doi-landing-page/src/config/config.ts create mode 100644 apps/doi-landing-page/src/hooks/path.ts create mode 100644 apps/doi-landing-page/src/landingPage/LandingPage.tsx create mode 100644 apps/doi-landing-page/src/landingPage/LandingPageContainer.tsx create mode 100644 apps/doi-landing-page/src/main.tsx create mode 100644 apps/doi-landing-page/src/routes.tsx create mode 100644 apps/doi-landing-page/src/routing/AppRouter.tsx create mode 100644 apps/doi-landing-page/src/routing/PageNotFound.tsx create mode 100644 apps/doi-landing-page/src/vite-env.d.ts create mode 100644 apps/doi-landing-page/tsconfig.json create mode 100644 apps/doi-landing-page/tsconfig.node.json create mode 100644 apps/doi-landing-page/vite.config.ts delete mode 100755 build.sh delete mode 100644 myHttpd.conf create mode 100644 package.json create mode 100644 packages/doi/.eslintignore create mode 100644 packages/doi/.eslintrc.cjs create mode 100644 packages/doi/.gitignore create mode 100644 packages/doi/.prettierignore create mode 100644 packages/doi/.prettierrc create mode 100644 packages/doi/package.json create mode 100644 packages/doi/src/assets/orcid.png create mode 100644 packages/doi/src/components/CopyValue.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOIBadge.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOICited.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOIDataAccess.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOIDescription.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOIExperimentReport.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOIExperimentReportESRF.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOIInfo.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOIMetatada.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOIParticipants.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOIReference.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOIRelated.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOITitle.tsx create mode 100644 packages/doi/src/components/DOIInfo/DOITypes.tsx create mode 100644 packages/doi/src/components/DOINotFound.tsx create mode 100644 packages/doi/src/components/FetchAndDisplayDOI.tsx create mode 100644 packages/doi/src/components/Loading.tsx create mode 100644 packages/doi/src/config/config.ts create mode 100644 packages/doi/src/constants/doi.ts create mode 100644 packages/doi/src/fetch/crosscite.ts create mode 100644 packages/doi/src/fetch/datacite.ts create mode 100644 packages/doi/src/fetch/fetching.tsx create mode 100644 packages/doi/src/fetch/icatplus.ts create mode 100644 packages/doi/src/fetch/opencitation.ts create mode 100644 packages/doi/src/fetch/userportal.ts create mode 100644 packages/doi/src/index.tsx create mode 100644 packages/doi/src/model/datacite.ts create mode 100644 packages/doi/src/model/doi.ts create mode 100644 packages/doi/src/model/icatplus.ts create mode 100644 packages/doi/src/model/opencitation.ts create mode 100644 packages/doi/src/utils/accessibility.ts create mode 100644 packages/doi/src/utils/datacite.ts create mode 100644 packages/doi/src/utils/icatplus.ts create mode 100644 packages/doi/src/utils/userportal.ts create mode 100644 packages/doi/tsconfig.json create mode 100644 packages/doi/tsconfig.node.json create mode 100644 packages/doi/vite.config.ts create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml delete mode 100755 run.sh create mode 100644 tsconfig.json delete mode 100644 www/.htaccess delete mode 100644 www/Gruntfile.js delete mode 100644 www/bower.json delete mode 100644 www/css/doi.css delete mode 100644 www/dev.html delete mode 100644 www/dev.tpl.html delete mode 100644 www/googlea9107bd1e2baeb72.html delete mode 100644 www/index.html delete mode 100644 www/karma.conf.js delete mode 100644 www/min/components.min.js delete mode 100644 www/min/doi.min.js delete mode 100644 www/min/output.min.css delete mode 100644 www/min/precompiled.templates.min.js delete mode 100644 www/package.json delete mode 100644 www/sitemap.txt delete mode 100644 www/src/ESRF-DC-142893590.js delete mode 100644 www/src/ESRF-DC-142915526.js delete mode 100644 www/src/author.js delete mode 100644 www/src/beamlineurl.js delete mode 100644 www/src/citation.js delete mode 100644 www/src/constants.js delete mode 100644 www/src/doiData.js delete mode 100644 www/src/doicontroller.js delete mode 100644 www/src/doiview.js delete mode 100644 www/src/event.js delete mode 100644 www/src/experimentalreportcontroller.js delete mode 100644 www/src/googleMetadataObject.js delete mode 100644 www/src/images/88x31.png delete mode 100644 www/src/images/ajaxloader.gif delete mode 100644 www/src/images/esrfLogoBlue.png delete mode 100644 www/src/images/favicon.ico delete mode 100644 www/src/jsonextractor.js delete mode 100644 www/src/metadataTableHelper.js delete mode 100644 www/templates/badges_tpl.js delete mode 100644 www/templates/doinotfound2_tpl.js delete mode 100644 www/templates/doinotfound_tpl.js delete mode 100644 www/templates/experimentalreport_tpl.js delete mode 100644 www/templates/landingpage_tpl.js delete mode 100644 www/templates/metadata_tpl.js delete mode 100644 www/templates/welcome_tpl.js delete mode 100644 www/tests/citation.test.js delete mode 100644 www/tests/doiController.test.js delete mode 100644 www/tests/doiData.test.js delete mode 100644 www/tests/googleMetadataObject.test.js delete mode 100644 www/tests/jsonExtractor.test.js delete mode 100644 www/tests/readme.txt delete mode 100644 www/tests/resources/doiLibrary.resource.js delete mode 100644 www/tests/resources/googleMetadataLibrary.resource.js delete mode 100644 www/tests/resources/googleMetadataObject.resource.js delete mode 100644 www/tests/resources/jsonExtractor.resource.js delete mode 100644 www/tests/testSamples.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..9c1eaae --- /dev/null +++ b/.eslintignore @@ -0,0 +1,7 @@ +/dist*/ +/node_modules/ +.eslintrc.cjs +eslint.shared.js +vite.config.ts +/apps/ +/packages/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index 175bbc7..6c9dce2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,60 +1,25 @@ -npm-debug.log -node_modules/ -bower_components/ -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.loadpath -.recommenders -package-lock.json +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local +.vite + +# Editor directories and files +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? -# External tool builders -.externalToolBuilders/ -# Locally stored "Eclipse launch configurations" -*.launch - -# PyDev specific (Python IDE for Eclipse) -*.pydevproject - -# CDT-specific (C/C++ Development Tooling) -.cproject - -# Java annotation processor (APT) -.factorypath - -# PDT-specific (PHP Development Tools) -.buildpath - -# sbteclipse plugin -.target - -# Tern plugin -.tern-project - -# TeXlipse plugin -.texlipse - -# STS (Spring Tool Suite) -.springBeans - -# Code Recommenders -.recommenders/ - -# Scala IDE specific (Scala & Java development for Eclipse) -.cache-main -.scala_dependencies -.worksheet - -# eclipse project file -.settings/ -.classpath -.project - -# reports generated by grunt plato module -www/reports/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 52bb5e9..c0d8367 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,34 +1,18 @@ -image: docker:latest - stages: - - build - - deploy + - validate -build: - stage: build - script: - - docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" "$DOCKER_REGISTRY" - - docker build --pull -t "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" . - - docker image tag "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:latest" - - docker push "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" - - docker push "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:latest" - except: - - master +.pnpm: + image: node:16-alpine + cache: &cache + key: '$CI_COMMIT_REF_SLUG' + paths: + - .pnpm-store + policy: pull-push + before_script: + - npm install -g pnpm@8.2.0 + - pnpm config set store-dir .pnpm-store + - pnpm install + needs: [] -deploy_production: - stage: deploy - script: - - docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" "$DOCKER_REGISTRY" - - export http_proxy=http://proxy.esrf.fr:3128 - - 'which ssh-agent || ( apk update && apk add openssh-client )' - - eval $(ssh-agent -s) - - echo "$SSH_DEPLOY_KEY_PROD" | ssh-add - - - mkdir -p ~/.ssh - - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config - - ssh -l gitlab-deploy "$DEPLOY_HOST" "$DOCKER_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" - environment: - name: production - url: http://doi.esrf.fr/ - when: manual - except: - - master +include: + - local: '.gitlab/*.yml' diff --git a/.gitlab/validate.yml b/.gitlab/validate.yml new file mode 100644 index 0000000..b9e0cef --- /dev/null +++ b/.gitlab/validate.yml @@ -0,0 +1,8 @@ +lint: + extends: .pnpm + stage: validate + script: + - pnpm lint:$LINTER + parallel: + matrix: + - LINTER: [eslint, prettier, tsc] diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..544138b --- /dev/null +++ b/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..8f58402 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,27 @@ +{ + "javascript.format.enable": false, + "typescript.format.enable": false, + "json.format.enable": false, + + "js/ts.implicitProjectConfig.checkJs": false, + "css.validate": false, + + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true, + "typescript.preferences.importModuleSpecifier": "non-relative", + + "eslint.codeAction.disableRuleComment": { "location": "sameLine" }, + "eslint.workingDirectories": [ + { "pattern": "./apps/*/" }, + { "pattern": "./packages/*/" } + ], + "eslint.trace.server": "verbose", + "eslint.debug": true, + "files.exclude": {} +} diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index cafe548..0000000 --- a/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM httpd:2.4 - -MAINTAINER Alejandro DE MARIA <demariaa@esrf.fr> - -ENV http_proxy http://proxy.esrf.fr:3128 -ENV https_proxy https://proxy.esrf.fr:3128 -ENV DEBIAN_FRONTEND noninteractive - -# RUN apt-get update -# RUN apt-get install apache2 -y - -ADD www /usr/local/apache2/htdocs/ -COPY myHttpd.conf /usr/local/apache2/conf/httpd.conf -EXPOSE 80 -# CMD /usr/sbin/apache2ctl -D FOREGROUND diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 3f0c68b..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 ICAT - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Readme.md b/Readme.md index 66d43a7..b557502 100644 --- a/Readme.md +++ b/Readme.md @@ -1,77 +1,28 @@ # DOI landing page -## Introduction -This project handles the management of the doi landing page at ESRF. -A person is searching for information from a given DOI code. He/she can go to datacite [search page](https://search.datacite.org/) and will enter the doi code he/she is looking at. In response, from his own database, the datacite server will redirect the search to the doi landing page which is located on esrf server. - -### Usage -In production, the doi landing page is part of a docker container containing an apache2 server. -To perform a request use the following address (provided the page is accessible from doi.esrf.fr) - http://doi.esrf.fr/DOIprefix/DOIsuffix - +## Introduction -## Technicalities for developers +This project implements the DOI landing page. +This landing page gives access to the metadata of the DOI and has a link to the data itself in the data portal. -The grunFile.js has 2 tasks. -* the default task will check and prepare the project for production. js files will be minified and concatanated. Consequently debugging of the js files is not easy using this task. -* the dev task which is meant for debugging purpose. In this case the js files are not minified. +## Structure -### How to develop +The project is composed of two subprojects: -* Fork this project to your github space. -* Change the code to implement a new functionnality or fix issues. +- `apps/doi-landing-page`: The landing page itself. This is a react app which is in charge of resolving the requested route and use the relevant component to render the page. -To test the changes locally on your computer: -* Prepare the project ( check js files, create the dev.html file from the dev.tpl.html template ) -``` -cd www -grunt dev -``` -* Copy the www folder (not all files are needed but it is easy) to apache folder -``` -sudo rm -fr /var/www/html && sudo cp -r www/. /var/www/html/ -``` -* Open your browser and hit the starting page at the following address http://localhost/dev.html?DOI=prefix/suffix -Replace prefix and suffix with real values. Note that the stating page is dev.html. In production , the starting page will be index.html. -* Once you are satisfied with your work, prepare the project for production -``` -cd www -grunt -``` -* Submit a merge request on icat repository at https://gitlab.esrf.fr/icat/doi-landing-page +- `packages/doi/`: The DOI package. Used by `apps/doi-landing-page` and published on npm registry for use by data portal. This package is in charge of fetching the metadata of the DOI and rendering it. -### How to prepare the docker container locally for testing purpose -* Make sure the project is prepared for production (check js files, concatene them, minify them, handle other js dependancies) -``` -grunt -``` -* prepare the docker container -``` -cd rootOfTheProject -sudo ./build.sh -``` +## Development -### How to test the page in production setting (ie using the docker container) -you can install the container locally to your docker instance -* start docker daemon -``` -sudo /etc/init.d/docker start -``` -* install the docker container created before. -``` -cd rootOfTheProject -sudo ./run.sh -``` +This project is using pnpm as package manager. You can install it with `npm install -g pnpm`. -* retrieve the name of the container which has been installed locally listing all none running containers -``` -sudo docker ps -a -``` +To install the dependencies, run `pnpm install` at the root of the project. -* start the given container -``` -sudo docker start nameOfTheContainer -``` +To start developing, go to `apps/doi-landing-page` and run `pnpm dev`. -* access the doi landing page http://localhost:8092/DOIprefix/DOIsuffix +To publish a new version of the `doi` package: +- Go to `packages/doi` +- Update the version in `package.json` +- Run `pnpm package-publish` diff --git a/apps/doi-landing-page/.eslintignore b/apps/doi-landing-page/.eslintignore new file mode 100644 index 0000000..0ed753a --- /dev/null +++ b/apps/doi-landing-page/.eslintignore @@ -0,0 +1,4 @@ +/dist*/ +/node_modules/ +.eslintrc.cjs +vite.config.ts \ No newline at end of file diff --git a/apps/doi-landing-page/.eslintrc.cjs b/apps/doi-landing-page/.eslintrc.cjs new file mode 100644 index 0000000..406cb04 --- /dev/null +++ b/apps/doi-landing-page/.eslintrc.cjs @@ -0,0 +1,26 @@ +module.exports = { + root: true, + extends: [ + 'react-app', + 'react-app/jest', + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', + ], + parser: '@typescript-eslint/parser', + rules: { + 'no-debugger': 'error', + 'no-console': [ + 'error', + { + allow: ['warn', 'error'], + }, + ], + 'react/no-unknown-property': 'off', + 'no-restricted-imports': [ + 'error', + { + patterns: ['.*'], + }, + ], + }, +}; diff --git a/apps/doi-landing-page/.gitignore b/apps/doi-landing-page/.gitignore new file mode 100644 index 0000000..2d65cd9 --- /dev/null +++ b/apps/doi-landing-page/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +.pnpm-store + +# Editor directories and files +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/apps/doi-landing-page/.prettierignore b/apps/doi-landing-page/.prettierignore new file mode 100644 index 0000000..86c2365 --- /dev/null +++ b/apps/doi-landing-page/.prettierignore @@ -0,0 +1,25 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +.pnpm-store +pnpm-lock.yaml + +# Editor directories and files +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/apps/doi-landing-page/.prettierrc b/apps/doi-landing-page/.prettierrc new file mode 100644 index 0000000..544138b --- /dev/null +++ b/apps/doi-landing-page/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/apps/doi-landing-page/index.html b/apps/doi-landing-page/index.html new file mode 100644 index 0000000..201986f --- /dev/null +++ b/apps/doi-landing-page/index.html @@ -0,0 +1,13 @@ +<!doctype html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <link rel="icon" type="image/svg+xml" href="/favicon.ico" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>DOI Landing page</title> + </head> + <body> + <div id="root"></div> + <script type="module" src="/src/main.tsx"></script> + </body> +</html> diff --git a/apps/doi-landing-page/package.json b/apps/doi-landing-page/package.json new file mode 100644 index 0000000..e45f294 --- /dev/null +++ b/apps/doi-landing-page/package.json @@ -0,0 +1,41 @@ +{ + "name": "doi-landing-page", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint:eslint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "lint:tsc": "tsc", + "lint:prettier": "prettier . --check", + "fix:eslint": "eslint \"**/*.{js,cjs,ts,tsx}\" --fix", + "fix:prettier": "prettier . --write", + "preview": "vite preview" + }, + "dependencies": { + "bootstrap": "^5.3.2", + "bootswatch": "^5.3.2", + "react": "^18.2.0", + "react-bootstrap": "^2.9.1", + "react-dom": "^18.2.0", + "react-router-dom": "^6.17.0", + "@edata-portal/doi": "workspace:*" + }, + "devDependencies": { + "@types/react": "^18.2.15", + "@types/react-dom": "^18.2.7", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "@vitejs/plugin-react": "^4.0.3", + "eslint": "^8.45.0", + "eslint-config-react-app": "^7.0.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.3", + "prettier": "^3.0.3", + "sass": "^1.69.5", + "typescript": "^5.2.2", + "vite": "^4.4.5", + "vite-tsconfig-paths": "^4.2.1" + } +} diff --git a/apps/doi-landing-page/pnpm-lock.yaml b/apps/doi-landing-page/pnpm-lock.yaml new file mode 100644 index 0000000..da8d83f --- /dev/null +++ b/apps/doi-landing-page/pnpm-lock.yaml @@ -0,0 +1,4820 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@fortawesome/free-solid-svg-icons': + specifier: ^6.4.2 + version: 6.4.2 + '@fortawesome/react-fontawesome': + specifier: ^0.2.0 + version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.2)(react@18.2.0) + '@tanstack/react-query': + specifier: ^5.0.5 + version: 5.0.5(react-dom@18.2.0)(react@18.2.0) + autolinker: + specifier: ^4.0.0 + version: 4.0.0 + bootstrap: + specifier: ^5.3.2 + version: 5.3.2(@popperjs/core@2.11.8) + bootswatch: + specifier: ^5.3.2 + version: 5.3.2 + date-fns: + specifier: ^2.30.0 + version: 2.30.0 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-bootstrap: + specifier: ^2.9.1 + version: 2.9.1(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-router-dom: + specifier: ^6.17.0 + version: 6.17.0(react-dom@18.2.0)(react@18.2.0) + +devDependencies: + '@types/react': + specifier: ^18.2.15 + version: 18.2.15 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.7 + '@typescript-eslint/eslint-plugin': + specifier: ^6.0.0 + version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.0.2) + '@typescript-eslint/parser': + specifier: ^6.0.0 + version: 6.0.0(eslint@8.45.0)(typescript@5.0.2) + '@vitejs/plugin-react': + specifier: ^4.0.3 + version: 4.0.3(vite@4.4.5) + eslint: + specifier: ^8.45.0 + version: 8.45.0 + eslint-config-react-app: + specifier: ^7.0.1 + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.45.0)(typescript@5.0.2) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.45.0) + eslint-plugin-react-refresh: + specifier: ^0.4.3 + version: 0.4.3(eslint@8.45.0) + prettier: + specifier: ^3.0.3 + version: 3.0.3 + sass: + specifier: ^1.69.5 + version: 1.69.5 + typescript: + specifier: ^5.0.2 + version: 5.0.2 + vite: + specifier: ^4.4.5 + version: 4.4.5(sass@1.69.5) + vite-tsconfig-paths: + specifier: ^4.2.1 + version: 4.2.1(typescript@5.0.2)(vite@4.4.5) + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.20 + chalk: 2.4.2 + dev: true + + /@babel/compat-data@7.23.2: + resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/eslint-parser@7.22.15(@babel/core@7.23.2)(eslint@8.45.0): + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.45.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + dev: true + + /@babel/generator@7.23.0: + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.22.1 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true + + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.2): + resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + dev: true + + /@babel/helpers@7.23.2: + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-proposal-decorators@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.2): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.23.2): + resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-decorators@7.22.10(@babel/core@7.23.2): + resolution: {integrity: sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-block-scoping@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-classes@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 + dev: true + + /@babel/plugin-transform-destructuring@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-amd@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-optional-chaining@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/types': 7.23.0 + dev: true + + /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.2): + resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-runtime@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.2): + resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/preset-env@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-async-generator-functions': 7.23.2(@babel/core@7.23.2) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoping': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-destructuring': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-modules-amd': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-systemjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.23.2) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.23.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.2) + '@babel/types': 7.23.0 + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.2) + core-js-compat: 3.33.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.2): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.23.0 + esutils: 2.0.3 + dev: true + + /@babel/preset-react@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.23.2) + dev: true + + /@babel/preset-typescript@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.2) + dev: true + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + dev: true + + /@babel/traverse@7.23.2: + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.45.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.44.0: + resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@fortawesome/fontawesome-common-types@6.4.2: + resolution: {integrity: sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==} + engines: {node: '>=6'} + requiresBuild: true + dev: false + + /@fortawesome/fontawesome-svg-core@6.4.2: + resolution: {integrity: sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 6.4.2 + dev: false + + /@fortawesome/free-solid-svg-icons@6.4.2: + resolution: {integrity: sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 6.4.2 + dev: false + + /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.4.2)(react@18.2.0): + resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==} + peerDependencies: + '@fortawesome/fontawesome-svg-core': ~1 || ~6 + react: '>=16.3' + dependencies: + '@fortawesome/fontawesome-svg-core': 6.4.2 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@popperjs/core@2.11.8: + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + dev: false + + /@react-aria/ssr@3.8.0(react@18.2.0): + resolution: {integrity: sha512-Y54xs483rglN5DxbwfCPHxnkvZ+gZ0LbSYmR72LyWPGft8hN/lrl1VRS1EW2SMjnkEWlj+Km2mwvA3kEHDUA0A==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@remix-run/router@1.10.0: + resolution: {integrity: sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==} + engines: {node: '>=14.0.0'} + dev: false + + /@restart/hooks@0.4.11(react@18.2.0): + resolution: {integrity: sha512-Ft/ncTULZN6ldGHiF/k5qt72O8JyRMOeg0tApvCni8LkoiEahO+z3TNxfXIVGy890YtWVDvJAl662dVJSJXvMw==} + peerDependencies: + react: '>=16.8.0' + dependencies: + dequal: 2.0.3 + react: 18.2.0 + dev: false + + /@restart/ui@1.6.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-eC3puKuWE1SRYbojWHXnvCNHGgf3uzHCb6JOhnF4OXPibOIPEkR1sqDSkL643ydigxwh+ruCa1CmYHlzk7ikKA==} + peerDependencies: + react: '>=16.14.0' + react-dom: '>=16.14.0' + dependencies: + '@babel/runtime': 7.23.2 + '@popperjs/core': 2.11.8 + '@react-aria/ssr': 3.8.0(react@18.2.0) + '@restart/hooks': 0.4.11(react@18.2.0) + '@types/warning': 3.0.2 + dequal: 2.0.3 + dom-helpers: 5.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + uncontrollable: 8.0.4(react@18.2.0) + warning: 4.0.3 + dev: false + + /@rushstack/eslint-patch@1.5.1: + resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} + dev: true + + /@swc/helpers@0.5.3: + resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} + dependencies: + tslib: 2.6.2 + dev: false + + /@tanstack/query-core@5.0.5: + resolution: {integrity: sha512-MThCETMkHDHTnFZHp71L+SqTtD5d6XHftFCVR1xRJdWM3qGrlQ2VCXaj0SKVcyJej2e1Opa2c7iknu1llxCDNQ==} + dev: false + + /@tanstack/react-query@5.0.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZG0Q4HZ0iuI8mWiZ2/MdVYPHbrmAVhMn7+gLOkxJh6zLIgCL4luSZlohzN5Xt4MjxfxxWioO1nemwpudaTsmQg==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@tanstack/query-core': 5.0.5 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} + dev: true + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/parse-json@4.0.1: + resolution: {integrity: sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==} + dev: true + + /@types/prop-types@15.7.9: + resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} + + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + dependencies: + '@types/react': 18.2.15 + dev: true + + /@types/react-transition-group@4.4.8: + resolution: {integrity: sha512-QmQ22q+Pb+HQSn04NL3HtrqHwYMf4h3QKArOy5F8U5nEVMaihBs3SR10WiOM1iwPz5jIo8x/u11al+iEGZZrvg==} + dependencies: + '@types/react': 18.2.15 + dev: false + + /@types/react@18.2.15: + resolution: {integrity: sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==} + dependencies: + '@types/prop-types': 15.7.9 + '@types/scheduler': 0.16.5 + csstype: 3.1.2 + + /@types/scheduler@0.16.5: + resolution: {integrity: sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==} + + /@types/semver@7.5.4: + resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} + dev: true + + /@types/warning@3.0.2: + resolution: {integrity: sha512-S/2+OjBIcBl8Kur23YLe0hG1e7J5m2bHfB4UuMNoLZjIFhQWhTf1FeS+WFoXHUC6QsCEfk4pftj4J1KIKC1glA==} + dev: false + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.0.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.45.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.0.2) + debug: 4.3.4 + eslint: 8.45.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.0.2) + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/type-utils': 6.0.0(eslint@8.45.0)(typescript@5.0.2) + '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.0.2) + '@typescript-eslint/visitor-keys': 6.0.0 + debug: 4.3.4 + eslint: 8.45.0 + grapheme-splitter: 1.0.4 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.0.2) + eslint: 8.45.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.2) + debug: 4.3.4 + eslint: 8.45.0 + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.0.2) + '@typescript-eslint/visitor-keys': 6.0.0 + debug: 4.3.4 + eslint: 8.45.0 + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.0.0: + resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 + dev: true + + /@typescript-eslint/type-utils@5.62.0(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.0.2) + debug: 4.3.4 + eslint: 8.45.0 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@6.0.0(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.0.2) + '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.0.2) + debug: 4.3.4 + eslint: 8.45.0 + ts-api-utils: 1.0.3(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@6.0.0: + resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.0.2): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.0.0(typescript@5.0.2): + resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.4 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.2) + eslint: 8.45.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@6.0.0(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.4 + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.0.2) + eslint: 8.45.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@6.0.0: + resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.0.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@vitejs/plugin-react@4.0.3(vite@4.4.5): + resolution: {integrity: sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.23.2) + react-refresh: 0.14.0 + vite: 4.4.5(sass@1.69.5) + transitivePeerDependencies: + - supports-color + dev: true + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + dev: true + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: true + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + + /autolinker@4.0.0: + resolution: {integrity: sha512-fl5Kh6BmEEZx+IWBfEirnRUU5+cOiV0OK7PEt0RBKvJMJ8GaRseIOeDU3FKf4j3CE5HVefcjHmhYPOcaVt0bZw==} + dependencies: + tslib: 2.6.2 + dev: false + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axe-core@4.8.2: + resolution: {integrity: sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==} + engines: {node: '>=4'} + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + + /babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.23.2 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + dev: true + + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.2): + resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.2): + resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + core-js-compat: 3.33.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.2): + resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-react-remove-prop-types@0.4.24: + resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + dev: true + + /babel-preset-react-app@10.0.1: + resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-decorators': 7.23.2(@babel/core@7.23.2) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.2) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.23.2) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-runtime': 7.23.2(@babel/core@7.23.2) + '@babel/preset-env': 7.23.2(@babel/core@7.23.2) + '@babel/preset-react': 7.22.15(@babel/core@7.23.2) + '@babel/preset-typescript': 7.23.2(@babel/core@7.23.2) + '@babel/runtime': 7.23.2 + babel-plugin-macros: 3.1.0 + babel-plugin-transform-react-remove-prop-types: 0.4.24 + transitivePeerDependencies: + - supports-color + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bootstrap@5.3.2(@popperjs/core@2.11.8): + resolution: {integrity: sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==} + peerDependencies: + '@popperjs/core': ^2.11.8 + dependencies: + '@popperjs/core': 2.11.8 + dev: false + + /bootswatch@5.3.2: + resolution: {integrity: sha512-r05xOSLSx7MJvjpk/uoU8wPYgkPHWLV+uenLaRsS7yBsqSUcWYPjeUkz+tmrRv6s1eFxkF08NvQfBSSPCTyYaA==} + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001554 + electron-to-chromium: 1.4.567 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /caniuse-lite@1.0.30001554: + resolution: {integrity: sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + dev: false + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /core-js-compat@3.33.1: + resolution: {integrity: sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ==} + dependencies: + browserslist: 4.22.1 + dev: true + + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.1 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.23.2 + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.23.2 + csstype: 3.1.2 + dev: false + + /electron-to-chromium@1.4.567: + resolution: {integrity: sha512-8KR114CAYQ4/r5EIEsOmOMqQ9j0MRbJZR3aXD/KFA8RuKzyoUB4XrUCg+l8RUGqTVQgKNIgTpjaG8YHRPAbX2w==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: true + + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 + dev: true + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.23.2 + '@babel/eslint-parser': 7.22.15(@babel/core@7.23.2)(eslint@8.45.0) + '@rushstack/eslint-patch': 1.5.1 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.0.2) + babel-preset-react-app: 10.0.1 + confusing-browser-globals: 1.0.11 + eslint: 8.45.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.45.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.45.0)(typescript@5.0.2) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.45.0) + eslint-plugin-react: 7.33.2(eslint@8.45.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.45.0) + eslint-plugin-testing-library: 5.11.1(eslint@8.45.0)(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.45.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.0.2) + debug: 3.2.7 + eslint: 8.45.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.45.0): + resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@babel/plugin-syntax-flow': ^7.14.5 + '@babel/plugin-transform-react-jsx': ^7.14.9 + eslint: ^8.1.0 + dependencies: + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.2) + eslint: 8.45.0 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + dev: true + + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.0.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.45.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.45.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.0.2) + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.45.0)(typescript@5.0.2) + eslint: 8.45.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.45.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.23.2 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.7 + axe-core: 4.8.2 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.45.0 + has: 1.0.4 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + semver: 6.3.1 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.45.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.45.0 + dev: true + + /eslint-plugin-react-refresh@0.4.3(eslint@8.45.0): + resolution: {integrity: sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==} + peerDependencies: + eslint: '>=7' + dependencies: + eslint: 8.45.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.45.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.45.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + + /eslint-plugin-testing-library@5.11.1(eslint@8.45.0)(typescript@5.0.2): + resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.0.2) + eslint: 8.45.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.45.0: + resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.44.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.1.1 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} + engines: {node: '>=12.0.0'} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + dev: true + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.4 + object.values: 1.1.7 + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: true + + /language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + dependencies: + language-subtag-registry: 0.3.22 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + dev: true + + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.22.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /prop-types-extra@1.1.1(react@18.2.0): + resolution: {integrity: sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==} + peerDependencies: + react: '>=0.14.0' + dependencies: + react: 18.2.0 + react-is: 16.13.1 + warning: 4.0.3 + dev: false + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /react-bootstrap@2.9.1(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ezgmh/ARCYp18LbZEqPp0ppvy+ytCmycDORqc8vXSKYV3cer4VH7OReV8uMOoKXmYzivJTxgzGHalGrHamryHA==} + peerDependencies: + '@types/react': '>=16.14.8' + react: '>=16.14.0' + react-dom: '>=16.14.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@restart/hooks': 0.4.11(react@18.2.0) + '@restart/ui': 1.6.6(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-transition-group': 4.4.8 + classnames: 2.3.2 + dom-helpers: 5.2.1 + invariant: 2.2.4 + prop-types: 15.8.1 + prop-types-extra: 1.1.1(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) + uncontrollable: 7.2.1(react@18.2.0) + warning: 4.0.3 + dev: false + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + dev: false + + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: true + + /react-router-dom@6.17.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.10.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.17.0(react@18.2.0) + dev: false + + /react-router@6.17.0(react@18.2.0): + resolution: {integrity: sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.10.0 + react: 18.2.0 + dev: false + + /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.23.2 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.23.2 + dev: true + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 + dev: true + + /sass@1.69.5: + resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + dev: true + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /string-natural-compare@3.0.1: + resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} + dev: true + + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 + side-channel: 1.0.4 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /ts-api-utils@1.0.3(typescript@5.0.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.0.2 + dev: true + + /tsconfck@2.1.2(typescript@5.0.2): + resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} + engines: {node: ^14.13.1 || ^16 || >=18} + hasBin: true + peerDependencies: + typescript: ^4.3.5 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.0.2 + dev: true + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false + + /tsutils@3.21.0(typescript@5.0.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.0.2 + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typescript@5.0.2: + resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /uncontrollable@7.2.1(react@18.2.0): + resolution: {integrity: sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==} + peerDependencies: + react: '>=15.0.0' + dependencies: + '@babel/runtime': 7.23.2 + '@types/react': 18.2.15 + invariant: 2.2.4 + react: 18.2.0 + react-lifecycles-compat: 3.0.4 + dev: false + + /uncontrollable@8.0.4(react@18.2.0): + resolution: {integrity: sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==} + peerDependencies: + react: '>=16.14.0' + dependencies: + react: 18.2.0 + dev: false + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /vite-tsconfig-paths@4.2.1(typescript@5.0.2)(vite@4.4.5): + resolution: {integrity: sha512-GNUI6ZgPqT3oervkvzU+qtys83+75N/OuDaQl7HmOqFTb0pjZsuARrRipsyJhJ3enqV8beI1xhGbToR4o78nSQ==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + debug: 4.3.4 + globrex: 0.1.2 + tsconfck: 2.1.2(typescript@5.0.2) + vite: 4.4.5(sass@1.69.5) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /vite@4.4.5(sass@1.69.5): + resolution: {integrity: sha512-4m5kEtAWHYr0O1Fu7rZp64CfO1PsRGZlD3TAB32UmQlpd7qg15VF7ROqGN5CyqN7HFuwr7ICNM2+fDWRqFEKaA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 + sass: 1.69.5 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/www/src/images/esrflogo.png b/apps/doi-landing-page/public/esrf-white.png similarity index 100% rename from www/src/images/esrflogo.png rename to apps/doi-landing-page/public/esrf-white.png diff --git a/apps/doi-landing-page/public/favicon.ico b/apps/doi-landing-page/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1a6e0cc3563d4609e8523f3fe0c230df2e98c44e GIT binary patch literal 2958 zcmeH|Yfw~W7{~vJ2(rqHET93hfGjKv%d*_$Ca^*(3xXIIF9C{|6ug88?!sAi5%5|X z;tCiNx(JqBJvC)loIW(o)TgGbsb=UyHDxnd)0k6E+q-A?EN20ysn0z-&pz+_p5OUD zmvd$g;6i`0NYH-|XhncO0GZtjX|$d{&X|A*=tF&=4~&F9I2cC)W1(FsgDyA<^^z#) zLPOCck>hBH98F<iXby=%LufP_!dIa&EC$D<QpzMl8xaXzxDxf!Sk$jd!ZAq>bdfSN zNmbB><f2Iyg{I(qG)Kfk8&r;FNdcMzDp4n0112&7jk0(!fmNuJtDu)Fa7da1y(|%W zML4~GGqi!baYPY~mS|d^JQ0SdB<P}(P#>#+Vd3jADrv4*B@V}=;cy&1^Be&aphcY` z0|vjdIG|8NFD-{YHkJ0OL$lvG)XIy|64V6a(oq<FyTL3!4`W<9_C=SWMwNq_)hg_d zDMzc=j8^Y)oJp6UI(iq5d%cAg@h!CZO`<ZUj_SV(gU@?t_k9Pgfj4m>Hy9oM?_zga zF)HGYp;D#AcBK(J)5~x&=rwFnwWGHn0H-2Y6enFo)#e0Ll%%0B<r+%!YEYba5F1lR zP`xb$W4nNywA(1D$U<pVD%7cWP_`ot*%@ymBkg01?f1kR2Z7SP>6oZphUAPdkdpZo zk~6=>hOH-{%K8q<%%AaQgFA97I*_3L0kLcEL8bl`NxAo+%>EPUG_G&Vfg<+-3ad}! zeFKn|_dU|9O~}aq5h;6mvDTnQ=Ek4!L7NA%+q3b}Y2d?-WytPO<F1LmZw(XpvIj`K zq`~KXfU<WTlDZ4<X?GxUyEoypo|TC2)8Oj?H{9(Ffzq6ZpyN}B8`L18?G9Ae^C2H9 zLi}I}5{Jr=F<gp>kwW;M{R9h4(^z=v8@OHh1-SYEFh2yY{{{^H0Sx~R+^_&+)c?1C zJpuMV*~F;BCLSv==3w~6yeNNB80Q1Wg@A26Z|<vexSQ=P`?Qm!fnnJt7n~JGCU-AL zC@CrufUR1lAwooMI)RhN+`Lz*i!?LfSuMjb`w2-DW*)ylNMLeNQIV#KSELlf=(iEl zED*erM#$Pi$`xts9EUMXV;1p!X>@e*7PZOI@$yApsVXZ*jRQ~EIp(NHv~Kj})7!(s z%1^$s$JJ|fv5m5WJjUn_i9AxUn25z>F+@b-plpH;j$yWnh{9HkQcN<Pxl;~Kt9>$n zZ;fT8{)HNz)X-_4unvVY-44+V#<JdWz74KGo}vxA*pu35g;yT0XD!gd>2?vJ92Lx- z5fpH3TV``n8y$i|u3#2Np4dDeXWTTK3!aB-(H-6}oAXaqtBP&IvE|jbF%?-Mgv1CN z2_;1AzcS}3?&-0tfi`?#lLsMWX|!0#iKPKc3GrICCXWuBWl!n$`gw>Jg|FY){i1j5 z45;utXWEw^PdvT6(#t4E&CM<8;F(Lq=KkY8D|j%7JloT0>Uyrelq}@Wo_YS_fVrRA zzzbxFI5Ibbz6I`0omT6*(s{nl&e<3%*Kamg$5|_tRd#i89LIK=IC6kP?0@FrTC%*u zWO7i}g-!6fkn1<sl7MrUov<tR#7>~OhH^7W=?$0d7|RMX&*6F;7|RMW&*21^5S-2R zIdSYDFX_y6Ia74UgHGH`3j%(CYsY-V$KG#`umb_dvP0Ks_Fk6lu};JG5S*?HH$!yO zH<z(kjebomkC4U1X}EK73a+!GfpU+gfGis6ml+c3_o)*>oTh7c>QmHRoni~OH@aAi zF7({!YMFA1?v`n8|4(uDeRjS3u*|8$ntz(QwH`k5_44&UqSvhb{AG_88aX$@g^T<= O9<GpZd&_NZUVj5kL0|6x literal 0 HcmV?d00001 diff --git a/apps/doi-landing-page/src/App.scss b/apps/doi-landing-page/src/App.scss new file mode 100644 index 0000000..7e2cc4d --- /dev/null +++ b/apps/doi-landing-page/src/App.scss @@ -0,0 +1,19 @@ +@import 'bootswatch/dist/flatly/variables'; +@import 'bootstrap/scss/bootstrap'; +@import 'bootswatch/dist/flatly/bootswatch'; + +body { + font-size: 0.9em; +} + +.navbar-brand { + background: url('/esrf-white.png') no-repeat; + background-size: contain; + padding-left: 50px; + margin-left: 20px; +} + +.breadcrumb { + margin: 0px; + padding: 0px; +} diff --git a/apps/doi-landing-page/src/App.tsx b/apps/doi-landing-page/src/App.tsx new file mode 100644 index 0000000..7d0e53a --- /dev/null +++ b/apps/doi-landing-page/src/App.tsx @@ -0,0 +1,19 @@ +import { AppRouter } from 'routing/AppRouter'; +import 'App.scss'; +import { LandingPageContainer } from 'landingPage/LandingPageContainer'; +import { useEffect } from 'react'; +import { CONFIG } from 'config/config'; + +function App() { + useEffect(() => { + document.title = `${CONFIG.SITE_NAME} DOI`; + }, []); + + return ( + <AppRouter> + <LandingPageContainer /> + </AppRouter> + ); +} + +export default App; diff --git a/apps/doi-landing-page/src/config/config.ts b/apps/doi-landing-page/src/config/config.ts new file mode 100644 index 0000000..cbdced2 --- /dev/null +++ b/apps/doi-landing-page/src/config/config.ts @@ -0,0 +1,3 @@ +export const CONFIG = { + SITE_NAME: 'ESRF', +}; diff --git a/apps/doi-landing-page/src/hooks/path.ts b/apps/doi-landing-page/src/hooks/path.ts new file mode 100644 index 0000000..2cea7ae --- /dev/null +++ b/apps/doi-landing-page/src/hooks/path.ts @@ -0,0 +1,22 @@ +import { useParams } from 'react-router-dom'; + +export function usePath(key: string): string | undefined { + const params = useParams(); + return params[key] || undefined; +} + +export function useCurrentPathDOI() { + const prefix = usePath(DOI_PREFIX_PARAM); + const suffix = usePath(DOI_SUFFIX_PARAM); + if (!prefix || !suffix) { + return undefined; + } + return getDOI(prefix, suffix); +} + +export const DOI_PREFIX_PARAM = 'doiPrefix'; +export const DOI_SUFFIX_PARAM = 'doiSuffix'; + +function getDOI(prefix: string, suffix: string): string { + return `${prefix}/${suffix}`; +} diff --git a/apps/doi-landing-page/src/landingPage/LandingPage.tsx b/apps/doi-landing-page/src/landingPage/LandingPage.tsx new file mode 100644 index 0000000..778ffc5 --- /dev/null +++ b/apps/doi-landing-page/src/landingPage/LandingPage.tsx @@ -0,0 +1,13 @@ +import { DOI } from '@edata-portal/doi'; +import { useCurrentPathDOI } from 'hooks/path'; +import { PageNotFound } from 'routing/PageNotFound'; + +export function LandingPage() { + const doi = useCurrentPathDOI(); + + if (!doi) { + return <PageNotFound />; + } + + return <DOI doi={doi} />; +} diff --git a/apps/doi-landing-page/src/landingPage/LandingPageContainer.tsx b/apps/doi-landing-page/src/landingPage/LandingPageContainer.tsx new file mode 100644 index 0000000..0583f39 --- /dev/null +++ b/apps/doi-landing-page/src/landingPage/LandingPageContainer.tsx @@ -0,0 +1,21 @@ +import { Col, Container, Navbar } from 'react-bootstrap'; +import { Outlet } from 'react-router-dom'; + +export function LandingPageContainer() { + return ( + <Col> + <Navbar className="bg-primary"> + <Container> + <Navbar.Brand + style={{ + height: 50, + }} + /> + </Container> + </Navbar> + <Container className="pt-3 pb-3"> + <Outlet /> + </Container> + </Col> + ); +} diff --git a/apps/doi-landing-page/src/main.tsx b/apps/doi-landing-page/src/main.tsx new file mode 100644 index 0000000..cd8543d --- /dev/null +++ b/apps/doi-landing-page/src/main.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from 'App'; + +ReactDOM.createRoot(document.getElementById('root')!).render( + <React.StrictMode> + <App /> + </React.StrictMode>, +); diff --git a/apps/doi-landing-page/src/routes.tsx b/apps/doi-landing-page/src/routes.tsx new file mode 100644 index 0000000..3ff44d2 --- /dev/null +++ b/apps/doi-landing-page/src/routes.tsx @@ -0,0 +1,20 @@ +import { DOI_PREFIX_PARAM, DOI_SUFFIX_PARAM } from 'hooks/path'; +import { LandingPage } from 'landingPage/LandingPage'; +import type { RouteObject } from 'react-router-dom'; +import { PageNotFound } from 'routing/PageNotFound'; + +export const routes: RouteObject[] = [ + { + path: 'doi', + children: [ + { + path: `:${DOI_PREFIX_PARAM}/:${DOI_SUFFIX_PARAM}`, + element: <LandingPage />, + }, + ], + }, + { + path: '*', + element: <PageNotFound />, + }, +]; diff --git a/apps/doi-landing-page/src/routing/AppRouter.tsx b/apps/doi-landing-page/src/routing/AppRouter.tsx new file mode 100644 index 0000000..1f9f3b1 --- /dev/null +++ b/apps/doi-landing-page/src/routing/AppRouter.tsx @@ -0,0 +1,17 @@ +import { useMemo } from 'react'; +import { createBrowserRouter, RouterProvider } from 'react-router-dom'; + +import { routes } from 'routes'; + +export function AppRouter({ children }: { children?: JSX.Element }) { + const router = useMemo(() => { + return createBrowserRouter([ + { + element: children, + children: routes, + }, + ]); + }, [children]); + + return <RouterProvider router={router} />; +} diff --git a/apps/doi-landing-page/src/routing/PageNotFound.tsx b/apps/doi-landing-page/src/routing/PageNotFound.tsx new file mode 100644 index 0000000..ac822b8 --- /dev/null +++ b/apps/doi-landing-page/src/routing/PageNotFound.tsx @@ -0,0 +1,5 @@ +import { Alert } from 'react-bootstrap'; + +export function PageNotFound() { + return <Alert variant="danger">Page not found</Alert>; +} diff --git a/apps/doi-landing-page/src/vite-env.d.ts b/apps/doi-landing-page/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/apps/doi-landing-page/src/vite-env.d.ts @@ -0,0 +1 @@ +/// <reference types="vite/client" /> diff --git a/apps/doi-landing-page/tsconfig.json b/apps/doi-landing-page/tsconfig.json new file mode 100644 index 0000000..2602029 --- /dev/null +++ b/apps/doi-landing-page/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src"], + "compilerOptions": { + "baseUrl": "src", + "outDir": "dist", + "noEmit": true + }, + "exclude": ["../../packages/*"], + "references": [ + { "path": "./tsconfig.node.json" }, + { "path": "../../packages/doi" } + ] +} diff --git a/apps/doi-landing-page/tsconfig.node.json b/apps/doi-landing-page/tsconfig.node.json new file mode 100644 index 0000000..9d31e2a --- /dev/null +++ b/apps/doi-landing-page/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/apps/doi-landing-page/vite.config.ts b/apps/doi-landing-page/vite.config.ts new file mode 100644 index 0000000..6d2b0cd --- /dev/null +++ b/apps/doi-landing-page/vite.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import tsconfigPaths from 'vite-tsconfig-paths'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react(), tsconfigPaths()], + server: { + port: 3000, + host: true, + }, +}); diff --git a/build.sh b/build.sh deleted file mode 100755 index 2f6563f..0000000 --- a/build.sh +++ /dev/null @@ -1 +0,0 @@ -docker build -t dockcs.esrf.fr/dau/doi:1.0.0-SNAPSHOT . diff --git a/myHttpd.conf b/myHttpd.conf deleted file mode 100644 index 2224060..0000000 --- a/myHttpd.conf +++ /dev/null @@ -1,544 +0,0 @@ -# -# This is the main Apache HTTP server configuration file. It contains the -# configuration directives that give the server its instructions. -# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information. -# In particular, see -# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html> -# for a discussion of each configuration directive. -# -# Do NOT simply read the instructions in here without understanding -# what they do. They're here only as hints or reminders. If you are unsure -# consult the online docs. You have been warned. -# -# Configuration and logfile names: If the filenames you specify for many -# of the server's control files begin with "/" (or "drive:/" for Win32), the -# server will use that explicit path. If the filenames do *not* begin -# with "/", the value of ServerRoot is prepended -- so "logs/access_log" -# with ServerRoot set to "/usr/local/apache2" will be interpreted by the -# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log" -# will be interpreted as '/logs/access_log'. - -# -# ServerRoot: The top of the directory tree under which the server's -# configuration, error, and log files are kept. -# -# Do not add a slash at the end of the directory path. If you point -# ServerRoot at a non-local disk, be sure to specify a local disk on the -# Mutex directive, if file-based mutexes are used. If you wish to share the -# same ServerRoot for multiple httpd daemons, you will need to change at -# least PidFile. -# -ServerRoot "/usr/local/apache2" - -# Mutex: Allows you to set the mutex mechanism and mutex file directory -# for individual mutexes, or change the global defaults -# -# Uncomment and change the directory if mutexes are file-based and the default -# mutex file directory is not on a local disk or is not appropriate for some -# other reason. -# -# Mutex default:logs - -# -# Listen: Allows you to bind Apache to specific IP addresses and/or -# ports, instead of the default. See also the <VirtualHost> -# directive. -# -# Change this to Listen on specific IP addresses as shown below to -# prevent Apache from glomming onto all bound IP addresses. -# -#Listen 12.34.56.78:80 -Listen 80 - -# -# Dynamic Shared Object (DSO) Support -# -# To be able to use the functionality of a module which was built as a DSO you -# have to place corresponding `LoadModule' lines at this location so the -# directives contained in it are actually available _before_ they are used. -# Statically compiled modules (those listed by `httpd -l') do not need -# to be loaded here. -# -# Example: -# LoadModule foo_module modules/mod_foo.so -# -LoadModule mpm_event_module modules/mod_mpm_event.so -LoadModule authn_file_module modules/mod_authn_file.so -#LoadModule authn_dbm_module modules/mod_authn_dbm.so -#LoadModule authn_anon_module modules/mod_authn_anon.so -#LoadModule authn_dbd_module modules/mod_authn_dbd.so -#LoadModule authn_socache_module modules/mod_authn_socache.so -LoadModule authn_core_module modules/mod_authn_core.so -LoadModule authz_host_module modules/mod_authz_host.so -LoadModule authz_groupfile_module modules/mod_authz_groupfile.so -LoadModule authz_user_module modules/mod_authz_user.so -#LoadModule authz_dbm_module modules/mod_authz_dbm.so -#LoadModule authz_owner_module modules/mod_authz_owner.so -#LoadModule authz_dbd_module modules/mod_authz_dbd.so -LoadModule authz_core_module modules/mod_authz_core.so -#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so -#LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so -LoadModule access_compat_module modules/mod_access_compat.so -LoadModule auth_basic_module modules/mod_auth_basic.so -#LoadModule auth_form_module modules/mod_auth_form.so -#LoadModule auth_digest_module modules/mod_auth_digest.so -#LoadModule allowmethods_module modules/mod_allowmethods.so -#LoadModule isapi_module modules/mod_isapi.so -#LoadModule file_cache_module modules/mod_file_cache.so -#LoadModule cache_module modules/mod_cache.so -#LoadModule cache_disk_module modules/mod_cache_disk.so -#LoadModule cache_socache_module modules/mod_cache_socache.so -#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so -#LoadModule socache_dbm_module modules/mod_socache_dbm.so -#LoadModule socache_memcache_module modules/mod_socache_memcache.so -#LoadModule watchdog_module modules/mod_watchdog.so -#LoadModule macro_module modules/mod_macro.so -#LoadModule dbd_module modules/mod_dbd.so -#LoadModule bucketeer_module modules/mod_bucketeer.so -#LoadModule dumpio_module modules/mod_dumpio.so -#LoadModule echo_module modules/mod_echo.so -#LoadModule example_hooks_module modules/mod_example_hooks.so -#LoadModule case_filter_module modules/mod_case_filter.so -#LoadModule case_filter_in_module modules/mod_case_filter_in.so -#LoadModule example_ipc_module modules/mod_example_ipc.so -#LoadModule buffer_module modules/mod_buffer.so -#LoadModule data_module modules/mod_data.so -#LoadModule ratelimit_module modules/mod_ratelimit.so -LoadModule reqtimeout_module modules/mod_reqtimeout.so -#LoadModule ext_filter_module modules/mod_ext_filter.so -#LoadModule request_module modules/mod_request.so -#LoadModule include_module modules/mod_include.so -LoadModule filter_module modules/mod_filter.so -#LoadModule reflector_module modules/mod_reflector.so -#LoadModule substitute_module modules/mod_substitute.so -#LoadModule sed_module modules/mod_sed.so -#LoadModule charset_lite_module modules/mod_charset_lite.so -#LoadModule deflate_module modules/mod_deflate.so -#LoadModule xml2enc_module modules/mod_xml2enc.so -#LoadModule proxy_html_module modules/mod_proxy_html.so -LoadModule mime_module modules/mod_mime.so -#LoadModule ldap_module modules/mod_ldap.so -LoadModule log_config_module modules/mod_log_config.so -#LoadModule log_debug_module modules/mod_log_debug.so -#LoadModule log_forensic_module modules/mod_log_forensic.so -#LoadModule logio_module modules/mod_logio.so -#LoadModule lua_module modules/mod_lua.so -LoadModule env_module modules/mod_env.so -#LoadModule mime_magic_module modules/mod_mime_magic.so -#LoadModule cern_meta_module modules/mod_cern_meta.so -#LoadModule expires_module modules/mod_expires.so -LoadModule headers_module modules/mod_headers.so -#LoadModule ident_module modules/mod_ident.so -#LoadModule usertrack_module modules/mod_usertrack.so -#LoadModule unique_id_module modules/mod_unique_id.so -LoadModule setenvif_module modules/mod_setenvif.so -LoadModule version_module modules/mod_version.so -#LoadModule remoteip_module modules/mod_remoteip.so -LoadModule proxy_module modules/mod_proxy.so -#LoadModule proxy_connect_module modules/mod_proxy_connect.so -#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so -LoadModule proxy_http_module modules/mod_proxy_http.so -#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so -#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so -#LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so -#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so -#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so -#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so -#LoadModule proxy_express_module modules/mod_proxy_express.so -#LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so -#LoadModule session_module modules/mod_session.so -#LoadModule session_cookie_module modules/mod_session_cookie.so -#LoadModule session_crypto_module modules/mod_session_crypto.so -#LoadModule session_dbd_module modules/mod_session_dbd.so -#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so -#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so -#LoadModule ssl_module modules/mod_ssl.so -#LoadModule optional_hook_export_module modules/mod_optional_hook_export.so -#LoadModule optional_hook_import_module modules/mod_optional_hook_import.so -#LoadModule optional_fn_import_module modules/mod_optional_fn_import.so -#LoadModule optional_fn_export_module modules/mod_optional_fn_export.so -#LoadModule dialup_module modules/mod_dialup.so -#LoadModule http2_module modules/mod_http2.so -#LoadModule proxy_http2_module modules/mod_proxy_http2.so -#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so -#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so -#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so -#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so -LoadModule unixd_module modules/mod_unixd.so -#LoadModule heartbeat_module modules/mod_heartbeat.so -#LoadModule heartmonitor_module modules/mod_heartmonitor.so -#LoadModule dav_module modules/mod_dav.so -LoadModule status_module modules/mod_status.so -LoadModule autoindex_module modules/mod_autoindex.so -#LoadModule asis_module modules/mod_asis.so -#LoadModule info_module modules/mod_info.so -#LoadModule suexec_module modules/mod_suexec.so -<IfModule !mpm_prefork_module> - #LoadModule cgid_module modules/mod_cgid.so -</IfModule> -<IfModule mpm_prefork_module> - #LoadModule cgi_module modules/mod_cgi.so -</IfModule> -#LoadModule dav_fs_module modules/mod_dav_fs.so -#LoadModule dav_lock_module modules/mod_dav_lock.so -#LoadModule vhost_alias_module modules/mod_vhost_alias.so -#LoadModule negotiation_module modules/mod_negotiation.so -LoadModule dir_module modules/mod_dir.so -#LoadModule imagemap_module modules/mod_imagemap.so -#LoadModule actions_module modules/mod_actions.so -#LoadModule speling_module modules/mod_speling.so -#LoadModule userdir_module modules/mod_userdir.so -LoadModule alias_module modules/mod_alias.so -LoadModule rewrite_module modules/mod_rewrite.so - -<IfModule unixd_module> -# -# If you wish httpd to run as a different user or group, you must run -# httpd as root initially and it will switch. -# -# User/Group: The name (or #number) of the user/group to run httpd as. -# It is usually good practice to create a dedicated user and group for -# running httpd, as with most system services. -# -User daemon -Group daemon - -</IfModule> - -# 'Main' server configuration -# -# The directives in this section set up the values used by the 'main' -# server, which responds to any requests that aren't handled by a -# <VirtualHost> definition. These values also provide defaults for -# any <VirtualHost> containers you may define later in the file. -# -# All of these directives may appear inside <VirtualHost> containers, -# in which case these default settings will be overridden for the -# virtual host being defined. -# - -# -# ServerAdmin: Your address, where problems with the server should be -# e-mailed. This address appears on some server-generated pages, such -# as error documents. e.g. admin@your-domain.com -# -ServerAdmin webmaster@localhost - -# -# ServerName gives the name and port that the server uses to identify itself. -# This can often be determined automatically, but we recommend you specify -# it explicitly to prevent problems during startup. -# -# If your host doesn't have a registered DNS name, enter its IP address here. -# -#ServerName www.example.com:80 - -# -# Deny access to the entirety of your server's filesystem. You must -# explicitly permit access to web content directories in other -# <Directory> blocks below. -# -<Directory /> - AllowOverride none - Require all denied -</Directory> - -# -# Note that from this point forward you must specifically allow -# particular features to be enabled - so if something's not working as -# you might expect, make sure that you have specifically enabled it -# below. -# - -# -# DocumentRoot: The directory out of which you will serve your -# documents. By default, all requests are taken from this directory, but -# symbolic links and aliases may be used to point to other locations. -# -DocumentRoot "/usr/local/apache2/htdocs" -<Directory "/usr/local/apache2/htdocs"> - # - # Possible values for the Options directive are "None", "All", - # or any combination of: - # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews - # - # Note that "MultiViews" must be named *explicitly* --- "Options All" - # doesn't give it to you. - # - # The Options directive is both complicated and important. Please see - # http://httpd.apache.org/docs/2.4/mod/core.html#options - # for more information. - # - Options Indexes FollowSymLinks - - # - # AllowOverride controls what directives may be placed in .htaccess files. - # It can be "All", "None", or any combination of the keywords: - # AllowOverride FileInfo AuthConfig Limit - # - AllowOverride All - - # - # Controls who can get stuff from this server. - # - Require all granted -</Directory> - -# -# DirectoryIndex: sets the file that Apache will serve if a directory -# is requested. -# -<IfModule dir_module> - DirectoryIndex index.html -</IfModule> - -# -# The following lines prevent .htaccess and .htpasswd files from being -# viewed by Web clients. -# -<Files ".ht*"> - Require all denied -</Files> - -# -# ErrorLog: The location of the error log file. -# If you do not specify an ErrorLog directive within a <VirtualHost> -# container, error messages relating to that virtual host will be -# logged here. If you *do* define an error logfile for a <VirtualHost> -# container, that host's errors will be logged there and not here. -# -ErrorLog /proc/self/fd/2 - -# -# LogLevel: Control the number of messages logged to the error_log. -# Possible values include: debug, info, notice, warn, error, crit, -# alert, emerg. -# -LogLevel warn - -<IfModule log_config_module> - # - # The following directives define some format nicknames for use with - # a CustomLog directive (see below). - # - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - LogFormat "%h %l %u %t \"%r\" %>s %b" common - - <IfModule logio_module> - # You need to enable mod_logio.c to use %I and %O - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio - </IfModule> - - # - # The location and format of the access logfile (Common Logfile Format). - # If you do not define any access logfiles within a <VirtualHost> - # container, they will be logged here. Contrariwise, if you *do* - # define per-<VirtualHost> access logfiles, transactions will be - # logged therein and *not* in this file. - # - CustomLog /proc/self/fd/1 common - - # - # If you prefer a logfile with access, agent, and referer information - # (Combined Logfile Format) you can use the following directive. - # - #CustomLog "logs/access_log" combined -</IfModule> - -<IfModule alias_module> - # - # Redirect: Allows you to tell clients about documents that used to - # exist in your server's namespace, but do not anymore. The client - # will make a new request for the document at its new location. - # Example: - # Redirect permanent /foo http://www.example.com/bar - - # - # Alias: Maps web paths into filesystem paths and is used to - # access content that does not live under the DocumentRoot. - # Example: - # Alias /webpath /full/filesystem/path - # - # If you include a trailing / on /webpath then the server will - # require it to be present in the URL. You will also likely - # need to provide a <Directory> section to allow access to - # the filesystem path. - - # - # ScriptAlias: This controls which directories contain server scripts. - # ScriptAliases are essentially the same as Aliases, except that - # documents in the target directory are treated as applications and - # run by the server when requested rather than as documents sent to the - # client. The same rules about trailing "/" apply to ScriptAlias - # directives as to Alias. - # - ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" - -</IfModule> - -<IfModule cgid_module> - # - # ScriptSock: On threaded servers, designate the path to the UNIX - # socket used to communicate with the CGI daemon of mod_cgid. - # - #Scriptsock cgisock -</IfModule> - -# -# "/usr/local/apache2/cgi-bin" should be changed to whatever your ScriptAliased -# CGI directory exists, if you have that configured. -# -<Directory "/usr/local/apache2/cgi-bin"> - AllowOverride None - Options None - Require all granted -</Directory> - -<IfModule headers_module> - # - # Avoid passing HTTP_PROXY environment to CGI's on this or any proxied - # backend servers which have lingering "httpoxy" defects. - # 'Proxy' request header is undefined by the IETF, not listed by IANA - # - RequestHeader unset Proxy early -</IfModule> - -<IfModule mime_module> - # - # TypesConfig points to the file containing the list of mappings from - # filename extension to MIME-type. - # - TypesConfig conf/mime.types - - # - # AddType allows you to add to or override the MIME configuration - # file specified in TypesConfig for specific file types. - # - #AddType application/x-gzip .tgz - # - # AddEncoding allows you to have certain browsers uncompress - # information on the fly. Note: Not all browsers support this. - # - #AddEncoding x-compress .Z - #AddEncoding x-gzip .gz .tgz - # - # If the AddEncoding directives above are commented-out, then you - # probably should define those extensions to indicate media types: - # - AddType application/x-compress .Z - AddType application/x-gzip .gz .tgz - - # - # AddHandler allows you to map certain file extensions to "handlers": - # actions unrelated to filetype. These can be either built into the server - # or added with the Action directive (see below) - # - # To use CGI scripts outside of ScriptAliased directories: - # (You will also need to add "ExecCGI" to the "Options" directive.) - # - #AddHandler cgi-script .cgi - - # For type maps (negotiated resources): - #AddHandler type-map var - - # - # Filters allow you to process content before it is sent to the client. - # - # To parse .shtml files for server-side includes (SSI): - # (You will also need to add "Includes" to the "Options" directive.) - # - #AddType text/html .shtml - #AddOutputFilter INCLUDES .shtml -</IfModule> - -# -# The mod_mime_magic module allows the server to use various hints from the -# contents of the file itself to determine its type. The MIMEMagicFile -# directive tells the module where the hint definitions are located. -# -#MIMEMagicFile conf/magic - -# -# Customizable error responses come in three flavors: -# 1) plain text 2) local redirects 3) external redirects -# -# Some examples: -#ErrorDocument 500 "The server made a boo boo." -#ErrorDocument 404 /missing.html -#ErrorDocument 404 "/cgi-bin/missing_handler.pl" -#ErrorDocument 402 http://www.example.com/subscription_info.html -# - -# -# MaxRanges: Maximum number of Ranges in a request before -# returning the entire resource, or one of the special -# values 'default', 'none' or 'unlimited'. -# Default setting is to accept 200 Ranges. -#MaxRanges unlimited - -# -# EnableMMAP and EnableSendfile: On systems that support it, -# memory-mapping or the sendfile syscall may be used to deliver -# files. This usually improves server performance, but must -# be turned off when serving from networked-mounted -# filesystems or if support for these functions is otherwise -# broken on your system. -# Defaults: EnableMMAP On, EnableSendfile Off -# -#EnableMMAP off -#EnableSendfile on - -# Supplemental configuration -# -# The configuration files in the conf/extra/ directory can be -# included to add extra features or to modify the default configuration of -# the server, or you may simply copy their contents here and change as -# necessary. - -# Server-pool management (MPM specific) -#Include conf/extra/httpd-mpm.conf - -# Multi-language error messages -#Include conf/extra/httpd-multilang-errordoc.conf - -# Fancy directory listings -#Include conf/extra/httpd-autoindex.conf - -# Language settings -#Include conf/extra/httpd-languages.conf - -# User home directories -#Include conf/extra/httpd-userdir.conf - -# Real-time info on requests and configuration -#Include conf/extra/httpd-info.conf - -# Virtual hosts -#Include conf/extra/httpd-vhosts.conf - -# Local access to the Apache HTTP Server Manual -#Include conf/extra/httpd-manual.conf - -# Distributed authoring and versioning (WebDAV) -#Include conf/extra/httpd-dav.conf - -# Various default settings -#Include conf/extra/httpd-default.conf - -# Configure mod_proxy_html to understand HTML4/XHTML1 -<IfModule proxy_html_module> -Include conf/extra/proxy-html.conf -</IfModule> - -# Secure (SSL/TLS) connections -#Include conf/extra/httpd-ssl.conf -# -# Note: The following must must be present to support -# starting without SSL on platforms with no /dev/random equivalent -# but a statically compiled-in mod_ssl. -# -<IfModule ssl_module> -SSLRandomSeed startup builtin -SSLRandomSeed connect builtin -</IfModule> - diff --git a/package.json b/package.json new file mode 100644 index 0000000..193a3ee --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "scripts": { + "lint:eslint": "pnpm -r --parallel lint:eslint", + "lint:tsc": "pnpm --filter @edata-portal/doi lint:tsc ; pnpm -r --parallel --filter './apps/**' lint:tsc", + "lint:prettier": "pnpm -r --parallel lint:prettier", + "fix:eslint": "pnpm -r --parallel fix:eslint", + "fix:prettier": "pnpm -r --parallel fix:prettier" + }, + "dependencies": { + "eslint": "^8.36.0", + "prettier": "^2.8.4", + "typescript": "^5.2.2" + }, + "devDependencies": { + "eslint-config-react-app": "^7.0.1" + }, + "eslintConfig": {} +} diff --git a/packages/doi/.eslintignore b/packages/doi/.eslintignore new file mode 100644 index 0000000..0ed753a --- /dev/null +++ b/packages/doi/.eslintignore @@ -0,0 +1,4 @@ +/dist*/ +/node_modules/ +.eslintrc.cjs +vite.config.ts \ No newline at end of file diff --git a/packages/doi/.eslintrc.cjs b/packages/doi/.eslintrc.cjs new file mode 100644 index 0000000..406cb04 --- /dev/null +++ b/packages/doi/.eslintrc.cjs @@ -0,0 +1,26 @@ +module.exports = { + root: true, + extends: [ + 'react-app', + 'react-app/jest', + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', + ], + parser: '@typescript-eslint/parser', + rules: { + 'no-debugger': 'error', + 'no-console': [ + 'error', + { + allow: ['warn', 'error'], + }, + ], + 'react/no-unknown-property': 'off', + 'no-restricted-imports': [ + 'error', + { + patterns: ['.*'], + }, + ], + }, +}; diff --git a/packages/doi/.gitignore b/packages/doi/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/packages/doi/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/packages/doi/.prettierignore b/packages/doi/.prettierignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/packages/doi/.prettierignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/packages/doi/.prettierrc b/packages/doi/.prettierrc new file mode 100644 index 0000000..544138b --- /dev/null +++ b/packages/doi/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/packages/doi/package.json b/packages/doi/package.json new file mode 100644 index 0000000..bcc9adf --- /dev/null +++ b/packages/doi/package.json @@ -0,0 +1,56 @@ +{ + "name": "@edata-portal/doi", + "private": false, + "version": "0.0.4", + "type": "module", + "main": "./src/index.tsx", + "module": "./src/index.tsx", + "types": "./src/index.tsx", + "publishConfig": { + "main": "./dist/core.umd.js", + "module": "./dist/core.es.js", + "types": "./dist/index.d.ts" + }, + "files": [ + "dist/*" + ], + "scripts": { + "build": "vite build", + "package-publish": "pnpm build && pnpm publish", + "lint:eslint": "eslint \"**/*.{js,cjs,ts,tsx}\" --max-warnings=0 --resolve-plugins-relative-to .", + "lint:tsc": "tsc", + "lint:prettier": "prettier . --check", + "fix:eslint": "eslint \"**/*.{js,cjs,ts,tsx}\" --fix", + "fix:prettier": "prettier . --write" + }, + "dependencies": { + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@fortawesome/react-fontawesome": "^0.2.0", + "@tanstack/react-query": "^5.0.5", + "autolinker": "^4.0.0", + "date-fns": "^2.30.0", + "react-bootstrap": "^2.9.1" + }, + "devDependencies": { + "@types/react": "^18.2.15", + "@types/react-dom": "^18.2.7", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "@vitejs/plugin-react": "^4.0.3", + "eslint": "^8.45.0", + "eslint-config-react-app": "^7.0.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.3", + "prettier": "^3.0.3", + "sass": "^1.69.5", + "typescript": "^5.2.2", + "vite": "^4.4.5", + "vite-tsconfig-paths": "^4.2.1", + "vite-plugin-dts": "^2.0.2", + "@types/node": "^18.14.6" + }, + "peerDependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + } +} diff --git a/packages/doi/src/assets/orcid.png b/packages/doi/src/assets/orcid.png new file mode 100644 index 0000000000000000000000000000000000000000..f9021490c41a9ea5ec549048e9832431e23c7418 GIT binary patch literal 821 zcmV-51Iqk~P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004nX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iTeVs$4ptCx$WWauh>AFB6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfbaGO3krMxx6k5c1aNLh~_a1le0DryARI_6oP&La) zCE`LRyD9`<(St685W|4POnpuilkgm0_we!cF2=LG&;2=im7K`{pFljzbi*RvAfDc| zbk6(45muBG;&b9LgDyz?$aUG}H_ioz{X8>bq*L?65n`dx#&R38qM;H`5l0nOqkMnH zWrgz=XSG~q&3p0}hI87=GS_JiBY{OML4*JqRg_SMMSYc^kzyi6`*9EdkmDE0C6lWJ zMvetkph9x|;D7MDTQfg7;U<OSK<A5Xe~bXZU7%63?eAmTZkzytXW&X}`73o`=9BbV zON$->ecQmrbxV`?fXf|V@JW{p$&msy{rNoben#Jv1^RD+(3;y@b04P<K$^Nr-T()O zz-WQ8*FE0d-QL^3XPW)}08)x_nvVa#sQ>@~24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j&R|3N0?x*}Y@{00A*cL_t(I%cYYsNW)MRMNeW8 zgd$Z$5CnB_5rq6q>e9|`9h;?!s|9yg9R<NzG>eXIZen$4bV(efAP!pSAVnlfCP8rM zkN%{!{NNqm`}aQH{qGv2aN;ko0ac)sYSjVPvAtupXeh*4;0&-Bj60z0*xoaMsgMJ} zs)z=QQyaW~gntQGKp;6?0XeyVJ_?e9A$LBCJL=?#(O=Esp*){oQCes{Ck^{St=Q!L z<&evVJu0G+c-?-#=C-w?3RTTMZYOYXwZLhx!o}kzV<Yp}(_3o0Wa=*6iF|HayUdNR zChBGe<LE?wPc4(cWZv#8P}e0d&201ZcAmJ-9N-QzvQ}&+e!*|=t8Leiml$ZAaL-9Q zwkKi_%0QTb97;~tL>UYrgMvnwL>wmLzj6KsA(CLe%sz$U00000NkvXXu0mjf_up|T literal 0 HcmV?d00001 diff --git a/packages/doi/src/components/CopyValue.tsx b/packages/doi/src/components/CopyValue.tsx new file mode 100644 index 0000000..f033d11 --- /dev/null +++ b/packages/doi/src/components/CopyValue.tsx @@ -0,0 +1,59 @@ +import { + faClipboard, + faClipboardCheck, +} from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import React from 'react'; +import { OverlayTrigger, Tooltip, Card } from 'react-bootstrap'; + +export function CopyValue({ + value, + renderedValue, +}: { + value: string; + renderedValue?: JSX.Element; +}) { + const [copied, setCopied] = React.useState(false); + React.useEffect(() => { + if (copied) { + const timeout = setTimeout(() => setCopied(false), 5000); + return () => clearTimeout(timeout); + } + return undefined; + }, [copied]); + + return ( + <OverlayTrigger + placement="auto" + overlay={<Tooltip>{copied ? 'Copied' : 'Copy to clipboard'}</Tooltip>} + > + <Card + onClick={(e) => { + e.stopPropagation(); + navigator.clipboard.writeText(value); + setCopied(true); + }} + style={{ + padding: 5, + display: 'flex', + alignItems: 'center', + gap: '0.5rem', + flexDirection: 'row', + cursor: 'pointer', + }} + > + <FontAwesomeIcon + size="lg" + icon={copied ? faClipboardCheck : faClipboard} + /> + <span + style={{ + wordBreak: 'break-all', + }} + > + {renderedValue ?? value} + </span> + </Card> + </OverlayTrigger> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOIBadge.tsx b/packages/doi/src/components/DOIInfo/DOIBadge.tsx new file mode 100644 index 0000000..d36d4ed --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOIBadge.tsx @@ -0,0 +1,57 @@ +import { CONFIG } from 'config/config'; + +export function DOIBadge({ + doi, + interactive = true, +}: { + doi?: string; + interactive?: boolean; +}) { + if (!doi?.trim().length) return null; + + const doiUrl = CONFIG.LANGING_PAGE_LINK + doi; + + const doiLabel = ( + <div + className="bg-black text-white" + style={{ + padding: '2px 5px', + display: 'inline-flex', + alignItems: 'center', + }} + key={'doilabel'} + > + DOI + </div> + ); + + const doiLink = ( + <a + href={interactive ? doiUrl : undefined} + target={interactive ? '_blank' : undefined} + rel={interactive ? 'noopener noreferrer' : undefined} + className="bg-info text-white text-decoration-none" + style={{ + padding: '2px 5px', + display: 'inline-flex', + alignItems: 'center', + }} + key={'doilink'} + > + {doi.toLocaleUpperCase()} + </a> + ); + + return ( + <div + className="rounded" + style={{ + display: 'inline-flex', + overflow: 'hidden', + }} + > + {doiLabel} + {doiLink} + </div> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOICited.tsx b/packages/doi/src/components/DOIInfo/DOICited.tsx new file mode 100644 index 0000000..8745024 --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOICited.tsx @@ -0,0 +1,54 @@ +import { LoadReference } from 'components/DOIInfo/DOIReference'; +import { Loading } from 'components/Loading'; +import { useGetEndpoint } from 'fetch/fetching'; +import { OPENCITATION_LIST_CITATIONS } from 'fetch/opencitation'; +import type { DOI } from 'model/doi'; +import { Suspense } from 'react'; +import { Card } from 'react-bootstrap'; + +export function DOICited({ doi }: { doi: DOI }) { + return ( + <Card> + <Card.Header className="p-2">Cited by</Card.Header> + <Card.Body className="p-0"> + <Suspense fallback={<Loading />}> + <LoadCited doi={doi} /> + </Suspense> + </Card.Body> + </Card> + ); +} + +export function LoadCited({ doi }: { doi: DOI }) { + const citations = useGetEndpoint({ + endpoint: OPENCITATION_LIST_CITATIONS, + params: { + doi: doi.doi, + }, + }); + + if (!citations?.length) { + return <p className="p-2 m-0">No citations were found.</p>; + } + + return ( + <> + {citations + .map((value) => value.citing.value) + //remove duplicates + .filter((doi, index, self) => self.indexOf(doi) === index) + .map((doi, index, self) => ( + <div + key={doi} + className={`p-2 ${ + index === self.length - 1 ? '' : 'border-bottom border-black' + }`} + > + <Suspense fallback={<Loading />}> + <LoadReference doi={doi} /> + </Suspense> + </div> + ))} + </> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOIDataAccess.tsx b/packages/doi/src/components/DOIInfo/DOIDataAccess.tsx new file mode 100644 index 0000000..0bd2164 --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOIDataAccess.tsx @@ -0,0 +1,72 @@ +import { CONFIG } from 'config/config'; +import { + RESTRICTED_ACCESS, + ES_RESOURCE_TYPE, + OPEN_ACCESS, +} from 'constants/doi'; +import type { DOI } from 'model/doi'; + +import { useMemo } from 'react'; +import { Button, Card } from 'react-bootstrap'; +import { getAccessibilityStatus } from 'utils/accessibility'; + +export function DOIDataAccess({ doi }: { doi: DOI }) { + const investigationId = useMemo(() => { + const regExp = RegExp(/\/\w*-*[Ee][Ss][Rr][Ff]-[Ee][Ss]-(\d+)$/); + const res = regExp.exec(doi.doi); + if (res) { + return res[1]; + } + return undefined; + }, [doi]); + + const accessibilityStatus = useMemo(() => getAccessibilityStatus(doi), [doi]); + + const accessDataButtonText = useMemo( + () => + accessibilityStatus === RESTRICTED_ACCESS + ? 'Access data for experimental team' + : 'Access data', + [accessibilityStatus], + ); + + const dataUrl = useMemo( + () => + doi.resourceType === ES_RESOURCE_TYPE + ? CONFIG.DATA_ACCESS_LINK_INVESTIGATION.replace( + ':id', + investigationId || 'undefined', + ) + : CONFIG.DATA_ACCESS_LINK_DOI.replace(':id', doi.doi), + [doi, investigationId], + ); + + return ( + <Card className="h-100"> + <Card.Header className="p-2">Experimental data</Card.Header> + <Card.Body className="p-2"> + {accessibilityStatus === OPEN_ACCESS && ( + <Card.Text> + Data can be accessed by clicking on the link below + </Card.Text> + )} + {accessibilityStatus === RESTRICTED_ACCESS && ( + <Card.Text> + Data is under embargo until <b>{doi.publicationYear}</b> but could + be released earlier. Currently, it is only accessible to proposal + team members. + </Card.Text> + )} + <Button + variant="primary" + href={dataUrl} + target="_blank" + rel="noopener noreferrer" + size="sm" + > + {accessDataButtonText} + </Button> + </Card.Body> + </Card> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOIDescription.tsx b/packages/doi/src/components/DOIInfo/DOIDescription.tsx new file mode 100644 index 0000000..a8b2125 --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOIDescription.tsx @@ -0,0 +1,14 @@ +import type { DOI } from 'model/doi'; + +export function DOIDescription({ doi }: { doi: DOI }) { + return ( + <p + className="m-0" + style={{ + textAlign: 'justify', + }} + > + {doi.description} + </p> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOIExperimentReport.tsx b/packages/doi/src/components/DOIInfo/DOIExperimentReport.tsx new file mode 100644 index 0000000..0163a9e --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOIExperimentReport.tsx @@ -0,0 +1,18 @@ +import { CONFIG } from 'config/config'; +import type { DOI } from 'model/doi'; +import { Card } from 'react-bootstrap'; + +export function DOIExperimentReport({ doi }: { doi: DOI }) { + if (!CONFIG.EXPERIMENT_REPORT.enabled) return null; + + const ReportComponent = CONFIG.EXPERIMENT_REPORT.component; + + return ( + <Card className="h-100"> + <Card.Header className="p-2">Experimental report</Card.Header> + <Card.Body className="p-2"> + <ReportComponent doi={doi} /> + </Card.Body> + </Card> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOIExperimentReportESRF.tsx b/packages/doi/src/components/DOIInfo/DOIExperimentReportESRF.tsx new file mode 100644 index 0000000..b3c0ace --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOIExperimentReportESRF.tsx @@ -0,0 +1,81 @@ +import { Loading } from 'components/Loading'; +import { CONFIG } from 'config/config'; +import { RESTRICTED_ACCESS } from 'constants/doi'; +import { useGetEndpoint } from 'fetch/fetching'; +import { USER_PORTAL_FILES } from 'fetch/userportal'; +import type { DOI } from 'model/doi'; +import { Suspense, useMemo } from 'react'; +import { Button, Card, Col, Row } from 'react-bootstrap'; +import { getAccessibilityStatus } from 'utils/accessibility'; +import { getProposalCodeAndNumber } from 'utils/userportal'; + +export function DOIExperimentReportESRF({ doi }: { doi: DOI }) { + return ( + <Suspense fallback={<Loading />}> + <LoadReports doi={doi} /> + </Suspense> + ); +} + +function LoadReports({ doi }: { doi: DOI }) { + const proposal = useMemo( + () => getProposalCodeAndNumber(doi.proposals[0]), + [doi], + ); + + const accessibilityStatus = useMemo(() => getAccessibilityStatus(doi), [doi]); + + const reportFiles = useGetEndpoint({ + endpoint: USER_PORTAL_FILES, + params: { + categoryCode: proposal?.proposalCode, + categoryCounter: proposal?.proposalNumber, + }, + skipFetch: + !proposal || + !proposal.proposalCode || + !proposal.proposalNumber || + accessibilityStatus === RESTRICTED_ACCESS, + default: [] as string[], + }); + + return ( + <> + <Card.Text> + <ReportText files={reportFiles} /> + </Card.Text> + <Row className="g-2"> + {reportFiles.map((file) => ( + <Col xs={'auto'} key={file}> + <ReportButton file={file} /> + </Col> + ))} + </Row> + </> + ); +} + +function ReportButton({ file }: { file: string }) { + const link = `${CONFIG.DOWNLOAD_REPORT_LINK}${file}`; + return ( + <Button href={link} size="sm" target="_blank" rel="noopener noreferrer"> + {file} + </Button> + ); +} + +function ReportText({ files }: { files: string[] }) { + if (files.length === 0) + return <>There is currently no experimental report.</>; + if (files.length === 1) + return ( + <> + <b>One</b> report has been found for this proposal. + </> + ); + return ( + <> + <b>{files.length}</b> reports have been found for this proposal. + </> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOIInfo.tsx b/packages/doi/src/components/DOIInfo/DOIInfo.tsx new file mode 100644 index 0000000..d9d7b84 --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOIInfo.tsx @@ -0,0 +1,62 @@ +import { DOICited } from 'components/DOIInfo/DOICited'; +import { DOIDataAccess } from 'components/DOIInfo/DOIDataAccess'; +import { DOIDescription } from 'components/DOIInfo/DOIDescription'; +import { DOIMetatada } from 'components/DOIInfo/DOIMetatada'; +import { DOIParticipants } from 'components/DOIInfo/DOIParticipants'; +import { DOIReference } from 'components/DOIInfo/DOIReference'; +import { DOIRelated } from 'components/DOIInfo/DOIRelated'; +import { DOIExperimentReport } from 'components/DOIInfo/DOIExperimentReport'; +import { DOITitle } from 'components/DOIInfo/DOITitle'; +import { DOITypes } from 'components/DOIInfo/DOITypes'; +import type { DOI } from 'model/doi'; +import { Col, Row } from 'react-bootstrap'; +import { CONFIG } from 'config/config'; + +export function DOIInfo({ doi }: { doi: DOI }) { + return ( + <> + <Row> + <DOITypes doi={doi} /> + </Row> + <Row className="g-2"> + <Col xs={12} lg={7} xl={8} xxl={9}> + <Row className="g-2"> + <Col xs={12}> + <DOITitle doi={doi} /> + </Col> + <Col xs={12}> + <DOIParticipants doi={doi} /> + </Col> + <Col xs={12}> + <DOIDescription doi={doi} /> + </Col> + <Col xs={12} sm={CONFIG.EXPERIMENT_REPORT.enabled ? 6 : 12}> + <DOIDataAccess doi={doi} /> + </Col> + {CONFIG.EXPERIMENT_REPORT.enabled ? ( + <Col xs={12} sm={6}> + <DOIExperimentReport doi={doi} /> + </Col> + ) : null} + <Col xs={12}> + <DOIReference doi={doi} /> + </Col> + <Col xs={12}> + <DOICited doi={doi} /> + </Col> + </Row> + </Col> + <Col xs={12} lg={5} xl={4} xxl={3}> + <Row className="g-2"> + <Col xs={12}> + <DOIMetatada doi={doi} /> + </Col> + <Col xs={12}> + <DOIRelated doi={doi} /> + </Col> + </Row> + </Col> + </Row> + </> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOIMetatada.tsx b/packages/doi/src/components/DOIInfo/DOIMetatada.tsx new file mode 100644 index 0000000..36db325 --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOIMetatada.tsx @@ -0,0 +1,143 @@ +import { DOIBadge } from 'components/DOIInfo/DOIBadge'; +import { CONFIG } from 'config/config'; +import { useGetEndpoint } from 'fetch/fetching'; +import { ICATPLUS_GET_INSTRUMENTS } from 'fetch/icatplus'; +import type { DOI } from 'model/doi'; +import { Suspense } from 'react'; +import { Card, Col, Row } from 'react-bootstrap'; +import { findInstrumentUrl } from 'utils/icatplus'; + +export function DOIMetatada({ doi }: { doi: DOI }) { + return ( + <Card> + <Card.Header className="p-2">Metadata</Card.Header> + <Card.Body className="pt-0 p-2"> + <Col> + <MetadataElement + title="Identifier" + content={<DOIBadge doi={doi.doi} />} + /> + + {doi.proposals?.length && doi.instruments?.length && ( + <Row> + {doi.proposals?.length && ( + <Col> + <MetadataElement + title={`Proposal${doi.proposals?.length > 1 ? 's' : ''}`} + content={doi.proposals} + /> + </Col> + )} + {doi.instruments?.length && ( + <Col> + <MetadataElement + title={`Instrument${ + doi.instruments?.length > 1 ? 's' : '' + }`} + content={doi.instruments.map((i) => ( + <Instrument key={i} instrument={i} /> + ))} + /> + </Col> + )} + </Row> + )} + <MetadataElement + title="Public release year" + content={doi.publicationYear} + /> + <MetadataElement title="Session date" content={doi.collectionDate} /> + <MetadataElement title="Category" content={doi.categories} /> + <MetadataElement + title="Publisher" + content={<Publisher doi={doi} />} + /> + <MetadataElement title="License (for files)" content={<License />} /> + </Col> + </Card.Body> + </Card> + ); +} + +type MetadataType = string | number | JSX.Element | undefined | null; + +function MetadataElement({ + title, + content, +}: { + title: string; + content: MetadataType | MetadataType[]; +}) { + const contentArray = Array.isArray(content) ? content : [content]; + + const filteredContentArray = contentArray.filter( + (c) => c !== null && c !== undefined, + ); + + if (filteredContentArray.length === 0) return null; + + return ( + <> + <Row className="mt-2"> + <strong>{title}</strong> + </Row> + + {filteredContentArray.map((c, i) => ( + <Row key={i}> + <Col>{c}</Col> + </Row> + ))} + </> + ); +} + +function License() { + return ( + <a + href="https://creativecommons.org/licenses/by/4.0/" + target="_blank" + rel="noopener noreferrer" + > + Creative Commons Attribution 4.0 + </a> + ); +} + +function Publisher({ doi }: { doi: DOI }) { + if ( + doi.publisher?.toLocaleLowerCase() !== + CONFIG.SITE_PUBLISHER_NAME.toLocaleLowerCase() + ) + return <>{doi.publisher}</>; + return ( + <a href={CONFIG.PUBLISHER_URL} target="_blank" rel="noopener noreferrer"> + {doi.publisher} + </a> + ); +} + +function Instrument({ instrument }: { instrument: string }) { + return ( + <Suspense fallback={instrument}> + <LoadInstrumentUrl instrument={instrument} /> + </Suspense> + ); +} + +function LoadInstrumentUrl({ instrument }: { instrument: string }) { + const icatPlusInstruments = useGetEndpoint({ + endpoint: ICATPLUS_GET_INSTRUMENTS, + }); + + if (!icatPlusInstruments) return <>{instrument}</>; + + const url = findInstrumentUrl(icatPlusInstruments, instrument); + + if (!url) return <>{instrument}</>; + + return ( + <a href={url} target="_blank" rel="noopener noreferrer"> + {instrument} + </a> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOIParticipants.tsx b/packages/doi/src/components/DOIInfo/DOIParticipants.tsx new file mode 100644 index 0000000..eb90d6c --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOIParticipants.tsx @@ -0,0 +1,70 @@ +import type { DOI, DOIParticipant } from 'model/doi'; +import { Col, Row } from 'react-bootstrap'; +import orcid from 'assets/orcid.png'; + +export function DOIParticipants({ doi }: { doi: DOI }) { + return ( + <Row className="g-2"> + {doi.creators?.length ? ( + <Col xs={12}> + <Row className="gx-2"> + {doi.creators.map((participant, index, self) => { + return ( + <Col xs={'auto'} key={participant.name}> + <Participant participant={participant} /> + {index < self.length - 1 ? ( + <span className="text-muted">;</span> + ) : null} + </Col> + ); + })} + </Row> + </Col> + ) : null} + {doi.contributors?.length ? ( + <Col xs={12}> + <Row className="gx-2"> + <Col xs={'auto'}> + <small>Contributors:</small> + </Col> + {doi.contributors.map((participant, index, self) => { + return ( + <Col xs={'auto'} key={participant.name}> + <Participant participant={participant} /> + {index < self.length - 1 ? ( + <span className="text-muted">;</span> + ) : null} + </Col> + ); + })} + </Row> + </Col> + ) : null} + </Row> + ); +} + +function Participant({ participant }: { participant: DOIParticipant }) { + return ( + <span> + <ORCIDBadge participant={participant} /> + <small className="text-muted text-nowrap">{participant.name}</small> + </span> + ); +} + +function ORCIDBadge({ participant }: { participant: DOIParticipant }) { + if (!participant.orcid) { + return null; + } + return ( + <a + href={participant.orcid} + target="_blank" + rel="noopener noreferrer" + className="me-1" + > + <img src={orcid} alt="ORCID" /> + </a> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOIReference.tsx b/packages/doi/src/components/DOIInfo/DOIReference.tsx new file mode 100644 index 0000000..ca0b8a2 --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOIReference.tsx @@ -0,0 +1,72 @@ +import { CROSSCITE_FORMAT_REFERENCE } from 'fetch/crosscite'; +import { useGetEndpoint } from 'fetch/fetching'; +import type { DOI } from 'model/doi'; +import { Alert, Card } from 'react-bootstrap'; +import Autolinker from 'autolinker'; +import { Suspense } from 'react'; +import { Loading } from 'components/Loading'; +import { CopyValue } from 'components/CopyValue'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faWarning } from '@fortawesome/free-solid-svg-icons'; + +export function DOIReference({ doi }: { doi: DOI }) { + return ( + <Card> + <Card.Header className="p-2">Reference</Card.Header> + <Card.Body className=" p-2"> + <p> + Researchers must acknowledge the source of the data and cite its + unique identifier as well as any publications linked to the same raw + data. + <br /> + Below is the recommended format for citing this work in a research + publication. + </p> + + <Suspense fallback={<Loading />}> + <LoadReference doi={doi.doi} copy /> + </Suspense> + </Card.Body> + </Card> + ); +} + +export function LoadReference({ doi, copy }: { doi: string; copy?: boolean }) { + const reference = useGetEndpoint({ + endpoint: CROSSCITE_FORMAT_REFERENCE, + params: { + doi: doi, + lang: 'en-US', + style: 'apa', + }, + }); + + if (!reference) + return ( + <Alert variant="warning" className="p-2"> + <FontAwesomeIcon icon={faWarning} className="me-2" /> + Could not get reference + </Alert> + ); + + const content = ( + <p + className="m-0" + style={{ + fontStyle: 'italic', + wordBreak: 'keep-all', + textAlign: 'justify', + }} + dangerouslySetInnerHTML={ + reference + ? { + __html: Autolinker.link(reference), + } + : undefined + } + /> + ); + + if (!copy) return content; + return <CopyValue value={reference} renderedValue={content} />; +} diff --git a/packages/doi/src/components/DOIInfo/DOIRelated.tsx b/packages/doi/src/components/DOIInfo/DOIRelated.tsx new file mode 100644 index 0000000..a75610d --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOIRelated.tsx @@ -0,0 +1,32 @@ +import { LoadReference } from 'components/DOIInfo/DOIReference'; +import { Loading } from 'components/Loading'; +import type { DOI } from 'model/doi'; +import { Suspense } from 'react'; +import { Card } from 'react-bootstrap'; + +export function DOIRelated({ doi }: { doi: DOI }) { + return ( + <Card> + <Card.Header className="p-2">Related DOIs</Card.Header> + <Card.Body className="p-0"> + {doi.relatedDOI?.length ? ( + doi.relatedDOI?.map((doi, index, self) => ( + <div + key={doi} + className={`p-2 ${ + index === self.length - 1 ? '' : 'border-bottom border-black' + }`} + > + <Suspense fallback={<Loading />}> + <LoadReference doi={doi} /> + </Suspense> + </div> + )) + ) : ( + <p className="p-2 m-0">No related DOIs were found.</p> + )} + {} + </Card.Body> + </Card> + ); +} diff --git a/packages/doi/src/components/DOIInfo/DOITitle.tsx b/packages/doi/src/components/DOIInfo/DOITitle.tsx new file mode 100644 index 0000000..3043ed1 --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOITitle.tsx @@ -0,0 +1,5 @@ +import type { DOI } from 'model/doi'; + +export function DOITitle({ doi }: { doi: DOI }) { + return <h3>{doi.title}</h3>; +} diff --git a/packages/doi/src/components/DOIInfo/DOITypes.tsx b/packages/doi/src/components/DOIInfo/DOITypes.tsx new file mode 100644 index 0000000..42ccf67 --- /dev/null +++ b/packages/doi/src/components/DOIInfo/DOITypes.tsx @@ -0,0 +1,37 @@ +import { + ES_RESOURCE_TYPE, + DC_RESOURCE_TYPE, + OPEN_ACCESS, + RESTRICTED_ACCESS, +} from 'constants/doi'; +import type { DOI } from 'model/doi'; + +import { Badge, Stack } from 'react-bootstrap'; +import { getAccessibilityStatus } from 'utils/accessibility'; + +export function DOITypes({ doi }: { doi: DOI }) { + const accessibilityStatus = getAccessibilityStatus(doi); + + return ( + <Stack + direction="horizontal" + style={{ + fontSize: '1.3rem', + }} + gap={2} + > + {doi.resourceType === ES_RESOURCE_TYPE && ( + <Badge bg="secondary">Session</Badge> + )} + {doi.resourceType === DC_RESOURCE_TYPE && ( + <Badge bg="secondary">Data Collection</Badge> + )} + {accessibilityStatus === OPEN_ACCESS && ( + <Badge bg="success">Open access</Badge> + )} + {accessibilityStatus === RESTRICTED_ACCESS && ( + <Badge bg="warning">Restricted access</Badge> + )} + </Stack> + ); +} diff --git a/packages/doi/src/components/DOINotFound.tsx b/packages/doi/src/components/DOINotFound.tsx new file mode 100644 index 0000000..3e69dbe --- /dev/null +++ b/packages/doi/src/components/DOINotFound.tsx @@ -0,0 +1,5 @@ +import { Alert } from 'react-bootstrap'; + +export function DOINotFound() { + return <Alert variant="danger">DOI not found</Alert>; +} diff --git a/packages/doi/src/components/FetchAndDisplayDOI.tsx b/packages/doi/src/components/FetchAndDisplayDOI.tsx new file mode 100644 index 0000000..6259e2f --- /dev/null +++ b/packages/doi/src/components/FetchAndDisplayDOI.tsx @@ -0,0 +1,41 @@ +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { Suspense } from 'react'; +import { useGetEndpoint } from 'fetch/fetching'; +import { DATACITE_GET_DOI } from 'fetch/datacite'; +import { ICATPLUS_GET_DOI } from 'fetch/icatplus'; +import { Loading } from 'components/Loading'; +import { DOIInfo } from 'components/DOIInfo/DOIInfo'; +import { convertDataciteToInternal } from 'utils/datacite'; +import { DOINotFound } from 'components/DOINotFound'; + +const queryClient = new QueryClient(); + +export function FetchAndDisplayDOI({ doi }: { doi: string }) { + return ( + <QueryClientProvider client={queryClient}> + <Suspense fallback={<Loading />}> + <FetchDOI doi={doi} /> + </Suspense> + </QueryClientProvider> + ); +} + +function FetchDOI({ doi }: { doi: string }) { + const icatplusDOI = useGetEndpoint({ + endpoint: ICATPLUS_GET_DOI, + params: { doi }, + }); + + const dataciteDOI = useGetEndpoint({ + endpoint: DATACITE_GET_DOI, + params: { doi }, + skipFetch: icatplusDOI !== undefined, + }); + + const doiObject = convertDataciteToInternal( + icatplusDOI ? icatplusDOI : dataciteDOI, + ); + if (!doiObject) return <DOINotFound />; + + return <DOIInfo doi={doiObject} />; +} diff --git a/packages/doi/src/components/Loading.tsx b/packages/doi/src/components/Loading.tsx new file mode 100644 index 0000000..7403c0f --- /dev/null +++ b/packages/doi/src/components/Loading.tsx @@ -0,0 +1,10 @@ +import { Spinner } from 'react-bootstrap'; + +export function Loading() { + return ( + <div className="text-center"> + <Spinner animation="border" role="status" variant="primary" /> + <p className="">Loading...</p> + </div> + ); +} diff --git a/packages/doi/src/config/config.ts b/packages/doi/src/config/config.ts new file mode 100644 index 0000000..fd28067 --- /dev/null +++ b/packages/doi/src/config/config.ts @@ -0,0 +1,47 @@ +import { DOIExperimentReportESRF } from 'components/DOIInfo/DOIExperimentReportESRF'; +import type { Server } from 'fetch/fetching'; +import type { DOI } from 'model/doi'; + +interface Config { + SITE_PUBLISHER_NAME: string; + LANGING_PAGE_LINK: string; + DATA_ACCESS_LINK_INVESTIGATION: string; + DATA_ACCESS_LINK_DOI: string; + DOWNLOAD_REPORT_LINK: string; + PUBLISHER_URL: string; + // value for each key of type Server is a string + SERVERS: Record<Server, string>; + AUTHORIZATION: Partial<Record<Server, string>>; + EXPERIMENT_REPORT: + | { + enabled: false; + } + | { + enabled: true; + component: React.FC<{ doi: DOI }>; + }; +} + +export const CONFIG: Config = { + SITE_PUBLISHER_NAME: 'European Synchrotron Radiation Facility', + LANGING_PAGE_LINK: 'https://doi.org/', + DATA_ACCESS_LINK_INVESTIGATION: + 'https://data2.esrf.fr/investigation/:id/datasets', + DATA_ACCESS_LINK_DOI: 'https://data2.esrf.fr/doi/:id/datasets', + DOWNLOAD_REPORT_LINK: 'http://ftp.esrf.fr/pub/UserReports/', + PUBLISHER_URL: 'https://www.esrf.fr/', + SERVERS: { + DATACITE: 'https://api.datacite.org/', + ICATPLUS: 'https://icatplus.esrf.fr/', + CROSSCITE: 'https://citation.crosscite.org/', + USER_PORTAL: 'https://smis.esrf.fr/misapps/SMISServer/rest/', + OPENCITATION: 'https://opencitations.net/index/api/v1/', + }, + AUTHORIZATION: { + OPENCITATION: 'd0633119-deff-4378-a192-8fb780c0bd8a', + }, + EXPERIMENT_REPORT: { + enabled: true, + component: DOIExperimentReportESRF, + }, +}; diff --git a/packages/doi/src/constants/doi.ts b/packages/doi/src/constants/doi.ts new file mode 100644 index 0000000..7129ab6 --- /dev/null +++ b/packages/doi/src/constants/doi.ts @@ -0,0 +1,17 @@ +export const RESTRICTED_ACCESS = 'Restricted access'; +export const OPEN_ACCESS = 'Open access'; + +export const ES_RESOURCE_TYPE = 'Experiment Session'; +export const DC_RESOURCE_TYPE = 'Datacollection'; + +export const CATEGORY_SUBJECT_SCHEME = 'Proposal Type Description'; +export const INSTRUMENT_SUBJECT_SCHEME = 'Instrument'; +export const PROPOSAL_SUBJECT_SCHEME = 'Proposal'; + +export const COLLECTED_DATE_TYPE = 'Collected'; + +export const ABSTRACT_DESCRIPTION_TYPE = 'Abstract'; + +export const ORCID_IDENTIFIER_SCHEME = 'ORCID'; + +export const COLLECTION_DATE_FORMAT = 'yyyy-MM-dd'; diff --git a/packages/doi/src/fetch/crosscite.ts b/packages/doi/src/fetch/crosscite.ts new file mode 100644 index 0000000..5f92f07 --- /dev/null +++ b/packages/doi/src/fetch/crosscite.ts @@ -0,0 +1,12 @@ +import { Endpoint } from 'fetch/fetching'; + +export const CROSSCITE_FORMAT_REFERENCE = Endpoint({ + server: 'CROSSCITE', + path: 'format', + params: {} as { + style?: 'apa'; + lang?: 'en-US'; + doi: string; + }, + schema: '' as string, +}); diff --git a/packages/doi/src/fetch/datacite.ts b/packages/doi/src/fetch/datacite.ts new file mode 100644 index 0000000..dee464b --- /dev/null +++ b/packages/doi/src/fetch/datacite.ts @@ -0,0 +1,11 @@ +import { Endpoint } from 'fetch/fetching'; +import type { DataciteDOI } from 'model/datacite'; + +export const DATACITE_GET_DOI = Endpoint({ + server: 'DATACITE', + path: 'dois/:doi', + params: {} as { + doi: string; + }, + schema: {} as DataciteDOI, +}); diff --git a/packages/doi/src/fetch/fetching.tsx b/packages/doi/src/fetch/fetching.tsx new file mode 100644 index 0000000..93b640a --- /dev/null +++ b/packages/doi/src/fetch/fetching.tsx @@ -0,0 +1,167 @@ +import { replaceEqualDeep, useSuspenseQuery } from '@tanstack/react-query'; +import { CONFIG } from 'config/config'; +import { useMemo } from 'react'; + +export const SERVERS = [ + 'ICATPLUS', + 'DATACITE', + 'CROSSCITE', + 'USER_PORTAL', + 'OPENCITATION', +] as const; +export type Server = (typeof SERVERS)[number]; + +export type EndpointDefinitionParams<DATA, PARAMS> = { + path: string; + server: Server; + schema?: DATA; + params?: PARAMS; +}; + +export type EndpointDefinition<DATA, PARAMS> = Required< + EndpointDefinitionParams<DATA, PARAMS> +>; + +export function Endpoint<DATA, PARAMS>( + args: EndpointDefinitionParams<DATA, PARAMS>, +): EndpointDefinition<DATA, PARAMS> { + return { + schema: {} as DATA, + params: {} as PARAMS, + ...args, + }; +} + +function buildURL(endpoint: EndpointDefinition<unknown, unknown>, params: any) { + const serverUrl = CONFIG.SERVERS[endpoint.server]; + const url = `${serverUrl}${endpoint.path}`; + + if (typeof params !== 'object' || !params) return url; + + const urlWithPathParams = Object.keys(params).reduce( + (a, b) => a.replaceAll(`:${b}`, params[b]), + url, + ); + + const queryParams = Object.keys(params).filter((key) => { + return !url.includes(`:${key}`); + }); + + if (queryParams.length === 0) return urlWithPathParams; + + const queryParamsObject = new URLSearchParams(); + queryParams.forEach((key) => { + queryParamsObject.append(key, params[key]); + }); + + return `${urlWithPathParams}?${queryParamsObject.toString()}`; +} + +function getAuthorizationHeader( + endpoint: EndpointDefinition<unknown, unknown>, +) { + const server = endpoint.server; + + const authorizations = CONFIG.AUTHORIZATION as any; + + if (server in authorizations && typeof authorizations[server] === 'string') { + return { + authorization: authorizations[server], + }; + } + return undefined; +} + +function fetchEndpoint<DATA, PARAMS>(args: { + endpoint: EndpointDefinition<DATA, PARAMS>; + params?: PARAMS; + url: string; + key?: any; + skipFetch?: boolean; + onFail?: (body: string) => void; +}) { + if (args.skipFetch) return Promise.resolve(null); + + return fetch(args.url, { + method: 'GET', + headers: getAuthorizationHeader(args.endpoint), + }) + .catch((error) => { + console.error(error); + return null; + }) + .then(async (response) => { + const body = await response?.text(); + + if (!response?.ok) { + console.error( + `Error fetching ${args.url}: ${response?.status} ${response?.statusText} ${body}`, + ); + if (args.onFail) + body ? args.onFail(body) : args.onFail('Error fetching data'); + return null; + } + if (!body) return null; + try { + return JSON.parse(body) as DATA; + } catch (e) { + return body as DATA; + } + }); +} + +export function getQueryObject<DATA, PARAMS>(args: { + endpoint: EndpointDefinition<DATA, PARAMS>; + params?: PARAMS; + skipFetch?: boolean; + onFail?: (body: string) => void; +}) { + const url = buildURL(args.endpoint, args.params); + + const key = [args.params, url, args.skipFetch ? 'skip' : 'fetch']; + + return { + queryKey: key, + queryFn: () => fetchEndpoint({ ...args, url, key }), + }; +} + +export function useGetEndpoint<DATA, PARAMS, DEFAULT = undefined>(args: { + endpoint: EndpointDefinition<DATA, PARAMS>; + params?: PARAMS; + default?: DEFAULT; + skipFetch?: boolean; + onFail?: (body: string) => void; +}): DATA | DEFAULT { + const query = getQueryObject({ + endpoint: args.endpoint, + params: args.params, + + skipFetch: args.skipFetch, + onFail: args.onFail, + }); + + const d = useSuspenseQuery({ + notifyOnChangeProps: ['data'], + structuralSharing: (oldData, newData) => { + return replaceEqualDeep(oldData, newData); + }, + refetchInterval: false, + refetchIntervalInBackground: false, + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + retry: false, + ...query, + }); + + const res = useMemo( + () => + d.data + ? (JSON.parse(JSON.stringify(d.data)) as DATA) //make a copy so that the data is not mutated + : (args.default as DEFAULT), + [d.data], // eslint-disable-line react-hooks/exhaustive-deps + ); + + return res; +} diff --git a/packages/doi/src/fetch/icatplus.ts b/packages/doi/src/fetch/icatplus.ts new file mode 100644 index 0000000..5e94c77 --- /dev/null +++ b/packages/doi/src/fetch/icatplus.ts @@ -0,0 +1,21 @@ +import { Endpoint } from 'fetch/fetching'; +import type { DataciteDOIAttributes } from 'model/datacite'; +import type { Instrument } from 'model/icatplus'; + +export const ICATPLUS_GET_DOI = Endpoint({ + server: 'ICATPLUS', + path: 'doi/:doi/json-datacite', + params: {} as { + doi: string; + }, + schema: {} as DataciteDOIAttributes, +}); + +export const ICATPLUS_GET_INSTRUMENTS = Endpoint({ + server: 'ICATPLUS', + path: 'catalogue/instruments', + params: {} as { + doi: string; + }, + schema: [] as Instrument[], +}); diff --git a/packages/doi/src/fetch/opencitation.ts b/packages/doi/src/fetch/opencitation.ts new file mode 100644 index 0000000..c236593 --- /dev/null +++ b/packages/doi/src/fetch/opencitation.ts @@ -0,0 +1,11 @@ +import { Endpoint } from 'fetch/fetching'; +import type { OpencitationCitation } from 'model/opencitation'; + +export const OPENCITATION_LIST_CITATIONS = Endpoint({ + server: 'OPENCITATION', + path: 'citations/:doi?json=dict(%22%20=%3E%20%22,citing,source,value).dict(%22%20=%3E%20%22,cited,source,value)', + params: {} as { + doi: string; + }, + schema: {} as OpencitationCitation[], +}); diff --git a/packages/doi/src/fetch/userportal.ts b/packages/doi/src/fetch/userportal.ts new file mode 100644 index 0000000..b802351 --- /dev/null +++ b/packages/doi/src/fetch/userportal.ts @@ -0,0 +1,11 @@ +import { Endpoint } from 'fetch/fetching'; + +export const USER_PORTAL_FILES = Endpoint({ + server: 'USER_PORTAL', + path: 'reports/fileNames', + params: {} as { + categoryCode: string; + categoryCounter: string; + }, + schema: [] as string[], +}); diff --git a/packages/doi/src/index.tsx b/packages/doi/src/index.tsx new file mode 100644 index 0000000..45b1ded --- /dev/null +++ b/packages/doi/src/index.tsx @@ -0,0 +1,2 @@ +export { FetchAndDisplayDOI as DOI } from 'components/FetchAndDisplayDOI'; +export { DOIBadge } from 'components/DOIInfo/DOIBadge'; diff --git a/packages/doi/src/model/datacite.ts b/packages/doi/src/model/datacite.ts new file mode 100644 index 0000000..7a6102b --- /dev/null +++ b/packages/doi/src/model/datacite.ts @@ -0,0 +1,65 @@ +export interface NameIdentifier { + schemeUri: string; + nameIdentifierScheme: string; + nameIdentifier: string; +} + +export interface DataciteParticipant { + name: string; + givenName?: string; + familyName?: string; + nameIdentifiers?: NameIdentifier[]; +} + +export interface DataciteTitle { + title: string; + titleType?: string; +} + +export interface DataciteDescription { + description: string; + descriptionType: string; +} + +export interface DataciteSubject { + subject: string; + subjectScheme: string; +} + +export interface DataciteDateObject { + date: string; + dateType: string; +} + +export interface DataciteTypes { + resourceTypeGeneral: string; + resourceType: string; +} + +export interface DataciteRelatedIdentifier { + relatedIdentifier: string; + relatedIdentifierType: string; + relationType: string; +} + +export interface DataciteDOIAttributes { + doi: string; + url: string; + publicationYear: string | number; + creators?: DataciteParticipant[]; + contributors?: DataciteParticipant[]; + titles: DataciteTitle[]; + descriptions: DataciteDescription[]; + publisher: string; + subjects: DataciteSubject[]; + dates: DataciteDateObject[]; + relatedIdentifiers?: DataciteRelatedIdentifier[]; + types: DataciteTypes; +} +export interface DataciteDOI { + data: { + id: string; + type: string; + attributes: DataciteDOIAttributes; + }; +} diff --git a/packages/doi/src/model/doi.ts b/packages/doi/src/model/doi.ts new file mode 100644 index 0000000..e74fe4c --- /dev/null +++ b/packages/doi/src/model/doi.ts @@ -0,0 +1,19 @@ +export type DOI = { + doi: string; + title: string; + creators?: DOIParticipant[]; + contributors?: DOIParticipant[]; + publicationYear?: number; + instruments: string[]; + proposals: string[]; + description?: string; + publisher?: string; + collectionDate?: string; + categories?: string[]; + relatedDOI?: string[]; + resourceType?: string; +}; +export type DOIParticipant = { + name: string; + orcid?: string; +}; diff --git a/packages/doi/src/model/icatplus.ts b/packages/doi/src/model/icatplus.ts new file mode 100644 index 0000000..7f37515 --- /dev/null +++ b/packages/doi/src/model/icatplus.ts @@ -0,0 +1,12 @@ +export interface Instrument { + id: number; + createId: string; + createTime: string; + modId: string; + modTime: string; + description: string; + fullName: string; + name: string; + type: string; + url: string; +} diff --git a/packages/doi/src/model/opencitation.ts b/packages/doi/src/model/opencitation.ts new file mode 100644 index 0000000..9b679f0 --- /dev/null +++ b/packages/doi/src/model/opencitation.ts @@ -0,0 +1,10 @@ +export interface OpencitationCitation { + citing: { + source: string; + value: string; + }; + cited: { + source: string; + value: string; + }; +} diff --git a/packages/doi/src/utils/accessibility.ts b/packages/doi/src/utils/accessibility.ts new file mode 100644 index 0000000..383a535 --- /dev/null +++ b/packages/doi/src/utils/accessibility.ts @@ -0,0 +1,33 @@ +import { + ES_RESOURCE_TYPE, + OPEN_ACCESS, + RESTRICTED_ACCESS, + DC_RESOURCE_TYPE, + COLLECTION_DATE_FORMAT, +} from 'constants/doi'; +import { parse, setYear } from 'date-fns'; +import type { DOI } from 'model/doi'; + +export function getAccessibilityStatus(doi: DOI) { + const { resourceType, collectionDate, publicationYear } = doi; + if (resourceType === ES_RESOURCE_TYPE) { + if (publicationYear && collectionDate) { + // take day and month of sessionDate and year of publicationYear + const publiclyAvailableDate = setYear( + parse(collectionDate, COLLECTION_DATE_FORMAT, new Date()), + publicationYear, + ); + + const now = new Date(); + + if (now > publiclyAvailableDate) { + return OPEN_ACCESS; + } else if (now <= publiclyAvailableDate) { + return RESTRICTED_ACCESS; + } + } + } else if (resourceType === DC_RESOURCE_TYPE) { + return OPEN_ACCESS; + } + return undefined; +} diff --git a/packages/doi/src/utils/datacite.ts b/packages/doi/src/utils/datacite.ts new file mode 100644 index 0000000..eaab888 --- /dev/null +++ b/packages/doi/src/utils/datacite.ts @@ -0,0 +1,87 @@ +import { + ABSTRACT_DESCRIPTION_TYPE, + CATEGORY_SUBJECT_SCHEME, + COLLECTED_DATE_TYPE, + INSTRUMENT_SUBJECT_SCHEME, + ORCID_IDENTIFIER_SCHEME, + PROPOSAL_SUBJECT_SCHEME, +} from 'constants/doi'; +import type { + DataciteDOIAttributes, + DataciteDOI, + DataciteParticipant, +} from 'model/datacite'; +import type { DOI, DOIParticipant } from 'model/doi'; + +export function convertDataciteToInternal( + dataciteObject: DataciteDOIAttributes | DataciteDOI | undefined, +): DOI | undefined { + if (!dataciteObject) return undefined; + + const doi = + 'data' in dataciteObject ? dataciteObject.data.attributes : dataciteObject; + + return { + doi: doi.doi, + title: doi.titles[0].title, + creators: doi.creators?.map(makeParticipant), + contributors: doi.contributors?.map(makeParticipant), + publicationYear: parseIntOrUndefined(doi.publicationYear), + instruments: doi.subjects + .filter( + (subject) => + subject.subjectScheme.toLowerCase() === + INSTRUMENT_SUBJECT_SCHEME.toLowerCase(), + ) + .flatMap((subject) => subject.subject.split(',')), + proposals: doi.subjects + .filter( + (subject) => + subject.subjectScheme.toLowerCase() === + PROPOSAL_SUBJECT_SCHEME.toLowerCase(), + ) + .flatMap((subject) => subject.subject.split(',')), + description: doi.descriptions.find( + (description) => + description.descriptionType.toLowerCase() === + ABSTRACT_DESCRIPTION_TYPE.toLowerCase(), + )?.description, + publisher: doi.publisher, + collectionDate: doi.dates.find( + (date) => + date.dateType.toLowerCase() === COLLECTED_DATE_TYPE.toLowerCase(), + )?.date, + categories: doi.subjects + .filter( + (subject) => + subject.subjectScheme.toLowerCase() === + CATEGORY_SUBJECT_SCHEME.toLowerCase(), + ) + .map((subject) => subject.subject), + relatedDOI: doi.relatedIdentifiers?.map( + (relatedIdentifier) => relatedIdentifier.relatedIdentifier, + ), + resourceType: doi.types.resourceType, + }; +} + +function makeParticipant(p: DataciteParticipant): DOIParticipant { + const orcid = p.nameIdentifiers?.find( + (i) => + i.nameIdentifierScheme.toLowerCase() === + ORCID_IDENTIFIER_SCHEME.toLowerCase(), + ); + const name = + p.familyName && p.givenName ? `${p.givenName} ${p.familyName}` : p.name; + return { + name: name, + orcid: orcid ? `${orcid.schemeUri}/${orcid.nameIdentifier}` : undefined, + }; +} + +function parseIntOrUndefined(value: string | number | undefined) { + if (value === undefined) return undefined; + const res = typeof value === 'string' ? parseInt(value) : value; + if (isNaN(res)) return undefined; + return res; +} diff --git a/packages/doi/src/utils/icatplus.ts b/packages/doi/src/utils/icatplus.ts new file mode 100644 index 0000000..b6a10fc --- /dev/null +++ b/packages/doi/src/utils/icatplus.ts @@ -0,0 +1,6 @@ +import type { Instrument } from 'model/icatplus'; + +export function findInstrumentUrl(instruments: Instrument[], name: string) { + const instrument = instruments.find((instrument) => instrument.name === name); + return instrument ? instrument.url : undefined; +} diff --git a/packages/doi/src/utils/userportal.ts b/packages/doi/src/utils/userportal.ts new file mode 100644 index 0000000..21f9ba9 --- /dev/null +++ b/packages/doi/src/utils/userportal.ts @@ -0,0 +1,41 @@ +/** + * Extracts the proposalCode and the proposalNumber of a specific proposal name + * @param {*} proposalName + * @returns {proposalCode, proposalNumber} + */ +export function getProposalCodeAndNumber(proposalName: string) { + const aroundHyphenRegExp = new RegExp(/^(.*)-(.*)/); + try { + // extract the proposal LetterCode (before the hyphen) and the digits (after the hyphen) + const res = aroundHyphenRegExp.exec(proposalName); + if (res?.length && res.length >= 2) + return { + proposalCode: res[1], + proposalNumber: res[2], + }; + } catch (e) { + console.error(e); + } + + /** It is most likely that symbol '-' is not present in the proposal name then we use /\d+$/ */ + const numbersRegEXp = new RegExp(/\d+$/); + /** This will get all numbers at the end of the string + * Example: input=mx3030 then output[0]=3030 + */ + + try { + const res = numbersRegEXp.exec(proposalName); + if (res?.length) + return { + proposalCode: proposalName.substring( + 0, + proposalName.length - res[0].length, + ), + proposalNumber: res[0], + }; + } catch (e) { + console.error(e); + } + + return undefined; +} diff --git a/packages/doi/tsconfig.json b/packages/doi/tsconfig.json new file mode 100644 index 0000000..4bae8ff --- /dev/null +++ b/packages/doi/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src"], + "compilerOptions": { + "baseUrl": "src", + "outDir": "dist", + "composite": true + }, + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/packages/doi/tsconfig.node.json b/packages/doi/tsconfig.node.json new file mode 100644 index 0000000..9d31e2a --- /dev/null +++ b/packages/doi/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/doi/vite.config.ts b/packages/doi/vite.config.ts new file mode 100644 index 0000000..086ad3f --- /dev/null +++ b/packages/doi/vite.config.ts @@ -0,0 +1,34 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import dts from 'vite-plugin-dts'; +import path from 'node:path'; +import tsconfigPaths from 'vite-tsconfig-paths'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react(), + dts({ + insertTypesEntry: true, + }), + tsconfigPaths(), + ], + build: { + lib: { + entry: path.resolve(__dirname, 'src/index.tsx'), + name: 'core', + formats: ['es', 'umd'], + fileName: (format) => `core.${format}.js`, + }, + rollupOptions: { + external: ['react', 'react-dom', 'styled-components'], + output: { + globals: { + react: 'React', + 'react-dom': 'ReactDOM', + 'styled-components': 'styled', + }, + }, + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..29a28b8 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5119 @@ +lockfileVersion: '6.0' + +importers: + + .: + dependencies: + eslint: + specifier: ^8.36.0 + version: 8.45.0 + prettier: + specifier: ^2.8.4 + version: 2.8.4 + typescript: + specifier: ^5.2.2 + version: 5.2.2 + devDependencies: + eslint-config-react-app: + specifier: ^7.0.1 + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.45.0)(typescript@5.2.2) + + apps/doi-landing-page: + dependencies: + '@edata-portal/doi': + specifier: workspace:* + version: link:../../packages/doi + bootstrap: + specifier: ^5.3.2 + version: 5.3.2(@popperjs/core@2.11.8) + bootswatch: + specifier: ^5.3.2 + version: 5.3.2 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-bootstrap: + specifier: ^2.9.1 + version: 2.9.1(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-router-dom: + specifier: ^6.17.0 + version: 6.17.0(react-dom@18.2.0)(react@18.2.0) + devDependencies: + '@types/react': + specifier: ^18.2.15 + version: 18.2.15 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.7 + '@typescript-eslint/eslint-plugin': + specifier: ^6.0.0 + version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6.0.0 + version: 6.0.0(eslint@8.45.0)(typescript@5.2.2) + '@vitejs/plugin-react': + specifier: ^4.0.3 + version: 4.0.3(vite@4.4.5) + eslint: + specifier: ^8.45.0 + version: 8.45.0 + eslint-config-react-app: + specifier: ^7.0.1 + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.45.0)(typescript@5.2.2) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.45.0) + eslint-plugin-react-refresh: + specifier: ^0.4.3 + version: 0.4.3(eslint@8.45.0) + prettier: + specifier: ^3.0.3 + version: 3.0.3 + sass: + specifier: ^1.69.5 + version: 1.69.5 + typescript: + specifier: ^5.2.2 + version: 5.2.2 + vite: + specifier: ^4.4.5 + version: 4.4.5(@types/node@18.14.6)(sass@1.69.5) + vite-tsconfig-paths: + specifier: ^4.2.1 + version: 4.2.1(typescript@5.2.2)(vite@4.4.5) + + packages/doi: + dependencies: + '@fortawesome/free-solid-svg-icons': + specifier: ^6.4.2 + version: 6.4.2 + '@fortawesome/react-fontawesome': + specifier: ^0.2.0 + version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.2)(react@18.2.0) + '@tanstack/react-query': + specifier: ^5.0.5 + version: 5.0.5(react-dom@18.2.0)(react@18.2.0) + autolinker: + specifier: ^4.0.0 + version: 4.0.0 + date-fns: + specifier: ^2.30.0 + version: 2.30.0 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-bootstrap: + specifier: ^2.9.1 + version: 2.9.1(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/node': + specifier: ^18.14.6 + version: 18.14.6 + '@types/react': + specifier: ^18.2.15 + version: 18.2.15 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.7 + '@typescript-eslint/eslint-plugin': + specifier: ^6.0.0 + version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6.0.0 + version: 6.0.0(eslint@8.45.0)(typescript@5.2.2) + '@vitejs/plugin-react': + specifier: ^4.0.3 + version: 4.0.3(vite@4.4.5) + eslint: + specifier: ^8.45.0 + version: 8.45.0 + eslint-config-react-app: + specifier: ^7.0.1 + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.45.0)(typescript@5.2.2) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.45.0) + eslint-plugin-react-refresh: + specifier: ^0.4.3 + version: 0.4.3(eslint@8.45.0) + prettier: + specifier: ^3.0.3 + version: 3.0.3 + sass: + specifier: ^1.69.5 + version: 1.69.5 + typescript: + specifier: ^5.2.2 + version: 5.2.2 + vite: + specifier: ^4.4.5 + version: 4.4.5(@types/node@18.14.6)(sass@1.69.5) + vite-plugin-dts: + specifier: ^2.0.2 + version: 2.0.2(@types/node@18.14.6)(vite@4.4.5) + vite-tsconfig-paths: + specifier: ^4.2.1 + version: 4.2.1(typescript@5.2.2)(vite@4.4.5) + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.20 + chalk: 2.4.2 + dev: true + + /@babel/compat-data@7.23.2: + resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/eslint-parser@7.22.15(@babel/core@7.23.2)(eslint@8.45.0): + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.45.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + dev: true + + /@babel/generator@7.23.0: + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.22.1 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true + + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.2): + resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + dev: true + + /@babel/helpers@7.23.2: + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-proposal-decorators@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.2): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.23.2): + resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-decorators@7.22.10(@babel/core@7.23.2): + resolution: {integrity: sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-block-scoping@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-classes@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 + dev: true + + /@babel/plugin-transform-destructuring@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-amd@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-optional-chaining@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/types': 7.23.0 + dev: true + + /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.2): + resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-runtime@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.2): + resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/preset-env@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-async-generator-functions': 7.23.2(@babel/core@7.23.2) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoping': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-destructuring': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-modules-amd': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-systemjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.23.2) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.23.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.2) + '@babel/types': 7.23.0 + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.2) + core-js-compat: 3.33.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.2): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.23.0 + esutils: 2.0.3 + dev: true + + /@babel/preset-react@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.23.2) + dev: true + + /@babel/preset-typescript@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.2) + dev: true + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + dev: true + + /@babel/traverse@7.23.2: + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.45.0 + eslint-visitor-keys: 3.4.3 + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/js@8.44.0: + resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /@fortawesome/fontawesome-common-types@6.4.2: + resolution: {integrity: sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==} + engines: {node: '>=6'} + requiresBuild: true + dev: false + + /@fortawesome/fontawesome-svg-core@6.4.2: + resolution: {integrity: sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 6.4.2 + dev: false + + /@fortawesome/free-solid-svg-icons@6.4.2: + resolution: {integrity: sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 6.4.2 + dev: false + + /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.4.2)(react@18.2.0): + resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==} + peerDependencies: + '@fortawesome/fontawesome-svg-core': ~1 || ~6 + react: '>=16.3' + dependencies: + '@fortawesome/fontawesome-svg-core': 6.4.2 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@microsoft/api-extractor-model@7.28.2(@types/node@18.14.6): + resolution: {integrity: sha512-vkojrM2fo3q4n4oPh4uUZdjJ2DxQ2+RnDQL/xhTWSRUNPF6P4QyrvY357HBxbnltKcYu+nNNolVqc6TIGQ73Ig==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 3.61.0(@types/node@18.14.6) + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/api-extractor@7.38.0(@types/node@18.14.6): + resolution: {integrity: sha512-e1LhZYnfw+JEebuY2bzhw0imDCl1nwjSThTrQqBXl40hrVo6xm3j/1EpUr89QyzgjqmAwek2ZkIVZbrhaR+cqg==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.28.2(@types/node@18.14.6) + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 3.61.0(@types/node@18.14.6) + '@rushstack/rig-package': 0.5.1 + '@rushstack/ts-command-line': 4.16.1 + colors: 1.2.5 + lodash: 4.17.21 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.0.4 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/tsdoc-config@0.16.2: + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + dev: true + + /@microsoft/tsdoc@0.14.2: + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + dev: true + + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + /@popperjs/core@2.11.8: + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + dev: false + + /@react-aria/ssr@3.8.0(react@18.2.0): + resolution: {integrity: sha512-Y54xs483rglN5DxbwfCPHxnkvZ+gZ0LbSYmR72LyWPGft8hN/lrl1VRS1EW2SMjnkEWlj+Km2mwvA3kEHDUA0A==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@remix-run/router@1.10.0: + resolution: {integrity: sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==} + engines: {node: '>=14.0.0'} + dev: false + + /@restart/hooks@0.4.11(react@18.2.0): + resolution: {integrity: sha512-Ft/ncTULZN6ldGHiF/k5qt72O8JyRMOeg0tApvCni8LkoiEahO+z3TNxfXIVGy890YtWVDvJAl662dVJSJXvMw==} + peerDependencies: + react: '>=16.8.0' + dependencies: + dequal: 2.0.3 + react: 18.2.0 + dev: false + + /@restart/ui@1.6.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-eC3puKuWE1SRYbojWHXnvCNHGgf3uzHCb6JOhnF4OXPibOIPEkR1sqDSkL643ydigxwh+ruCa1CmYHlzk7ikKA==} + peerDependencies: + react: '>=16.14.0' + react-dom: '>=16.14.0' + dependencies: + '@babel/runtime': 7.23.2 + '@popperjs/core': 2.11.8 + '@react-aria/ssr': 3.8.0(react@18.2.0) + '@restart/hooks': 0.4.11(react@18.2.0) + '@types/warning': 3.0.2 + dequal: 2.0.3 + dom-helpers: 5.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + uncontrollable: 8.0.4(react@18.2.0) + warning: 4.0.3 + dev: false + + /@rollup/pluginutils@5.0.5: + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.3 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rushstack/eslint-patch@1.5.1: + resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} + dev: true + + /@rushstack/node-core-library@3.61.0(@types/node@18.14.6): + resolution: {integrity: sha512-tdOjdErme+/YOu4gPed3sFS72GhtWCgNV9oDsHDnoLY5oDfwjKUc9Z+JOZZ37uAxcm/OCahDHfuu2ugqrfWAVQ==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 18.14.6 + colors: 1.2.5 + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.8 + semver: 7.5.4 + z-schema: 5.0.5 + dev: true + + /@rushstack/rig-package@0.5.1: + resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==} + dependencies: + resolve: 1.22.8 + strip-json-comments: 3.1.1 + dev: true + + /@rushstack/ts-command-line@4.16.1: + resolution: {integrity: sha512-+OCsD553GYVLEmz12yiFjMOzuPeCiZ3f8wTiFHL30ZVXexTyPmgjwXEhg2K2P0a2lVf+8YBy7WtPoflB2Fp8/A==} + dependencies: + '@types/argparse': 1.0.38 + argparse: 1.0.10 + colors: 1.2.5 + string-argv: 0.3.2 + dev: true + + /@swc/helpers@0.5.3: + resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} + dependencies: + tslib: 2.6.2 + dev: false + + /@tanstack/query-core@5.0.5: + resolution: {integrity: sha512-MThCETMkHDHTnFZHp71L+SqTtD5d6XHftFCVR1xRJdWM3qGrlQ2VCXaj0SKVcyJej2e1Opa2c7iknu1llxCDNQ==} + dev: false + + /@tanstack/react-query@5.0.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZG0Q4HZ0iuI8mWiZ2/MdVYPHbrmAVhMn7+gLOkxJh6zLIgCL4luSZlohzN5Xt4MjxfxxWioO1nemwpudaTsmQg==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@tanstack/query-core': 5.0.5 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@ts-morph/common@0.18.1: + resolution: {integrity: sha512-RVE+zSRICWRsfrkAw5qCAK+4ZH9kwEFv5h0+/YeHTLieWP7F4wWq4JsKFuNWG+fYh/KF+8rAtgdj5zb2mm+DVA==} + dependencies: + fast-glob: 3.3.1 + minimatch: 5.1.6 + mkdirp: 1.0.4 + path-browserify: 1.0.1 + dev: true + + /@types/argparse@1.0.38: + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + dev: true + + /@types/estree@1.0.3: + resolution: {integrity: sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==} + dev: true + + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} + dev: true + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/node@18.14.6: + resolution: {integrity: sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==} + dev: true + + /@types/parse-json@4.0.1: + resolution: {integrity: sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==} + dev: true + + /@types/prop-types@15.7.9: + resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} + + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + dependencies: + '@types/react': 18.2.15 + dev: true + + /@types/react-transition-group@4.4.8: + resolution: {integrity: sha512-QmQ22q+Pb+HQSn04NL3HtrqHwYMf4h3QKArOy5F8U5nEVMaihBs3SR10WiOM1iwPz5jIo8x/u11al+iEGZZrvg==} + dependencies: + '@types/react': 18.2.15 + dev: false + + /@types/react@18.2.15: + resolution: {integrity: sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==} + dependencies: + '@types/prop-types': 15.7.9 + '@types/scheduler': 0.16.5 + csstype: 3.1.2 + + /@types/scheduler@0.16.5: + resolution: {integrity: sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==} + + /@types/semver@7.5.4: + resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} + dev: true + + /@types/warning@3.0.2: + resolution: {integrity: sha512-S/2+OjBIcBl8Kur23YLe0hG1e7J5m2bHfB4UuMNoLZjIFhQWhTf1FeS+WFoXHUC6QsCEfk4pftj4J1KIKC1glA==} + dev: false + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.45.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.45.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/type-utils': 6.0.0(eslint@8.45.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.0.0 + debug: 4.3.4 + eslint: 8.45.0 + grapheme-splitter: 1.0.4 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.2.2) + eslint: 8.45.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.45.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.0.0 + debug: 4.3.4 + eslint: 8.45.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.0.0: + resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 + dev: true + + /@typescript-eslint/type-utils@5.62.0(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.45.0 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@6.0.0(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.45.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@6.0.0: + resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.0.0(typescript@5.2.2): + resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.4 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + eslint: 8.45.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@6.0.0(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.4 + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.2.2) + eslint: 8.45.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@6.0.0: + resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.0.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@vitejs/plugin-react@4.0.3(vite@4.4.5): + resolution: {integrity: sha512-pwXDog5nwwvSIzwrvYYmA2Ljcd/ZNlcsSG2Q9CNDBwnsd55UGAyr2doXtB5j+2uymRCnCfExlznzzSFbBRcoCg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.23.2) + react-refresh: 0.14.0 + vite: 4.4.5(@types/node@18.14.6)(sass@1.69.5) + transitivePeerDependencies: + - supports-color + dev: true + + /acorn-jsx@5.3.2(acorn@8.11.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.2 + + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + engines: {node: '>=0.4.0'} + hasBin: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + dev: true + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: true + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + + /autolinker@4.0.0: + resolution: {integrity: sha512-fl5Kh6BmEEZx+IWBfEirnRUU5+cOiV0OK7PEt0RBKvJMJ8GaRseIOeDU3FKf4j3CE5HVefcjHmhYPOcaVt0bZw==} + dependencies: + tslib: 2.6.2 + dev: false + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axe-core@4.8.2: + resolution: {integrity: sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==} + engines: {node: '>=4'} + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + + /babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.23.2 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + dev: true + + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.2): + resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.2): + resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + core-js-compat: 3.33.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.2): + resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-transform-react-remove-prop-types@0.4.24: + resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + dev: true + + /babel-preset-react-app@10.0.1: + resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-decorators': 7.23.2(@babel/core@7.23.2) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.2) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.23.2) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-runtime': 7.23.2(@babel/core@7.23.2) + '@babel/preset-env': 7.23.2(@babel/core@7.23.2) + '@babel/preset-react': 7.22.15(@babel/core@7.23.2) + '@babel/preset-typescript': 7.23.2(@babel/core@7.23.2) + '@babel/runtime': 7.23.2 + babel-plugin-macros: 3.1.0 + babel-plugin-transform-react-remove-prop-types: 0.4.24 + transitivePeerDependencies: + - supports-color + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bootstrap@5.3.2(@popperjs/core@2.11.8): + resolution: {integrity: sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==} + peerDependencies: + '@popperjs/core': ^2.11.8 + dependencies: + '@popperjs/core': 2.11.8 + dev: false + + /bootswatch@5.3.2: + resolution: {integrity: sha512-r05xOSLSx7MJvjpk/uoU8wPYgkPHWLV+uenLaRsS7yBsqSUcWYPjeUkz+tmrRv6s1eFxkF08NvQfBSSPCTyYaA==} + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001558 + electron-to-chromium: 1.4.569 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /caniuse-lite@1.0.30001558: + resolution: {integrity: sha512-/Et7DwLqpjS47JPEcz6VnxU9PwcIdVi0ciLXRWBQdj1XFye68pSQYpV0QtPTfUKWuOaEig+/Vez2l74eDc1tPQ==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + dev: false + + /code-block-writer@11.0.3: + resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /colors@1.2.5: + resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} + engines: {node: '>=0.1.90'} + dev: true + + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + requiresBuild: true + dev: true + optional: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /core-js-compat@3.33.1: + resolution: {integrity: sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ==} + dependencies: + browserslist: 4.22.1 + dev: true + + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.1 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.23.2 + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + + /dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.23.2 + csstype: 3.1.2 + dev: false + + /electron-to-chromium@1.4.569: + resolution: {integrity: sha512-LsrJjZ0IbVy12ApW3gpYpcmHS3iRxH4bkKOW98y1/D+3cvDUWGcbzbsFinfUS8knpcZk/PG/2p/RnkMCYN7PVg==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: true + + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 + dev: true + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.23.2 + '@babel/eslint-parser': 7.22.15(@babel/core@7.23.2)(eslint@8.45.0) + '@rushstack/eslint-patch': 1.5.1 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.2.2) + babel-preset-react-app: 10.0.1 + confusing-browser-globals: 1.0.11 + eslint: 8.45.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.45.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.45.0)(typescript@5.2.2) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.45.0) + eslint-plugin-react: 7.33.2(eslint@8.45.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.45.0) + eslint-plugin-testing-library: 5.11.1(eslint@8.45.0)(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.45.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.2.2) + debug: 3.2.7 + eslint: 8.45.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.45.0): + resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@babel/plugin-syntax-flow': ^7.14.5 + '@babel/plugin-transform-react-jsx': ^7.14.9 + eslint: ^8.1.0 + dependencies: + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.2) + eslint: 8.45.0 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + dev: true + + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.2.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.45.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.45.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.2.2) + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.45.0)(typescript@5.2.2) + eslint: 8.45.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.45.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.23.2 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.7 + axe-core: 4.8.2 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.45.0 + has: 1.0.4 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + semver: 6.3.1 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.45.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.45.0 + dev: true + + /eslint-plugin-react-refresh@0.4.3(eslint@8.45.0): + resolution: {integrity: sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==} + peerDependencies: + eslint: '>=7' + dependencies: + eslint: 8.45.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.45.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.45.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + + /eslint-plugin-testing-library@5.11.1(eslint@8.45.0)(typescript@5.2.2): + resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.2.2) + eslint: 8.45.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /eslint@8.45.0: + resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.44.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + eslint-visitor-keys: 3.4.3 + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.1.1 + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} + engines: {node: '>=12.0.0'} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + dev: true + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true + + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.4 + object.values: 1.1.7 + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: true + + /language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + dependencies: + language-subtag-registry: 0.3.22 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string@0.29.0: + resolution: {integrity: sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + dev: true + + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.22.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + /prettier@2.8.4: + resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: false + + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /prop-types-extra@1.1.1(react@18.2.0): + resolution: {integrity: sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==} + peerDependencies: + react: '>=0.14.0' + dependencies: + react: 18.2.0 + react-is: 16.13.1 + warning: 4.0.3 + dev: false + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /react-bootstrap@2.9.1(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ezgmh/ARCYp18LbZEqPp0ppvy+ytCmycDORqc8vXSKYV3cer4VH7OReV8uMOoKXmYzivJTxgzGHalGrHamryHA==} + peerDependencies: + '@types/react': '>=16.14.8' + react: '>=16.14.0' + react-dom: '>=16.14.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.2 + '@restart/hooks': 0.4.11(react@18.2.0) + '@restart/ui': 1.6.6(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-transition-group': 4.4.8 + classnames: 2.3.2 + dom-helpers: 5.2.1 + invariant: 2.2.4 + prop-types: 15.8.1 + prop-types-extra: 1.1.1(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) + uncontrollable: 7.2.1(react@18.2.0) + warning: 4.0.3 + dev: false + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + dev: false + + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: true + + /react-router-dom@6.17.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.10.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.17.0(react@18.2.0) + dev: false + + /react-router@6.17.0(react@18.2.0): + resolution: {integrity: sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.10.0 + react: 18.2.0 + dev: false + + /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.23.2 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.23.2 + dev: true + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 + dev: true + + /sass@1.69.5: + resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + dev: true + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + + /string-natural-compare@3.0.1: + resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} + dev: true + + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 + side-channel: 1.0.4 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + + /ts-morph@17.0.1: + resolution: {integrity: sha512-10PkHyXmrtsTvZSL+cqtJLTgFXkU43Gd0JCc0Rw6GchWbqKe0Rwgt1v3ouobTZwQzF1mGhDeAlWYBMGRV7y+3g==} + dependencies: + '@ts-morph/common': 0.18.1 + code-block-writer: 11.0.3 + dev: true + + /tsconfck@2.1.2(typescript@5.2.2): + resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} + engines: {node: ^14.13.1 || ^16 || >=18} + hasBin: true + peerDependencies: + typescript: ^4.3.5 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.2.2 + dev: true + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false + + /tsutils@3.21.0(typescript@5.2.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.2.2 + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /uncontrollable@7.2.1(react@18.2.0): + resolution: {integrity: sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==} + peerDependencies: + react: '>=15.0.0' + dependencies: + '@babel/runtime': 7.23.2 + '@types/react': 18.2.15 + invariant: 2.2.4 + react: 18.2.0 + react-lifecycles-compat: 3.0.4 + dev: false + + /uncontrollable@8.0.4(react@18.2.0): + resolution: {integrity: sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==} + peerDependencies: + react: '>=16.14.0' + dependencies: + react: 18.2.0 + dev: false + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} + dev: true + + /vite-plugin-dts@2.0.2(@types/node@18.14.6)(vite@4.4.5): + resolution: {integrity: sha512-i3HBlrdqE2FQxQqrNwFj9P2ei/I7lt/d3Q8NOE1JCz/gNYhNf/oUeIJamIdWQUNQGhUd/Y6mtpm3kOYPw1gz8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: '>=2.9.0' + dependencies: + '@babel/parser': 7.23.0 + '@microsoft/api-extractor': 7.38.0(@types/node@18.14.6) + '@rollup/pluginutils': 5.0.5 + '@rushstack/node-core-library': 3.61.0(@types/node@18.14.6) + debug: 4.3.4 + fast-glob: 3.3.1 + fs-extra: 10.1.0 + kolorist: 1.8.0 + magic-string: 0.29.0 + ts-morph: 17.0.1 + vite: 4.4.5(@types/node@18.14.6)(sass@1.69.5) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + dev: true + + /vite-tsconfig-paths@4.2.1(typescript@5.2.2)(vite@4.4.5): + resolution: {integrity: sha512-GNUI6ZgPqT3oervkvzU+qtys83+75N/OuDaQl7HmOqFTb0pjZsuARrRipsyJhJ3enqV8beI1xhGbToR4o78nSQ==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + debug: 4.3.4 + globrex: 0.1.2 + tsconfck: 2.1.2(typescript@5.2.2) + vite: 4.4.5(@types/node@18.14.6)(sass@1.69.5) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /vite@4.4.5(@types/node@18.14.6)(sass@1.69.5): + resolution: {integrity: sha512-4m5kEtAWHYr0O1Fu7rZp64CfO1PsRGZlD3TAB32UmQlpd7qg15VF7ROqGN5CyqN7HFuwr7ICNM2+fDWRqFEKaA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.14.6 + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 + sass: 1.69.5 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + /z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.11.0 + optionalDependencies: + commander: 9.5.0 + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..e9b0dad --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +packages: + - 'apps/*' + - 'packages/*' diff --git a/run.sh b/run.sh deleted file mode 100755 index e1f533f..0000000 --- a/run.sh +++ /dev/null @@ -1 +0,0 @@ -docker run -p 8092:80 -dit --name doiLandingPage dockcs.esrf.fr/dau/doi:1.0.0-SNAPSHOT diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6c4b0f6 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "module": "esnext", + "moduleResolution": "node", + "target": "esnext", + "lib": ["dom", "dom.iterable", "esnext"], + "jsx": "react-jsx", + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "isolatedModules": true, + "resolveJsonModule": true, + "strict": true, + "downlevelIteration": true, + "strictPropertyInitialization": false, + "forceConsistentCasingInFileNames": true, + "useDefineForClassFields": true, + "types": ["vite/client"], + "declaration": true, + "declarationMap": true, + "removeComments": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "verbatimModuleSyntax": true, + "useUnknownInCatchVariables": true, + "incremental": true, + "sourceMap": true + } +} diff --git a/www/.htaccess b/www/.htaccess deleted file mode 100644 index c94be63..0000000 --- a/www/.htaccess +++ /dev/null @@ -1,22 +0,0 @@ -RewriteEngine on -RewriteBase / - -RewriteCond %{REQUEST_FILENAME} !-f - -# redirect a call to doi.esrf.fr/DOIprefix/DOIsuffix to doi.esrf.fr/index.html?DOI=DOIprefix/DOIsuffix -RewriteCond %{REQUEST_URI} !(\.js) -RewriteCond %{REQUEST_URI} !(\.css) -RewriteCond %{REQUEST_URI} !(images/) - -RewriteCond %{HTTP_USER_AGENT} !googlebot [NC] -RewriteRule "/(.+)$" "index.html?DOI=$1" [NC,L] - -# When a googlebot is crawling around -# P requires that the apache libs 'proxy_http' and 'proxy' is loaded -RewriteCond %{HTTP_USER_AGENT} googlebot [NC] -RewriteCond %{REQUEST_FILENAME} !-f - -# RewriteRule "(.+)$" "http://localhost:3002/render/http://%{HTTP_HOST}/$1" [P,L] -# RewriteRule "(.+)$" "https://render-tron.appspot.com/render/http://%{HTTP_HOST}/$1" [P,L] - -RewriteRule "(.+)$" "http://render-tron.appspot.com/render/http://doi.esrf.fr/$1" [P,L] diff --git a/www/Gruntfile.js b/www/Gruntfile.js deleted file mode 100644 index 4087215..0000000 --- a/www/Gruntfile.js +++ /dev/null @@ -1,102 +0,0 @@ -module.exports = function (grunt) { - grunt.initConfig({ - jshint: { - files: ["Gruntfile.js", "src/*.js", "test/**/*.js"], - options: { - globals: { - jQuery: true, - }, - }, - }, - - watch: { - files: ["src/*.js", "templates/*.js", "css/*.css"], - tasks: ["uglify", "dustjs", "cssmin", "wiredep:dev"], - }, - - uglify: { - options: { - mangle: false, - beautify: true, - compress: false, - }, - prod: { - files: { - "min/components.min.js": [ - "bower_components/jquery/dist/jquery.js", - "bower_components/bootstrap/dist/js/bootstrap.js", - "bower_components/dustjs-linkedin/dist/dust-full.min.js", - "bower_components/dustjs-helpers/dist/dust-helpers.min.js", - "bower_components/lodash/dist/lodash.min.js", - "bower_components/moment/moment.js", - ], - "min/doi.min.js": ["src/*js"], - }, - }, - }, - - wiredep: { - prod: { - src: "index.html", - }, - dev: { - src: "dev.html", - }, - }, - - cssmin: { - prod: { - files: { - "min/output.min.css": ["bower_components/bootstrap/dist/css/bootstrap.css", "css/*.css"], - }, - }, - }, - - dustjs: { - compile: { - files: { - "min/precompiled.templates.min.js": ["templates/**js"], - }, - }, - }, - - includeSource: { - options: { - basePath: "", - baseUrl: "www", - }, - dev: { - files: { - "dev.html": "dev.tpl.html", - }, - }, - }, - plato: { - all: { - options: { - complexity: { - logicalor: true, - switchcase: true, - forin: true, - trycatch: true, - }, - }, - files: { - reports: ["src/*.js"], - }, - }, - }, - }); - - grunt.loadNpmTasks("grunt-contrib-jshint"); - grunt.loadNpmTasks("grunt-contrib-watch"); - grunt.loadNpmTasks("grunt-contrib-uglify"); - grunt.loadNpmTasks("grunt-wiredep"); - grunt.loadNpmTasks("grunt-dustjs"); - grunt.loadNpmTasks("grunt-contrib-cssmin"); - grunt.loadNpmTasks("grunt-include-source"); - grunt.loadNpmTasks("grunt-plato"); - - grunt.registerTask("default", ["jshint", "dustjs", "uglify", "cssmin"]); - grunt.registerTask("dev", ["includeSource:dev", "dustjs", "cssmin", "wiredep:dev", "plato"]); -}; diff --git a/www/bower.json b/www/bower.json deleted file mode 100644 index 4015201..0000000 --- a/www/bower.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "ESRF DOI landing page", - "authors": [ - "Alejandro De Maria Antolinos <demariaa@esrf.fr>", - "Maxime Chaillet <mchaille@esrf.fr>" - ], - "description": "This is the landing page for the DOI at the ESRF", - "main": "index.html", - "moduleType": [], - "keywords": [ - "DOI", - "ESRF", - "data", - "science", - "metadata" - ], - "license": "MIT", - "homepage": "https://doi.esrf.fr", - "private": true, - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "dependencies": { - "jquery": "^3.2.1", - "dustjs-linkedin": "^2.7.5", - "bootstrap": "^4.0.0", - "dustjs-helpers": "^1.7.3", - "lodash": "^4.17.5", - "moment": "momentjs#^2.21.0" - }, - "overrides": { - "bootstrap": { - "main": [ - "dist/js/bootstrap.js", - "dist/css/bootstrap.css", - "less/bootstrap.less" - ] - } - } -} diff --git a/www/css/doi.css b/www/css/doi.css deleted file mode 100644 index fdc9d45..0000000 --- a/www/css/doi.css +++ /dev/null @@ -1,371 +0,0 @@ -/* Sticky footer styles --------------------------------------------------- */ - -html { - position: relative; - min-height: 100%; - font-size: 10px; -} - -body { - margin-bottom: 60px; - /* Margin bottom by footer height */ - font-size: 1.6rem; -} - -hr { - margin-top: 15px; - margin-bottom: 15px; -} - -label { - margin-bottom: 0px; - font-weight: bold; -} - -@media only screen and (max-width: 768px) { - #footerLeft { - text-align: center; - } - #footerRight { - text-align: center; - } - #licenceImage { - display: block; - margin: auto; - } - .footer { - position: absolute; - /* bottom: 0; */ - /* width: 100%; */ - /* height: 60px; */ - /* Set the fixed height of the footer here */ - /* line-height: 60px; */ - /* Vertically center the text there */ - background-color: #f4f4f4; - } -} - -@media only screen and (min-width: 769px) { - #footerLeft { - text-align: left; - } - #footerRight { - display:block; - float: right - - } - .footer { - position: absolute; - bottom: 0; - height: 60px; - width: 100%; - /* Set the fixed height of the footer here */ - line-height: 60px; - background-color: #f4f4f4; - } -} - -@media only screen and (max-width: 1200px) { - .searchButtonDiv { - padding-left: 15px; - } -} - -@media only screen and (min-width: 1201px) { - .searchButtonDiv { - padding-left: 0px; - } -} - - -/* ########################################### */ - -/* override bootstrap specific classes */ - -/* ########################################### */ - -.card-header { - background-color: #CFD1D2; -} - -.card-footer { - background-color: #FFFFFF; - border: 0; -} - -.container { - width: auto; - max-width: 680px; - padding: 0 15px; -} - -/* ########################################### */ - -/* the backgrounds */ - -/* ########################################### */ - -/* sets the background color as esrf blue*/ - -.blueBackground { - background-color: #132577 !important; -} - -.lightRedBackground { - background-color: #ffcaca !important; -} - -.grayBackground { - background-color: #dcdee2; -} - -.whiteBackground { - background-color: #ffffff; -} - -/* ########################################### */ - -/* the fonts */ - -/* ########################################### */ - -.font-3p2rem { - font-size: 3.2rem; -} - -.font-1p4rem { - font-size: 1.4rem; -} - -.whiteFont { - color: #ffffff; -} - -.fontSize-20 { - font-size: 20px; -} - -/* vertically center the font and sets its color to white */ - -.whiteVCenteredFont { - color: white; - margin-top: auto; - margin-bottom: auto; -} - -/* ########################################### */ - -/* the padding */ - -/* ########################################### */ - -.padding-top-15 { - padding-top: 15px; -} - -.padding-top-5 { - padding-top: 5px; -} - -.padding-bottom-15 { - padding-bottom: 15px; -} - -.padding-left-15 { - padding-left: 15px; -} - -.padding-bottom-10 { - padding-bottom: 10px; -} - -.padding10 { - padding: 10px; -} - -.padding-left-0 { - padding-left: 0; -} - -.padding-right-0 { - padding-right: 0; -} - -.padding-right-2 { - padding-right: 2px; -} - -.padding-left-2 { - padding-left: 2px; -} - -/* ########################################### */ - -/* the margin */ - -/* ########################################### */ - -.marging-right-10 { - marging-right: 10px; -} - -.margin-left-0 { - margin-left: 0px; -} - -.margin-right-0 { - margin-right: 0px; -} - -/* ########################################### */ - -/* the DOI badge */ - -/* ########################################### */ - -.borderRadius-5 { - border-radius: 5px; -} - -span.doiBadge { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - color: white; - background: black; - text-decoration: none; - padding: 2px 0px 2px 4px; - border-color: black; -} - -span.doiBadge::before { - content: "DOI"; -} - -span.doiBadge a { - color: white; - background: #0099cc; - text-decoration: none; - margin-left: 4px; - padding: 2px 5px 2px 4px; - border-radius: 0px 5px 5px 0px; -} - -/* ######################## For doi landing page ######### */ - -.myBorder-left { - border-left-color: #cfd1d2; - border-left-width: 4px; - border-left-style: solid; - padding-left: 15px; - margin-bottom: 10px; -} - -.scroll-box { - overflow-y: auto; - overflow-x: hidden; - height: 130px; -} - -/* ######################## For welcome page ############# */ - -.welcomeBanner { - heigth: 100px; -} - -.flexCentered { - display: flex; - justify-content: center; - /* align horizontal */ - align-items: center; -} - -.height100p { - height: 100%; -} - -/* ########################################### */ - -/* the form elements */ - -/* ########################################### */ - -.form-control { - font-size: 1.6rem; -} - -.btn { - white-space: normal; - font-size: 1.6rem; -} - -/* when the buttons are hovered */ - -.btn-primary:hover {} - -.btn-primary { - border-color: #132577; - background-color: #132577 -} - -/* when the buttons are disabled */ - -.btn-primary.disabled { - background-color: #132577; - border-color: #132577; - cursor: not-allowed; -} - -.btn.disabled { - opacity: .50 -} - -/* ################# esrf logo ############### */ - -#logo { - height: 50px; -} - -/* ############### right side metadata ##########*/ - -/* ######################################################### */ - -/* ## the please-wait-loading-animation ## */ - -/* ######################################################### */ - -/* Start by setting display:none to make this hidden. - * Then we position it in relation to the viewport window - * with position:fixed. Width, height, top and left speak - * for themselves. Background we set to 80% white with - our animation centered, and no-repeating */ - -.modal { - display: none; - position: absolute; - z-index: 1000; - top: 82px; - bottom: 60px; - background: rgba( 0, 0, 0, .05) url('../src/images/ajaxloader.gif') 50% 50% no-repeat; -} - -/* When the body has the loading class, we turn - the scrollbar off with overflow:hidden */ - -body.loading { - overflow: hidden; -} - -/* Anytime the body has the loading class, our - modal element will be visible */ - -body.loading .modal { - display: block; -} - -/* ######################################################### */ - -/* sets the display of the element to flex */ - -.flex { - display: flex; -} \ No newline at end of file diff --git a/www/dev.html b/www/dev.html deleted file mode 100644 index 2e9f6d7..0000000 --- a/www/dev.html +++ /dev/null @@ -1,94 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title> ESRF - DOI </title> - <link rel="icon" href="/src/images/favicon.ico"> - - <script src="min/components.min.js"></script> - <!-- <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> --> - - <!-- Using grunt-wiredep, the proper js files from bower components are included below --> - <!-- bower:js --> - <script src="bower_components/jquery/dist/jquery.js"></script> - <script src="bower_components/dustjs-linkedin/dist/dust-full.min.js"></script> - <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script> - <script src="bower_components/dustjs-helpers/dist/dust-helpers.min.js"></script> - <script src="bower_components/lodash/lodash.js"></script> - <script src="bower_components/moment/moment.js"></script> - <!-- endbower --> - - <!-- Using grunt-include-source, the proper js files created by us (not minified) are included below --> - <script src="src/author.js"></script> - <script src="src/beamlineurl.js"></script> - <script src="src/citation.js"></script> - <script src="src/constants.js"></script> - <script src="src/doicontroller.js"></script> - <script src="src/doiData.js"></script> - <script src="src/doiview.js"></script> - <script src="src/ESRF-DC-142893590.js"></script> - <script src="src/ESRF-DC-142915526.js"></script> - <script src="src/event.js"></script> - <script src="src/experimentalreportcontroller.js"></script> - <script src="src/googleMetadataObject.js"></script> - <script src="src/jsonextractor.js"></script> - <script src="src/metadataTableHelper.js"></script> - - - <!-- bower:css --> - <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" /> - <!-- endbower --> - - <!-- Using grunt-include-source, the proper all dustjs templates files (not minified are included below --> - <script src="min/precompiled.templates.min.js"></script> - - <link rel="stylesheet" href="/min/output.min.css" > - <script type="text/javascript"> - $(document).ready(function() { - var doi = document.location.search.substring(5); - if (doi==="") { - alert ("Please use dev.html page as follow .../dev.html?DOI=prefix/suffix"); - } else { - new DOIController(new DOIView()).getData(doi); - } - }); - </script> - </head> - <body> - <div class="container-fluid"> - <div class="row align-items-center blueBackground"> - <div class="col-12 col-sm-4" > <img id="logo" style="height:80px;" src="/src/images/esrflogo.png" alt="the ESRF logo"> </img> </div> - <div class="col"> </div> - <div class="col-auto"> - <div class="whiteFont font-3p2rem" id="doiValue"> - <!-- filled by the js code --> - </div> - </div> - </div> - </div> - - <div id="main"></div> - <div id='error' ></div> - - <div class="modal"> - <!-- nothing to write here --> - </div> - <footer class="footer"> - <div class="container-fluid"> - <div class="row"> - <div class="col-12 col-md-5" > - <p><a style='font-weight:bold;' href="http://www.esrf.eu">European Synchrotron Radiation Facility</a></p> - </div> - <div class="col-12 col-md-2" > - <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"> - <img id="licenceImage" alt="Creative Commons License" style="border-width:0" src="/src/images/88x31.png" /> - </a> - </div> - <div class="col-12 col-md-5"> - <p class="float-right" style="font-size:12px;display:block;" > Access to data is governed by the <a href="http://www.esrf.eu/files/live/sites/www/files/about/organisation/ESRF%20data%20policy-web.pdf" target="_blank">ESRF data policy</a>.</p> - </div> - </div> - </div> - </footer> - </body> -</html> diff --git a/www/dev.tpl.html b/www/dev.tpl.html deleted file mode 100644 index 911955b..0000000 --- a/www/dev.tpl.html +++ /dev/null @@ -1,74 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8"> - <title> ESRF - DOI </title> - <link rel="icon" href="/src/images/favicon.ico"> - - <script src="min/components.min.js"></script> - <!-- <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> --> - - <!-- Using grunt-wiredep, the proper js files from bower components are included below --> - <!-- bower:js --> - <!-- endbower --> - - <!-- Using grunt-include-source, the proper js files created by us (not minified) are included below --> - <!-- include: "type": "js", "files": "src/*.js" --> - - - <!-- bower:css --> - <!-- endbower --> - - <!-- Using grunt-include-source, the proper all dustjs templates files (not minified are included below --> - <!-- include: "type": "js", "files": "min/precompiled.templates.min.js" --> - - <link rel="stylesheet" href="/min/output.min.css" > - <script type="text/javascript"> - $(document).ready(function() { - var doi = document.location.search.substring(5); - if (doi==="") { - alert ("Please use dev.html page as follow .../dev.html?DOI=prefix/suffix"); - } else { - new DOIController(new DOIView()).getData(doi); - } - }); - </script> - </head> - <body> - <div class="container-fluid"> - <div class="row align-items-center blueBackground"> - <div class="col-12 col-sm-4" > <img id="logo" style="height:80px;" src="/src/images/esrflogo.png" alt="the ESRF logo"> </img> </div> - <div class="col"> </div> - <div class="col-auto"> - <div class="whiteFont font-3p2rem" id="doiValue"> - <!-- filled by the js code --> - </div> - </div> - </div> - </div> - - <div id="main"></div> - <div id='error' ></div> - - <div class="modal"> - <!-- nothing to write here --> - </div> - <footer class="footer"> - <div class="container-fluid"> - <div class="row"> - <div class="col-12 col-md-5" > - <p><a style='font-weight:bold;' href="http://www.esrf.eu">European Synchrotron Radiation Facility</a></p> - </div> - <div class="col-12 col-md-2" > - <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"> - <img id="licenceImage" alt="Creative Commons License" style="border-width:0" src="/src/images/88x31.png" /> - </a> - </div> - <div class="col-12 col-md-5"> - <p class="float-right" style="font-size:12px;display:block;" > Access to data is governed by the <a href="http://www.esrf.eu/files/live/sites/www/files/about/organisation/ESRF%20data%20policy-web.pdf" target="_blank">ESRF data policy</a>.</p> - </div> - </div> - </div> - </footer> - </body> -</html> diff --git a/www/googlea9107bd1e2baeb72.html b/www/googlea9107bd1e2baeb72.html deleted file mode 100644 index bb9874c..0000000 --- a/www/googlea9107bd1e2baeb72.html +++ /dev/null @@ -1 +0,0 @@ -google-site-verification: googlea9107bd1e2baeb72.html \ No newline at end of file diff --git a/www/index.html b/www/index.html deleted file mode 100644 index 1cbea7a..0000000 --- a/www/index.html +++ /dev/null @@ -1,93 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <link rel="icon" href="/src/images/favicon.ico"> - - <title> ESRF - DOI </title> - - <!-- <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> --> - <link rel="stylesheet" href="/min/output.min.css"> - - <script src="/min/components.min.js"></script> - <script src="/min/precompiled.templates.min.js"></script> - <script src="/min/doi.min.js"></script> - - <script type="text/javascript"> - $(document).ready(function () { - var doi = document.location.pathname.substring(1, document.location.pathname.length); - var controller = new DOIController(new DOIView()); - if (doi != "") { - controller.setOrigin("index"); - } - else { - controller.setOrigin("welcome-page"); - } - controller.displayMainContent(doi); - }); - - // search the doi entered in the search box - function searchDOI() { - var doi = $('#doiSearchBox').val(); - if (!doi) { doi = $('#doiSearchBox').attr('placeholder') } - var controller = new DOIController(new DOIView()); - controller.setOrigin("welcome-page"); - controller.getData(doi); - }; - - </script> -</head> - -<body> - <div class="align-items-center blueBackground" style="display:flex; flex-wrap: wrap"> - <div style="flex: 0 0 auto; padding-left: 10px;"> - <img id="logo" style="height:80px;" src="/src/images/esrflogo.png" alt="the ESRF logo"> - </div> - <div style="flex: 1 1 auto; word-wrap: break-word;"> - <div class="whiteFont font-3p2rem" style="text-align: right; padding-right: 10px" id="doiValue"> - <!-- filled by the js code --> - </div> - </div> - </div> - - <div id='main'></div> - <div id='error'></div> - <div class="modal"> - <!-- nothing to write here --> - </div> - - <footer class="footer"> - <div class="container-fluid"> - <div class="row"> - <div class="col-12 col-md-5"> - <p id="footerLeft"> - <a style='font-weight:bold;' href="http://www.esrf.eu">European Synchrotron Radiation Facility</a> - </p> - </div> - <div class="col-12 col-md-2"> - <p> - <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"> - <img id="licenceImage" alt="Creative Commons License" style="border-width:0" src="/src/images/88x31.png" /> - </a> - - - </p> - </div> - <div class="col-12 col-md-5"> - <p id="footerRight" style="font-size:12px;"> - Access to data is governed by the - <a href="http://www.esrf.eu/files/live/sites/www/files/about/organisation/ESRF%20data%20policy-web.pdf" - target="_blank"> - ESRF data policy - </a>. - </p> - </div> - </div> - </div> - </footer> -</body> - -</html> \ No newline at end of file diff --git a/www/karma.conf.js b/www/karma.conf.js deleted file mode 100644 index f62aa7f..0000000 --- a/www/karma.conf.js +++ /dev/null @@ -1,74 +0,0 @@ -// Karma configuration -// Generated on Thu Oct 11 2018 23:09:22 GMT+0200 (CEST) - -module.exports = function (config) { - config.set({ - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['jasmine', 'browserify'], - - // list of files / patterns to load in the browser - files: [ - 'src/beamlineurl.js', - 'src/constants.js', - 'src/doicontroller.js', - 'src/doiview.js', - 'src/doiData.js', - 'src/experimentalreportcontroller.js', - 'src/event.js', - 'src/jsonextractor.js', - 'src/googleMetadataObject.js', - 'tests/jsonExtractor.test.js', - 'tests/doiController.test.js', - 'tests/doiData.test.js', - 'tests/googleMetadataObject.test.js', - 'bower_components/lodash/lodash.js', - 'bower_components/moment/moment.js' - ], - - // list of files / patterns to exclude - exclude: [ - ], - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - 'tests/jsonExtractor.test.js': ['browserify'], - 'tests/googleMetadataObject.test.js': ['browserify'] - }, - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], - - // web server port - port: 9876, - - // enable / disable colors in the output (reporters and logs) - colors: true, - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['Firefox', 'Chrome'], - //browsers: ['Firefox'], - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false, - - // Concurrency level - // how many browser should be started simultaneous - concurrency: Infinity - }) -} diff --git a/www/min/components.min.js b/www/min/components.min.js deleted file mode 100644 index 5658ba7..0000000 --- a/www/min/components.min.js +++ /dev/null @@ -1,17691 +0,0 @@ -(function(global, factory) { - "use strict"; - if (typeof module === "object" && typeof module.exports === "object") { - module.exports = global.document ? factory(global, true) : function(w) { - if (!w.document) { - throw new Error("jQuery requires a window with a document"); - } - return factory(w); - }; - } else { - factory(global); - } -})(typeof window !== "undefined" ? window : this, function(window, noGlobal) { - "use strict"; - var arr = []; - var getProto = Object.getPrototypeOf; - var slice = arr.slice; - var flat = arr.flat ? function(array) { - return arr.flat.call(array); - } : function(array) { - return arr.concat.apply([], array); - }; - var push = arr.push; - var indexOf = arr.indexOf; - var class2type = {}; - var toString = class2type.toString; - var hasOwn = class2type.hasOwnProperty; - var fnToString = hasOwn.toString; - var ObjectFunctionString = fnToString.call(Object); - var support = {}; - var isFunction = function isFunction(obj) { - return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function"; - }; - var isWindow = function isWindow(obj) { - return obj != null && obj === obj.window; - }; - var document = window.document; - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - function DOMEval(code, node, doc) { - doc = doc || document; - var i, val, script = doc.createElement("script"); - script.text = code; - if (node) { - for (i in preservedScriptAttributes) { - val = node[i] || node.getAttribute && node.getAttribute(i); - if (val) { - script.setAttribute(i, val); - } - } - } - doc.head.appendChild(script).parentNode.removeChild(script); - } - function toType(obj) { - if (obj == null) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj; - } - var version = "3.6.0", jQuery = function(selector, context) { - return new jQuery.fn.init(selector, context); - }; - jQuery.fn = jQuery.prototype = { - jquery: version, - constructor: jQuery, - length: 0, - toArray: function() { - return slice.call(this); - }, - get: function(num) { - if (num == null) { - return slice.call(this); - } - return num < 0 ? this[num + this.length] : this[num]; - }, - pushStack: function(elems) { - var ret = jQuery.merge(this.constructor(), elems); - ret.prevObject = this; - return ret; - }, - each: function(callback) { - return jQuery.each(this, callback); - }, - map: function(callback) { - return this.pushStack(jQuery.map(this, function(elem, i) { - return callback.call(elem, i, elem); - })); - }, - slice: function() { - return this.pushStack(slice.apply(this, arguments)); - }, - first: function() { - return this.eq(0); - }, - last: function() { - return this.eq(-1); - }, - even: function() { - return this.pushStack(jQuery.grep(this, function(_elem, i) { - return (i + 1) % 2; - })); - }, - odd: function() { - return this.pushStack(jQuery.grep(this, function(_elem, i) { - return i % 2; - })); - }, - eq: function(i) { - var len = this.length, j = +i + (i < 0 ? len : 0); - return this.pushStack(j >= 0 && j < len ? [ this[j] ] : []); - }, - end: function() { - return this.prevObject || this.constructor(); - }, - push: push, - sort: arr.sort, - splice: arr.splice - }; - jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; - if (typeof target === "boolean") { - deep = target; - target = arguments[i] || {}; - i++; - } - if (typeof target !== "object" && !isFunction(target)) { - target = {}; - } - if (i === length) { - target = this; - i--; - } - for (;i < length; i++) { - if ((options = arguments[i]) != null) { - for (name in options) { - copy = options[name]; - if (name === "__proto__" || target === copy) { - continue; - } - if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { - src = target[name]; - if (copyIsArray && !Array.isArray(src)) { - clone = []; - } else if (!copyIsArray && !jQuery.isPlainObject(src)) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - target[name] = jQuery.extend(deep, clone, copy); - } else if (copy !== undefined) { - target[name] = copy; - } - } - } - } - return target; - }; - jQuery.extend({ - expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""), - isReady: true, - error: function(msg) { - throw new Error(msg); - }, - noop: function() {}, - isPlainObject: function(obj) { - var proto, Ctor; - if (!obj || toString.call(obj) !== "[object Object]") { - return false; - } - proto = getProto(obj); - if (!proto) { - return true; - } - Ctor = hasOwn.call(proto, "constructor") && proto.constructor; - return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString; - }, - isEmptyObject: function(obj) { - var name; - for (name in obj) { - return false; - } - return true; - }, - globalEval: function(code, options, doc) { - DOMEval(code, { - nonce: options && options.nonce - }, doc); - }, - each: function(obj, callback) { - var length, i = 0; - if (isArrayLike(obj)) { - length = obj.length; - for (;i < length; i++) { - if (callback.call(obj[i], i, obj[i]) === false) { - break; - } - } - } else { - for (i in obj) { - if (callback.call(obj[i], i, obj[i]) === false) { - break; - } - } - } - return obj; - }, - makeArray: function(arr, results) { - var ret = results || []; - if (arr != null) { - if (isArrayLike(Object(arr))) { - jQuery.merge(ret, typeof arr === "string" ? [ arr ] : arr); - } else { - push.call(ret, arr); - } - } - return ret; - }, - inArray: function(elem, arr, i) { - return arr == null ? -1 : indexOf.call(arr, elem, i); - }, - merge: function(first, second) { - var len = +second.length, j = 0, i = first.length; - for (;j < len; j++) { - first[i++] = second[j]; - } - first.length = i; - return first; - }, - grep: function(elems, callback, invert) { - var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; - for (;i < length; i++) { - callbackInverse = !callback(elems[i], i); - if (callbackInverse !== callbackExpect) { - matches.push(elems[i]); - } - } - return matches; - }, - map: function(elems, callback, arg) { - var length, value, i = 0, ret = []; - if (isArrayLike(elems)) { - length = elems.length; - for (;i < length; i++) { - value = callback(elems[i], i, arg); - if (value != null) { - ret.push(value); - } - } - } else { - for (i in elems) { - value = callback(elems[i], i, arg); - if (value != null) { - ret.push(value); - } - } - } - return flat(ret); - }, - guid: 1, - support: support - }); - if (typeof Symbol === "function") { - jQuery.fn[Symbol.iterator] = arr[Symbol.iterator]; - } - jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(_i, name) { - class2type["[object " + name + "]"] = name.toLowerCase(); - }); - function isArrayLike(obj) { - var length = !!obj && "length" in obj && obj.length, type = toType(obj); - if (isFunction(obj) || isWindow(obj)) { - return false; - } - return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj; - } - var Sizzle = function(window) { - var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, expando = "sizzle" + 1 * new Date(), preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), nonnativeSelectorCache = createCache(), sortOrder = function(a, b) { - if (a === b) { - hasDuplicate = true; - } - return 0; - }, hasOwn = {}.hasOwnProperty, arr = [], pop = arr.pop, pushNative = arr.push, push = arr.push, slice = arr.slice, indexOf = function(list, elem) { - var i = 0, len = list.length; - for (;i < len; i++) { - if (list[i] === elem) { - return i; - } - } - return -1; - }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + "ismap|loop|multiple|open|readonly|required|scoped", whitespace = "[\\x20\\t\\r\\n\\f]", identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + "*([*^$|!~]?=)" + whitespace + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + ")(?:\\((" + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + ".*" + ")\\)|)", rwhitespace = new RegExp(whitespace + "+", "g"), rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"), rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), rdescend = new RegExp(whitespace + "|>"), rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), matchExpr = { - ID: new RegExp("^#(" + identifier + ")"), - CLASS: new RegExp("^\\.(" + identifier + ")"), - TAG: new RegExp("^(" + identifier + "|[*])"), - ATTR: new RegExp("^" + attributes), - PSEUDO: new RegExp("^" + pseudos), - CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"), - bool: new RegExp("^(?:" + booleans + ")$", "i"), - needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i") - }, rhtml = /HTML$/i, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"), funescape = function(escape, nonHex) { - var high = "0x" + escape.slice(1) - 65536; - return nonHex ? nonHex : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320); - }, rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, fcssescape = function(ch, asCodePoint) { - if (asCodePoint) { - if (ch === "\0") { - return "�"; - } - return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " "; - } - return "\\" + ch; - }, unloadHandler = function() { - setDocument(); - }, inDisabledFieldset = addCombinator(function(elem) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, { - dir: "parentNode", - next: "legend" - }); - try { - push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); - arr[preferredDoc.childNodes.length].nodeType; - } catch (e) { - push = { - apply: arr.length ? function(target, els) { - pushNative.apply(target, slice.call(els)); - } : function(target, els) { - var j = target.length, i = 0; - while (target[j++] = els[i++]) {} - target.length = j - 1; - } - }; - } - function Sizzle(selector, context, results, seed) { - var m, i, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, nodeType = context ? context.nodeType : 9; - results = results || []; - if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) { - return results; - } - if (!seed) { - setDocument(context); - context = context || document; - if (documentIsHTML) { - if (nodeType !== 11 && (match = rquickExpr.exec(selector))) { - if (m = match[1]) { - if (nodeType === 9) { - if (elem = context.getElementById(m)) { - if (elem.id === m) { - results.push(elem); - return results; - } - } else { - return results; - } - } else { - if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) { - results.push(elem); - return results; - } - } - } else if (match[2]) { - push.apply(results, context.getElementsByTagName(selector)); - return results; - } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) { - push.apply(results, context.getElementsByClassName(m)); - return results; - } - } - if (support.qsa && !nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && (nodeType !== 1 || context.nodeName.toLowerCase() !== "object")) { - newSelector = selector; - newContext = context; - if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) { - newContext = rsibling.test(selector) && testContext(context.parentNode) || context; - if (newContext !== context || !support.scope) { - if (nid = context.getAttribute("id")) { - nid = nid.replace(rcssescape, fcssescape); - } else { - context.setAttribute("id", nid = expando); - } - } - groups = tokenize(selector); - i = groups.length; - while (i--) { - groups[i] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i]); - } - newSelector = groups.join(","); - } - try { - push.apply(results, newContext.querySelectorAll(newSelector)); - return results; - } catch (qsaError) { - nonnativeSelectorCache(selector, true); - } finally { - if (nid === expando) { - context.removeAttribute("id"); - } - } - } - } - } - return select(selector.replace(rtrim, "$1"), context, results, seed); - } - function createCache() { - var keys = []; - function cache(key, value) { - if (keys.push(key + " ") > Expr.cacheLength) { - delete cache[keys.shift()]; - } - return cache[key + " "] = value; - } - return cache; - } - function markFunction(fn) { - fn[expando] = true; - return fn; - } - function assert(fn) { - var el = document.createElement("fieldset"); - try { - return !!fn(el); - } catch (e) { - return false; - } finally { - if (el.parentNode) { - el.parentNode.removeChild(el); - } - el = null; - } - } - function addHandle(attrs, handler) { - var arr = attrs.split("|"), i = arr.length; - while (i--) { - Expr.attrHandle[arr[i]] = handler; - } - } - function siblingCheck(a, b) { - var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; - if (diff) { - return diff; - } - if (cur) { - while (cur = cur.nextSibling) { - if (cur === b) { - return -1; - } - } - } - return a ? 1 : -1; - } - function createInputPseudo(type) { - return function(elem) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; - } - function createButtonPseudo(type) { - return function(elem) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; - } - function createDisabledPseudo(disabled) { - return function(elem) { - if ("form" in elem) { - if (elem.parentNode && elem.disabled === false) { - if ("label" in elem) { - if ("label" in elem.parentNode) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - return elem.isDisabled === disabled || elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled; - } - return elem.disabled === disabled; - } else if ("label" in elem) { - return elem.disabled === disabled; - } - return false; - }; - } - function createPositionalPseudo(fn) { - return markFunction(function(argument) { - argument = +argument; - return markFunction(function(seed, matches) { - var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length; - while (i--) { - if (seed[j = matchIndexes[i]]) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); - } - function testContext(context) { - return context && typeof context.getElementsByTagName !== "undefined" && context; - } - support = Sizzle.support = {}; - isXML = Sizzle.isXML = function(elem) { - var namespace = elem && elem.namespaceURI, docElem = elem && (elem.ownerDocument || elem).documentElement; - return !rhtml.test(namespace || docElem && docElem.nodeName || "HTML"); - }; - setDocument = Sizzle.setDocument = function(node) { - var hasCompare, subWindow, doc = node ? node.ownerDocument || node : preferredDoc; - if (doc == document || doc.nodeType !== 9 || !doc.documentElement) { - return document; - } - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML(document); - if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) { - if (subWindow.addEventListener) { - subWindow.addEventListener("unload", unloadHandler, false); - } else if (subWindow.attachEvent) { - subWindow.attachEvent("onunload", unloadHandler); - } - } - support.scope = assert(function(el) { - docElem.appendChild(el).appendChild(document.createElement("div")); - return typeof el.querySelectorAll !== "undefined" && !el.querySelectorAll(":scope fieldset div").length; - }); - support.attributes = assert(function(el) { - el.className = "i"; - return !el.getAttribute("className"); - }); - support.getElementsByTagName = assert(function(el) { - el.appendChild(document.createComment("")); - return !el.getElementsByTagName("*").length; - }); - support.getElementsByClassName = rnative.test(document.getElementsByClassName); - support.getById = assert(function(el) { - docElem.appendChild(el).id = expando; - return !document.getElementsByName || !document.getElementsByName(expando).length; - }); - if (support.getById) { - Expr.filter["ID"] = function(id) { - var attrId = id.replace(runescape, funescape); - return function(elem) { - return elem.getAttribute("id") === attrId; - }; - }; - Expr.find["ID"] = function(id, context) { - if (typeof context.getElementById !== "undefined" && documentIsHTML) { - var elem = context.getElementById(id); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter["ID"] = function(id) { - var attrId = id.replace(runescape, funescape); - return function(elem) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - Expr.find["ID"] = function(id, context) { - if (typeof context.getElementById !== "undefined" && documentIsHTML) { - var node, i, elems, elem = context.getElementById(id); - if (elem) { - node = elem.getAttributeNode("id"); - if (node && node.value === id) { - return [ elem ]; - } - elems = context.getElementsByName(id); - i = 0; - while (elem = elems[i++]) { - node = elem.getAttributeNode("id"); - if (node && node.value === id) { - return [ elem ]; - } - } - } - return []; - } - }; - } - Expr.find["TAG"] = support.getElementsByTagName ? function(tag, context) { - if (typeof context.getElementsByTagName !== "undefined") { - return context.getElementsByTagName(tag); - } else if (support.qsa) { - return context.querySelectorAll(tag); - } - } : function(tag, context) { - var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag); - if (tag === "*") { - while (elem = results[i++]) { - if (elem.nodeType === 1) { - tmp.push(elem); - } - } - return tmp; - } - return results; - }; - Expr.find["CLASS"] = support.getElementsByClassName && function(className, context) { - if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) { - return context.getElementsByClassName(className); - } - }; - rbuggyMatches = []; - rbuggyQSA = []; - if (support.qsa = rnative.test(document.querySelectorAll)) { - assert(function(el) { - var input; - docElem.appendChild(el).innerHTML = "<a id='" + expando + "'></a>" + "<select id='" + expando + "-\r\\' msallowcapture=''>" + "<option selected=''></option></select>"; - if (el.querySelectorAll("[msallowcapture^='']").length) { - rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")"); - } - if (!el.querySelectorAll("[selected]").length) { - rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"); - } - if (!el.querySelectorAll("[id~=" + expando + "-]").length) { - rbuggyQSA.push("~="); - } - input = document.createElement("input"); - input.setAttribute("name", ""); - el.appendChild(input); - if (!el.querySelectorAll("[name='']").length) { - rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + "*(?:''|\"\")"); - } - if (!el.querySelectorAll(":checked").length) { - rbuggyQSA.push(":checked"); - } - if (!el.querySelectorAll("a#" + expando + "+*").length) { - rbuggyQSA.push(".#.+[+~]"); - } - el.querySelectorAll("\\\f"); - rbuggyQSA.push("[\\r\\n\\f]"); - }); - assert(function(el) { - el.innerHTML = "<a href='' disabled='disabled'></a>" + "<select disabled='disabled'><option/></select>"; - var input = document.createElement("input"); - input.setAttribute("type", "hidden"); - el.appendChild(input).setAttribute("name", "D"); - if (el.querySelectorAll("[name=d]").length) { - rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?="); - } - if (el.querySelectorAll(":enabled").length !== 2) { - rbuggyQSA.push(":enabled", ":disabled"); - } - docElem.appendChild(el).disabled = true; - if (el.querySelectorAll(":disabled").length !== 2) { - rbuggyQSA.push(":enabled", ":disabled"); - } - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) { - assert(function(el) { - support.disconnectedMatch = matches.call(el, "*"); - matches.call(el, "[s!='']:x"); - rbuggyMatches.push("!=", pseudos); - }); - } - rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")); - rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|")); - hasCompare = rnative.test(docElem.compareDocumentPosition); - contains = hasCompare || rnative.test(docElem.contains) ? function(a, b) { - var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; - return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16)); - } : function(a, b) { - if (b) { - while (b = b.parentNode) { - if (b === a) { - return true; - } - } - } - return false; - }; - sortOrder = hasCompare ? function(a, b) { - if (a === b) { - hasDuplicate = true; - return 0; - } - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if (compare) { - return compare; - } - compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1; - if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) { - if (a == document || a.ownerDocument == preferredDoc && contains(preferredDoc, a)) { - return -1; - } - if (b == document || b.ownerDocument == preferredDoc && contains(preferredDoc, b)) { - return 1; - } - return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0; - } - return compare & 4 ? -1 : 1; - } : function(a, b) { - if (a === b) { - hasDuplicate = true; - return 0; - } - var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [ a ], bp = [ b ]; - if (!aup || !bup) { - return a == document ? -1 : b == document ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0; - } else if (aup === bup) { - return siblingCheck(a, b); - } - cur = a; - while (cur = cur.parentNode) { - ap.unshift(cur); - } - cur = b; - while (cur = cur.parentNode) { - bp.unshift(cur); - } - while (ap[i] === bp[i]) { - i++; - } - return i ? siblingCheck(ap[i], bp[i]) : ap[i] == preferredDoc ? -1 : bp[i] == preferredDoc ? 1 : 0; - }; - return document; - }; - Sizzle.matches = function(expr, elements) { - return Sizzle(expr, null, null, elements); - }; - Sizzle.matchesSelector = function(elem, expr) { - setDocument(elem); - if (support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) { - try { - var ret = matches.call(elem, expr); - if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) { - return ret; - } - } catch (e) { - nonnativeSelectorCache(expr, true); - } - } - return Sizzle(expr, document, null, [ elem ]).length > 0; - }; - Sizzle.contains = function(context, elem) { - if ((context.ownerDocument || context) != document) { - setDocument(context); - } - return contains(context, elem); - }; - Sizzle.attr = function(elem, name) { - if ((elem.ownerDocument || elem) != document) { - setDocument(elem); - } - var fn = Expr.attrHandle[name.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined; - return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; - }; - Sizzle.escape = function(sel) { - return (sel + "").replace(rcssescape, fcssescape); - }; - Sizzle.error = function(msg) { - throw new Error("Syntax error, unrecognized expression: " + msg); - }; - Sizzle.uniqueSort = function(results) { - var elem, duplicates = [], j = 0, i = 0; - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice(0); - results.sort(sortOrder); - if (hasDuplicate) { - while (elem = results[i++]) { - if (elem === results[i]) { - j = duplicates.push(i); - } - } - while (j--) { - results.splice(duplicates[j], 1); - } - } - sortInput = null; - return results; - }; - getText = Sizzle.getText = function(elem) { - var node, ret = "", i = 0, nodeType = elem.nodeType; - if (!nodeType) { - while (node = elem[i++]) { - ret += getText(node); - } - } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) { - if (typeof elem.textContent === "string") { - return elem.textContent; - } else { - for (elem = elem.firstChild; elem; elem = elem.nextSibling) { - ret += getText(elem); - } - } - } else if (nodeType === 3 || nodeType === 4) { - return elem.nodeValue; - } - return ret; - }; - Expr = Sizzle.selectors = { - cacheLength: 50, - createPseudo: markFunction, - match: matchExpr, - attrHandle: {}, - find: {}, - relative: { - ">": { - dir: "parentNode", - first: true - }, - " ": { - dir: "parentNode" - }, - "+": { - dir: "previousSibling", - first: true - }, - "~": { - dir: "previousSibling" - } - }, - preFilter: { - ATTR: function(match) { - match[1] = match[1].replace(runescape, funescape); - match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape); - if (match[2] === "~=") { - match[3] = " " + match[3] + " "; - } - return match.slice(0, 4); - }, - CHILD: function(match) { - match[1] = match[1].toLowerCase(); - if (match[1].slice(0, 3) === "nth") { - if (!match[3]) { - Sizzle.error(match[0]); - } - match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd")); - match[5] = +(match[7] + match[8] || match[3] === "odd"); - } else if (match[3]) { - Sizzle.error(match[0]); - } - return match; - }, - PSEUDO: function(match) { - var excess, unquoted = !match[6] && match[2]; - if (matchExpr["CHILD"].test(match[0])) { - return null; - } - if (match[3]) { - match[2] = match[4] || match[5] || ""; - } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) { - match[0] = match[0].slice(0, excess); - match[2] = unquoted.slice(0, excess); - } - return match.slice(0, 3); - } - }, - filter: { - TAG: function(nodeNameSelector) { - var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase(); - return nodeNameSelector === "*" ? function() { - return true; - } : function(elem) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - CLASS: function(className) { - var pattern = classCache[className + " "]; - return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function(elem) { - return pattern.test(typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || ""); - }); - }, - ATTR: function(name, operator, check) { - return function(elem) { - var result = Sizzle.attr(elem, name); - if (result == null) { - return operator === "!="; - } - if (!operator) { - return true; - } - result += ""; - return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf(check) === 0 : operator === "*=" ? check && result.indexOf(check) > -1 : operator === "$=" ? check && result.slice(-check.length) === check : operator === "~=" ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : operator === "|=" ? result === check || result.slice(0, check.length + 1) === check + "-" : false; - }; - }, - CHILD: function(type, what, _argument, first, last) { - var simple = type.slice(0, 3) !== "nth", forward = type.slice(-4) !== "last", ofType = what === "of-type"; - return first === 1 && last === 0 ? function(elem) { - return !!elem.parentNode; - } : function(elem, _context, xml) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false; - if (parent) { - if (simple) { - while (dir) { - node = elem; - while (node = node[dir]) { - if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) { - return false; - } - } - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - start = [ forward ? parent.firstChild : parent.lastChild ]; - if (forward && useCache) { - node = parent; - outerCache = node[expando] || (node[expando] = {}); - uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {}); - cache = uniqueCache[type] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = nodeIndex && cache[2]; - node = nodeIndex && parent.childNodes[nodeIndex]; - while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) { - if (node.nodeType === 1 && ++diff && node === elem) { - uniqueCache[type] = [ dirruns, nodeIndex, diff ]; - break; - } - } - } else { - if (useCache) { - node = elem; - outerCache = node[expando] || (node[expando] = {}); - uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {}); - cache = uniqueCache[type] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = nodeIndex; - } - if (diff === false) { - while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) { - if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) { - if (useCache) { - outerCache = node[expando] || (node[expando] = {}); - uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {}); - uniqueCache[type] = [ dirruns, diff ]; - } - if (node === elem) { - break; - } - } - } - } - } - diff -= last; - return diff === first || diff % first === 0 && diff / first >= 0; - } - }; - }, - PSEUDO: function(pseudo, argument) { - var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo); - if (fn[expando]) { - return fn(argument); - } - if (fn.length > 1) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches) { - var idx, matched = fn(seed, argument), i = matched.length; - while (i--) { - idx = indexOf(seed, matched[i]); - seed[idx] = !(matches[idx] = matched[i]); - } - }) : function(elem) { - return fn(elem, 0, args); - }; - } - return fn; - } - }, - pseudos: { - not: markFunction(function(selector) { - var input = [], results = [], matcher = compile(selector.replace(rtrim, "$1")); - return matcher[expando] ? markFunction(function(seed, matches, _context, xml) { - var elem, unmatched = matcher(seed, null, xml, []), i = seed.length; - while (i--) { - if (elem = unmatched[i]) { - seed[i] = !(matches[i] = elem); - } - } - }) : function(elem, _context, xml) { - input[0] = elem; - matcher(input, null, xml, results); - input[0] = null; - return !results.pop(); - }; - }), - has: markFunction(function(selector) { - return function(elem) { - return Sizzle(selector, elem).length > 0; - }; - }), - contains: markFunction(function(text) { - text = text.replace(runescape, funescape); - return function(elem) { - return (elem.textContent || getText(elem)).indexOf(text) > -1; - }; - }), - lang: markFunction(function(lang) { - if (!ridentifier.test(lang || "")) { - Sizzle.error("unsupported lang: " + lang); - } - lang = lang.replace(runescape, funescape).toLowerCase(); - return function(elem) { - var elemLang; - do { - if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) { - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf(lang + "-") === 0; - } - } while ((elem = elem.parentNode) && elem.nodeType === 1); - return false; - }; - }), - target: function(elem) { - var hash = window.location && window.location.hash; - return hash && hash.slice(1) === elem.id; - }, - root: function(elem) { - return elem === docElem; - }, - focus: function(elem) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - enabled: createDisabledPseudo(false), - disabled: createDisabledPseudo(true), - checked: function(elem) { - var nodeName = elem.nodeName.toLowerCase(); - return nodeName === "input" && !!elem.checked || nodeName === "option" && !!elem.selected; - }, - selected: function(elem) { - if (elem.parentNode) { - elem.parentNode.selectedIndex; - } - return elem.selected === true; - }, - empty: function(elem) { - for (elem = elem.firstChild; elem; elem = elem.nextSibling) { - if (elem.nodeType < 6) { - return false; - } - } - return true; - }, - parent: function(elem) { - return !Expr.pseudos["empty"](elem); - }, - header: function(elem) { - return rheader.test(elem.nodeName); - }, - input: function(elem) { - return rinputs.test(elem.nodeName); - }, - button: function(elem) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - text: function(elem) { - var attr; - return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text"); - }, - first: createPositionalPseudo(function() { - return [ 0 ]; - }), - last: createPositionalPseudo(function(_matchIndexes, length) { - return [ length - 1 ]; - }), - eq: createPositionalPseudo(function(_matchIndexes, length, argument) { - return [ argument < 0 ? argument + length : argument ]; - }), - even: createPositionalPseudo(function(matchIndexes, length) { - var i = 0; - for (;i < length; i += 2) { - matchIndexes.push(i); - } - return matchIndexes; - }), - odd: createPositionalPseudo(function(matchIndexes, length) { - var i = 1; - for (;i < length; i += 2) { - matchIndexes.push(i); - } - return matchIndexes; - }), - lt: createPositionalPseudo(function(matchIndexes, length, argument) { - var i = argument < 0 ? argument + length : argument > length ? length : argument; - for (;--i >= 0; ) { - matchIndexes.push(i); - } - return matchIndexes; - }), - gt: createPositionalPseudo(function(matchIndexes, length, argument) { - var i = argument < 0 ? argument + length : argument; - for (;++i < length; ) { - matchIndexes.push(i); - } - return matchIndexes; - }) - } - }; - Expr.pseudos["nth"] = Expr.pseudos["eq"]; - for (i in { - radio: true, - checkbox: true, - file: true, - password: true, - image: true - }) { - Expr.pseudos[i] = createInputPseudo(i); - } - for (i in { - submit: true, - reset: true - }) { - Expr.pseudos[i] = createButtonPseudo(i); - } - function setFilters() {} - setFilters.prototype = Expr.filters = Expr.pseudos; - Expr.setFilters = new setFilters(); - tokenize = Sizzle.tokenize = function(selector, parseOnly) { - var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + " "]; - if (cached) { - return parseOnly ? 0 : cached.slice(0); - } - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - while (soFar) { - if (!matched || (match = rcomma.exec(soFar))) { - if (match) { - soFar = soFar.slice(match[0].length) || soFar; - } - groups.push(tokens = []); - } - matched = false; - if (match = rcombinators.exec(soFar)) { - matched = match.shift(); - tokens.push({ - value: matched, - type: match[0].replace(rtrim, " ") - }); - soFar = soFar.slice(matched.length); - } - for (type in Expr.filter) { - if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice(matched.length); - } - } - if (!matched) { - break; - } - } - return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0); - }; - function toSelector(tokens) { - var i = 0, len = tokens.length, selector = ""; - for (;i < len; i++) { - selector += tokens[i].value; - } - return selector; - } - function addCombinator(matcher, combinator, base) { - var dir = combinator.dir, skip = combinator.next, key = skip || dir, checkNonElements = base && key === "parentNode", doneName = done++; - return combinator.first ? function(elem, context, xml) { - while (elem = elem[dir]) { - if (elem.nodeType === 1 || checkNonElements) { - return matcher(elem, context, xml); - } - } - return false; - } : function(elem, context, xml) { - var oldCache, uniqueCache, outerCache, newCache = [ dirruns, doneName ]; - if (xml) { - while (elem = elem[dir]) { - if (elem.nodeType === 1 || checkNonElements) { - if (matcher(elem, context, xml)) { - return true; - } - } - } - } else { - while (elem = elem[dir]) { - if (elem.nodeType === 1 || checkNonElements) { - outerCache = elem[expando] || (elem[expando] = {}); - uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {}); - if (skip && skip === elem.nodeName.toLowerCase()) { - elem = elem[dir] || elem; - } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) { - return newCache[2] = oldCache[2]; - } else { - uniqueCache[key] = newCache; - if (newCache[2] = matcher(elem, context, xml)) { - return true; - } - } - } - } - } - return false; - }; - } - function elementMatcher(matchers) { - return matchers.length > 1 ? function(elem, context, xml) { - var i = matchers.length; - while (i--) { - if (!matchers[i](elem, context, xml)) { - return false; - } - } - return true; - } : matchers[0]; - } - function multipleContexts(selector, contexts, results) { - var i = 0, len = contexts.length; - for (;i < len; i++) { - Sizzle(selector, contexts[i], results); - } - return results; - } - function condense(unmatched, map, filter, context, xml) { - var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; - for (;i < len; i++) { - if (elem = unmatched[i]) { - if (!filter || filter(elem, context, xml)) { - newUnmatched.push(elem); - if (mapped) { - map.push(i); - } - } - } - } - return newUnmatched; - } - function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { - if (postFilter && !postFilter[expando]) { - postFilter = setMatcher(postFilter); - } - if (postFinder && !postFinder[expando]) { - postFinder = setMatcher(postFinder, postSelector); - } - return markFunction(function(seed, results, context, xml) { - var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector || "*", context.nodeType ? [ context ] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn; - if (matcher) { - matcher(matcherIn, matcherOut, context, xml); - } - if (postFilter) { - temp = condense(matcherOut, postMap); - postFilter(temp, [], context, xml); - i = temp.length; - while (i--) { - if (elem = temp[i]) { - matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem); - } - } - } - if (seed) { - if (postFinder || preFilter) { - if (postFinder) { - temp = []; - i = matcherOut.length; - while (i--) { - if (elem = matcherOut[i]) { - temp.push(matcherIn[i] = elem); - } - } - postFinder(null, matcherOut = [], temp, xml); - } - i = matcherOut.length; - while (i--) { - if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) { - seed[temp] = !(results[temp] = elem); - } - } - } - } else { - matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut); - if (postFinder) { - postFinder(null, results, matcherOut, xml); - } else { - push.apply(results, matcherOut); - } - } - }); - } - function matcherFromTokens(tokens) { - var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) { - return elem === checkContext; - }, implicitRelative, true), matchAnyContext = addCombinator(function(elem) { - return indexOf(checkContext, elem) > -1; - }, implicitRelative, true), matchers = [ function(elem, context, xml) { - var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); - checkContext = null; - return ret; - } ]; - for (;i < len; i++) { - if (matcher = Expr.relative[tokens[i].type]) { - matchers = [ addCombinator(elementMatcher(matchers), matcher) ]; - } else { - matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); - if (matcher[expando]) { - j = ++i; - for (;j < len; j++) { - if (Expr.relative[tokens[j].type]) { - break; - } - } - return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({ - value: tokens[i - 2].type === " " ? "*" : "" - })).replace(rtrim, "$1"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens)); - } - matchers.push(matcher); - } - } - return elementMatcher(matchers); - } - function matcherFromGroupMatchers(elementMatchers, setMatchers) { - var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function(seed, context, xml, results, outermost) { - var elem, j, matcher, matchedCount = 0, i = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find["TAG"]("*", outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || .1, len = elems.length; - if (outermost) { - outermostContext = context == document || context || outermost; - } - for (;i !== len && (elem = elems[i]) != null; i++) { - if (byElement && elem) { - j = 0; - if (!context && elem.ownerDocument != document) { - setDocument(elem); - xml = !documentIsHTML; - } - while (matcher = elementMatchers[j++]) { - if (matcher(elem, context || document, xml)) { - results.push(elem); - break; - } - } - if (outermost) { - dirruns = dirrunsUnique; - } - } - if (bySet) { - if (elem = !matcher && elem) { - matchedCount--; - } - if (seed) { - unmatched.push(elem); - } - } - } - matchedCount += i; - if (bySet && i !== matchedCount) { - j = 0; - while (matcher = setMatchers[j++]) { - matcher(unmatched, setMatched, context, xml); - } - if (seed) { - if (matchedCount > 0) { - while (i--) { - if (!(unmatched[i] || setMatched[i])) { - setMatched[i] = pop.call(results); - } - } - } - setMatched = condense(setMatched); - } - push.apply(results, setMatched); - if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) { - Sizzle.uniqueSort(results); - } - } - if (outermost) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - return unmatched; - }; - return bySet ? markFunction(superMatcher) : superMatcher; - } - compile = Sizzle.compile = function(selector, match) { - var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + " "]; - if (!cached) { - if (!match) { - match = tokenize(selector); - } - i = match.length; - while (i--) { - cached = matcherFromTokens(match[i]); - if (cached[expando]) { - setMatchers.push(cached); - } else { - elementMatchers.push(cached); - } - } - cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); - cached.selector = selector; - } - return cached; - }; - select = Sizzle.select = function(selector, context, results, seed) { - var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, match = !seed && tokenize(selector = compiled.selector || selector); - results = results || []; - if (match.length === 1) { - tokens = match[0] = match[0].slice(0); - if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) { - context = (Expr.find["ID"](token.matches[0].replace(runescape, funescape), context) || [])[0]; - if (!context) { - return results; - } else if (compiled) { - context = context.parentNode; - } - selector = selector.slice(tokens.shift().value.length); - } - i = matchExpr["needsContext"].test(selector) ? 0 : tokens.length; - while (i--) { - token = tokens[i]; - if (Expr.relative[type = token.type]) { - break; - } - if (find = Expr.find[type]) { - if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) { - tokens.splice(i, 1); - selector = seed.length && toSelector(tokens); - if (!selector) { - push.apply(results, seed); - return results; - } - break; - } - } - } - } - (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context); - return results; - }; - support.sortStable = expando.split("").sort(sortOrder).join("") === expando; - support.detectDuplicates = !!hasDuplicate; - setDocument(); - support.sortDetached = assert(function(el) { - return el.compareDocumentPosition(document.createElement("fieldset")) & 1; - }); - if (!assert(function(el) { - el.innerHTML = "<a href='#'></a>"; - return el.firstChild.getAttribute("href") === "#"; - })) { - addHandle("type|href|height|width", function(elem, name, isXML) { - if (!isXML) { - return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2); - } - }); - } - if (!support.attributes || !assert(function(el) { - el.innerHTML = "<input/>"; - el.firstChild.setAttribute("value", ""); - return el.firstChild.getAttribute("value") === ""; - })) { - addHandle("value", function(elem, _name, isXML) { - if (!isXML && elem.nodeName.toLowerCase() === "input") { - return elem.defaultValue; - } - }); - } - if (!assert(function(el) { - return el.getAttribute("disabled") == null; - })) { - addHandle(booleans, function(elem, name, isXML) { - var val; - if (!isXML) { - return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; - } - }); - } - return Sizzle; - }(window); - jQuery.find = Sizzle; - jQuery.expr = Sizzle.selectors; - jQuery.expr[":"] = jQuery.expr.pseudos; - jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; - jQuery.text = Sizzle.getText; - jQuery.isXMLDoc = Sizzle.isXML; - jQuery.contains = Sizzle.contains; - jQuery.escapeSelector = Sizzle.escape; - var dir = function(elem, dir, until) { - var matched = [], truncate = until !== undefined; - while ((elem = elem[dir]) && elem.nodeType !== 9) { - if (elem.nodeType === 1) { - if (truncate && jQuery(elem).is(until)) { - break; - } - matched.push(elem); - } - } - return matched; - }; - var siblings = function(n, elem) { - var matched = []; - for (;n; n = n.nextSibling) { - if (n.nodeType === 1 && n !== elem) { - matched.push(n); - } - } - return matched; - }; - var rneedsContext = jQuery.expr.match.needsContext; - function nodeName(elem, name) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - } - var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; - function winnow(elements, qualifier, not) { - if (isFunction(qualifier)) { - return jQuery.grep(elements, function(elem, i) { - return !!qualifier.call(elem, i, elem) !== not; - }); - } - if (qualifier.nodeType) { - return jQuery.grep(elements, function(elem) { - return elem === qualifier !== not; - }); - } - if (typeof qualifier !== "string") { - return jQuery.grep(elements, function(elem) { - return indexOf.call(qualifier, elem) > -1 !== not; - }); - } - return jQuery.filter(qualifier, elements, not); - } - jQuery.filter = function(expr, elems, not) { - var elem = elems[0]; - if (not) { - expr = ":not(" + expr + ")"; - } - if (elems.length === 1 && elem.nodeType === 1) { - return jQuery.find.matchesSelector(elem, expr) ? [ elem ] : []; - } - return jQuery.find.matches(expr, jQuery.grep(elems, function(elem) { - return elem.nodeType === 1; - })); - }; - jQuery.fn.extend({ - find: function(selector) { - var i, ret, len = this.length, self = this; - if (typeof selector !== "string") { - return this.pushStack(jQuery(selector).filter(function() { - for (i = 0; i < len; i++) { - if (jQuery.contains(self[i], this)) { - return true; - } - } - })); - } - ret = this.pushStack([]); - for (i = 0; i < len; i++) { - jQuery.find(selector, self[i], ret); - } - return len > 1 ? jQuery.uniqueSort(ret) : ret; - }, - filter: function(selector) { - return this.pushStack(winnow(this, selector || [], false)); - }, - not: function(selector) { - return this.pushStack(winnow(this, selector || [], true)); - }, - is: function(selector) { - return !!winnow(this, typeof selector === "string" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length; - } - }); - var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery.fn.init = function(selector, context, root) { - var match, elem; - if (!selector) { - return this; - } - root = root || rootjQuery; - if (typeof selector === "string") { - if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) { - match = [ null, selector, null ]; - } else { - match = rquickExpr.exec(selector); - } - if (match && (match[1] || !context)) { - if (match[1]) { - context = context instanceof jQuery ? context[0] : context; - jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); - if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) { - for (match in context) { - if (isFunction(this[match])) { - this[match](context[match]); - } else { - this.attr(match, context[match]); - } - } - } - return this; - } else { - elem = document.getElementById(match[2]); - if (elem) { - this[0] = elem; - this.length = 1; - } - return this; - } - } else if (!context || context.jquery) { - return (context || root).find(selector); - } else { - return this.constructor(context).find(selector); - } - } else if (selector.nodeType) { - this[0] = selector; - this.length = 1; - return this; - } else if (isFunction(selector)) { - return root.ready !== undefined ? root.ready(selector) : selector(jQuery); - } - return jQuery.makeArray(selector, this); - }; - init.prototype = jQuery.fn; - rootjQuery = jQuery(document); - var rparentsprev = /^(?:parents|prev(?:Until|All))/, guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - jQuery.fn.extend({ - has: function(target) { - var targets = jQuery(target, this), l = targets.length; - return this.filter(function() { - var i = 0; - for (;i < l; i++) { - if (jQuery.contains(this, targets[i])) { - return true; - } - } - }); - }, - closest: function(selectors, context) { - var cur, i = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery(selectors); - if (!rneedsContext.test(selectors)) { - for (;i < l; i++) { - for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) { - if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) { - matched.push(cur); - break; - } - } - } - } - return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched); - }, - index: function(elem) { - if (!elem) { - return this[0] && this[0].parentNode ? this.first().prevAll().length : -1; - } - if (typeof elem === "string") { - return indexOf.call(jQuery(elem), this[0]); - } - return indexOf.call(this, elem.jquery ? elem[0] : elem); - }, - add: function(selector, context) { - return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context)))); - }, - addBack: function(selector) { - return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector)); - } - }); - function sibling(cur, dir) { - while ((cur = cur[dir]) && cur.nodeType !== 1) {} - return cur; - } - jQuery.each({ - parent: function(elem) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function(elem) { - return dir(elem, "parentNode"); - }, - parentsUntil: function(elem, _i, until) { - return dir(elem, "parentNode", until); - }, - next: function(elem) { - return sibling(elem, "nextSibling"); - }, - prev: function(elem) { - return sibling(elem, "previousSibling"); - }, - nextAll: function(elem) { - return dir(elem, "nextSibling"); - }, - prevAll: function(elem) { - return dir(elem, "previousSibling"); - }, - nextUntil: function(elem, _i, until) { - return dir(elem, "nextSibling", until); - }, - prevUntil: function(elem, _i, until) { - return dir(elem, "previousSibling", until); - }, - siblings: function(elem) { - return siblings((elem.parentNode || {}).firstChild, elem); - }, - children: function(elem) { - return siblings(elem.firstChild); - }, - contents: function(elem) { - if (elem.contentDocument != null && getProto(elem.contentDocument)) { - return elem.contentDocument; - } - if (nodeName(elem, "template")) { - elem = elem.content || elem; - } - return jQuery.merge([], elem.childNodes); - } - }, function(name, fn) { - jQuery.fn[name] = function(until, selector) { - var matched = jQuery.map(this, fn, until); - if (name.slice(-5) !== "Until") { - selector = until; - } - if (selector && typeof selector === "string") { - matched = jQuery.filter(selector, matched); - } - if (this.length > 1) { - if (!guaranteedUnique[name]) { - jQuery.uniqueSort(matched); - } - if (rparentsprev.test(name)) { - matched.reverse(); - } - } - return this.pushStack(matched); - }; - }); - var rnothtmlwhite = /[^\x20\t\r\n\f]+/g; - function createOptions(options) { - var object = {}; - jQuery.each(options.match(rnothtmlwhite) || [], function(_, flag) { - object[flag] = true; - }); - return object; - } - jQuery.Callbacks = function(options) { - options = typeof options === "string" ? createOptions(options) : jQuery.extend({}, options); - var firing, memory, fired, locked, list = [], queue = [], firingIndex = -1, fire = function() { - locked = locked || options.once; - fired = firing = true; - for (;queue.length; firingIndex = -1) { - memory = queue.shift(); - while (++firingIndex < list.length) { - if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) { - firingIndex = list.length; - memory = false; - } - } - } - if (!options.memory) { - memory = false; - } - firing = false; - if (locked) { - if (memory) { - list = []; - } else { - list = ""; - } - } - }, self = { - add: function() { - if (list) { - if (memory && !firing) { - firingIndex = list.length - 1; - queue.push(memory); - } - (function add(args) { - jQuery.each(args, function(_, arg) { - if (isFunction(arg)) { - if (!options.unique || !self.has(arg)) { - list.push(arg); - } - } else if (arg && arg.length && toType(arg) !== "string") { - add(arg); - } - }); - })(arguments); - if (memory && !firing) { - fire(); - } - } - return this; - }, - remove: function() { - jQuery.each(arguments, function(_, arg) { - var index; - while ((index = jQuery.inArray(arg, list, index)) > -1) { - list.splice(index, 1); - if (index <= firingIndex) { - firingIndex--; - } - } - }); - return this; - }, - has: function(fn) { - return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0; - }, - empty: function() { - if (list) { - list = []; - } - return this; - }, - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - lock: function() { - locked = queue = []; - if (!memory && !firing) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - fireWith: function(context, args) { - if (!locked) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push(args); - if (!firing) { - fire(); - } - } - return this; - }, - fire: function() { - self.fireWith(this, arguments); - return this; - }, - fired: function() { - return !!fired; - } - }; - return self; - }; - function Identity(v) { - return v; - } - function Thrower(ex) { - throw ex; - } - function adoptValue(value, resolve, reject, noValue) { - var method; - try { - if (value && isFunction(method = value.promise)) { - method.call(value).done(resolve).fail(reject); - } else if (value && isFunction(method = value.then)) { - method.call(value, resolve, reject); - } else { - resolve.apply(undefined, [ value ].slice(noValue)); - } - } catch (value) { - reject.apply(undefined, [ value ]); - } - } - jQuery.extend({ - Deferred: function(func) { - var tuples = [ [ "notify", "progress", jQuery.Callbacks("memory"), jQuery.Callbacks("memory"), 2 ], [ "resolve", "done", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 0, "resolved" ], [ "reject", "fail", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 1, "rejected" ] ], state = "pending", promise = { - state: function() { - return state; - }, - always: function() { - deferred.done(arguments).fail(arguments); - return this; - }, - catch: function(fn) { - return promise.then(null, fn); - }, - pipe: function() { - var fns = arguments; - return jQuery.Deferred(function(newDefer) { - jQuery.each(tuples, function(_i, tuple) { - var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; - deferred[tuple[1]](function() { - var returned = fn && fn.apply(this, arguments); - if (returned && isFunction(returned.promise)) { - returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject); - } else { - newDefer[tuple[0] + "With"](this, fn ? [ returned ] : arguments); - } - }); - }); - fns = null; - }).promise(); - }, - then: function(onFulfilled, onRejected, onProgress) { - var maxDepth = 0; - function resolve(depth, deferred, handler, special) { - return function() { - var that = this, args = arguments, mightThrow = function() { - var returned, then; - if (depth < maxDepth) { - return; - } - returned = handler.apply(that, args); - if (returned === deferred.promise()) { - throw new TypeError("Thenable self-resolution"); - } - then = returned && (typeof returned === "object" || typeof returned === "function") && returned.then; - if (isFunction(then)) { - if (special) { - then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); - } else { - maxDepth++; - then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith)); - } - } else { - if (handler !== Identity) { - that = undefined; - args = [ returned ]; - } - (special || deferred.resolveWith)(that, args); - } - }, process = special ? mightThrow : function() { - try { - mightThrow(); - } catch (e) { - if (jQuery.Deferred.exceptionHook) { - jQuery.Deferred.exceptionHook(e, process.stackTrace); - } - if (depth + 1 >= maxDepth) { - if (handler !== Thrower) { - that = undefined; - args = [ e ]; - } - deferred.rejectWith(that, args); - } - } - }; - if (depth) { - process(); - } else { - if (jQuery.Deferred.getStackHook) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout(process); - } - }; - } - return jQuery.Deferred(function(newDefer) { - tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); - tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); - tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower)); - }).promise(); - }, - promise: function(obj) { - return obj != null ? jQuery.extend(obj, promise) : promise; - } - }, deferred = {}; - jQuery.each(tuples, function(i, tuple) { - var list = tuple[2], stateString = tuple[5]; - promise[tuple[1]] = list.add; - if (stateString) { - list.add(function() { - state = stateString; - }, tuples[3 - i][2].disable, tuples[3 - i][3].disable, tuples[0][2].lock, tuples[0][3].lock); - } - list.add(tuple[3].fire); - deferred[tuple[0]] = function() { - deferred[tuple[0] + "With"](this === deferred ? undefined : this, arguments); - return this; - }; - deferred[tuple[0] + "With"] = list.fireWith; - }); - promise.promise(deferred); - if (func) { - func.call(deferred, deferred); - } - return deferred; - }, - when: function(singleValue) { - var remaining = arguments.length, i = remaining, resolveContexts = Array(i), resolveValues = slice.call(arguments), primary = jQuery.Deferred(), updateFunc = function(i) { - return function(value) { - resolveContexts[i] = this; - resolveValues[i] = arguments.length > 1 ? slice.call(arguments) : value; - if (!--remaining) { - primary.resolveWith(resolveContexts, resolveValues); - } - }; - }; - if (remaining <= 1) { - adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining); - if (primary.state() === "pending" || isFunction(resolveValues[i] && resolveValues[i].then)) { - return primary.then(); - } - } - while (i--) { - adoptValue(resolveValues[i], updateFunc(i), primary.reject); - } - return primary.promise(); - } - }); - var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - jQuery.Deferred.exceptionHook = function(error, stack) { - if (window.console && window.console.warn && error && rerrorNames.test(error.name)) { - window.console.warn("jQuery.Deferred exception: " + error.message, error.stack, stack); - } - }; - jQuery.readyException = function(error) { - window.setTimeout(function() { - throw error; - }); - }; - var readyList = jQuery.Deferred(); - jQuery.fn.ready = function(fn) { - readyList.then(fn).catch(function(error) { - jQuery.readyException(error); - }); - return this; - }; - jQuery.extend({ - isReady: false, - readyWait: 1, - ready: function(wait) { - if (wait === true ? --jQuery.readyWait : jQuery.isReady) { - return; - } - jQuery.isReady = true; - if (wait !== true && --jQuery.readyWait > 0) { - return; - } - readyList.resolveWith(document, [ jQuery ]); - } - }); - jQuery.ready.then = readyList.then; - function completed() { - document.removeEventListener("DOMContentLoaded", completed); - window.removeEventListener("load", completed); - jQuery.ready(); - } - if (document.readyState === "complete" || document.readyState !== "loading" && !document.documentElement.doScroll) { - window.setTimeout(jQuery.ready); - } else { - document.addEventListener("DOMContentLoaded", completed); - window.addEventListener("load", completed); - } - var access = function(elems, fn, key, value, chainable, emptyGet, raw) { - var i = 0, len = elems.length, bulk = key == null; - if (toType(key) === "object") { - chainable = true; - for (i in key) { - access(elems, fn, i, key[i], true, emptyGet, raw); - } - } else if (value !== undefined) { - chainable = true; - if (!isFunction(value)) { - raw = true; - } - if (bulk) { - if (raw) { - fn.call(elems, value); - fn = null; - } else { - bulk = fn; - fn = function(elem, _key, value) { - return bulk.call(jQuery(elem), value); - }; - } - } - if (fn) { - for (;i < len; i++) { - fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key))); - } - } - } - if (chainable) { - return elems; - } - if (bulk) { - return fn.call(elems); - } - return len ? fn(elems[0], key) : emptyGet; - }; - var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g; - function fcamelCase(_all, letter) { - return letter.toUpperCase(); - } - function camelCase(string) { - return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase); - } - var acceptData = function(owner) { - return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType; - }; - function Data() { - this.expando = jQuery.expando + Data.uid++; - } - Data.uid = 1; - Data.prototype = { - cache: function(owner) { - var value = owner[this.expando]; - if (!value) { - value = {}; - if (acceptData(owner)) { - if (owner.nodeType) { - owner[this.expando] = value; - } else { - Object.defineProperty(owner, this.expando, { - value: value, - configurable: true - }); - } - } - } - return value; - }, - set: function(owner, data, value) { - var prop, cache = this.cache(owner); - if (typeof data === "string") { - cache[camelCase(data)] = value; - } else { - for (prop in data) { - cache[camelCase(prop)] = data[prop]; - } - } - return cache; - }, - get: function(owner, key) { - return key === undefined ? this.cache(owner) : owner[this.expando] && owner[this.expando][camelCase(key)]; - }, - access: function(owner, key, value) { - if (key === undefined || key && typeof key === "string" && value === undefined) { - return this.get(owner, key); - } - this.set(owner, key, value); - return value !== undefined ? value : key; - }, - remove: function(owner, key) { - var i, cache = owner[this.expando]; - if (cache === undefined) { - return; - } - if (key !== undefined) { - if (Array.isArray(key)) { - key = key.map(camelCase); - } else { - key = camelCase(key); - key = key in cache ? [ key ] : key.match(rnothtmlwhite) || []; - } - i = key.length; - while (i--) { - delete cache[key[i]]; - } - } - if (key === undefined || jQuery.isEmptyObject(cache)) { - if (owner.nodeType) { - owner[this.expando] = undefined; - } else { - delete owner[this.expando]; - } - } - }, - hasData: function(owner) { - var cache = owner[this.expando]; - return cache !== undefined && !jQuery.isEmptyObject(cache); - } - }; - var dataPriv = new Data(); - var dataUser = new Data(); - var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g; - function getData(data) { - if (data === "true") { - return true; - } - if (data === "false") { - return false; - } - if (data === "null") { - return null; - } - if (data === +data + "") { - return +data; - } - if (rbrace.test(data)) { - return JSON.parse(data); - } - return data; - } - function dataAttr(elem, key, data) { - var name; - if (data === undefined && elem.nodeType === 1) { - name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase(); - data = elem.getAttribute(name); - if (typeof data === "string") { - try { - data = getData(data); - } catch (e) {} - dataUser.set(elem, key, data); - } else { - data = undefined; - } - } - return data; - } - jQuery.extend({ - hasData: function(elem) { - return dataUser.hasData(elem) || dataPriv.hasData(elem); - }, - data: function(elem, name, data) { - return dataUser.access(elem, name, data); - }, - removeData: function(elem, name) { - dataUser.remove(elem, name); - }, - _data: function(elem, name, data) { - return dataPriv.access(elem, name, data); - }, - _removeData: function(elem, name) { - dataPriv.remove(elem, name); - } - }); - jQuery.fn.extend({ - data: function(key, value) { - var i, name, data, elem = this[0], attrs = elem && elem.attributes; - if (key === undefined) { - if (this.length) { - data = dataUser.get(elem); - if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) { - i = attrs.length; - while (i--) { - if (attrs[i]) { - name = attrs[i].name; - if (name.indexOf("data-") === 0) { - name = camelCase(name.slice(5)); - dataAttr(elem, name, data[name]); - } - } - } - dataPriv.set(elem, "hasDataAttrs", true); - } - } - return data; - } - if (typeof key === "object") { - return this.each(function() { - dataUser.set(this, key); - }); - } - return access(this, function(value) { - var data; - if (elem && value === undefined) { - data = dataUser.get(elem, key); - if (data !== undefined) { - return data; - } - data = dataAttr(elem, key); - if (data !== undefined) { - return data; - } - return; - } - this.each(function() { - dataUser.set(this, key, value); - }); - }, null, value, arguments.length > 1, null, true); - }, - removeData: function(key) { - return this.each(function() { - dataUser.remove(this, key); - }); - } - }); - jQuery.extend({ - queue: function(elem, type, data) { - var queue; - if (elem) { - type = (type || "fx") + "queue"; - queue = dataPriv.get(elem, type); - if (data) { - if (!queue || Array.isArray(data)) { - queue = dataPriv.access(elem, type, jQuery.makeArray(data)); - } else { - queue.push(data); - } - } - return queue || []; - } - }, - dequeue: function(elem, type) { - type = type || "fx"; - var queue = jQuery.queue(elem, type), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks(elem, type), next = function() { - jQuery.dequeue(elem, type); - }; - if (fn === "inprogress") { - fn = queue.shift(); - startLength--; - } - if (fn) { - if (type === "fx") { - queue.unshift("inprogress"); - } - delete hooks.stop; - fn.call(elem, next, hooks); - } - if (!startLength && hooks) { - hooks.empty.fire(); - } - }, - _queueHooks: function(elem, type) { - var key = type + "queueHooks"; - return dataPriv.get(elem, key) || dataPriv.access(elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - dataPriv.remove(elem, [ type + "queue", key ]); - }) - }); - } - }); - jQuery.fn.extend({ - queue: function(type, data) { - var setter = 2; - if (typeof type !== "string") { - data = type; - type = "fx"; - setter--; - } - if (arguments.length < setter) { - return jQuery.queue(this[0], type); - } - return data === undefined ? this : this.each(function() { - var queue = jQuery.queue(this, type, data); - jQuery._queueHooks(this, type); - if (type === "fx" && queue[0] !== "inprogress") { - jQuery.dequeue(this, type); - } - }); - }, - dequeue: function(type) { - return this.each(function() { - jQuery.dequeue(this, type); - }); - }, - clearQueue: function(type) { - return this.queue(type || "fx", []); - }, - promise: function(type, obj) { - var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { - if (!--count) { - defer.resolveWith(elements, [ elements ]); - } - }; - if (typeof type !== "string") { - obj = type; - type = undefined; - } - type = type || "fx"; - while (i--) { - tmp = dataPriv.get(elements[i], type + "queueHooks"); - if (tmp && tmp.empty) { - count++; - tmp.empty.add(resolve); - } - } - resolve(); - return defer.promise(obj); - } - }); - var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source; - var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i"); - var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - var documentElement = document.documentElement; - var isAttached = function(elem) { - return jQuery.contains(elem.ownerDocument, elem); - }, composed = { - composed: true - }; - if (documentElement.getRootNode) { - isAttached = function(elem) { - return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument; - }; - } - var isHiddenWithinTree = function(elem, el) { - elem = el || elem; - return elem.style.display === "none" || elem.style.display === "" && isAttached(elem) && jQuery.css(elem, "display") === "none"; - }; - function adjustCSS(elem, prop, valueParts, tween) { - var adjusted, scale, maxIterations = 20, currentValue = tween ? function() { - return tween.cur(); - } : function() { - return jQuery.css(elem, prop, ""); - }, initial = currentValue(), unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px"), initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery.css(elem, prop)); - if (initialInUnit && initialInUnit[3] !== unit) { - initial = initial / 2; - unit = unit || initialInUnit[3]; - initialInUnit = +initial || 1; - while (maxIterations--) { - jQuery.style(elem, prop, initialInUnit + unit); - if ((1 - scale) * (1 - (scale = currentValue() / initial || .5)) <= 0) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - } - initialInUnit = initialInUnit * 2; - jQuery.style(elem, prop, initialInUnit + unit); - valueParts = valueParts || []; - } - if (valueParts) { - initialInUnit = +initialInUnit || +initial || 0; - adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2]; - if (tween) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; - } - var defaultDisplayMap = {}; - function getDefaultDisplay(elem) { - var temp, doc = elem.ownerDocument, nodeName = elem.nodeName, display = defaultDisplayMap[nodeName]; - if (display) { - return display; - } - temp = doc.body.appendChild(doc.createElement(nodeName)); - display = jQuery.css(temp, "display"); - temp.parentNode.removeChild(temp); - if (display === "none") { - display = "block"; - } - defaultDisplayMap[nodeName] = display; - return display; - } - function showHide(elements, show) { - var display, elem, values = [], index = 0, length = elements.length; - for (;index < length; index++) { - elem = elements[index]; - if (!elem.style) { - continue; - } - display = elem.style.display; - if (show) { - if (display === "none") { - values[index] = dataPriv.get(elem, "display") || null; - if (!values[index]) { - elem.style.display = ""; - } - } - if (elem.style.display === "" && isHiddenWithinTree(elem)) { - values[index] = getDefaultDisplay(elem); - } - } else { - if (display !== "none") { - values[index] = "none"; - dataPriv.set(elem, "display", display); - } - } - } - for (index = 0; index < length; index++) { - if (values[index] != null) { - elements[index].style.display = values[index]; - } - } - return elements; - } - jQuery.fn.extend({ - show: function() { - return showHide(this, true); - }, - hide: function() { - return showHide(this); - }, - toggle: function(state) { - if (typeof state === "boolean") { - return state ? this.show() : this.hide(); - } - return this.each(function() { - if (isHiddenWithinTree(this)) { - jQuery(this).show(); - } else { - jQuery(this).hide(); - } - }); - } - }); - var rcheckableType = /^(?:checkbox|radio)$/i; - var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i; - var rscriptType = /^$|^module$|\/(?:java|ecma)script/i; - (function() { - var fragment = document.createDocumentFragment(), div = fragment.appendChild(document.createElement("div")), input = document.createElement("input"); - input.setAttribute("type", "radio"); - input.setAttribute("checked", "checked"); - input.setAttribute("name", "t"); - div.appendChild(input); - support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; - div.innerHTML = "<textarea>x</textarea>"; - support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; - div.innerHTML = "<option></option>"; - support.option = !!div.lastChild; - })(); - var wrapMap = { - thead: [ 1, "<table>", "</table>" ], - col: [ 2, "<table><colgroup>", "</colgroup></table>" ], - tr: [ 2, "<table><tbody>", "</tbody></table>" ], - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], - _default: [ 0, "", "" ] - }; - wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; - wrapMap.th = wrapMap.td; - if (!support.option) { - wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ]; - } - function getAll(context, tag) { - var ret; - if (typeof context.getElementsByTagName !== "undefined") { - ret = context.getElementsByTagName(tag || "*"); - } else if (typeof context.querySelectorAll !== "undefined") { - ret = context.querySelectorAll(tag || "*"); - } else { - ret = []; - } - if (tag === undefined || tag && nodeName(context, tag)) { - return jQuery.merge([ context ], ret); - } - return ret; - } - function setGlobalEval(elems, refElements) { - var i = 0, l = elems.length; - for (;i < l; i++) { - dataPriv.set(elems[i], "globalEval", !refElements || dataPriv.get(refElements[i], "globalEval")); - } - } - var rhtml = /<|&#?\w+;/; - function buildFragment(elems, context, scripts, selection, ignored) { - var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length; - for (;i < l; i++) { - elem = elems[i]; - if (elem || elem === 0) { - if (toType(elem) === "object") { - jQuery.merge(nodes, elem.nodeType ? [ elem ] : elem); - } else if (!rhtml.test(elem)) { - nodes.push(context.createTextNode(elem)); - } else { - tmp = tmp || fragment.appendChild(context.createElement("div")); - tag = (rtagName.exec(elem) || [ "", "" ])[1].toLowerCase(); - wrap = wrapMap[tag] || wrapMap._default; - tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; - j = wrap[0]; - while (j--) { - tmp = tmp.lastChild; - } - jQuery.merge(nodes, tmp.childNodes); - tmp = fragment.firstChild; - tmp.textContent = ""; - } - } - } - fragment.textContent = ""; - i = 0; - while (elem = nodes[i++]) { - if (selection && jQuery.inArray(elem, selection) > -1) { - if (ignored) { - ignored.push(elem); - } - continue; - } - attached = isAttached(elem); - tmp = getAll(fragment.appendChild(elem), "script"); - if (attached) { - setGlobalEval(tmp); - } - if (scripts) { - j = 0; - while (elem = tmp[j++]) { - if (rscriptType.test(elem.type || "")) { - scripts.push(elem); - } - } - } - } - return fragment; - } - var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - function returnTrue() { - return true; - } - function returnFalse() { - return false; - } - function expectSync(elem, type) { - return elem === safeActiveElement() === (type === "focus"); - } - function safeActiveElement() { - try { - return document.activeElement; - } catch (err) {} - } - function on(elem, types, selector, data, fn, one) { - var origFn, type; - if (typeof types === "object") { - if (typeof selector !== "string") { - data = data || selector; - selector = undefined; - } - for (type in types) { - on(elem, type, selector, data, types[type], one); - } - return elem; - } - if (data == null && fn == null) { - fn = selector; - data = selector = undefined; - } else if (fn == null) { - if (typeof selector === "string") { - fn = data; - data = undefined; - } else { - fn = data; - data = selector; - selector = undefined; - } - } - if (fn === false) { - fn = returnFalse; - } else if (!fn) { - return elem; - } - if (one === 1) { - origFn = fn; - fn = function(event) { - jQuery().off(event); - return origFn.apply(this, arguments); - }; - fn.guid = origFn.guid || (origFn.guid = jQuery.guid++); - } - return elem.each(function() { - jQuery.event.add(this, types, fn, data, selector); - }); - } - jQuery.event = { - global: {}, - add: function(elem, types, handler, data, selector) { - var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get(elem); - if (!acceptData(elem)) { - return; - } - if (handler.handler) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - if (selector) { - jQuery.find.matchesSelector(documentElement, selector); - } - if (!handler.guid) { - handler.guid = jQuery.guid++; - } - if (!(events = elemData.events)) { - events = elemData.events = Object.create(null); - } - if (!(eventHandle = elemData.handle)) { - eventHandle = elemData.handle = function(e) { - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined; - }; - } - types = (types || "").match(rnothtmlwhite) || [ "" ]; - t = types.length; - while (t--) { - tmp = rtypenamespace.exec(types[t]) || []; - type = origType = tmp[1]; - namespaces = (tmp[2] || "").split(".").sort(); - if (!type) { - continue; - } - special = jQuery.event.special[type] || {}; - type = (selector ? special.delegateType : special.bindType) || type; - special = jQuery.event.special[type] || {}; - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test(selector), - namespace: namespaces.join(".") - }, handleObjIn); - if (!(handlers = events[type])) { - handlers = events[type] = []; - handlers.delegateCount = 0; - if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) { - if (elem.addEventListener) { - elem.addEventListener(type, eventHandle); - } - } - } - if (special.add) { - special.add.call(elem, handleObj); - if (!handleObj.handler.guid) { - handleObj.handler.guid = handler.guid; - } - } - if (selector) { - handlers.splice(handlers.delegateCount++, 0, handleObj); - } else { - handlers.push(handleObj); - } - jQuery.event.global[type] = true; - } - }, - remove: function(elem, types, handler, selector, mappedTypes) { - var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem); - if (!elemData || !(events = elemData.events)) { - return; - } - types = (types || "").match(rnothtmlwhite) || [ "" ]; - t = types.length; - while (t--) { - tmp = rtypenamespace.exec(types[t]) || []; - type = origType = tmp[1]; - namespaces = (tmp[2] || "").split(".").sort(); - if (!type) { - for (type in events) { - jQuery.event.remove(elem, type + types[t], handler, selector, true); - } - continue; - } - special = jQuery.event.special[type] || {}; - type = (selector ? special.delegateType : special.bindType) || type; - handlers = events[type] || []; - tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"); - origCount = j = handlers.length; - while (j--) { - handleObj = handlers[j]; - if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) { - handlers.splice(j, 1); - if (handleObj.selector) { - handlers.delegateCount--; - } - if (special.remove) { - special.remove.call(elem, handleObj); - } - } - } - if (origCount && !handlers.length) { - if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) { - jQuery.removeEvent(elem, type, elemData.handle); - } - delete events[type]; - } - } - if (jQuery.isEmptyObject(events)) { - dataPriv.remove(elem, "handle events"); - } - }, - dispatch: function(nativeEvent) { - var i, j, ret, matched, handleObj, handlerQueue, args = new Array(arguments.length), event = jQuery.event.fix(nativeEvent), handlers = (dataPriv.get(this, "events") || Object.create(null))[event.type] || [], special = jQuery.event.special[event.type] || {}; - args[0] = event; - for (i = 1; i < arguments.length; i++) { - args[i] = arguments[i]; - } - event.delegateTarget = this; - if (special.preDispatch && special.preDispatch.call(this, event) === false) { - return; - } - handlerQueue = jQuery.event.handlers.call(this, event, handlers); - i = 0; - while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) { - event.currentTarget = matched.elem; - j = 0; - while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) { - if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) { - event.handleObj = handleObj; - event.data = handleObj.data; - ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args); - if (ret !== undefined) { - if ((event.result = ret) === false) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - if (special.postDispatch) { - special.postDispatch.call(this, event); - } - return event.result; - }, - handlers: function(event, handlers) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; - if (delegateCount && cur.nodeType && !(event.type === "click" && event.button >= 1)) { - for (;cur !== this; cur = cur.parentNode || this) { - if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) { - matchedHandlers = []; - matchedSelectors = {}; - for (i = 0; i < delegateCount; i++) { - handleObj = handlers[i]; - sel = handleObj.selector + " "; - if (matchedSelectors[sel] === undefined) { - matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [ cur ]).length; - } - if (matchedSelectors[sel]) { - matchedHandlers.push(handleObj); - } - } - if (matchedHandlers.length) { - handlerQueue.push({ - elem: cur, - handlers: matchedHandlers - }); - } - } - } - } - cur = this; - if (delegateCount < handlers.length) { - handlerQueue.push({ - elem: cur, - handlers: handlers.slice(delegateCount) - }); - } - return handlerQueue; - }, - addProp: function(name, hook) { - Object.defineProperty(jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - get: isFunction(hook) ? function() { - if (this.originalEvent) { - return hook(this.originalEvent); - } - } : function() { - if (this.originalEvent) { - return this.originalEvent[name]; - } - }, - set: function(value) { - Object.defineProperty(this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - }); - } - }); - }, - fix: function(originalEvent) { - return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent); - }, - special: { - load: { - noBubble: true - }, - click: { - setup: function(data) { - var el = this || data; - if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) { - leverageNative(el, "click", returnTrue); - } - return false; - }, - trigger: function(data) { - var el = this || data; - if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) { - leverageNative(el, "click"); - } - return true; - }, - _default: function(event) { - var target = event.target; - return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a"); - } - }, - beforeunload: { - postDispatch: function(event) { - if (event.result !== undefined && event.originalEvent) { - event.originalEvent.returnValue = event.result; - } - } - } - } - }; - function leverageNative(el, type, expectSync) { - if (!expectSync) { - if (dataPriv.get(el, type) === undefined) { - jQuery.event.add(el, type, returnTrue); - } - return; - } - dataPriv.set(el, type, false); - jQuery.event.add(el, type, { - namespace: false, - handler: function(event) { - var notAsync, result, saved = dataPriv.get(this, type); - if (event.isTrigger & 1 && this[type]) { - if (!saved.length) { - saved = slice.call(arguments); - dataPriv.set(this, type, saved); - notAsync = expectSync(this, type); - this[type](); - result = dataPriv.get(this, type); - if (saved !== result || notAsync) { - dataPriv.set(this, type, false); - } else { - result = {}; - } - if (saved !== result) { - event.stopImmediatePropagation(); - event.preventDefault(); - return result && result.value; - } - } else if ((jQuery.event.special[type] || {}).delegateType) { - event.stopPropagation(); - } - } else if (saved.length) { - dataPriv.set(this, type, { - value: jQuery.event.trigger(jQuery.extend(saved[0], jQuery.Event.prototype), saved.slice(1), this) - }); - event.stopImmediatePropagation(); - } - } - }); - } - jQuery.removeEvent = function(elem, type, handle) { - if (elem.removeEventListener) { - elem.removeEventListener(type, handle); - } - }; - jQuery.Event = function(src, props) { - if (!(this instanceof jQuery.Event)) { - return new jQuery.Event(src, props); - } - if (src && src.type) { - this.originalEvent = src; - this.type = src.type; - this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && src.returnValue === false ? returnTrue : returnFalse; - this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target; - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - } else { - this.type = src; - } - if (props) { - jQuery.extend(this, props); - } - this.timeStamp = src && src.timeStamp || Date.now(); - this[jQuery.expando] = true; - }; - jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - preventDefault: function() { - var e = this.originalEvent; - this.isDefaultPrevented = returnTrue; - if (e && !this.isSimulated) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - this.isPropagationStopped = returnTrue; - if (e && !this.isSimulated) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - this.isImmediatePropagationStopped = returnTrue; - if (e && !this.isSimulated) { - e.stopImmediatePropagation(); - } - this.stopPropagation(); - } - }; - jQuery.each({ - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - char: true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - which: true - }, jQuery.event.addProp); - jQuery.each({ - focus: "focusin", - blur: "focusout" - }, function(type, delegateType) { - jQuery.event.special[type] = { - setup: function() { - leverageNative(this, type, expectSync); - return false; - }, - trigger: function() { - leverageNative(this, type); - return true; - }, - _default: function() { - return true; - }, - delegateType: delegateType - }; - }); - jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" - }, function(orig, fix) { - jQuery.event.special[orig] = { - delegateType: fix, - bindType: fix, - handle: function(event) { - var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; - if (!related || related !== target && !jQuery.contains(target, related)) { - event.type = handleObj.origType; - ret = handleObj.handler.apply(this, arguments); - event.type = fix; - } - return ret; - } - }; - }); - jQuery.fn.extend({ - on: function(types, selector, data, fn) { - return on(this, types, selector, data, fn); - }, - one: function(types, selector, data, fn) { - return on(this, types, selector, data, fn, 1); - }, - off: function(types, selector, fn) { - var handleObj, type; - if (types && types.preventDefault && types.handleObj) { - handleObj = types.handleObj; - jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler); - return this; - } - if (typeof types === "object") { - for (type in types) { - this.off(type, selector, types[type]); - } - return this; - } - if (selector === false || typeof selector === "function") { - fn = selector; - selector = undefined; - } - if (fn === false) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove(this, types, fn, selector); - }); - } - }); - var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; - function manipulationTarget(elem, content) { - if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) { - return jQuery(elem).children("tbody")[0] || elem; - } - return elem; - } - function disableScript(elem) { - elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; - return elem; - } - function restoreScript(elem) { - if ((elem.type || "").slice(0, 5) === "true/") { - elem.type = elem.type.slice(5); - } else { - elem.removeAttribute("type"); - } - return elem; - } - function cloneCopyEvent(src, dest) { - var i, l, type, pdataOld, udataOld, udataCur, events; - if (dest.nodeType !== 1) { - return; - } - if (dataPriv.hasData(src)) { - pdataOld = dataPriv.get(src); - events = pdataOld.events; - if (events) { - dataPriv.remove(dest, "handle events"); - for (type in events) { - for (i = 0, l = events[type].length; i < l; i++) { - jQuery.event.add(dest, type, events[type][i]); - } - } - } - } - if (dataUser.hasData(src)) { - udataOld = dataUser.access(src); - udataCur = jQuery.extend({}, udataOld); - dataUser.set(dest, udataCur); - } - } - function fixInput(src, dest) { - var nodeName = dest.nodeName.toLowerCase(); - if (nodeName === "input" && rcheckableType.test(src.type)) { - dest.checked = src.checked; - } else if (nodeName === "input" || nodeName === "textarea") { - dest.defaultValue = src.defaultValue; - } - } - function domManip(collection, args, callback, ignored) { - args = flat(args); - var fragment, first, scripts, hasScripts, node, doc, i = 0, l = collection.length, iNoClone = l - 1, value = args[0], valueIsFunction = isFunction(value); - if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) { - return collection.each(function(index) { - var self = collection.eq(index); - if (valueIsFunction) { - args[0] = value.call(this, index, self.html()); - } - domManip(self, args, callback, ignored); - }); - } - if (l) { - fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored); - first = fragment.firstChild; - if (fragment.childNodes.length === 1) { - fragment = first; - } - if (first || ignored) { - scripts = jQuery.map(getAll(fragment, "script"), disableScript); - hasScripts = scripts.length; - for (;i < l; i++) { - node = fragment; - if (i !== iNoClone) { - node = jQuery.clone(node, true, true); - if (hasScripts) { - jQuery.merge(scripts, getAll(node, "script")); - } - } - callback.call(collection[i], node, i); - } - if (hasScripts) { - doc = scripts[scripts.length - 1].ownerDocument; - jQuery.map(scripts, restoreScript); - for (i = 0; i < hasScripts; i++) { - node = scripts[i]; - if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery.contains(doc, node)) { - if (node.src && (node.type || "").toLowerCase() !== "module") { - if (jQuery._evalUrl && !node.noModule) { - jQuery._evalUrl(node.src, { - nonce: node.nonce || node.getAttribute("nonce") - }, doc); - } - } else { - DOMEval(node.textContent.replace(rcleanScript, ""), node, doc); - } - } - } - } - } - } - return collection; - } - function remove(elem, selector, keepData) { - var node, nodes = selector ? jQuery.filter(selector, elem) : elem, i = 0; - for (;(node = nodes[i]) != null; i++) { - if (!keepData && node.nodeType === 1) { - jQuery.cleanData(getAll(node)); - } - if (node.parentNode) { - if (keepData && isAttached(node)) { - setGlobalEval(getAll(node, "script")); - } - node.parentNode.removeChild(node); - } - } - return elem; - } - jQuery.extend({ - htmlPrefilter: function(html) { - return html; - }, - clone: function(elem, dataAndEvents, deepDataAndEvents) { - var i, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = isAttached(elem); - if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) { - destElements = getAll(clone); - srcElements = getAll(elem); - for (i = 0, l = srcElements.length; i < l; i++) { - fixInput(srcElements[i], destElements[i]); - } - } - if (dataAndEvents) { - if (deepDataAndEvents) { - srcElements = srcElements || getAll(elem); - destElements = destElements || getAll(clone); - for (i = 0, l = srcElements.length; i < l; i++) { - cloneCopyEvent(srcElements[i], destElements[i]); - } - } else { - cloneCopyEvent(elem, clone); - } - } - destElements = getAll(clone, "script"); - if (destElements.length > 0) { - setGlobalEval(destElements, !inPage && getAll(elem, "script")); - } - return clone; - }, - cleanData: function(elems) { - var data, elem, type, special = jQuery.event.special, i = 0; - for (;(elem = elems[i]) !== undefined; i++) { - if (acceptData(elem)) { - if (data = elem[dataPriv.expando]) { - if (data.events) { - for (type in data.events) { - if (special[type]) { - jQuery.event.remove(elem, type); - } else { - jQuery.removeEvent(elem, type, data.handle); - } - } - } - elem[dataPriv.expando] = undefined; - } - if (elem[dataUser.expando]) { - elem[dataUser.expando] = undefined; - } - } - } - } - }); - jQuery.fn.extend({ - detach: function(selector) { - return remove(this, selector, true); - }, - remove: function(selector) { - return remove(this, selector); - }, - text: function(value) { - return access(this, function(value) { - return value === undefined ? jQuery.text(this) : this.empty().each(function() { - if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { - this.textContent = value; - } - }); - }, null, value, arguments.length); - }, - append: function() { - return domManip(this, arguments, function(elem) { - if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { - var target = manipulationTarget(this, elem); - target.appendChild(elem); - } - }); - }, - prepend: function() { - return domManip(this, arguments, function(elem) { - if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { - var target = manipulationTarget(this, elem); - target.insertBefore(elem, target.firstChild); - } - }); - }, - before: function() { - return domManip(this, arguments, function(elem) { - if (this.parentNode) { - this.parentNode.insertBefore(elem, this); - } - }); - }, - after: function() { - return domManip(this, arguments, function(elem) { - if (this.parentNode) { - this.parentNode.insertBefore(elem, this.nextSibling); - } - }); - }, - empty: function() { - var elem, i = 0; - for (;(elem = this[i]) != null; i++) { - if (elem.nodeType === 1) { - jQuery.cleanData(getAll(elem, false)); - elem.textContent = ""; - } - } - return this; - }, - clone: function(dataAndEvents, deepDataAndEvents) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - return this.map(function() { - return jQuery.clone(this, dataAndEvents, deepDataAndEvents); - }); - }, - html: function(value) { - return access(this, function(value) { - var elem = this[0] || {}, i = 0, l = this.length; - if (value === undefined && elem.nodeType === 1) { - return elem.innerHTML; - } - if (typeof value === "string" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [ "", "" ])[1].toLowerCase()]) { - value = jQuery.htmlPrefilter(value); - try { - for (;i < l; i++) { - elem = this[i] || {}; - if (elem.nodeType === 1) { - jQuery.cleanData(getAll(elem, false)); - elem.innerHTML = value; - } - } - elem = 0; - } catch (e) {} - } - if (elem) { - this.empty().append(value); - } - }, null, value, arguments.length); - }, - replaceWith: function() { - var ignored = []; - return domManip(this, arguments, function(elem) { - var parent = this.parentNode; - if (jQuery.inArray(this, ignored) < 0) { - jQuery.cleanData(getAll(this)); - if (parent) { - parent.replaceChild(elem, this); - } - } - }, ignored); - } - }); - jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" - }, function(name, original) { - jQuery.fn[name] = function(selector) { - var elems, ret = [], insert = jQuery(selector), last = insert.length - 1, i = 0; - for (;i <= last; i++) { - elems = i === last ? this : this.clone(true); - jQuery(insert[i])[original](elems); - push.apply(ret, elems.get()); - } - return this.pushStack(ret); - }; - }); - var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i"); - var getStyles = function(elem) { - var view = elem.ownerDocument.defaultView; - if (!view || !view.opener) { - view = window; - } - return view.getComputedStyle(elem); - }; - var swap = function(elem, options, callback) { - var ret, name, old = {}; - for (name in options) { - old[name] = elem.style[name]; - elem.style[name] = options[name]; - } - ret = callback.call(elem); - for (name in options) { - elem.style[name] = old[name]; - } - return ret; - }; - var rboxStyle = new RegExp(cssExpand.join("|"), "i"); - (function() { - function computeStyleTests() { - if (!div) { - return; - } - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + "margin-top:1px;padding:0;border:0"; - div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + "margin:auto;border:1px;padding:1px;" + "width:60%;top:1%"; - documentElement.appendChild(container).appendChild(div); - var divStyle = window.getComputedStyle(div); - pixelPositionVal = divStyle.top !== "1%"; - reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; - boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12; - documentElement.removeChild(container); - div = null; - } - function roundPixelMeasures(measure) { - return Math.round(parseFloat(measure)); - } - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document.createElement("div"), div = document.createElement("div"); - if (!div.style) { - return; - } - div.style.backgroundClip = "content-box"; - div.cloneNode(true).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - jQuery.extend(support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if (reliableTrDimensionsVal == null) { - table = document.createElement("table"); - tr = document.createElement("tr"); - trChild = document.createElement("div"); - table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; - tr.style.cssText = "border:1px solid"; - tr.style.height = "1px"; - trChild.style.height = "9px"; - trChild.style.display = "block"; - documentElement.appendChild(table).appendChild(tr).appendChild(trChild); - trStyle = window.getComputedStyle(tr); - reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight; - documentElement.removeChild(table); - } - return reliableTrDimensionsVal; - } - }); - })(); - function curCSS(elem, name, computed) { - var width, minWidth, maxWidth, ret, style = elem.style; - computed = computed || getStyles(elem); - if (computed) { - ret = computed.getPropertyValue(name) || computed[name]; - if (ret === "" && !isAttached(elem)) { - ret = jQuery.style(elem, name); - } - if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) { - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - return ret !== undefined ? ret + "" : ret; - } - function addGetHookIf(conditionFn, hookFn) { - return { - get: function() { - if (conditionFn()) { - delete this.get; - return; - } - return (this.get = hookFn).apply(this, arguments); - } - }; - } - var cssPrefixes = [ "Webkit", "Moz", "ms" ], emptyStyle = document.createElement("div").style, vendorProps = {}; - function vendorPropName(name) { - var capName = name[0].toUpperCase() + name.slice(1), i = cssPrefixes.length; - while (i--) { - name = cssPrefixes[i] + capName; - if (name in emptyStyle) { - return name; - } - } - } - function finalPropName(name) { - var final = jQuery.cssProps[name] || vendorProps[name]; - if (final) { - return final; - } - if (name in emptyStyle) { - return name; - } - return vendorProps[name] = vendorPropName(name) || name; - } - var rdisplayswap = /^(none|table(?!-c[ea]).+)/, rcustomProp = /^--/, cssShow = { - position: "absolute", - visibility: "hidden", - display: "block" - }, cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - function setPositiveNumber(_elem, value, subtract) { - var matches = rcssNum.exec(value); - return matches ? Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") : value; - } - function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) { - var i = dimension === "width" ? 1 : 0, extra = 0, delta = 0; - if (box === (isBorderBox ? "border" : "content")) { - return 0; - } - for (;i < 4; i += 2) { - if (box === "margin") { - delta += jQuery.css(elem, box + cssExpand[i], true, styles); - } - if (!isBorderBox) { - delta += jQuery.css(elem, "padding" + cssExpand[i], true, styles); - if (box !== "padding") { - delta += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); - } else { - extra += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); - } - } else { - if (box === "content") { - delta -= jQuery.css(elem, "padding" + cssExpand[i], true, styles); - } - if (box !== "margin") { - delta -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); - } - } - } - if (!isBorderBox && computedVal >= 0) { - delta += Math.max(0, Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - .5)) || 0; - } - return delta; - } - function getWidthOrHeight(elem, dimension, extra) { - var styles = getStyles(elem), boxSizingNeeded = !support.boxSizingReliable() || extra, isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box", valueIsBorderBox = isBorderBox, val = curCSS(elem, dimension, styles), offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1); - if (rnumnonpx.test(val)) { - if (!extra) { - return val; - } - val = "auto"; - } - if ((!support.boxSizingReliable() && isBorderBox || !support.reliableTrDimensions() && nodeName(elem, "tr") || val === "auto" || !parseFloat(val) && jQuery.css(elem, "display", false, styles) === "inline") && elem.getClientRects().length) { - isBorderBox = jQuery.css(elem, "boxSizing", false, styles) === "border-box"; - valueIsBorderBox = offsetProp in elem; - if (valueIsBorderBox) { - val = elem[offsetProp]; - } - } - val = parseFloat(val) || 0; - return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles, val) + "px"; - } - jQuery.extend({ - cssHooks: { - opacity: { - get: function(elem, computed) { - if (computed) { - var ret = curCSS(elem, "opacity"); - return ret === "" ? "1" : ret; - } - } - } - }, - cssNumber: { - animationIterationCount: true, - columnCount: true, - fillOpacity: true, - flexGrow: true, - flexShrink: true, - fontWeight: true, - gridArea: true, - gridColumn: true, - gridColumnEnd: true, - gridColumnStart: true, - gridRow: true, - gridRowEnd: true, - gridRowStart: true, - lineHeight: true, - opacity: true, - order: true, - orphans: true, - widows: true, - zIndex: true, - zoom: true - }, - cssProps: {}, - style: function(elem, name, value, extra) { - if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) { - return; - } - var ret, type, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name), style = elem.style; - if (!isCustomProp) { - name = finalPropName(origName); - } - hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; - if (value !== undefined) { - type = typeof value; - if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) { - value = adjustCSS(elem, name, ret); - type = "number"; - } - if (value == null || value !== value) { - return; - } - if (type === "number" && !isCustomProp) { - value += ret && ret[3] || (jQuery.cssNumber[origName] ? "" : "px"); - } - if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) { - style[name] = "inherit"; - } - if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) { - if (isCustomProp) { - style.setProperty(name, value); - } else { - style[name] = value; - } - } - } else { - if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) { - return ret; - } - return style[name]; - } - }, - css: function(elem, name, extra, styles) { - var val, num, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name); - if (!isCustomProp) { - name = finalPropName(origName); - } - hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; - if (hooks && "get" in hooks) { - val = hooks.get(elem, true, extra); - } - if (val === undefined) { - val = curCSS(elem, name, styles); - } - if (val === "normal" && name in cssNormalTransform) { - val = cssNormalTransform[name]; - } - if (extra === "" || extra) { - num = parseFloat(val); - return extra === true || isFinite(num) ? num || 0 : val; - } - return val; - } - }); - jQuery.each([ "height", "width" ], function(_i, dimension) { - jQuery.cssHooks[dimension] = { - get: function(elem, computed, extra) { - if (computed) { - return rdisplayswap.test(jQuery.css(elem, "display")) && (!elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function() { - return getWidthOrHeight(elem, dimension, extra); - }) : getWidthOrHeight(elem, dimension, extra); - } - }, - set: function(elem, value, extra) { - var matches, styles = getStyles(elem), scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", boxSizingNeeded = scrollboxSizeBuggy || extra, isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box", subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0; - if (isBorderBox && scrollboxSizeBuggy) { - subtract -= Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - .5); - } - if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") { - elem.style[dimension] = value; - value = jQuery.css(elem, dimension); - } - return setPositiveNumber(elem, value, subtract); - } - }; - }); - jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function(elem, computed) { - if (computed) { - return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { - marginLeft: 0 - }, function() { - return elem.getBoundingClientRect().left; - })) + "px"; - } - }); - jQuery.each({ - margin: "", - padding: "", - border: "Width" - }, function(prefix, suffix) { - jQuery.cssHooks[prefix + suffix] = { - expand: function(value) { - var i = 0, expanded = {}, parts = typeof value === "string" ? value.split(" ") : [ value ]; - for (;i < 4; i++) { - expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0]; - } - return expanded; - } - }; - if (prefix !== "margin") { - jQuery.cssHooks[prefix + suffix].set = setPositiveNumber; - } - }); - jQuery.fn.extend({ - css: function(name, value) { - return access(this, function(elem, name, value) { - var styles, len, map = {}, i = 0; - if (Array.isArray(name)) { - styles = getStyles(elem); - len = name.length; - for (;i < len; i++) { - map[name[i]] = jQuery.css(elem, name[i], false, styles); - } - return map; - } - return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name); - }, name, value, arguments.length > 1); - } - }); - function Tween(elem, options, prop, end, easing) { - return new Tween.prototype.init(elem, options, prop, end, easing); - } - jQuery.Tween = Tween; - Tween.prototype = { - constructor: Tween, - init: function(elem, options, prop, end, easing, unit) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px"); - }, - cur: function() { - var hooks = Tween.propHooks[this.prop]; - return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this); - }, - run: function(percent) { - var eased, hooks = Tween.propHooks[this.prop]; - if (this.options.duration) { - this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration); - } else { - this.pos = eased = percent; - } - this.now = (this.end - this.start) * eased + this.start; - if (this.options.step) { - this.options.step.call(this.elem, this.now, this); - } - if (hooks && hooks.set) { - hooks.set(this); - } else { - Tween.propHooks._default.set(this); - } - return this; - } - }; - Tween.prototype.init.prototype = Tween.prototype; - Tween.propHooks = { - _default: { - get: function(tween) { - var result; - if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) { - return tween.elem[tween.prop]; - } - result = jQuery.css(tween.elem, tween.prop, ""); - return !result || result === "auto" ? 0 : result; - }, - set: function(tween) { - if (jQuery.fx.step[tween.prop]) { - jQuery.fx.step[tween.prop](tween); - } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) { - jQuery.style(tween.elem, tween.prop, tween.now + tween.unit); - } else { - tween.elem[tween.prop] = tween.now; - } - } - } - }; - Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function(tween) { - if (tween.elem.nodeType && tween.elem.parentNode) { - tween.elem[tween.prop] = tween.now; - } - } - }; - jQuery.easing = { - linear: function(p) { - return p; - }, - swing: function(p) { - return .5 - Math.cos(p * Math.PI) / 2; - }, - _default: "swing" - }; - jQuery.fx = Tween.prototype.init; - jQuery.fx.step = {}; - var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/; - function schedule() { - if (inProgress) { - if (document.hidden === false && window.requestAnimationFrame) { - window.requestAnimationFrame(schedule); - } else { - window.setTimeout(schedule, jQuery.fx.interval); - } - jQuery.fx.tick(); - } - } - function createFxNow() { - window.setTimeout(function() { - fxNow = undefined; - }); - return fxNow = Date.now(); - } - function genFx(type, includeWidth) { - var which, i = 0, attrs = { - height: type - }; - includeWidth = includeWidth ? 1 : 0; - for (;i < 4; i += 2 - includeWidth) { - which = cssExpand[i]; - attrs["margin" + which] = attrs["padding" + which] = type; - } - if (includeWidth) { - attrs.opacity = attrs.width = type; - } - return attrs; - } - function createTween(value, prop, animation) { - var tween, collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]), index = 0, length = collection.length; - for (;index < length; index++) { - if (tween = collection[index].call(animation, prop, value)) { - return tween; - } - } - } - function defaultPrefilter(elem, props, opts) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHiddenWithinTree(elem), dataShow = dataPriv.get(elem, "fxshow"); - if (!opts.queue) { - hooks = jQuery._queueHooks(elem, "fx"); - if (hooks.unqueued == null) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if (!hooks.unqueued) { - oldfire(); - } - }; - } - hooks.unqueued++; - anim.always(function() { - anim.always(function() { - hooks.unqueued--; - if (!jQuery.queue(elem, "fx").length) { - hooks.empty.fire(); - } - }); - }); - } - for (prop in props) { - value = props[prop]; - if (rfxtypes.test(value)) { - delete props[prop]; - toggle = toggle || value === "toggle"; - if (value === (hidden ? "hide" : "show")) { - if (value === "show" && dataShow && dataShow[prop] !== undefined) { - hidden = true; - } else { - continue; - } - } - orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop); - } - } - propTween = !jQuery.isEmptyObject(props); - if (!propTween && jQuery.isEmptyObject(orig)) { - return; - } - if (isBox && elem.nodeType === 1) { - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - restoreDisplay = dataShow && dataShow.display; - if (restoreDisplay == null) { - restoreDisplay = dataPriv.get(elem, "display"); - } - display = jQuery.css(elem, "display"); - if (display === "none") { - if (restoreDisplay) { - display = restoreDisplay; - } else { - showHide([ elem ], true); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css(elem, "display"); - showHide([ elem ]); - } - } - if (display === "inline" || display === "inline-block" && restoreDisplay != null) { - if (jQuery.css(elem, "float") === "none") { - if (!propTween) { - anim.done(function() { - style.display = restoreDisplay; - }); - if (restoreDisplay == null) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - if (opts.overflow) { - style.overflow = "hidden"; - anim.always(function() { - style.overflow = opts.overflow[0]; - style.overflowX = opts.overflow[1]; - style.overflowY = opts.overflow[2]; - }); - } - propTween = false; - for (prop in orig) { - if (!propTween) { - if (dataShow) { - if ("hidden" in dataShow) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access(elem, "fxshow", { - display: restoreDisplay - }); - } - if (toggle) { - dataShow.hidden = !hidden; - } - if (hidden) { - showHide([ elem ], true); - } - anim.done(function() { - if (!hidden) { - showHide([ elem ]); - } - dataPriv.remove(elem, "fxshow"); - for (prop in orig) { - jQuery.style(elem, prop, orig[prop]); - } - }); - } - propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim); - if (!(prop in dataShow)) { - dataShow[prop] = propTween.start; - if (hidden) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } - } - function propFilter(props, specialEasing) { - var index, name, easing, value, hooks; - for (index in props) { - name = camelCase(index); - easing = specialEasing[name]; - value = props[index]; - if (Array.isArray(value)) { - easing = value[1]; - value = props[index] = value[0]; - } - if (index !== name) { - props[name] = value; - delete props[index]; - } - hooks = jQuery.cssHooks[name]; - if (hooks && "expand" in hooks) { - value = hooks.expand(value); - delete props[name]; - for (index in value) { - if (!(index in props)) { - props[index] = value[index]; - specialEasing[index] = easing; - } - } - } else { - specialEasing[name] = easing; - } - } - } - function Animation(elem, properties, options) { - var result, stopped, index = 0, length = Animation.prefilters.length, deferred = jQuery.Deferred().always(function() { - delete tick.elem; - }), tick = function() { - if (stopped) { - return false; - } - var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, length = animation.tweens.length; - for (;index < length; index++) { - animation.tweens[index].run(percent); - } - deferred.notifyWith(elem, [ animation, percent, remaining ]); - if (percent < 1 && length) { - return remaining; - } - if (!length) { - deferred.notifyWith(elem, [ animation, 1, 0 ]); - } - deferred.resolveWith(elem, [ animation ]); - return false; - }, animation = deferred.promise({ - elem: elem, - props: jQuery.extend({}, properties), - opts: jQuery.extend(true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function(prop, end) { - var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing); - animation.tweens.push(tween); - return tween; - }, - stop: function(gotoEnd) { - var index = 0, length = gotoEnd ? animation.tweens.length : 0; - if (stopped) { - return this; - } - stopped = true; - for (;index < length; index++) { - animation.tweens[index].run(1); - } - if (gotoEnd) { - deferred.notifyWith(elem, [ animation, 1, 0 ]); - deferred.resolveWith(elem, [ animation, gotoEnd ]); - } else { - deferred.rejectWith(elem, [ animation, gotoEnd ]); - } - return this; - } - }), props = animation.props; - propFilter(props, animation.opts.specialEasing); - for (;index < length; index++) { - result = Animation.prefilters[index].call(animation, elem, props, animation.opts); - if (result) { - if (isFunction(result.stop)) { - jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result); - } - return result; - } - } - jQuery.map(props, createTween, animation); - if (isFunction(animation.opts.start)) { - animation.opts.start.call(elem, animation); - } - animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always); - jQuery.fx.timer(jQuery.extend(tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - })); - return animation; - } - jQuery.Animation = jQuery.extend(Animation, { - tweeners: { - "*": [ function(prop, value) { - var tween = this.createTween(prop, value); - adjustCSS(tween.elem, prop, rcssNum.exec(value), tween); - return tween; - } ] - }, - tweener: function(props, callback) { - if (isFunction(props)) { - callback = props; - props = [ "*" ]; - } else { - props = props.match(rnothtmlwhite); - } - var prop, index = 0, length = props.length; - for (;index < length; index++) { - prop = props[index]; - Animation.tweeners[prop] = Animation.tweeners[prop] || []; - Animation.tweeners[prop].unshift(callback); - } - }, - prefilters: [ defaultPrefilter ], - prefilter: function(callback, prepend) { - if (prepend) { - Animation.prefilters.unshift(callback); - } else { - Animation.prefilters.push(callback); - } - } - }); - jQuery.speed = function(speed, easing, fn) { - var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : { - complete: fn || !fn && easing || isFunction(speed) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction(easing) && easing - }; - if (jQuery.fx.off) { - opt.duration = 0; - } else { - if (typeof opt.duration !== "number") { - if (opt.duration in jQuery.fx.speeds) { - opt.duration = jQuery.fx.speeds[opt.duration]; - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - if (opt.queue == null || opt.queue === true) { - opt.queue = "fx"; - } - opt.old = opt.complete; - opt.complete = function() { - if (isFunction(opt.old)) { - opt.old.call(this); - } - if (opt.queue) { - jQuery.dequeue(this, opt.queue); - } - }; - return opt; - }; - jQuery.fn.extend({ - fadeTo: function(speed, to, easing, callback) { - return this.filter(isHiddenWithinTree).css("opacity", 0).show().end().animate({ - opacity: to - }, speed, easing, callback); - }, - animate: function(prop, speed, easing, callback) { - var empty = jQuery.isEmptyObject(prop), optall = jQuery.speed(speed, easing, callback), doAnimation = function() { - var anim = Animation(this, jQuery.extend({}, prop), optall); - if (empty || dataPriv.get(this, "finish")) { - anim.stop(true); - } - }; - doAnimation.finish = doAnimation; - return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation); - }, - stop: function(type, clearQueue, gotoEnd) { - var stopQueue = function(hooks) { - var stop = hooks.stop; - delete hooks.stop; - stop(gotoEnd); - }; - if (typeof type !== "string") { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if (clearQueue) { - this.queue(type || "fx", []); - } - return this.each(function() { - var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery.timers, data = dataPriv.get(this); - if (index) { - if (data[index] && data[index].stop) { - stopQueue(data[index]); - } - } else { - for (index in data) { - if (data[index] && data[index].stop && rrun.test(index)) { - stopQueue(data[index]); - } - } - } - for (index = timers.length; index--; ) { - if (timers[index].elem === this && (type == null || timers[index].queue === type)) { - timers[index].anim.stop(gotoEnd); - dequeue = false; - timers.splice(index, 1); - } - } - if (dequeue || !gotoEnd) { - jQuery.dequeue(this, type); - } - }); - }, - finish: function(type) { - if (type !== false) { - type = type || "fx"; - } - return this.each(function() { - var index, data = dataPriv.get(this), queue = data[type + "queue"], hooks = data[type + "queueHooks"], timers = jQuery.timers, length = queue ? queue.length : 0; - data.finish = true; - jQuery.queue(this, type, []); - if (hooks && hooks.stop) { - hooks.stop.call(this, true); - } - for (index = timers.length; index--; ) { - if (timers[index].elem === this && timers[index].queue === type) { - timers[index].anim.stop(true); - timers.splice(index, 1); - } - } - for (index = 0; index < length; index++) { - if (queue[index] && queue[index].finish) { - queue[index].finish.call(this); - } - } - delete data.finish; - }); - } - }); - jQuery.each([ "toggle", "show", "hide" ], function(_i, name) { - var cssFn = jQuery.fn[name]; - jQuery.fn[name] = function(speed, easing, callback) { - return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback); - }; - }); - jQuery.each({ - slideDown: genFx("show"), - slideUp: genFx("hide"), - slideToggle: genFx("toggle"), - fadeIn: { - opacity: "show" - }, - fadeOut: { - opacity: "hide" - }, - fadeToggle: { - opacity: "toggle" - } - }, function(name, props) { - jQuery.fn[name] = function(speed, easing, callback) { - return this.animate(props, speed, easing, callback); - }; - }); - jQuery.timers = []; - jQuery.fx.tick = function() { - var timer, i = 0, timers = jQuery.timers; - fxNow = Date.now(); - for (;i < timers.length; i++) { - timer = timers[i]; - if (!timer() && timers[i] === timer) { - timers.splice(i--, 1); - } - } - if (!timers.length) { - jQuery.fx.stop(); - } - fxNow = undefined; - }; - jQuery.fx.timer = function(timer) { - jQuery.timers.push(timer); - jQuery.fx.start(); - }; - jQuery.fx.interval = 13; - jQuery.fx.start = function() { - if (inProgress) { - return; - } - inProgress = true; - schedule(); - }; - jQuery.fx.stop = function() { - inProgress = null; - }; - jQuery.fx.speeds = { - slow: 600, - fast: 200, - _default: 400 - }; - jQuery.fn.delay = function(time, type) { - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; - type = type || "fx"; - return this.queue(type, function(next, hooks) { - var timeout = window.setTimeout(next, time); - hooks.stop = function() { - window.clearTimeout(timeout); - }; - }); - }; - (function() { - var input = document.createElement("input"), select = document.createElement("select"), opt = select.appendChild(document.createElement("option")); - input.type = "checkbox"; - support.checkOn = input.value !== ""; - support.optSelected = opt.selected; - input = document.createElement("input"); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; - })(); - var boolHook, attrHandle = jQuery.expr.attrHandle; - jQuery.fn.extend({ - attr: function(name, value) { - return access(this, jQuery.attr, name, value, arguments.length > 1); - }, - removeAttr: function(name) { - return this.each(function() { - jQuery.removeAttr(this, name); - }); - } - }); - jQuery.extend({ - attr: function(elem, name, value) { - var ret, hooks, nType = elem.nodeType; - if (nType === 3 || nType === 8 || nType === 2) { - return; - } - if (typeof elem.getAttribute === "undefined") { - return jQuery.prop(elem, name, value); - } - if (nType !== 1 || !jQuery.isXMLDoc(elem)) { - hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined); - } - if (value !== undefined) { - if (value === null) { - jQuery.removeAttr(elem, name); - return; - } - if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) { - return ret; - } - elem.setAttribute(name, value + ""); - return value; - } - if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) { - return ret; - } - ret = jQuery.find.attr(elem, name); - return ret == null ? undefined : ret; - }, - attrHooks: { - type: { - set: function(elem, value) { - if (!support.radioValue && value === "radio" && nodeName(elem, "input")) { - var val = elem.value; - elem.setAttribute("type", value); - if (val) { - elem.value = val; - } - return value; - } - } - } - }, - removeAttr: function(elem, value) { - var name, i = 0, attrNames = value && value.match(rnothtmlwhite); - if (attrNames && elem.nodeType === 1) { - while (name = attrNames[i++]) { - elem.removeAttribute(name); - } - } - } - }); - boolHook = { - set: function(elem, value, name) { - if (value === false) { - jQuery.removeAttr(elem, name); - } else { - elem.setAttribute(name, name); - } - return name; - } - }; - jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function(_i, name) { - var getter = attrHandle[name] || jQuery.find.attr; - attrHandle[name] = function(elem, name, isXML) { - var ret, handle, lowercaseName = name.toLowerCase(); - if (!isXML) { - handle = attrHandle[lowercaseName]; - attrHandle[lowercaseName] = ret; - ret = getter(elem, name, isXML) != null ? lowercaseName : null; - attrHandle[lowercaseName] = handle; - } - return ret; - }; - }); - var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i; - jQuery.fn.extend({ - prop: function(name, value) { - return access(this, jQuery.prop, name, value, arguments.length > 1); - }, - removeProp: function(name) { - return this.each(function() { - delete this[jQuery.propFix[name] || name]; - }); - } - }); - jQuery.extend({ - prop: function(elem, name, value) { - var ret, hooks, nType = elem.nodeType; - if (nType === 3 || nType === 8 || nType === 2) { - return; - } - if (nType !== 1 || !jQuery.isXMLDoc(elem)) { - name = jQuery.propFix[name] || name; - hooks = jQuery.propHooks[name]; - } - if (value !== undefined) { - if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) { - return ret; - } - return elem[name] = value; - } - if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) { - return ret; - } - return elem[name]; - }, - propHooks: { - tabIndex: { - get: function(elem) { - var tabindex = jQuery.find.attr(elem, "tabindex"); - if (tabindex) { - return parseInt(tabindex, 10); - } - if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) { - return 0; - } - return -1; - } - } - }, - propFix: { - for: "htmlFor", - class: "className" - } - }); - if (!support.optSelected) { - jQuery.propHooks.selected = { - get: function(elem) { - var parent = elem.parentNode; - if (parent && parent.parentNode) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function(elem) { - var parent = elem.parentNode; - if (parent) { - parent.selectedIndex; - if (parent.parentNode) { - parent.parentNode.selectedIndex; - } - } - } - }; - } - jQuery.each([ "tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable" ], function() { - jQuery.propFix[this.toLowerCase()] = this; - }); - function stripAndCollapse(value) { - var tokens = value.match(rnothtmlwhite) || []; - return tokens.join(" "); - } - function getClass(elem) { - return elem.getAttribute && elem.getAttribute("class") || ""; - } - function classesToArray(value) { - if (Array.isArray(value)) { - return value; - } - if (typeof value === "string") { - return value.match(rnothtmlwhite) || []; - } - return []; - } - jQuery.fn.extend({ - addClass: function(value) { - var classes, elem, cur, curValue, clazz, j, finalValue, i = 0; - if (isFunction(value)) { - return this.each(function(j) { - jQuery(this).addClass(value.call(this, j, getClass(this))); - }); - } - classes = classesToArray(value); - if (classes.length) { - while (elem = this[i++]) { - curValue = getClass(elem); - cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " "; - if (cur) { - j = 0; - while (clazz = classes[j++]) { - if (cur.indexOf(" " + clazz + " ") < 0) { - cur += clazz + " "; - } - } - finalValue = stripAndCollapse(cur); - if (curValue !== finalValue) { - elem.setAttribute("class", finalValue); - } - } - } - } - return this; - }, - removeClass: function(value) { - var classes, elem, cur, curValue, clazz, j, finalValue, i = 0; - if (isFunction(value)) { - return this.each(function(j) { - jQuery(this).removeClass(value.call(this, j, getClass(this))); - }); - } - if (!arguments.length) { - return this.attr("class", ""); - } - classes = classesToArray(value); - if (classes.length) { - while (elem = this[i++]) { - curValue = getClass(elem); - cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " "; - if (cur) { - j = 0; - while (clazz = classes[j++]) { - while (cur.indexOf(" " + clazz + " ") > -1) { - cur = cur.replace(" " + clazz + " ", " "); - } - } - finalValue = stripAndCollapse(cur); - if (curValue !== finalValue) { - elem.setAttribute("class", finalValue); - } - } - } - } - return this; - }, - toggleClass: function(value, stateVal) { - var type = typeof value, isValidValue = type === "string" || Array.isArray(value); - if (typeof stateVal === "boolean" && isValidValue) { - return stateVal ? this.addClass(value) : this.removeClass(value); - } - if (isFunction(value)) { - return this.each(function(i) { - jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal); - }); - } - return this.each(function() { - var className, i, self, classNames; - if (isValidValue) { - i = 0; - self = jQuery(this); - classNames = classesToArray(value); - while (className = classNames[i++]) { - if (self.hasClass(className)) { - self.removeClass(className); - } else { - self.addClass(className); - } - } - } else if (value === undefined || type === "boolean") { - className = getClass(this); - if (className) { - dataPriv.set(this, "__className__", className); - } - if (this.setAttribute) { - this.setAttribute("class", className || value === false ? "" : dataPriv.get(this, "__className__") || ""); - } - } - }); - }, - hasClass: function(selector) { - var className, elem, i = 0; - className = " " + selector + " "; - while (elem = this[i++]) { - if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) { - return true; - } - } - return false; - } - }); - var rreturn = /\r/g; - jQuery.fn.extend({ - val: function(value) { - var hooks, ret, valueIsFunction, elem = this[0]; - if (!arguments.length) { - if (elem) { - hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()]; - if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== undefined) { - return ret; - } - ret = elem.value; - if (typeof ret === "string") { - return ret.replace(rreturn, ""); - } - return ret == null ? "" : ret; - } - return; - } - valueIsFunction = isFunction(value); - return this.each(function(i) { - var val; - if (this.nodeType !== 1) { - return; - } - if (valueIsFunction) { - val = value.call(this, i, jQuery(this).val()); - } else { - val = value; - } - if (val == null) { - val = ""; - } else if (typeof val === "number") { - val += ""; - } else if (Array.isArray(val)) { - val = jQuery.map(val, function(value) { - return value == null ? "" : value + ""; - }); - } - hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; - if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === undefined) { - this.value = val; - } - }); - } - }); - jQuery.extend({ - valHooks: { - option: { - get: function(elem) { - var val = jQuery.find.attr(elem, "value"); - return val != null ? val : stripAndCollapse(jQuery.text(elem)); - } - }, - select: { - get: function(elem) { - var value, option, i, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max = one ? index + 1 : options.length; - if (index < 0) { - i = max; - } else { - i = one ? index : 0; - } - for (;i < max; i++) { - option = options[i]; - if ((option.selected || i === index) && !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) { - value = jQuery(option).val(); - if (one) { - return value; - } - values.push(value); - } - } - return values; - }, - set: function(elem, value) { - var optionSet, option, options = elem.options, values = jQuery.makeArray(value), i = options.length; - while (i--) { - option = options[i]; - if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) { - optionSet = true; - } - } - if (!optionSet) { - elem.selectedIndex = -1; - } - return values; - } - } - } - }); - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[this] = { - set: function(elem, value) { - if (Array.isArray(value)) { - return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1; - } - } - }; - if (!support.checkOn) { - jQuery.valHooks[this].get = function(elem) { - return elem.getAttribute("value") === null ? "on" : elem.value; - }; - } - }); - support.focusin = "onfocusin" in window; - var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function(e) { - e.stopPropagation(); - }; - jQuery.extend(jQuery.event, { - trigger: function(event, data, elem, onlyHandlers) { - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [ elem || document ], type = hasOwn.call(event, "type") ? event.type : event, namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : []; - cur = lastElement = tmp = elem = elem || document; - if (elem.nodeType === 3 || elem.nodeType === 8) { - return; - } - if (rfocusMorph.test(type + jQuery.event.triggered)) { - return; - } - if (type.indexOf(".") > -1) { - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === "object" && event); - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; - event.result = undefined; - if (!event.target) { - event.target = elem; - } - data = data == null ? [ event ] : jQuery.makeArray(data, [ event ]); - special = jQuery.event.special[type] || {}; - if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) { - return; - } - if (!onlyHandlers && !special.noBubble && !isWindow(elem)) { - bubbleType = special.delegateType || type; - if (!rfocusMorph.test(bubbleType + type)) { - cur = cur.parentNode; - } - for (;cur; cur = cur.parentNode) { - eventPath.push(cur); - tmp = cur; - } - if (tmp === (elem.ownerDocument || document)) { - eventPath.push(tmp.defaultView || tmp.parentWindow || window); - } - } - i = 0; - while ((cur = eventPath[i++]) && !event.isPropagationStopped()) { - lastElement = cur; - event.type = i > 1 ? bubbleType : special.bindType || type; - handle = (dataPriv.get(cur, "events") || Object.create(null))[event.type] && dataPriv.get(cur, "handle"); - if (handle) { - handle.apply(cur, data); - } - handle = ontype && cur[ontype]; - if (handle && handle.apply && acceptData(cur)) { - event.result = handle.apply(cur, data); - if (event.result === false) { - event.preventDefault(); - } - } - } - event.type = type; - if (!onlyHandlers && !event.isDefaultPrevented()) { - if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) { - if (ontype && isFunction(elem[type]) && !isWindow(elem)) { - tmp = elem[ontype]; - if (tmp) { - elem[ontype] = null; - } - jQuery.event.triggered = type; - if (event.isPropagationStopped()) { - lastElement.addEventListener(type, stopPropagationCallback); - } - elem[type](); - if (event.isPropagationStopped()) { - lastElement.removeEventListener(type, stopPropagationCallback); - } - jQuery.event.triggered = undefined; - if (tmp) { - elem[ontype] = tmp; - } - } - } - } - return event.result; - }, - simulate: function(type, elem, event) { - var e = jQuery.extend(new jQuery.Event(), event, { - type: type, - isSimulated: true - }); - jQuery.event.trigger(e, null, elem); - } - }); - jQuery.fn.extend({ - trigger: function(type, data) { - return this.each(function() { - jQuery.event.trigger(type, data, this); - }); - }, - triggerHandler: function(type, data) { - var elem = this[0]; - if (elem) { - return jQuery.event.trigger(type, data, elem, true); - } - } - }); - if (!support.focusin) { - jQuery.each({ - focus: "focusin", - blur: "focusout" - }, function(orig, fix) { - var handler = function(event) { - jQuery.event.simulate(fix, event.target, jQuery.event.fix(event)); - }; - jQuery.event.special[fix] = { - setup: function() { - var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access(doc, fix); - if (!attaches) { - doc.addEventListener(orig, handler, true); - } - dataPriv.access(doc, fix, (attaches || 0) + 1); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access(doc, fix) - 1; - if (!attaches) { - doc.removeEventListener(orig, handler, true); - dataPriv.remove(doc, fix); - } else { - dataPriv.access(doc, fix, attaches); - } - } - }; - }); - } - var location = window.location; - var nonce = { - guid: Date.now() - }; - var rquery = /\?/; - jQuery.parseXML = function(data) { - var xml, parserErrorElem; - if (!data || typeof data !== "string") { - return null; - } - try { - xml = new window.DOMParser().parseFromString(data, "text/xml"); - } catch (e) {} - parserErrorElem = xml && xml.getElementsByTagName("parsererror")[0]; - if (!xml || parserErrorElem) { - jQuery.error("Invalid XML: " + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function(el) { - return el.textContent; - }).join("\n") : data)); - } - return xml; - }; - var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i; - function buildParams(prefix, obj, traditional, add) { - var name; - if (Array.isArray(obj)) { - jQuery.each(obj, function(i, v) { - if (traditional || rbracket.test(prefix)) { - add(prefix, v); - } else { - buildParams(prefix + "[" + (typeof v === "object" && v != null ? i : "") + "]", v, traditional, add); - } - }); - } else if (!traditional && toType(obj) === "object") { - for (name in obj) { - buildParams(prefix + "[" + name + "]", obj[name], traditional, add); - } - } else { - add(prefix, obj); - } - } - jQuery.param = function(a, traditional) { - var prefix, s = [], add = function(key, valueOrFunction) { - var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction; - s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value); - }; - if (a == null) { - return ""; - } - if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) { - jQuery.each(a, function() { - add(this.name, this.value); - }); - } else { - for (prefix in a) { - buildParams(prefix, a[prefix], traditional, add); - } - } - return s.join("&"); - }; - jQuery.fn.extend({ - serialize: function() { - return jQuery.param(this.serializeArray()); - }, - serializeArray: function() { - return this.map(function() { - var elements = jQuery.prop(this, "elements"); - return elements ? jQuery.makeArray(elements) : this; - }).filter(function() { - var type = this.type; - return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type)); - }).map(function(_i, elem) { - var val = jQuery(this).val(); - if (val == null) { - return null; - } - if (Array.isArray(val)) { - return jQuery.map(val, function(val) { - return { - name: elem.name, - value: val.replace(rCRLF, "\r\n") - }; - }); - } - return { - name: elem.name, - value: val.replace(rCRLF, "\r\n") - }; - }).get(); - } - }); - var r20 = /%20/g, rhash = /#.*$/, rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/gm, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, prefilters = {}, transports = {}, allTypes = "*/".concat("*"), originAnchor = document.createElement("a"); - originAnchor.href = location.href; - function addToPrefiltersOrTransports(structure) { - return function(dataTypeExpression, func) { - if (typeof dataTypeExpression !== "string") { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || []; - if (isFunction(func)) { - while (dataType = dataTypes[i++]) { - if (dataType[0] === "+") { - dataType = dataType.slice(1) || "*"; - (structure[dataType] = structure[dataType] || []).unshift(func); - } else { - (structure[dataType] = structure[dataType] || []).push(func); - } - } - } - }; - } - function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) { - var inspected = {}, seekingTransport = structure === transports; - function inspect(dataType) { - var selected; - inspected[dataType] = true; - jQuery.each(structure[dataType] || [], function(_, prefilterOrFactory) { - var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR); - if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) { - options.dataTypes.unshift(dataTypeOrTransport); - inspect(dataTypeOrTransport); - return false; - } else if (seekingTransport) { - return !(selected = dataTypeOrTransport); - } - }); - return selected; - } - return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*"); - } - function ajaxExtend(target, src) { - var key, deep, flatOptions = jQuery.ajaxSettings.flatOptions || {}; - for (key in src) { - if (src[key] !== undefined) { - (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key]; - } - } - if (deep) { - jQuery.extend(true, target, deep); - } - return target; - } - function ajaxHandleResponses(s, jqXHR, responses) { - var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes; - while (dataTypes[0] === "*") { - dataTypes.shift(); - if (ct === undefined) { - ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); - } - } - if (ct) { - for (type in contents) { - if (contents[type] && contents[type].test(ct)) { - dataTypes.unshift(type); - break; - } - } - } - if (dataTypes[0] in responses) { - finalDataType = dataTypes[0]; - } else { - for (type in responses) { - if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) { - finalDataType = type; - break; - } - if (!firstDataType) { - firstDataType = type; - } - } - finalDataType = finalDataType || firstDataType; - } - if (finalDataType) { - if (finalDataType !== dataTypes[0]) { - dataTypes.unshift(finalDataType); - } - return responses[finalDataType]; - } - } - function ajaxConvert(s, response, jqXHR, isSuccess) { - var conv2, current, conv, tmp, prev, converters = {}, dataTypes = s.dataTypes.slice(); - if (dataTypes[1]) { - for (conv in s.converters) { - converters[conv.toLowerCase()] = s.converters[conv]; - } - } - current = dataTypes.shift(); - while (current) { - if (s.responseFields[current]) { - jqXHR[s.responseFields[current]] = response; - } - if (!prev && isSuccess && s.dataFilter) { - response = s.dataFilter(response, s.dataType); - } - prev = current; - current = dataTypes.shift(); - if (current) { - if (current === "*") { - current = prev; - } else if (prev !== "*" && prev !== current) { - conv = converters[prev + " " + current] || converters["* " + current]; - if (!conv) { - for (conv2 in converters) { - tmp = conv2.split(" "); - if (tmp[1] === current) { - conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]]; - if (conv) { - if (conv === true) { - conv = converters[conv2]; - } else if (converters[conv2] !== true) { - current = tmp[0]; - dataTypes.unshift(tmp[1]); - } - break; - } - } - } - } - if (conv !== true) { - if (conv && s.throws) { - response = conv(response); - } else { - try { - response = conv(response); - } catch (e) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - return { - state: "success", - data: response - }; - } - jQuery.extend({ - active: 0, - lastModified: {}, - etag: {}, - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test(location.protocol), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - converters: { - "* text": String, - "text html": true, - "text json": JSON.parse, - "text xml": jQuery.parseXML - }, - flatOptions: { - url: true, - context: true - } - }, - ajaxSetup: function(target, settings) { - return settings ? ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : ajaxExtend(jQuery.ajaxSettings, target); - }, - ajaxPrefilter: addToPrefiltersOrTransports(prefilters), - ajaxTransport: addToPrefiltersOrTransports(transports), - ajax: function(url, options) { - if (typeof url === "object") { - options = url; - url = undefined; - } - options = options || {}; - var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, completed, fireGlobals, i, uncached, s = jQuery.ajaxSetup({}, options), callbackContext = s.context || s, globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event, deferred = jQuery.Deferred(), completeDeferred = jQuery.Callbacks("once memory"), statusCode = s.statusCode || {}, requestHeaders = {}, requestHeadersNames = {}, strAbort = "canceled", jqXHR = { - readyState: 0, - getResponseHeader: function(key) { - var match; - if (completed) { - if (!responseHeaders) { - responseHeaders = {}; - while (match = rheaders.exec(responseHeadersString)) { - responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]); - } - } - match = responseHeaders[key.toLowerCase() + " "]; - } - return match == null ? null : match.join(", "); - }, - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - setRequestHeader: function(name, value) { - if (completed == null) { - name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name; - requestHeaders[name] = value; - } - return this; - }, - overrideMimeType: function(type) { - if (completed == null) { - s.mimeType = type; - } - return this; - }, - statusCode: function(map) { - var code; - if (map) { - if (completed) { - jqXHR.always(map[jqXHR.status]); - } else { - for (code in map) { - statusCode[code] = [ statusCode[code], map[code] ]; - } - } - } - return this; - }, - abort: function(statusText) { - var finalText = statusText || strAbort; - if (transport) { - transport.abort(finalText); - } - done(0, finalText); - return this; - } - }; - deferred.promise(jqXHR); - s.url = ((url || s.url || location.href) + "").replace(rprotocol, location.protocol + "//"); - s.type = options.method || options.type || s.method || s.type; - s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [ "" ]; - if (s.crossDomain == null) { - urlAnchor = document.createElement("a"); - try { - urlAnchor.href = s.url; - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host; - } catch (e) { - s.crossDomain = true; - } - } - if (s.data && s.processData && typeof s.data !== "string") { - s.data = jQuery.param(s.data, s.traditional); - } - inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); - if (completed) { - return jqXHR; - } - fireGlobals = jQuery.event && s.global; - if (fireGlobals && jQuery.active++ === 0) { - jQuery.event.trigger("ajaxStart"); - } - s.type = s.type.toUpperCase(); - s.hasContent = !rnoContent.test(s.type); - cacheURL = s.url.replace(rhash, ""); - if (!s.hasContent) { - uncached = s.url.slice(cacheURL.length); - if (s.data && (s.processData || typeof s.data === "string")) { - cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data; - delete s.data; - } - if (s.cache === false) { - cacheURL = cacheURL.replace(rantiCache, "$1"); - uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached; - } - s.url = cacheURL + uncached; - } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) { - s.data = s.data.replace(r20, "+"); - } - if (s.ifModified) { - if (jQuery.lastModified[cacheURL]) { - jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]); - } - if (jQuery.etag[cacheURL]) { - jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL]); - } - } - if (s.data && s.hasContent && s.contentType !== false || options.contentType) { - jqXHR.setRequestHeader("Content-Type", s.contentType); - } - jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]); - for (i in s.headers) { - jqXHR.setRequestHeader(i, s.headers[i]); - } - if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) { - return jqXHR.abort(); - } - strAbort = "abort"; - completeDeferred.add(s.complete); - jqXHR.done(s.success); - jqXHR.fail(s.error); - transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); - if (!transport) { - done(-1, "No Transport"); - } else { - jqXHR.readyState = 1; - if (fireGlobals) { - globalEventContext.trigger("ajaxSend", [ jqXHR, s ]); - } - if (completed) { - return jqXHR; - } - if (s.async && s.timeout > 0) { - timeoutTimer = window.setTimeout(function() { - jqXHR.abort("timeout"); - }, s.timeout); - } - try { - completed = false; - transport.send(requestHeaders, done); - } catch (e) { - if (completed) { - throw e; - } - done(-1, e); - } - } - function done(status, nativeStatusText, responses, headers) { - var isSuccess, success, error, response, modified, statusText = nativeStatusText; - if (completed) { - return; - } - completed = true; - if (timeoutTimer) { - window.clearTimeout(timeoutTimer); - } - transport = undefined; - responseHeadersString = headers || ""; - jqXHR.readyState = status > 0 ? 4 : 0; - isSuccess = status >= 200 && status < 300 || status === 304; - if (responses) { - response = ajaxHandleResponses(s, jqXHR, responses); - } - if (!isSuccess && jQuery.inArray("script", s.dataTypes) > -1 && jQuery.inArray("json", s.dataTypes) < 0) { - s.converters["text script"] = function() {}; - } - response = ajaxConvert(s, response, jqXHR, isSuccess); - if (isSuccess) { - if (s.ifModified) { - modified = jqXHR.getResponseHeader("Last-Modified"); - if (modified) { - jQuery.lastModified[cacheURL] = modified; - } - modified = jqXHR.getResponseHeader("etag"); - if (modified) { - jQuery.etag[cacheURL] = modified; - } - } - if (status === 204 || s.type === "HEAD") { - statusText = "nocontent"; - } else if (status === 304) { - statusText = "notmodified"; - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - error = statusText; - if (status || !statusText) { - statusText = "error"; - if (status < 0) { - status = 0; - } - } - } - jqXHR.status = status; - jqXHR.statusText = (nativeStatusText || statusText) + ""; - if (isSuccess) { - deferred.resolveWith(callbackContext, [ success, statusText, jqXHR ]); - } else { - deferred.rejectWith(callbackContext, [ jqXHR, statusText, error ]); - } - jqXHR.statusCode(statusCode); - statusCode = undefined; - if (fireGlobals) { - globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [ jqXHR, s, isSuccess ? success : error ]); - } - completeDeferred.fireWith(callbackContext, [ jqXHR, statusText ]); - if (fireGlobals) { - globalEventContext.trigger("ajaxComplete", [ jqXHR, s ]); - if (!--jQuery.active) { - jQuery.event.trigger("ajaxStop"); - } - } - } - return jqXHR; - }, - getJSON: function(url, data, callback) { - return jQuery.get(url, data, callback, "json"); - }, - getScript: function(url, callback) { - return jQuery.get(url, undefined, callback, "script"); - } - }); - jQuery.each([ "get", "post" ], function(_i, method) { - jQuery[method] = function(url, data, callback, type) { - if (isFunction(data)) { - type = type || callback; - callback = data; - data = undefined; - } - return jQuery.ajax(jQuery.extend({ - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject(url) && url)); - }; - }); - jQuery.ajaxPrefilter(function(s) { - var i; - for (i in s.headers) { - if (i.toLowerCase() === "content-type") { - s.contentType = s.headers[i] || ""; - } - } - }); - jQuery._evalUrl = function(url, options, doc) { - return jQuery.ajax({ - url: url, - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - converters: { - "text script": function() {} - }, - dataFilter: function(response) { - jQuery.globalEval(response, options, doc); - } - }); - }; - jQuery.fn.extend({ - wrapAll: function(html) { - var wrap; - if (this[0]) { - if (isFunction(html)) { - html = html.call(this[0]); - } - wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true); - if (this[0].parentNode) { - wrap.insertBefore(this[0]); - } - wrap.map(function() { - var elem = this; - while (elem.firstElementChild) { - elem = elem.firstElementChild; - } - return elem; - }).append(this); - } - return this; - }, - wrapInner: function(html) { - if (isFunction(html)) { - return this.each(function(i) { - jQuery(this).wrapInner(html.call(this, i)); - }); - } - return this.each(function() { - var self = jQuery(this), contents = self.contents(); - if (contents.length) { - contents.wrapAll(html); - } else { - self.append(html); - } - }); - }, - wrap: function(html) { - var htmlIsFunction = isFunction(html); - return this.each(function(i) { - jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html); - }); - }, - unwrap: function(selector) { - this.parent(selector).not("body").each(function() { - jQuery(this).replaceWith(this.childNodes); - }); - return this; - } - }); - jQuery.expr.pseudos.hidden = function(elem) { - return !jQuery.expr.pseudos.visible(elem); - }; - jQuery.expr.pseudos.visible = function(elem) { - return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); - }; - jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch (e) {} - }; - var xhrSuccessStatus = { - 0: 200, - 1223: 204 - }, xhrSupported = jQuery.ajaxSettings.xhr(); - support.cors = !!xhrSupported && "withCredentials" in xhrSupported; - support.ajax = xhrSupported = !!xhrSupported; - jQuery.ajaxTransport(function(options) { - var callback, errorCallback; - if (support.cors || xhrSupported && !options.crossDomain) { - return { - send: function(headers, complete) { - var i, xhr = options.xhr(); - xhr.open(options.type, options.url, options.async, options.username, options.password); - if (options.xhrFields) { - for (i in options.xhrFields) { - xhr[i] = options.xhrFields[i]; - } - } - if (options.mimeType && xhr.overrideMimeType) { - xhr.overrideMimeType(options.mimeType); - } - if (!options.crossDomain && !headers["X-Requested-With"]) { - headers["X-Requested-With"] = "XMLHttpRequest"; - } - for (i in headers) { - xhr.setRequestHeader(i, headers[i]); - } - callback = function(type) { - return function() { - if (callback) { - callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null; - if (type === "abort") { - xhr.abort(); - } else if (type === "error") { - if (typeof xhr.status !== "number") { - complete(0, "error"); - } else { - complete(xhr.status, xhr.statusText); - } - } else { - complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? { - binary: xhr.response - } : { - text: xhr.responseText - }, xhr.getAllResponseHeaders()); - } - } - }; - }; - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback("error"); - if (xhr.onabort !== undefined) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - window.setTimeout(function() { - if (callback) { - errorCallback(); - } - }); - } - }; - } - callback = callback("abort"); - try { - xhr.send(options.hasContent && options.data || null); - } catch (e) { - if (callback) { - throw e; - } - } - }, - abort: function() { - if (callback) { - callback(); - } - } - }; - } - }); - jQuery.ajaxPrefilter(function(s) { - if (s.crossDomain) { - s.contents.script = false; - } - }); - jQuery.ajaxSetup({ - accepts: { - script: "text/javascript, application/javascript, " + "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function(text) { - jQuery.globalEval(text); - return text; - } - } - }); - jQuery.ajaxPrefilter("script", function(s) { - if (s.cache === undefined) { - s.cache = false; - } - if (s.crossDomain) { - s.type = "GET"; - } - }); - jQuery.ajaxTransport("script", function(s) { - if (s.crossDomain || s.scriptAttrs) { - var script, callback; - return { - send: function(_, complete) { - script = jQuery("<script>").attr(s.scriptAttrs || {}).prop({ - charset: s.scriptCharset, - src: s.url - }).on("load error", callback = function(evt) { - script.remove(); - callback = null; - if (evt) { - complete(evt.type === "error" ? 404 : 200, evt.type); - } - }); - document.head.appendChild(script[0]); - }, - abort: function() { - if (callback) { - callback(); - } - } - }; - } - }); - var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/; - jQuery.ajaxSetup({ - jsonp: "callback", - jsonpCallback: function() { - var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce.guid++; - this[callback] = true; - return callback; - } - }); - jQuery.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) { - var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data"); - if (jsonProp || s.dataTypes[0] === "jsonp") { - callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback; - if (jsonProp) { - s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName); - } else if (s.jsonp !== false) { - s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName; - } - s.converters["script json"] = function() { - if (!responseContainer) { - jQuery.error(callbackName + " was not called"); - } - return responseContainer[0]; - }; - s.dataTypes[0] = "json"; - overwritten = window[callbackName]; - window[callbackName] = function() { - responseContainer = arguments; - }; - jqXHR.always(function() { - if (overwritten === undefined) { - jQuery(window).removeProp(callbackName); - } else { - window[callbackName] = overwritten; - } - if (s[callbackName]) { - s.jsonpCallback = originalSettings.jsonpCallback; - oldCallbacks.push(callbackName); - } - if (responseContainer && isFunction(overwritten)) { - overwritten(responseContainer[0]); - } - responseContainer = overwritten = undefined; - }); - return "script"; - } - }); - support.createHTMLDocument = function() { - var body = document.implementation.createHTMLDocument("").body; - body.innerHTML = "<form></form><form></form>"; - return body.childNodes.length === 2; - }(); - jQuery.parseHTML = function(data, context, keepScripts) { - if (typeof data !== "string") { - return []; - } - if (typeof context === "boolean") { - keepScripts = context; - context = false; - } - var base, parsed, scripts; - if (!context) { - if (support.createHTMLDocument) { - context = document.implementation.createHTMLDocument(""); - base = context.createElement("base"); - base.href = document.location.href; - context.head.appendChild(base); - } else { - context = document; - } - } - parsed = rsingleTag.exec(data); - scripts = !keepScripts && []; - if (parsed) { - return [ context.createElement(parsed[1]) ]; - } - parsed = buildFragment([ data ], context, scripts); - if (scripts && scripts.length) { - jQuery(scripts).remove(); - } - return jQuery.merge([], parsed.childNodes); - }; - jQuery.fn.load = function(url, params, callback) { - var selector, type, response, self = this, off = url.indexOf(" "); - if (off > -1) { - selector = stripAndCollapse(url.slice(off)); - url = url.slice(0, off); - } - if (isFunction(params)) { - callback = params; - params = undefined; - } else if (params && typeof params === "object") { - type = "POST"; - } - if (self.length > 0) { - jQuery.ajax({ - url: url, - type: type || "GET", - dataType: "html", - data: params - }).done(function(responseText) { - response = arguments; - self.html(selector ? jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : responseText); - }).always(callback && function(jqXHR, status) { - self.each(function() { - callback.apply(this, response || [ jqXHR.responseText, status, jqXHR ]); - }); - }); - } - return this; - }; - jQuery.expr.pseudos.animated = function(elem) { - return jQuery.grep(jQuery.timers, function(fn) { - return elem === fn.elem; - }).length; - }; - jQuery.offset = { - setOffset: function(elem, options, i) { - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery.css(elem, "position"), curElem = jQuery(elem), props = {}; - if (position === "static") { - elem.style.position = "relative"; - } - curOffset = curElem.offset(); - curCSSTop = jQuery.css(elem, "top"); - curCSSLeft = jQuery.css(elem, "left"); - calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1; - if (calculatePosition) { - curPosition = curElem.position(); - curTop = curPosition.top; - curLeft = curPosition.left; - } else { - curTop = parseFloat(curCSSTop) || 0; - curLeft = parseFloat(curCSSLeft) || 0; - } - if (isFunction(options)) { - options = options.call(elem, i, jQuery.extend({}, curOffset)); - } - if (options.top != null) { - props.top = options.top - curOffset.top + curTop; - } - if (options.left != null) { - props.left = options.left - curOffset.left + curLeft; - } - if ("using" in options) { - options.using.call(elem, props); - } else { - curElem.css(props); - } - } - }; - jQuery.fn.extend({ - offset: function(options) { - if (arguments.length) { - return options === undefined ? this : this.each(function(i) { - jQuery.offset.setOffset(this, options, i); - }); - } - var rect, win, elem = this[0]; - if (!elem) { - return; - } - if (!elem.getClientRects().length) { - return { - top: 0, - left: 0 - }; - } - rect = elem.getBoundingClientRect(); - win = elem.ownerDocument.defaultView; - return { - top: rect.top + win.pageYOffset, - left: rect.left + win.pageXOffset - }; - }, - position: function() { - if (!this[0]) { - return; - } - var offsetParent, offset, doc, elem = this[0], parentOffset = { - top: 0, - left: 0 - }; - if (jQuery.css(elem, "position") === "fixed") { - offset = elem.getBoundingClientRect(); - } else { - offset = this.offset(); - doc = elem.ownerDocument; - offsetParent = elem.offsetParent || doc.documentElement; - while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, "position") === "static") { - offsetParent = offsetParent.parentNode; - } - if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) { - parentOffset = jQuery(offsetParent).offset(); - parentOffset.top += jQuery.css(offsetParent, "borderTopWidth", true); - parentOffset.left += jQuery.css(offsetParent, "borderLeftWidth", true); - } - } - return { - top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", true), - left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", true) - }; - }, - offsetParent: function() { - return this.map(function() { - var offsetParent = this.offsetParent; - while (offsetParent && jQuery.css(offsetParent, "position") === "static") { - offsetParent = offsetParent.offsetParent; - } - return offsetParent || documentElement; - }); - } - }); - jQuery.each({ - scrollLeft: "pageXOffset", - scrollTop: "pageYOffset" - }, function(method, prop) { - var top = "pageYOffset" === prop; - jQuery.fn[method] = function(val) { - return access(this, function(elem, method, val) { - var win; - if (isWindow(elem)) { - win = elem; - } else if (elem.nodeType === 9) { - win = elem.defaultView; - } - if (val === undefined) { - return win ? win[prop] : elem[method]; - } - if (win) { - win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset); - } else { - elem[method] = val; - } - }, method, val, arguments.length); - }; - }); - jQuery.each([ "top", "left" ], function(_i, prop) { - jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function(elem, computed) { - if (computed) { - computed = curCSS(elem, prop); - return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed; - } - }); - }); - jQuery.each({ - Height: "height", - Width: "width" - }, function(name, type) { - jQuery.each({ - padding: "inner" + name, - content: type, - "": "outer" + name - }, function(defaultExtra, funcName) { - jQuery.fn[funcName] = function(margin, value) { - var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), extra = defaultExtra || (margin === true || value === true ? "margin" : "border"); - return access(this, function(elem, type, value) { - var doc; - if (isWindow(elem)) { - return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name]; - } - if (elem.nodeType === 9) { - doc = elem.documentElement; - return Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name]); - } - return value === undefined ? jQuery.css(elem, type, extra) : jQuery.style(elem, type, value, extra); - }, type, chainable ? margin : undefined, chainable); - }; - }); - }); - jQuery.each([ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function(_i, type) { - jQuery.fn[type] = function(fn) { - return this.on(type, fn); - }; - }); - jQuery.fn.extend({ - bind: function(types, data, fn) { - return this.on(types, null, data, fn); - }, - unbind: function(types, fn) { - return this.off(types, null, fn); - }, - delegate: function(selector, types, data, fn) { - return this.on(types, selector, data, fn); - }, - undelegate: function(selector, types, fn) { - return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn); - }, - hover: function(fnOver, fnOut) { - return this.mouseenter(fnOver).mouseleave(fnOut || fnOver); - } - }); - jQuery.each(("blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu").split(" "), function(_i, name) { - jQuery.fn[name] = function(data, fn) { - return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name); - }; - }); - var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; - jQuery.proxy = function(fn, context) { - var tmp, args, proxy; - if (typeof context === "string") { - tmp = fn[context]; - context = fn; - fn = tmp; - } - if (!isFunction(fn)) { - return undefined; - } - args = slice.call(arguments, 2); - proxy = function() { - return fn.apply(context || this, args.concat(slice.call(arguments))); - }; - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - return proxy; - }; - jQuery.holdReady = function(hold) { - if (hold) { - jQuery.readyWait++; - } else { - jQuery.ready(true); - } - }; - jQuery.isArray = Array.isArray; - jQuery.parseJSON = JSON.parse; - jQuery.nodeName = nodeName; - jQuery.isFunction = isFunction; - jQuery.isWindow = isWindow; - jQuery.camelCase = camelCase; - jQuery.type = toType; - jQuery.now = Date.now; - jQuery.isNumeric = function(obj) { - var type = jQuery.type(obj); - return (type === "number" || type === "string") && !isNaN(obj - parseFloat(obj)); - }; - jQuery.trim = function(text) { - return text == null ? "" : (text + "").replace(rtrim, ""); - }; - if (typeof define === "function" && define.amd) { - define("jquery", [], function() { - return jQuery; - }); - } - var _jQuery = window.jQuery, _$ = window.$; - jQuery.noConflict = function(deep) { - if (window.$ === jQuery) { - window.$ = _$; - } - if (deep && window.jQuery === jQuery) { - window.jQuery = _jQuery; - } - return jQuery; - }; - if (typeof noGlobal === "undefined") { - window.jQuery = window.$ = jQuery; - } - return jQuery; -}); - -(function(global, factory) { - typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("jquery"), require("popper.js")) : typeof define === "function" && define.amd ? define([ "exports", "jquery", "popper.js" ], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, - factory(global.bootstrap = {}, global.jQuery, global.Popper)); -})(this, function(exports, $, Popper) { - "use strict"; - function _interopDefaultLegacy(e) { - return e && typeof e === "object" && "default" in e ? e : { - default: e - }; - } - var $__default = _interopDefaultLegacy($); - var Popper__default = _interopDefaultLegacy(Popper); - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - function _extends() { - _extends = Object.assign || function(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - return target; - }; - return _extends.apply(this, arguments); - } - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; - } - var TRANSITION_END = "transitionend"; - var MAX_UID = 1e6; - var MILLISECONDS_MULTIPLIER = 1e3; - function toType(obj) { - if (obj === null || typeof obj === "undefined") { - return "" + obj; - } - return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); - } - function getSpecialTransitionEndEvent() { - return { - bindType: TRANSITION_END, - delegateType: TRANSITION_END, - handle: function handle(event) { - if ($__default["default"](event.target).is(this)) { - return event.handleObj.handler.apply(this, arguments); - } - return undefined; - } - }; - } - function transitionEndEmulator(duration) { - var _this = this; - var called = false; - $__default["default"](this).one(Util.TRANSITION_END, function() { - called = true; - }); - setTimeout(function() { - if (!called) { - Util.triggerTransitionEnd(_this); - } - }, duration); - return this; - } - function setTransitionEndSupport() { - $__default["default"].fn.emulateTransitionEnd = transitionEndEmulator; - $__default["default"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); - } - var Util = { - TRANSITION_END: "bsTransitionEnd", - getUID: function getUID(prefix) { - do { - prefix += ~~(Math.random() * MAX_UID); - } while (document.getElementById(prefix)); - return prefix; - }, - getSelectorFromElement: function getSelectorFromElement(element) { - var selector = element.getAttribute("data-target"); - if (!selector || selector === "#") { - var hrefAttr = element.getAttribute("href"); - selector = hrefAttr && hrefAttr !== "#" ? hrefAttr.trim() : ""; - } - try { - return document.querySelector(selector) ? selector : null; - } catch (_) { - return null; - } - }, - getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { - if (!element) { - return 0; - } - var transitionDuration = $__default["default"](element).css("transition-duration"); - var transitionDelay = $__default["default"](element).css("transition-delay"); - var floatTransitionDuration = parseFloat(transitionDuration); - var floatTransitionDelay = parseFloat(transitionDelay); - if (!floatTransitionDuration && !floatTransitionDelay) { - return 0; - } - transitionDuration = transitionDuration.split(",")[0]; - transitionDelay = transitionDelay.split(",")[0]; - return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; - }, - reflow: function reflow(element) { - return element.offsetHeight; - }, - triggerTransitionEnd: function triggerTransitionEnd(element) { - $__default["default"](element).trigger(TRANSITION_END); - }, - supportsTransitionEnd: function supportsTransitionEnd() { - return Boolean(TRANSITION_END); - }, - isElement: function isElement(obj) { - return (obj[0] || obj).nodeType; - }, - typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { - for (var property in configTypes) { - if (Object.prototype.hasOwnProperty.call(configTypes, property)) { - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = value && Util.isElement(value) ? "element" : toType(value); - if (!new RegExp(expectedTypes).test(valueType)) { - throw new Error(componentName.toUpperCase() + ": " + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); - } - } - } - }, - findShadowRoot: function findShadowRoot(element) { - if (!document.documentElement.attachShadow) { - return null; - } - if (typeof element.getRootNode === "function") { - var root = element.getRootNode(); - return root instanceof ShadowRoot ? root : null; - } - if (element instanceof ShadowRoot) { - return element; - } - if (!element.parentNode) { - return null; - } - return Util.findShadowRoot(element.parentNode); - }, - jQueryDetection: function jQueryDetection() { - if (typeof $__default["default"] === "undefined") { - throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript."); - } - var version = $__default["default"].fn.jquery.split(" ")[0].split("."); - var minMajor = 1; - var ltMajor = 2; - var minMinor = 9; - var minPatch = 1; - var maxMajor = 4; - if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { - throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0"); - } - } - }; - Util.jQueryDetection(); - setTransitionEndSupport(); - var NAME = "alert"; - var VERSION = "4.6.0"; - var DATA_KEY = "bs.alert"; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = ".data-api"; - var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME]; - var SELECTOR_DISMISS = '[data-dismiss="alert"]'; - var EVENT_CLOSE = "close" + EVENT_KEY; - var EVENT_CLOSED = "closed" + EVENT_KEY; - var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY; - var CLASS_NAME_ALERT = "alert"; - var CLASS_NAME_FADE = "fade"; - var CLASS_NAME_SHOW = "show"; - var Alert = function() { - function Alert(element) { - this._element = element; - } - var _proto = Alert.prototype; - _proto.close = function close(element) { - var rootElement = this._element; - if (element) { - rootElement = this._getRootElement(element); - } - var customEvent = this._triggerCloseEvent(rootElement); - if (customEvent.isDefaultPrevented()) { - return; - } - this._removeElement(rootElement); - }; - _proto.dispose = function dispose() { - $__default["default"].removeData(this._element, DATA_KEY); - this._element = null; - }; - _proto._getRootElement = function _getRootElement(element) { - var selector = Util.getSelectorFromElement(element); - var parent = false; - if (selector) { - parent = document.querySelector(selector); - } - if (!parent) { - parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0]; - } - return parent; - }; - _proto._triggerCloseEvent = function _triggerCloseEvent(element) { - var closeEvent = $__default["default"].Event(EVENT_CLOSE); - $__default["default"](element).trigger(closeEvent); - return closeEvent; - }; - _proto._removeElement = function _removeElement(element) { - var _this = this; - $__default["default"](element).removeClass(CLASS_NAME_SHOW); - if (!$__default["default"](element).hasClass(CLASS_NAME_FADE)) { - this._destroyElement(element); - return; - } - var transitionDuration = Util.getTransitionDurationFromElement(element); - $__default["default"](element).one(Util.TRANSITION_END, function(event) { - return _this._destroyElement(element, event); - }).emulateTransitionEnd(transitionDuration); - }; - _proto._destroyElement = function _destroyElement(element) { - $__default["default"](element).detach().trigger(EVENT_CLOSED).remove(); - }; - Alert._jQueryInterface = function _jQueryInterface(config) { - return this.each(function() { - var $element = $__default["default"](this); - var data = $element.data(DATA_KEY); - if (!data) { - data = new Alert(this); - $element.data(DATA_KEY, data); - } - if (config === "close") { - data[config](this); - } - }); - }; - Alert._handleDismiss = function _handleDismiss(alertInstance) { - return function(event) { - if (event) { - event.preventDefault(); - } - alertInstance.close(this); - }; - }; - _createClass(Alert, null, [ { - key: "VERSION", - get: function get() { - return VERSION; - } - } ]); - return Alert; - }(); - $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert())); - $__default["default"].fn[NAME] = Alert._jQueryInterface; - $__default["default"].fn[NAME].Constructor = Alert; - $__default["default"].fn[NAME].noConflict = function() { - $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT; - return Alert._jQueryInterface; - }; - var NAME$1 = "button"; - var VERSION$1 = "4.6.0"; - var DATA_KEY$1 = "bs.button"; - var EVENT_KEY$1 = "." + DATA_KEY$1; - var DATA_API_KEY$1 = ".data-api"; - var JQUERY_NO_CONFLICT$1 = $__default["default"].fn[NAME$1]; - var CLASS_NAME_ACTIVE = "active"; - var CLASS_NAME_BUTTON = "btn"; - var CLASS_NAME_FOCUS = "focus"; - var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]'; - var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]'; - var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]'; - var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn'; - var SELECTOR_INPUT = 'input:not([type="hidden"])'; - var SELECTOR_ACTIVE = ".active"; - var SELECTOR_BUTTON = ".btn"; - var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1; - var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1); - var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$1 + DATA_API_KEY$1; - var Button = function() { - function Button(element) { - this._element = element; - this.shouldAvoidTriggerChange = false; - } - var _proto = Button.prototype; - _proto.toggle = function toggle() { - var triggerChangeEvent = true; - var addAriaPressed = true; - var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0]; - if (rootElement) { - var input = this._element.querySelector(SELECTOR_INPUT); - if (input) { - if (input.type === "radio") { - if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) { - triggerChangeEvent = false; - } else { - var activeElement = rootElement.querySelector(SELECTOR_ACTIVE); - if (activeElement) { - $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE); - } - } - } - if (triggerChangeEvent) { - if (input.type === "checkbox" || input.type === "radio") { - input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE); - } - if (!this.shouldAvoidTriggerChange) { - $__default["default"](input).trigger("change"); - } - } - input.focus(); - addAriaPressed = false; - } - } - if (!(this._element.hasAttribute("disabled") || this._element.classList.contains("disabled"))) { - if (addAriaPressed) { - this._element.setAttribute("aria-pressed", !this._element.classList.contains(CLASS_NAME_ACTIVE)); - } - if (triggerChangeEvent) { - $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE); - } - } - }; - _proto.dispose = function dispose() { - $__default["default"].removeData(this._element, DATA_KEY$1); - this._element = null; - }; - Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) { - return this.each(function() { - var $element = $__default["default"](this); - var data = $element.data(DATA_KEY$1); - if (!data) { - data = new Button(this); - $element.data(DATA_KEY$1, data); - } - data.shouldAvoidTriggerChange = avoidTriggerChange; - if (config === "toggle") { - data[config](); - } - }); - }; - _createClass(Button, null, [ { - key: "VERSION", - get: function get() { - return VERSION$1; - } - } ]); - return Button; - }(); - $__default["default"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function(event) { - var button = event.target; - var initialButton = button; - if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) { - button = $__default["default"](button).closest(SELECTOR_BUTTON)[0]; - } - if (!button || button.hasAttribute("disabled") || button.classList.contains("disabled")) { - event.preventDefault(); - } else { - var inputBtn = button.querySelector(SELECTOR_INPUT); - if (inputBtn && (inputBtn.hasAttribute("disabled") || inputBtn.classList.contains("disabled"))) { - event.preventDefault(); - return; - } - if (initialButton.tagName === "INPUT" || button.tagName !== "LABEL") { - Button._jQueryInterface.call($__default["default"](button), "toggle", initialButton.tagName === "INPUT"); - } - } - }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function(event) { - var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0]; - $__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type)); - }); - $__default["default"](window).on(EVENT_LOAD_DATA_API, function() { - var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS)); - for (var i = 0, len = buttons.length; i < len; i++) { - var button = buttons[i]; - var input = button.querySelector(SELECTOR_INPUT); - if (input.checked || input.hasAttribute("checked")) { - button.classList.add(CLASS_NAME_ACTIVE); - } else { - button.classList.remove(CLASS_NAME_ACTIVE); - } - } - buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE)); - for (var _i = 0, _len = buttons.length; _i < _len; _i++) { - var _button = buttons[_i]; - if (_button.getAttribute("aria-pressed") === "true") { - _button.classList.add(CLASS_NAME_ACTIVE); - } else { - _button.classList.remove(CLASS_NAME_ACTIVE); - } - } - }); - $__default["default"].fn[NAME$1] = Button._jQueryInterface; - $__default["default"].fn[NAME$1].Constructor = Button; - $__default["default"].fn[NAME$1].noConflict = function() { - $__default["default"].fn[NAME$1] = JQUERY_NO_CONFLICT$1; - return Button._jQueryInterface; - }; - var NAME$2 = "carousel"; - var VERSION$2 = "4.6.0"; - var DATA_KEY$2 = "bs.carousel"; - var EVENT_KEY$2 = "." + DATA_KEY$2; - var DATA_API_KEY$2 = ".data-api"; - var JQUERY_NO_CONFLICT$2 = $__default["default"].fn[NAME$2]; - var ARROW_LEFT_KEYCODE = 37; - var ARROW_RIGHT_KEYCODE = 39; - var TOUCHEVENT_COMPAT_WAIT = 500; - var SWIPE_THRESHOLD = 40; - var Default = { - interval: 5e3, - keyboard: true, - slide: false, - pause: "hover", - wrap: true, - touch: true - }; - var DefaultType = { - interval: "(number|boolean)", - keyboard: "boolean", - slide: "(boolean|string)", - pause: "(string|boolean)", - wrap: "boolean", - touch: "boolean" - }; - var DIRECTION_NEXT = "next"; - var DIRECTION_PREV = "prev"; - var DIRECTION_LEFT = "left"; - var DIRECTION_RIGHT = "right"; - var EVENT_SLIDE = "slide" + EVENT_KEY$2; - var EVENT_SLID = "slid" + EVENT_KEY$2; - var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2; - var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2; - var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2; - var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2; - var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2; - var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2; - var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2; - var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2; - var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2; - var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$2 + DATA_API_KEY$2; - var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2; - var CLASS_NAME_CAROUSEL = "carousel"; - var CLASS_NAME_ACTIVE$1 = "active"; - var CLASS_NAME_SLIDE = "slide"; - var CLASS_NAME_RIGHT = "carousel-item-right"; - var CLASS_NAME_LEFT = "carousel-item-left"; - var CLASS_NAME_NEXT = "carousel-item-next"; - var CLASS_NAME_PREV = "carousel-item-prev"; - var CLASS_NAME_POINTER_EVENT = "pointer-event"; - var SELECTOR_ACTIVE$1 = ".active"; - var SELECTOR_ACTIVE_ITEM = ".active.carousel-item"; - var SELECTOR_ITEM = ".carousel-item"; - var SELECTOR_ITEM_IMG = ".carousel-item img"; - var SELECTOR_NEXT_PREV = ".carousel-item-next, .carousel-item-prev"; - var SELECTOR_INDICATORS = ".carousel-indicators"; - var SELECTOR_DATA_SLIDE = "[data-slide], [data-slide-to]"; - var SELECTOR_DATA_RIDE = '[data-ride="carousel"]'; - var PointerType = { - TOUCH: "touch", - PEN: "pen" - }; - var Carousel = function() { - function Carousel(element, config) { - this._items = null; - this._interval = null; - this._activeElement = null; - this._isPaused = false; - this._isSliding = false; - this.touchTimeout = null; - this.touchStartX = 0; - this.touchDeltaX = 0; - this._config = this._getConfig(config); - this._element = element; - this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS); - this._touchSupported = "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0; - this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent); - this._addEventListeners(); - } - var _proto = Carousel.prototype; - _proto.next = function next() { - if (!this._isSliding) { - this._slide(DIRECTION_NEXT); - } - }; - _proto.nextWhenVisible = function nextWhenVisible() { - var $element = $__default["default"](this._element); - if (!document.hidden && $element.is(":visible") && $element.css("visibility") !== "hidden") { - this.next(); - } - }; - _proto.prev = function prev() { - if (!this._isSliding) { - this._slide(DIRECTION_PREV); - } - }; - _proto.pause = function pause(event) { - if (!event) { - this._isPaused = true; - } - if (this._element.querySelector(SELECTOR_NEXT_PREV)) { - Util.triggerTransitionEnd(this._element); - this.cycle(true); - } - clearInterval(this._interval); - this._interval = null; - }; - _proto.cycle = function cycle(event) { - if (!event) { - this._isPaused = false; - } - if (this._interval) { - clearInterval(this._interval); - this._interval = null; - } - if (this._config.interval && !this._isPaused) { - this._updateInterval(); - this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); - } - }; - _proto.to = function to(index) { - var _this = this; - this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); - var activeIndex = this._getItemIndex(this._activeElement); - if (index > this._items.length - 1 || index < 0) { - return; - } - if (this._isSliding) { - $__default["default"](this._element).one(EVENT_SLID, function() { - return _this.to(index); - }); - return; - } - if (activeIndex === index) { - this.pause(); - this.cycle(); - return; - } - var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; - this._slide(direction, this._items[index]); - }; - _proto.dispose = function dispose() { - $__default["default"](this._element).off(EVENT_KEY$2); - $__default["default"].removeData(this._element, DATA_KEY$2); - this._items = null; - this._config = null; - this._element = null; - this._interval = null; - this._isPaused = null; - this._isSliding = null; - this._activeElement = null; - this._indicatorsElement = null; - }; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - Util.typeCheckConfig(NAME$2, config, DefaultType); - return config; - }; - _proto._handleSwipe = function _handleSwipe() { - var absDeltax = Math.abs(this.touchDeltaX); - if (absDeltax <= SWIPE_THRESHOLD) { - return; - } - var direction = absDeltax / this.touchDeltaX; - this.touchDeltaX = 0; - if (direction > 0) { - this.prev(); - } - if (direction < 0) { - this.next(); - } - }; - _proto._addEventListeners = function _addEventListeners() { - var _this2 = this; - if (this._config.keyboard) { - $__default["default"](this._element).on(EVENT_KEYDOWN, function(event) { - return _this2._keydown(event); - }); - } - if (this._config.pause === "hover") { - $__default["default"](this._element).on(EVENT_MOUSEENTER, function(event) { - return _this2.pause(event); - }).on(EVENT_MOUSELEAVE, function(event) { - return _this2.cycle(event); - }); - } - if (this._config.touch) { - this._addTouchEventListeners(); - } - }; - _proto._addTouchEventListeners = function _addTouchEventListeners() { - var _this3 = this; - if (!this._touchSupported) { - return; - } - var start = function start(event) { - if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { - _this3.touchStartX = event.originalEvent.clientX; - } else if (!_this3._pointerEvent) { - _this3.touchStartX = event.originalEvent.touches[0].clientX; - } - }; - var move = function move(event) { - if (event.originalEvent.touches && event.originalEvent.touches.length > 1) { - _this3.touchDeltaX = 0; - } else { - _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX; - } - }; - var end = function end(event) { - if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { - _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX; - } - _this3._handleSwipe(); - if (_this3._config.pause === "hover") { - _this3.pause(); - if (_this3.touchTimeout) { - clearTimeout(_this3.touchTimeout); - } - _this3.touchTimeout = setTimeout(function(event) { - return _this3.cycle(event); - }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval); - } - }; - $__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function(e) { - return e.preventDefault(); - }); - if (this._pointerEvent) { - $__default["default"](this._element).on(EVENT_POINTERDOWN, function(event) { - return start(event); - }); - $__default["default"](this._element).on(EVENT_POINTERUP, function(event) { - return end(event); - }); - this._element.classList.add(CLASS_NAME_POINTER_EVENT); - } else { - $__default["default"](this._element).on(EVENT_TOUCHSTART, function(event) { - return start(event); - }); - $__default["default"](this._element).on(EVENT_TOUCHMOVE, function(event) { - return move(event); - }); - $__default["default"](this._element).on(EVENT_TOUCHEND, function(event) { - return end(event); - }); - } - }; - _proto._keydown = function _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } - switch (event.which) { - case ARROW_LEFT_KEYCODE: - event.preventDefault(); - this.prev(); - break; - - case ARROW_RIGHT_KEYCODE: - event.preventDefault(); - this.next(); - break; - } - }; - _proto._getItemIndex = function _getItemIndex(element) { - this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : []; - return this._items.indexOf(element); - }; - _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { - var isNextDirection = direction === DIRECTION_NEXT; - var isPrevDirection = direction === DIRECTION_PREV; - var activeIndex = this._getItemIndex(activeElement); - var lastItemIndex = this._items.length - 1; - var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; - if (isGoingToWrap && !this._config.wrap) { - return activeElement; - } - var delta = direction === DIRECTION_PREV ? -1 : 1; - var itemIndex = (activeIndex + delta) % this._items.length; - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; - }; - _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { - var targetIndex = this._getItemIndex(relatedTarget); - var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM)); - var slideEvent = $__default["default"].Event(EVENT_SLIDE, { - relatedTarget: relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex - }); - $__default["default"](this._element).trigger(slideEvent); - return slideEvent; - }; - _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { - if (this._indicatorsElement) { - var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1)); - $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE$1); - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; - if (nextIndicator) { - $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE$1); - } - } - }; - _proto._updateInterval = function _updateInterval() { - var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM); - if (!element) { - return; - } - var elementInterval = parseInt(element.getAttribute("data-interval"), 10); - if (elementInterval) { - this._config.defaultInterval = this._config.defaultInterval || this._config.interval; - this._config.interval = elementInterval; - } else { - this._config.interval = this._config.defaultInterval || this._config.interval; - } - }; - _proto._slide = function _slide(direction, element) { - var _this4 = this; - var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); - var activeElementIndex = this._getItemIndex(activeElement); - var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); - var nextElementIndex = this._getItemIndex(nextElement); - var isCycling = Boolean(this._interval); - var directionalClassName; - var orderClassName; - var eventDirectionName; - if (direction === DIRECTION_NEXT) { - directionalClassName = CLASS_NAME_LEFT; - orderClassName = CLASS_NAME_NEXT; - eventDirectionName = DIRECTION_LEFT; - } else { - directionalClassName = CLASS_NAME_RIGHT; - orderClassName = CLASS_NAME_PREV; - eventDirectionName = DIRECTION_RIGHT; - } - if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE$1)) { - this._isSliding = false; - return; - } - var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); - if (slideEvent.isDefaultPrevented()) { - return; - } - if (!activeElement || !nextElement) { - return; - } - this._isSliding = true; - if (isCycling) { - this.pause(); - } - this._setActiveIndicatorElement(nextElement); - this._activeElement = nextElement; - var slidEvent = $__default["default"].Event(EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); - if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) { - $__default["default"](nextElement).addClass(orderClassName); - Util.reflow(nextElement); - $__default["default"](activeElement).addClass(directionalClassName); - $__default["default"](nextElement).addClass(directionalClassName); - var transitionDuration = Util.getTransitionDurationFromElement(activeElement); - $__default["default"](activeElement).one(Util.TRANSITION_END, function() { - $__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE$1); - $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$1 + " " + orderClassName + " " + directionalClassName); - _this4._isSliding = false; - setTimeout(function() { - return $__default["default"](_this4._element).trigger(slidEvent); - }, 0); - }).emulateTransitionEnd(transitionDuration); - } else { - $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$1); - $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE$1); - this._isSliding = false; - $__default["default"](this._element).trigger(slidEvent); - } - if (isCycling) { - this.cycle(); - } - }; - Carousel._jQueryInterface = function _jQueryInterface(config) { - return this.each(function() { - var data = $__default["default"](this).data(DATA_KEY$2); - var _config = _extends({}, Default, $__default["default"](this).data()); - if (typeof config === "object") { - _config = _extends({}, _config, config); - } - var action = typeof config === "string" ? config : _config.slide; - if (!data) { - data = new Carousel(this, _config); - $__default["default"](this).data(DATA_KEY$2, data); - } - if (typeof config === "number") { - data.to(config); - } else if (typeof action === "string") { - if (typeof data[action] === "undefined") { - throw new TypeError('No method named "' + action + '"'); - } - data[action](); - } else if (_config.interval && _config.ride) { - data.pause(); - data.cycle(); - } - }); - }; - Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { - var selector = Util.getSelectorFromElement(this); - if (!selector) { - return; - } - var target = $__default["default"](selector)[0]; - if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) { - return; - } - var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data()); - var slideIndex = this.getAttribute("data-slide-to"); - if (slideIndex) { - config.interval = false; - } - Carousel._jQueryInterface.call($__default["default"](target), config); - if (slideIndex) { - $__default["default"](target).data(DATA_KEY$2).to(slideIndex); - } - event.preventDefault(); - }; - _createClass(Carousel, null, [ { - key: "VERSION", - get: function get() { - return VERSION$2; - } - }, { - key: "Default", - get: function get() { - return Default; - } - } ]); - return Carousel; - }(); - $__default["default"](document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler); - $__default["default"](window).on(EVENT_LOAD_DATA_API$1, function() { - var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE)); - for (var i = 0, len = carousels.length; i < len; i++) { - var $carousel = $__default["default"](carousels[i]); - Carousel._jQueryInterface.call($carousel, $carousel.data()); - } - }); - $__default["default"].fn[NAME$2] = Carousel._jQueryInterface; - $__default["default"].fn[NAME$2].Constructor = Carousel; - $__default["default"].fn[NAME$2].noConflict = function() { - $__default["default"].fn[NAME$2] = JQUERY_NO_CONFLICT$2; - return Carousel._jQueryInterface; - }; - var NAME$3 = "collapse"; - var VERSION$3 = "4.6.0"; - var DATA_KEY$3 = "bs.collapse"; - var EVENT_KEY$3 = "." + DATA_KEY$3; - var DATA_API_KEY$3 = ".data-api"; - var JQUERY_NO_CONFLICT$3 = $__default["default"].fn[NAME$3]; - var Default$1 = { - toggle: true, - parent: "" - }; - var DefaultType$1 = { - toggle: "boolean", - parent: "(string|element)" - }; - var EVENT_SHOW = "show" + EVENT_KEY$3; - var EVENT_SHOWN = "shown" + EVENT_KEY$3; - var EVENT_HIDE = "hide" + EVENT_KEY$3; - var EVENT_HIDDEN = "hidden" + EVENT_KEY$3; - var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3; - var CLASS_NAME_SHOW$1 = "show"; - var CLASS_NAME_COLLAPSE = "collapse"; - var CLASS_NAME_COLLAPSING = "collapsing"; - var CLASS_NAME_COLLAPSED = "collapsed"; - var DIMENSION_WIDTH = "width"; - var DIMENSION_HEIGHT = "height"; - var SELECTOR_ACTIVES = ".show, .collapsing"; - var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="collapse"]'; - var Collapse = function() { - function Collapse(element, config) { - this._isTransitioning = false; - this._element = element; - this._config = this._getConfig(config); - this._triggerArray = [].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); - var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1)); - for (var i = 0, len = toggleList.length; i < len; i++) { - var elem = toggleList[i]; - var selector = Util.getSelectorFromElement(elem); - var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function(foundElem) { - return foundElem === element; - }); - if (selector !== null && filterElement.length > 0) { - this._selector = selector; - this._triggerArray.push(elem); - } - } - this._parent = this._config.parent ? this._getParent() : null; - if (!this._config.parent) { - this._addAriaAndCollapsedClass(this._element, this._triggerArray); - } - if (this._config.toggle) { - this.toggle(); - } - } - var _proto = Collapse.prototype; - _proto.toggle = function toggle() { - if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW$1)) { - this.hide(); - } else { - this.show(); - } - }; - _proto.show = function show() { - var _this = this; - if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW$1)) { - return; - } - var actives; - var activesData; - if (this._parent) { - actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function(elem) { - if (typeof _this._config.parent === "string") { - return elem.getAttribute("data-parent") === _this._config.parent; - } - return elem.classList.contains(CLASS_NAME_COLLAPSE); - }); - if (actives.length === 0) { - actives = null; - } - } - if (actives) { - activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY$3); - if (activesData && activesData._isTransitioning) { - return; - } - } - var startEvent = $__default["default"].Event(EVENT_SHOW); - $__default["default"](this._element).trigger(startEvent); - if (startEvent.isDefaultPrevented()) { - return; - } - if (actives) { - Collapse._jQueryInterface.call($__default["default"](actives).not(this._selector), "hide"); - if (!activesData) { - $__default["default"](actives).data(DATA_KEY$3, null); - } - } - var dimension = this._getDimension(); - $__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING); - this._element.style[dimension] = 0; - if (this._triggerArray.length) { - $__default["default"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr("aria-expanded", true); - } - this.setTransitioning(true); - var complete = function complete() { - $__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1); - _this._element.style[dimension] = ""; - _this.setTransitioning(false); - $__default["default"](_this._element).trigger(EVENT_SHOWN); - }; - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll" + capitalizedDimension; - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - this._element.style[dimension] = this._element[scrollSize] + "px"; - }; - _proto.hide = function hide() { - var _this2 = this; - if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW$1)) { - return; - } - var startEvent = $__default["default"].Event(EVENT_HIDE); - $__default["default"](this._element).trigger(startEvent); - if (startEvent.isDefaultPrevented()) { - return; - } - var dimension = this._getDimension(); - this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; - Util.reflow(this._element); - $__default["default"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1); - var triggerArrayLength = this._triggerArray.length; - if (triggerArrayLength > 0) { - for (var i = 0; i < triggerArrayLength; i++) { - var trigger = this._triggerArray[i]; - var selector = Util.getSelectorFromElement(trigger); - if (selector !== null) { - var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector))); - if (!$elem.hasClass(CLASS_NAME_SHOW$1)) { - $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr("aria-expanded", false); - } - } - } - } - this.setTransitioning(true); - var complete = function complete() { - _this2.setTransitioning(false); - $__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN); - }; - this._element.style[dimension] = ""; - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - }; - _proto.setTransitioning = function setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning; - }; - _proto.dispose = function dispose() { - $__default["default"].removeData(this._element, DATA_KEY$3); - this._config = null; - this._parent = null; - this._element = null; - this._triggerArray = null; - this._isTransitioning = null; - }; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$1, config); - config.toggle = Boolean(config.toggle); - Util.typeCheckConfig(NAME$3, config, DefaultType$1); - return config; - }; - _proto._getDimension = function _getDimension() { - var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH); - return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT; - }; - _proto._getParent = function _getParent() { - var _this3 = this; - var parent; - if (Util.isElement(this._config.parent)) { - parent = this._config.parent; - if (typeof this._config.parent.jquery !== "undefined") { - parent = this._config.parent[0]; - } - } else { - parent = document.querySelector(this._config.parent); - } - var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; - var children = [].slice.call(parent.querySelectorAll(selector)); - $__default["default"](children).each(function(i, element) { - _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [ element ]); - }); - return parent; - }; - _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { - var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW$1); - if (triggerArray.length) { - $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr("aria-expanded", isOpen); - } - }; - Collapse._getTargetFromElement = function _getTargetFromElement(element) { - var selector = Util.getSelectorFromElement(element); - return selector ? document.querySelector(selector) : null; - }; - Collapse._jQueryInterface = function _jQueryInterface(config) { - return this.each(function() { - var $element = $__default["default"](this); - var data = $element.data(DATA_KEY$3); - var _config = _extends({}, Default$1, $element.data(), typeof config === "object" && config ? config : {}); - if (!data && _config.toggle && typeof config === "string" && /show|hide/.test(config)) { - _config.toggle = false; - } - if (!data) { - data = new Collapse(this, _config); - $element.data(DATA_KEY$3, data); - } - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - data[config](); - } - }); - }; - _createClass(Collapse, null, [ { - key: "VERSION", - get: function get() { - return VERSION$3; - } - }, { - key: "Default", - get: function get() { - return Default$1; - } - } ]); - return Collapse; - }(); - $__default["default"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function(event) { - if (event.currentTarget.tagName === "A") { - event.preventDefault(); - } - var $trigger = $__default["default"](this); - var selector = Util.getSelectorFromElement(this); - var selectors = [].slice.call(document.querySelectorAll(selector)); - $__default["default"](selectors).each(function() { - var $target = $__default["default"](this); - var data = $target.data(DATA_KEY$3); - var config = data ? "toggle" : $trigger.data(); - Collapse._jQueryInterface.call($target, config); - }); - }); - $__default["default"].fn[NAME$3] = Collapse._jQueryInterface; - $__default["default"].fn[NAME$3].Constructor = Collapse; - $__default["default"].fn[NAME$3].noConflict = function() { - $__default["default"].fn[NAME$3] = JQUERY_NO_CONFLICT$3; - return Collapse._jQueryInterface; - }; - var NAME$4 = "dropdown"; - var VERSION$4 = "4.6.0"; - var DATA_KEY$4 = "bs.dropdown"; - var EVENT_KEY$4 = "." + DATA_KEY$4; - var DATA_API_KEY$4 = ".data-api"; - var JQUERY_NO_CONFLICT$4 = $__default["default"].fn[NAME$4]; - var ESCAPE_KEYCODE = 27; - var SPACE_KEYCODE = 32; - var TAB_KEYCODE = 9; - var ARROW_UP_KEYCODE = 38; - var ARROW_DOWN_KEYCODE = 40; - var RIGHT_MOUSE_BUTTON_WHICH = 3; - var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); - var EVENT_HIDE$1 = "hide" + EVENT_KEY$4; - var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4; - var EVENT_SHOW$1 = "show" + EVENT_KEY$4; - var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4; - var EVENT_CLICK = "click" + EVENT_KEY$4; - var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4; - var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4; - var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4; - var CLASS_NAME_DISABLED = "disabled"; - var CLASS_NAME_SHOW$2 = "show"; - var CLASS_NAME_DROPUP = "dropup"; - var CLASS_NAME_DROPRIGHT = "dropright"; - var CLASS_NAME_DROPLEFT = "dropleft"; - var CLASS_NAME_MENURIGHT = "dropdown-menu-right"; - var CLASS_NAME_POSITION_STATIC = "position-static"; - var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]'; - var SELECTOR_FORM_CHILD = ".dropdown form"; - var SELECTOR_MENU = ".dropdown-menu"; - var SELECTOR_NAVBAR_NAV = ".navbar-nav"; - var SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)"; - var PLACEMENT_TOP = "top-start"; - var PLACEMENT_TOPEND = "top-end"; - var PLACEMENT_BOTTOM = "bottom-start"; - var PLACEMENT_BOTTOMEND = "bottom-end"; - var PLACEMENT_RIGHT = "right-start"; - var PLACEMENT_LEFT = "left-start"; - var Default$2 = { - offset: 0, - flip: true, - boundary: "scrollParent", - reference: "toggle", - display: "dynamic", - popperConfig: null - }; - var DefaultType$2 = { - offset: "(number|string|function)", - flip: "boolean", - boundary: "(string|element)", - reference: "(string|element)", - display: "string", - popperConfig: "(null|object)" - }; - var Dropdown = function() { - function Dropdown(element, config) { - this._element = element; - this._popper = null; - this._config = this._getConfig(config); - this._menu = this._getMenuElement(); - this._inNavbar = this._detectNavbar(); - this._addEventListeners(); - } - var _proto = Dropdown.prototype; - _proto.toggle = function toggle() { - if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED)) { - return; - } - var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$2); - Dropdown._clearMenus(); - if (isActive) { - return; - } - this.show(true); - }; - _proto.show = function show(usePopper) { - if (usePopper === void 0) { - usePopper = false; - } - if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$2)) { - return; - } - var relatedTarget = { - relatedTarget: this._element - }; - var showEvent = $__default["default"].Event(EVENT_SHOW$1, relatedTarget); - var parent = Dropdown._getParentFromElement(this._element); - $__default["default"](parent).trigger(showEvent); - if (showEvent.isDefaultPrevented()) { - return; - } - if (!this._inNavbar && usePopper) { - if (typeof Popper__default["default"] === "undefined") { - throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)"); - } - var referenceElement = this._element; - if (this._config.reference === "parent") { - referenceElement = parent; - } else if (Util.isElement(this._config.reference)) { - referenceElement = this._config.reference; - if (typeof this._config.reference.jquery !== "undefined") { - referenceElement = this._config.reference[0]; - } - } - if (this._config.boundary !== "scrollParent") { - $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC); - } - this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig()); - } - if ("ontouchstart" in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) { - $__default["default"](document.body).children().on("mouseover", null, $__default["default"].noop); - } - this._element.focus(); - this._element.setAttribute("aria-expanded", true); - $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$2); - $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default["default"].Event(EVENT_SHOWN$1, relatedTarget)); - }; - _proto.hide = function hide() { - if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$2)) { - return; - } - var relatedTarget = { - relatedTarget: this._element - }; - var hideEvent = $__default["default"].Event(EVENT_HIDE$1, relatedTarget); - var parent = Dropdown._getParentFromElement(this._element); - $__default["default"](parent).trigger(hideEvent); - if (hideEvent.isDefaultPrevented()) { - return; - } - if (this._popper) { - this._popper.destroy(); - } - $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$2); - $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default["default"].Event(EVENT_HIDDEN$1, relatedTarget)); - }; - _proto.dispose = function dispose() { - $__default["default"].removeData(this._element, DATA_KEY$4); - $__default["default"](this._element).off(EVENT_KEY$4); - this._element = null; - this._menu = null; - if (this._popper !== null) { - this._popper.destroy(); - this._popper = null; - } - }; - _proto.update = function update() { - this._inNavbar = this._detectNavbar(); - if (this._popper !== null) { - this._popper.scheduleUpdate(); - } - }; - _proto._addEventListeners = function _addEventListeners() { - var _this = this; - $__default["default"](this._element).on(EVENT_CLICK, function(event) { - event.preventDefault(); - event.stopPropagation(); - _this.toggle(); - }); - }; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config); - Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType); - return config; - }; - _proto._getMenuElement = function _getMenuElement() { - if (!this._menu) { - var parent = Dropdown._getParentFromElement(this._element); - if (parent) { - this._menu = parent.querySelector(SELECTOR_MENU); - } - } - return this._menu; - }; - _proto._getPlacement = function _getPlacement() { - var $parentDropdown = $__default["default"](this._element.parentNode); - var placement = PLACEMENT_BOTTOM; - if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) { - placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP; - } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) { - placement = PLACEMENT_RIGHT; - } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) { - placement = PLACEMENT_LEFT; - } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) { - placement = PLACEMENT_BOTTOMEND; - } - return placement; - }; - _proto._detectNavbar = function _detectNavbar() { - return $__default["default"](this._element).closest(".navbar").length > 0; - }; - _proto._getOffset = function _getOffset() { - var _this2 = this; - var offset = {}; - if (typeof this._config.offset === "function") { - offset.fn = function(data) { - data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {}); - return data; - }; - } else { - offset.offset = this._config.offset; - } - return offset; - }; - _proto._getPopperConfig = function _getPopperConfig() { - var popperConfig = { - placement: this._getPlacement(), - modifiers: { - offset: this._getOffset(), - flip: { - enabled: this._config.flip - }, - preventOverflow: { - boundariesElement: this._config.boundary - } - } - }; - if (this._config.display === "static") { - popperConfig.modifiers.applyStyle = { - enabled: false - }; - } - return _extends({}, popperConfig, this._config.popperConfig); - }; - Dropdown._jQueryInterface = function _jQueryInterface(config) { - return this.each(function() { - var data = $__default["default"](this).data(DATA_KEY$4); - var _config = typeof config === "object" ? config : null; - if (!data) { - data = new Dropdown(this, _config); - $__default["default"](this).data(DATA_KEY$4, data); - } - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - data[config](); - } - }); - }; - Dropdown._clearMenus = function _clearMenus(event) { - if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === "keyup" && event.which !== TAB_KEYCODE)) { - return; - } - var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2)); - for (var i = 0, len = toggles.length; i < len; i++) { - var parent = Dropdown._getParentFromElement(toggles[i]); - var context = $__default["default"](toggles[i]).data(DATA_KEY$4); - var relatedTarget = { - relatedTarget: toggles[i] - }; - if (event && event.type === "click") { - relatedTarget.clickEvent = event; - } - if (!context) { - continue; - } - var dropdownMenu = context._menu; - if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW$2)) { - continue; - } - if (event && (event.type === "click" && /input|textarea/i.test(event.target.tagName) || event.type === "keyup" && event.which === TAB_KEYCODE) && $__default["default"].contains(parent, event.target)) { - continue; - } - var hideEvent = $__default["default"].Event(EVENT_HIDE$1, relatedTarget); - $__default["default"](parent).trigger(hideEvent); - if (hideEvent.isDefaultPrevented()) { - continue; - } - if ("ontouchstart" in document.documentElement) { - $__default["default"](document.body).children().off("mouseover", null, $__default["default"].noop); - } - toggles[i].setAttribute("aria-expanded", "false"); - if (context._popper) { - context._popper.destroy(); - } - $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW$2); - $__default["default"](parent).removeClass(CLASS_NAME_SHOW$2).trigger($__default["default"].Event(EVENT_HIDDEN$1, relatedTarget)); - } - }; - Dropdown._getParentFromElement = function _getParentFromElement(element) { - var parent; - var selector = Util.getSelectorFromElement(element); - if (selector) { - parent = document.querySelector(selector); - } - return parent || element.parentNode; - }; - Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { - if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default["default"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { - return; - } - if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED)) { - return; - } - var parent = Dropdown._getParentFromElement(this); - var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW$2); - if (!isActive && event.which === ESCAPE_KEYCODE) { - return; - } - event.preventDefault(); - event.stopPropagation(); - if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) { - if (event.which === ESCAPE_KEYCODE) { - $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger("focus"); - } - $__default["default"](this).trigger("click"); - return; - } - var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function(item) { - return $__default["default"](item).is(":visible"); - }); - if (items.length === 0) { - return; - } - var index = items.indexOf(event.target); - if (event.which === ARROW_UP_KEYCODE && index > 0) { - index--; - } - if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { - index++; - } - if (index < 0) { - index = 0; - } - items[index].focus(); - }; - _createClass(Dropdown, null, [ { - key: "VERSION", - get: function get() { - return VERSION$4; - } - }, { - key: "Default", - get: function get() { - return Default$2; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$2; - } - } ]); - return Dropdown; - }(); - $__default["default"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function(event) { - event.preventDefault(); - event.stopPropagation(); - Dropdown._jQueryInterface.call($__default["default"](this), "toggle"); - }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function(e) { - e.stopPropagation(); - }); - $__default["default"].fn[NAME$4] = Dropdown._jQueryInterface; - $__default["default"].fn[NAME$4].Constructor = Dropdown; - $__default["default"].fn[NAME$4].noConflict = function() { - $__default["default"].fn[NAME$4] = JQUERY_NO_CONFLICT$4; - return Dropdown._jQueryInterface; - }; - var NAME$5 = "modal"; - var VERSION$5 = "4.6.0"; - var DATA_KEY$5 = "bs.modal"; - var EVENT_KEY$5 = "." + DATA_KEY$5; - var DATA_API_KEY$5 = ".data-api"; - var JQUERY_NO_CONFLICT$5 = $__default["default"].fn[NAME$5]; - var ESCAPE_KEYCODE$1 = 27; - var Default$3 = { - backdrop: true, - keyboard: true, - focus: true, - show: true - }; - var DefaultType$3 = { - backdrop: "(boolean|string)", - keyboard: "boolean", - focus: "boolean", - show: "boolean" - }; - var EVENT_HIDE$2 = "hide" + EVENT_KEY$5; - var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5; - var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5; - var EVENT_SHOW$2 = "show" + EVENT_KEY$5; - var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5; - var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5; - var EVENT_RESIZE = "resize" + EVENT_KEY$5; - var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5; - var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5; - var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5; - var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5; - var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5; - var CLASS_NAME_SCROLLABLE = "modal-dialog-scrollable"; - var CLASS_NAME_SCROLLBAR_MEASURER = "modal-scrollbar-measure"; - var CLASS_NAME_BACKDROP = "modal-backdrop"; - var CLASS_NAME_OPEN = "modal-open"; - var CLASS_NAME_FADE$1 = "fade"; - var CLASS_NAME_SHOW$3 = "show"; - var CLASS_NAME_STATIC = "modal-static"; - var SELECTOR_DIALOG = ".modal-dialog"; - var SELECTOR_MODAL_BODY = ".modal-body"; - var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="modal"]'; - var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]'; - var SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"; - var SELECTOR_STICKY_CONTENT = ".sticky-top"; - var Modal = function() { - function Modal(element, config) { - this._config = this._getConfig(config); - this._element = element; - this._dialog = element.querySelector(SELECTOR_DIALOG); - this._backdrop = null; - this._isShown = false; - this._isBodyOverflowing = false; - this._ignoreBackdropClick = false; - this._isTransitioning = false; - this._scrollbarWidth = 0; - } - var _proto = Modal.prototype; - _proto.toggle = function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - }; - _proto.show = function show(relatedTarget) { - var _this = this; - if (this._isShown || this._isTransitioning) { - return; - } - if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$1)) { - this._isTransitioning = true; - } - var showEvent = $__default["default"].Event(EVENT_SHOW$2, { - relatedTarget: relatedTarget - }); - $__default["default"](this._element).trigger(showEvent); - if (this._isShown || showEvent.isDefaultPrevented()) { - return; - } - this._isShown = true; - this._checkScrollbar(); - this._setScrollbar(); - this._adjustDialog(); - this._setEscapeEvent(); - this._setResizeEvent(); - $__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function(event) { - return _this.hide(event); - }); - $__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function() { - $__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function(event) { - if ($__default["default"](event.target).is(_this._element)) { - _this._ignoreBackdropClick = true; - } - }); - }); - this._showBackdrop(function() { - return _this._showElement(relatedTarget); - }); - }; - _proto.hide = function hide(event) { - var _this2 = this; - if (event) { - event.preventDefault(); - } - if (!this._isShown || this._isTransitioning) { - return; - } - var hideEvent = $__default["default"].Event(EVENT_HIDE$2); - $__default["default"](this._element).trigger(hideEvent); - if (!this._isShown || hideEvent.isDefaultPrevented()) { - return; - } - this._isShown = false; - var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$1); - if (transition) { - this._isTransitioning = true; - } - this._setEscapeEvent(); - this._setResizeEvent(); - $__default["default"](document).off(EVENT_FOCUSIN); - $__default["default"](this._element).removeClass(CLASS_NAME_SHOW$3); - $__default["default"](this._element).off(EVENT_CLICK_DISMISS); - $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS); - if (transition) { - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $__default["default"](this._element).one(Util.TRANSITION_END, function(event) { - return _this2._hideModal(event); - }).emulateTransitionEnd(transitionDuration); - } else { - this._hideModal(); - } - }; - _proto.dispose = function dispose() { - [ window, this._element, this._dialog ].forEach(function(htmlElement) { - return $__default["default"](htmlElement).off(EVENT_KEY$5); - }); - $__default["default"](document).off(EVENT_FOCUSIN); - $__default["default"].removeData(this._element, DATA_KEY$5); - this._config = null; - this._element = null; - this._dialog = null; - this._backdrop = null; - this._isShown = null; - this._isBodyOverflowing = null; - this._ignoreBackdropClick = null; - this._isTransitioning = null; - this._scrollbarWidth = null; - }; - _proto.handleUpdate = function handleUpdate() { - this._adjustDialog(); - }; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$3, config); - Util.typeCheckConfig(NAME$5, config, DefaultType$3); - return config; - }; - _proto._triggerBackdropTransition = function _triggerBackdropTransition() { - var _this3 = this; - var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED); - $__default["default"](this._element).trigger(hideEventPrevented); - if (hideEventPrevented.isDefaultPrevented()) { - return; - } - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - if (!isModalOverflowing) { - this._element.style.overflowY = "hidden"; - } - this._element.classList.add(CLASS_NAME_STATIC); - var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog); - $__default["default"](this._element).off(Util.TRANSITION_END); - $__default["default"](this._element).one(Util.TRANSITION_END, function() { - _this3._element.classList.remove(CLASS_NAME_STATIC); - if (!isModalOverflowing) { - $__default["default"](_this3._element).one(Util.TRANSITION_END, function() { - _this3._element.style.overflowY = ""; - }).emulateTransitionEnd(_this3._element, modalTransitionDuration); - } - }).emulateTransitionEnd(modalTransitionDuration); - this._element.focus(); - }; - _proto._showElement = function _showElement(relatedTarget) { - var _this4 = this; - var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$1); - var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null; - if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { - document.body.appendChild(this._element); - } - this._element.style.display = "block"; - this._element.removeAttribute("aria-hidden"); - this._element.setAttribute("aria-modal", true); - this._element.setAttribute("role", "dialog"); - if ($__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) { - modalBody.scrollTop = 0; - } else { - this._element.scrollTop = 0; - } - if (transition) { - Util.reflow(this._element); - } - $__default["default"](this._element).addClass(CLASS_NAME_SHOW$3); - if (this._config.focus) { - this._enforceFocus(); - } - var shownEvent = $__default["default"].Event(EVENT_SHOWN$2, { - relatedTarget: relatedTarget - }); - var transitionComplete = function transitionComplete() { - if (_this4._config.focus) { - _this4._element.focus(); - } - _this4._isTransitioning = false; - $__default["default"](_this4._element).trigger(shownEvent); - }; - if (transition) { - var transitionDuration = Util.getTransitionDurationFromElement(this._dialog); - $__default["default"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); - } else { - transitionComplete(); - } - }; - _proto._enforceFocus = function _enforceFocus() { - var _this5 = this; - $__default["default"](document).off(EVENT_FOCUSIN).on(EVENT_FOCUSIN, function(event) { - if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) { - _this5._element.focus(); - } - }); - }; - _proto._setEscapeEvent = function _setEscapeEvent() { - var _this6 = this; - if (this._isShown) { - $__default["default"](this._element).on(EVENT_KEYDOWN_DISMISS, function(event) { - if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) { - event.preventDefault(); - _this6.hide(); - } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) { - _this6._triggerBackdropTransition(); - } - }); - } else if (!this._isShown) { - $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS); - } - }; - _proto._setResizeEvent = function _setResizeEvent() { - var _this7 = this; - if (this._isShown) { - $__default["default"](window).on(EVENT_RESIZE, function(event) { - return _this7.handleUpdate(event); - }); - } else { - $__default["default"](window).off(EVENT_RESIZE); - } - }; - _proto._hideModal = function _hideModal() { - var _this8 = this; - this._element.style.display = "none"; - this._element.setAttribute("aria-hidden", true); - this._element.removeAttribute("aria-modal"); - this._element.removeAttribute("role"); - this._isTransitioning = false; - this._showBackdrop(function() { - $__default["default"](document.body).removeClass(CLASS_NAME_OPEN); - _this8._resetAdjustments(); - _this8._resetScrollbar(); - $__default["default"](_this8._element).trigger(EVENT_HIDDEN$2); - }); - }; - _proto._removeBackdrop = function _removeBackdrop() { - if (this._backdrop) { - $__default["default"](this._backdrop).remove(); - this._backdrop = null; - } - }; - _proto._showBackdrop = function _showBackdrop(callback) { - var _this9 = this; - var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : ""; - if (this._isShown && this._config.backdrop) { - this._backdrop = document.createElement("div"); - this._backdrop.className = CLASS_NAME_BACKDROP; - if (animate) { - this._backdrop.classList.add(animate); - } - $__default["default"](this._backdrop).appendTo(document.body); - $__default["default"](this._element).on(EVENT_CLICK_DISMISS, function(event) { - if (_this9._ignoreBackdropClick) { - _this9._ignoreBackdropClick = false; - return; - } - if (event.target !== event.currentTarget) { - return; - } - if (_this9._config.backdrop === "static") { - _this9._triggerBackdropTransition(); - } else { - _this9.hide(); - } - }); - if (animate) { - Util.reflow(this._backdrop); - } - $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW$3); - if (!callback) { - return; - } - if (!animate) { - callback(); - return; - } - var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); - $__default["default"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); - } else if (!this._isShown && this._backdrop) { - $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW$3); - var callbackRemove = function callbackRemove() { - _this9._removeBackdrop(); - if (callback) { - callback(); - } - }; - if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$1)) { - var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); - $__default["default"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); - } else { - callbackRemove(); - } - } else if (callback) { - callback(); - } - }; - _proto._adjustDialog = function _adjustDialog() { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - if (!this._isBodyOverflowing && isModalOverflowing) { - this._element.style.paddingLeft = this._scrollbarWidth + "px"; - } - if (this._isBodyOverflowing && !isModalOverflowing) { - this._element.style.paddingRight = this._scrollbarWidth + "px"; - } - }; - _proto._resetAdjustments = function _resetAdjustments() { - this._element.style.paddingLeft = ""; - this._element.style.paddingRight = ""; - }; - _proto._checkScrollbar = function _checkScrollbar() { - var rect = document.body.getBoundingClientRect(); - this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth; - this._scrollbarWidth = this._getScrollbarWidth(); - }; - _proto._setScrollbar = function _setScrollbar() { - var _this10 = this; - if (this._isBodyOverflowing) { - var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT)); - var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); - $__default["default"](fixedContent).each(function(index, element) { - var actualPadding = element.style.paddingRight; - var calculatedPadding = $__default["default"](element).css("padding-right"); - $__default["default"](element).data("padding-right", actualPadding).css("padding-right", parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px"); - }); - $__default["default"](stickyContent).each(function(index, element) { - var actualMargin = element.style.marginRight; - var calculatedMargin = $__default["default"](element).css("margin-right"); - $__default["default"](element).data("margin-right", actualMargin).css("margin-right", parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px"); - }); - var actualPadding = document.body.style.paddingRight; - var calculatedPadding = $__default["default"](document.body).css("padding-right"); - $__default["default"](document.body).data("padding-right", actualPadding).css("padding-right", parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); - } - $__default["default"](document.body).addClass(CLASS_NAME_OPEN); - }; - _proto._resetScrollbar = function _resetScrollbar() { - var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT)); - $__default["default"](fixedContent).each(function(index, element) { - var padding = $__default["default"](element).data("padding-right"); - $__default["default"](element).removeData("padding-right"); - element.style.paddingRight = padding ? padding : ""; - }); - var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT)); - $__default["default"](elements).each(function(index, element) { - var margin = $__default["default"](element).data("margin-right"); - if (typeof margin !== "undefined") { - $__default["default"](element).css("margin-right", margin).removeData("margin-right"); - } - }); - var padding = $__default["default"](document.body).data("padding-right"); - $__default["default"](document.body).removeData("padding-right"); - document.body.style.paddingRight = padding ? padding : ""; - }; - _proto._getScrollbarWidth = function _getScrollbarWidth() { - var scrollDiv = document.createElement("div"); - scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER; - document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - return scrollbarWidth; - }; - Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { - return this.each(function() { - var data = $__default["default"](this).data(DATA_KEY$5); - var _config = _extends({}, Default$3, $__default["default"](this).data(), typeof config === "object" && config ? config : {}); - if (!data) { - data = new Modal(this, _config); - $__default["default"](this).data(DATA_KEY$5, data); - } - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - data[config](relatedTarget); - } else if (_config.show) { - data.show(relatedTarget); - } - }); - }; - _createClass(Modal, null, [ { - key: "VERSION", - get: function get() { - return VERSION$5; - } - }, { - key: "Default", - get: function get() { - return Default$3; - } - } ]); - return Modal; - }(); - $__default["default"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function(event) { - var _this11 = this; - var target; - var selector = Util.getSelectorFromElement(this); - if (selector) { - target = document.querySelector(selector); - } - var config = $__default["default"](target).data(DATA_KEY$5) ? "toggle" : _extends({}, $__default["default"](target).data(), $__default["default"](this).data()); - if (this.tagName === "A" || this.tagName === "AREA") { - event.preventDefault(); - } - var $target = $__default["default"](target).one(EVENT_SHOW$2, function(showEvent) { - if (showEvent.isDefaultPrevented()) { - return; - } - $target.one(EVENT_HIDDEN$2, function() { - if ($__default["default"](_this11).is(":visible")) { - _this11.focus(); - } - }); - }); - Modal._jQueryInterface.call($__default["default"](target), config, this); - }); - $__default["default"].fn[NAME$5] = Modal._jQueryInterface; - $__default["default"].fn[NAME$5].Constructor = Modal; - $__default["default"].fn[NAME$5].noConflict = function() { - $__default["default"].fn[NAME$5] = JQUERY_NO_CONFLICT$5; - return Modal._jQueryInterface; - }; - var uriAttrs = [ "background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href" ]; - var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; - var DefaultWhitelist = { - "*": [ "class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN ], - a: [ "target", "href", "title", "rel" ], - area: [], - b: [], - br: [], - col: [], - code: [], - div: [], - em: [], - hr: [], - h1: [], - h2: [], - h3: [], - h4: [], - h5: [], - h6: [], - i: [], - img: [ "src", "srcset", "alt", "title", "width", "height" ], - li: [], - ol: [], - p: [], - pre: [], - s: [], - small: [], - span: [], - sub: [], - sup: [], - strong: [], - u: [], - ul: [] - }; - var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi; - var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; - function allowedAttribute(attr, allowedAttributeList) { - var attrName = attr.nodeName.toLowerCase(); - if (allowedAttributeList.indexOf(attrName) !== -1) { - if (uriAttrs.indexOf(attrName) !== -1) { - return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); - } - return true; - } - var regExp = allowedAttributeList.filter(function(attrRegex) { - return attrRegex instanceof RegExp; - }); - for (var i = 0, len = regExp.length; i < len; i++) { - if (attrName.match(regExp[i])) { - return true; - } - } - return false; - } - function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { - if (unsafeHtml.length === 0) { - return unsafeHtml; - } - if (sanitizeFn && typeof sanitizeFn === "function") { - return sanitizeFn(unsafeHtml); - } - var domParser = new window.DOMParser(); - var createdDocument = domParser.parseFromString(unsafeHtml, "text/html"); - var whitelistKeys = Object.keys(whiteList); - var elements = [].slice.call(createdDocument.body.querySelectorAll("*")); - var _loop = function _loop(i, len) { - var el = elements[i]; - var elName = el.nodeName.toLowerCase(); - if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) { - el.parentNode.removeChild(el); - return "continue"; - } - var attributeList = [].slice.call(el.attributes); - var whitelistedAttributes = [].concat(whiteList["*"] || [], whiteList[elName] || []); - attributeList.forEach(function(attr) { - if (!allowedAttribute(attr, whitelistedAttributes)) { - el.removeAttribute(attr.nodeName); - } - }); - }; - for (var i = 0, len = elements.length; i < len; i++) { - var _ret = _loop(i); - if (_ret === "continue") continue; - } - return createdDocument.body.innerHTML; - } - var NAME$6 = "tooltip"; - var VERSION$6 = "4.6.0"; - var DATA_KEY$6 = "bs.tooltip"; - var EVENT_KEY$6 = "." + DATA_KEY$6; - var JQUERY_NO_CONFLICT$6 = $__default["default"].fn[NAME$6]; - var CLASS_PREFIX = "bs-tooltip"; - var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", "g"); - var DISALLOWED_ATTRIBUTES = [ "sanitize", "whiteList", "sanitizeFn" ]; - var DefaultType$4 = { - animation: "boolean", - template: "string", - title: "(string|element|function)", - trigger: "string", - delay: "(number|object)", - html: "boolean", - selector: "(string|boolean)", - placement: "(string|function)", - offset: "(number|string|function)", - container: "(string|element|boolean)", - fallbackPlacement: "(string|array)", - boundary: "(string|element)", - customClass: "(string|function)", - sanitize: "boolean", - sanitizeFn: "(null|function)", - whiteList: "object", - popperConfig: "(null|object)" - }; - var AttachmentMap = { - AUTO: "auto", - TOP: "top", - RIGHT: "right", - BOTTOM: "bottom", - LEFT: "left" - }; - var Default$4 = { - animation: true, - template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>', - trigger: "hover focus", - title: "", - delay: 0, - html: false, - selector: false, - placement: "top", - offset: 0, - container: false, - fallbackPlacement: "flip", - boundary: "scrollParent", - customClass: "", - sanitize: true, - sanitizeFn: null, - whiteList: DefaultWhitelist, - popperConfig: null - }; - var HOVER_STATE_SHOW = "show"; - var HOVER_STATE_OUT = "out"; - var Event = { - HIDE: "hide" + EVENT_KEY$6, - HIDDEN: "hidden" + EVENT_KEY$6, - SHOW: "show" + EVENT_KEY$6, - SHOWN: "shown" + EVENT_KEY$6, - INSERTED: "inserted" + EVENT_KEY$6, - CLICK: "click" + EVENT_KEY$6, - FOCUSIN: "focusin" + EVENT_KEY$6, - FOCUSOUT: "focusout" + EVENT_KEY$6, - MOUSEENTER: "mouseenter" + EVENT_KEY$6, - MOUSELEAVE: "mouseleave" + EVENT_KEY$6 - }; - var CLASS_NAME_FADE$2 = "fade"; - var CLASS_NAME_SHOW$4 = "show"; - var SELECTOR_TOOLTIP_INNER = ".tooltip-inner"; - var SELECTOR_ARROW = ".arrow"; - var TRIGGER_HOVER = "hover"; - var TRIGGER_FOCUS = "focus"; - var TRIGGER_CLICK = "click"; - var TRIGGER_MANUAL = "manual"; - var Tooltip = function() { - function Tooltip(element, config) { - if (typeof Popper__default["default"] === "undefined") { - throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)"); - } - this._isEnabled = true; - this._timeout = 0; - this._hoverState = ""; - this._activeTrigger = {}; - this._popper = null; - this.element = element; - this.config = this._getConfig(config); - this.tip = null; - this._setListeners(); - } - var _proto = Tooltip.prototype; - _proto.enable = function enable() { - this._isEnabled = true; - }; - _proto.disable = function disable() { - this._isEnabled = false; - }; - _proto.toggleEnabled = function toggleEnabled() { - this._isEnabled = !this._isEnabled; - }; - _proto.toggle = function toggle(event) { - if (!this._isEnabled) { - return; - } - if (event) { - var dataKey = this.constructor.DATA_KEY; - var context = $__default["default"](event.currentTarget).data(dataKey); - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $__default["default"](event.currentTarget).data(dataKey, context); - } - context._activeTrigger.click = !context._activeTrigger.click; - if (context._isWithActiveTrigger()) { - context._enter(null, context); - } else { - context._leave(null, context); - } - } else { - if ($__default["default"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) { - this._leave(null, this); - return; - } - this._enter(null, this); - } - }; - _proto.dispose = function dispose() { - clearTimeout(this._timeout); - $__default["default"].removeData(this.element, this.constructor.DATA_KEY); - $__default["default"](this.element).off(this.constructor.EVENT_KEY); - $__default["default"](this.element).closest(".modal").off("hide.bs.modal", this._hideModalHandler); - if (this.tip) { - $__default["default"](this.tip).remove(); - } - this._isEnabled = null; - this._timeout = null; - this._hoverState = null; - this._activeTrigger = null; - if (this._popper) { - this._popper.destroy(); - } - this._popper = null; - this.element = null; - this.config = null; - this.tip = null; - }; - _proto.show = function show() { - var _this = this; - if ($__default["default"](this.element).css("display") === "none") { - throw new Error("Please use show on visible elements"); - } - var showEvent = $__default["default"].Event(this.constructor.Event.SHOW); - if (this.isWithContent() && this._isEnabled) { - $__default["default"](this.element).trigger(showEvent); - var shadowRoot = Util.findShadowRoot(this.element); - var isInTheDom = $__default["default"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element); - if (showEvent.isDefaultPrevented() || !isInTheDom) { - return; - } - var tip = this.getTipElement(); - var tipId = Util.getUID(this.constructor.NAME); - tip.setAttribute("id", tipId); - this.element.setAttribute("aria-describedby", tipId); - this.setContent(); - if (this.config.animation) { - $__default["default"](tip).addClass(CLASS_NAME_FADE$2); - } - var placement = typeof this.config.placement === "function" ? this.config.placement.call(this, tip, this.element) : this.config.placement; - var attachment = this._getAttachment(placement); - this.addAttachmentClass(attachment); - var container = this._getContainer(); - $__default["default"](tip).data(this.constructor.DATA_KEY, this); - if (!$__default["default"].contains(this.element.ownerDocument.documentElement, this.tip)) { - $__default["default"](tip).appendTo(container); - } - $__default["default"](this.element).trigger(this.constructor.Event.INSERTED); - this._popper = new Popper__default["default"](this.element, tip, this._getPopperConfig(attachment)); - $__default["default"](tip).addClass(CLASS_NAME_SHOW$4); - $__default["default"](tip).addClass(this.config.customClass); - if ("ontouchstart" in document.documentElement) { - $__default["default"](document.body).children().on("mouseover", null, $__default["default"].noop); - } - var complete = function complete() { - if (_this.config.animation) { - _this._fixTransition(); - } - var prevHoverState = _this._hoverState; - _this._hoverState = null; - $__default["default"](_this.element).trigger(_this.constructor.Event.SHOWN); - if (prevHoverState === HOVER_STATE_OUT) { - _this._leave(null, _this); - } - }; - if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$2)) { - var transitionDuration = Util.getTransitionDurationFromElement(this.tip); - $__default["default"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - } else { - complete(); - } - } - }; - _proto.hide = function hide(callback) { - var _this2 = this; - var tip = this.getTipElement(); - var hideEvent = $__default["default"].Event(this.constructor.Event.HIDE); - var complete = function complete() { - if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { - tip.parentNode.removeChild(tip); - } - _this2._cleanTipClass(); - _this2.element.removeAttribute("aria-describedby"); - $__default["default"](_this2.element).trigger(_this2.constructor.Event.HIDDEN); - if (_this2._popper !== null) { - _this2._popper.destroy(); - } - if (callback) { - callback(); - } - }; - $__default["default"](this.element).trigger(hideEvent); - if (hideEvent.isDefaultPrevented()) { - return; - } - $__default["default"](tip).removeClass(CLASS_NAME_SHOW$4); - if ("ontouchstart" in document.documentElement) { - $__default["default"](document.body).children().off("mouseover", null, $__default["default"].noop); - } - this._activeTrigger[TRIGGER_CLICK] = false; - this._activeTrigger[TRIGGER_FOCUS] = false; - this._activeTrigger[TRIGGER_HOVER] = false; - if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$2)) { - var transitionDuration = Util.getTransitionDurationFromElement(tip); - $__default["default"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - } else { - complete(); - } - this._hoverState = ""; - }; - _proto.update = function update() { - if (this._popper !== null) { - this._popper.scheduleUpdate(); - } - }; - _proto.isWithContent = function isWithContent() { - return Boolean(this.getTitle()); - }; - _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); - }; - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $__default["default"](this.config.template)[0]; - return this.tip; - }; - _proto.setContent = function setContent() { - var tip = this.getTipElement(); - this.setElementContent($__default["default"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle()); - $__default["default"](tip).removeClass(CLASS_NAME_FADE$2 + " " + CLASS_NAME_SHOW$4); - }; - _proto.setElementContent = function setElementContent($element, content) { - if (typeof content === "object" && (content.nodeType || content.jquery)) { - if (this.config.html) { - if (!$__default["default"](content).parent().is($element)) { - $element.empty().append(content); - } - } else { - $element.text($__default["default"](content).text()); - } - return; - } - if (this.config.html) { - if (this.config.sanitize) { - content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn); - } - $element.html(content); - } else { - $element.text(content); - } - }; - _proto.getTitle = function getTitle() { - var title = this.element.getAttribute("data-original-title"); - if (!title) { - title = typeof this.config.title === "function" ? this.config.title.call(this.element) : this.config.title; - } - return title; - }; - _proto._getPopperConfig = function _getPopperConfig(attachment) { - var _this3 = this; - var defaultBsConfig = { - placement: attachment, - modifiers: { - offset: this._getOffset(), - flip: { - behavior: this.config.fallbackPlacement - }, - arrow: { - element: SELECTOR_ARROW - }, - preventOverflow: { - boundariesElement: this.config.boundary - } - }, - onCreate: function onCreate(data) { - if (data.originalPlacement !== data.placement) { - _this3._handlePopperPlacementChange(data); - } - }, - onUpdate: function onUpdate(data) { - return _this3._handlePopperPlacementChange(data); - } - }; - return _extends({}, defaultBsConfig, this.config.popperConfig); - }; - _proto._getOffset = function _getOffset() { - var _this4 = this; - var offset = {}; - if (typeof this.config.offset === "function") { - offset.fn = function(data) { - data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {}); - return data; - }; - } else { - offset.offset = this.config.offset; - } - return offset; - }; - _proto._getContainer = function _getContainer() { - if (this.config.container === false) { - return document.body; - } - if (Util.isElement(this.config.container)) { - return $__default["default"](this.config.container); - } - return $__default["default"](document).find(this.config.container); - }; - _proto._getAttachment = function _getAttachment(placement) { - return AttachmentMap[placement.toUpperCase()]; - }; - _proto._setListeners = function _setListeners() { - var _this5 = this; - var triggers = this.config.trigger.split(" "); - triggers.forEach(function(trigger) { - if (trigger === "click") { - $__default["default"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function(event) { - return _this5.toggle(event); - }); - } else if (trigger !== TRIGGER_MANUAL) { - var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN; - var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT; - $__default["default"](_this5.element).on(eventIn, _this5.config.selector, function(event) { - return _this5._enter(event); - }).on(eventOut, _this5.config.selector, function(event) { - return _this5._leave(event); - }); - } - }); - this._hideModalHandler = function() { - if (_this5.element) { - _this5.hide(); - } - }; - $__default["default"](this.element).closest(".modal").on("hide.bs.modal", this._hideModalHandler); - if (this.config.selector) { - this.config = _extends({}, this.config, { - trigger: "manual", - selector: "" - }); - } else { - this._fixTitle(); - } - }; - _proto._fixTitle = function _fixTitle() { - var titleType = typeof this.element.getAttribute("data-original-title"); - if (this.element.getAttribute("title") || titleType !== "string") { - this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""); - this.element.setAttribute("title", ""); - } - }; - _proto._enter = function _enter(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || $__default["default"](event.currentTarget).data(dataKey); - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $__default["default"](event.currentTarget).data(dataKey, context); - } - if (event) { - context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; - } - if ($__default["default"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) { - context._hoverState = HOVER_STATE_SHOW; - return; - } - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_SHOW; - if (!context.config.delay || !context.config.delay.show) { - context.show(); - return; - } - context._timeout = setTimeout(function() { - if (context._hoverState === HOVER_STATE_SHOW) { - context.show(); - } - }, context.config.delay.show); - }; - _proto._leave = function _leave(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || $__default["default"](event.currentTarget).data(dataKey); - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $__default["default"](event.currentTarget).data(dataKey, context); - } - if (event) { - context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = false; - } - if (context._isWithActiveTrigger()) { - return; - } - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_OUT; - if (!context.config.delay || !context.config.delay.hide) { - context.hide(); - return; - } - context._timeout = setTimeout(function() { - if (context._hoverState === HOVER_STATE_OUT) { - context.hide(); - } - }, context.config.delay.hide); - }; - _proto._isWithActiveTrigger = function _isWithActiveTrigger() { - for (var trigger in this._activeTrigger) { - if (this._activeTrigger[trigger]) { - return true; - } - } - return false; - }; - _proto._getConfig = function _getConfig(config) { - var dataAttributes = $__default["default"](this.element).data(); - Object.keys(dataAttributes).forEach(function(dataAttr) { - if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) { - delete dataAttributes[dataAttr]; - } - }); - config = _extends({}, this.constructor.Default, dataAttributes, typeof config === "object" && config ? config : {}); - if (typeof config.delay === "number") { - config.delay = { - show: config.delay, - hide: config.delay - }; - } - if (typeof config.title === "number") { - config.title = config.title.toString(); - } - if (typeof config.content === "number") { - config.content = config.content.toString(); - } - Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType); - if (config.sanitize) { - config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn); - } - return config; - }; - _proto._getDelegateConfig = function _getDelegateConfig() { - var config = {}; - if (this.config) { - for (var key in this.config) { - if (this.constructor.Default[key] !== this.config[key]) { - config[key] = this.config[key]; - } - } - } - return config; - }; - _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $__default["default"](this.getTipElement()); - var tabClass = $tip.attr("class").match(BSCLS_PREFIX_REGEX); - if (tabClass !== null && tabClass.length) { - $tip.removeClass(tabClass.join("")); - } - }; - _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) { - this.tip = popperData.instance.popper; - this._cleanTipClass(); - this.addAttachmentClass(this._getAttachment(popperData.placement)); - }; - _proto._fixTransition = function _fixTransition() { - var tip = this.getTipElement(); - var initConfigAnimation = this.config.animation; - if (tip.getAttribute("x-placement") !== null) { - return; - } - $__default["default"](tip).removeClass(CLASS_NAME_FADE$2); - this.config.animation = false; - this.hide(); - this.show(); - this.config.animation = initConfigAnimation; - }; - Tooltip._jQueryInterface = function _jQueryInterface(config) { - return this.each(function() { - var $element = $__default["default"](this); - var data = $element.data(DATA_KEY$6); - var _config = typeof config === "object" && config; - if (!data && /dispose|hide/.test(config)) { - return; - } - if (!data) { - data = new Tooltip(this, _config); - $element.data(DATA_KEY$6, data); - } - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - data[config](); - } - }); - }; - _createClass(Tooltip, null, [ { - key: "VERSION", - get: function get() { - return VERSION$6; - } - }, { - key: "Default", - get: function get() { - return Default$4; - } - }, { - key: "NAME", - get: function get() { - return NAME$6; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$6; - } - }, { - key: "Event", - get: function get() { - return Event; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$6; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$4; - } - } ]); - return Tooltip; - }(); - $__default["default"].fn[NAME$6] = Tooltip._jQueryInterface; - $__default["default"].fn[NAME$6].Constructor = Tooltip; - $__default["default"].fn[NAME$6].noConflict = function() { - $__default["default"].fn[NAME$6] = JQUERY_NO_CONFLICT$6; - return Tooltip._jQueryInterface; - }; - var NAME$7 = "popover"; - var VERSION$7 = "4.6.0"; - var DATA_KEY$7 = "bs.popover"; - var EVENT_KEY$7 = "." + DATA_KEY$7; - var JQUERY_NO_CONFLICT$7 = $__default["default"].fn[NAME$7]; - var CLASS_PREFIX$1 = "bs-popover"; - var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", "g"); - var Default$5 = _extends({}, Tooltip.Default, { - placement: "right", - trigger: "click", - content: "", - template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>' - }); - var DefaultType$5 = _extends({}, Tooltip.DefaultType, { - content: "(string|element|function)" - }); - var CLASS_NAME_FADE$3 = "fade"; - var CLASS_NAME_SHOW$5 = "show"; - var SELECTOR_TITLE = ".popover-header"; - var SELECTOR_CONTENT = ".popover-body"; - var Event$1 = { - HIDE: "hide" + EVENT_KEY$7, - HIDDEN: "hidden" + EVENT_KEY$7, - SHOW: "show" + EVENT_KEY$7, - SHOWN: "shown" + EVENT_KEY$7, - INSERTED: "inserted" + EVENT_KEY$7, - CLICK: "click" + EVENT_KEY$7, - FOCUSIN: "focusin" + EVENT_KEY$7, - FOCUSOUT: "focusout" + EVENT_KEY$7, - MOUSEENTER: "mouseenter" + EVENT_KEY$7, - MOUSELEAVE: "mouseleave" + EVENT_KEY$7 - }; - var Popover = function(_Tooltip) { - _inheritsLoose(Popover, _Tooltip); - function Popover() { - return _Tooltip.apply(this, arguments) || this; - } - var _proto = Popover.prototype; - _proto.isWithContent = function isWithContent() { - return this.getTitle() || this._getContent(); - }; - _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment); - }; - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $__default["default"](this.config.template)[0]; - return this.tip; - }; - _proto.setContent = function setContent() { - var $tip = $__default["default"](this.getTipElement()); - this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle()); - var content = this._getContent(); - if (typeof content === "function") { - content = content.call(this.element); - } - this.setElementContent($tip.find(SELECTOR_CONTENT), content); - $tip.removeClass(CLASS_NAME_FADE$3 + " " + CLASS_NAME_SHOW$5); - }; - _proto._getContent = function _getContent() { - return this.element.getAttribute("data-content") || this.config.content; - }; - _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $__default["default"](this.getTipElement()); - var tabClass = $tip.attr("class").match(BSCLS_PREFIX_REGEX$1); - if (tabClass !== null && tabClass.length > 0) { - $tip.removeClass(tabClass.join("")); - } - }; - Popover._jQueryInterface = function _jQueryInterface(config) { - return this.each(function() { - var data = $__default["default"](this).data(DATA_KEY$7); - var _config = typeof config === "object" ? config : null; - if (!data && /dispose|hide/.test(config)) { - return; - } - if (!data) { - data = new Popover(this, _config); - $__default["default"](this).data(DATA_KEY$7, data); - } - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - data[config](); - } - }); - }; - _createClass(Popover, null, [ { - key: "VERSION", - get: function get() { - return VERSION$7; - } - }, { - key: "Default", - get: function get() { - return Default$5; - } - }, { - key: "NAME", - get: function get() { - return NAME$7; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$7; - } - }, { - key: "Event", - get: function get() { - return Event$1; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$7; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$5; - } - } ]); - return Popover; - }(Tooltip); - $__default["default"].fn[NAME$7] = Popover._jQueryInterface; - $__default["default"].fn[NAME$7].Constructor = Popover; - $__default["default"].fn[NAME$7].noConflict = function() { - $__default["default"].fn[NAME$7] = JQUERY_NO_CONFLICT$7; - return Popover._jQueryInterface; - }; - var NAME$8 = "scrollspy"; - var VERSION$8 = "4.6.0"; - var DATA_KEY$8 = "bs.scrollspy"; - var EVENT_KEY$8 = "." + DATA_KEY$8; - var DATA_API_KEY$6 = ".data-api"; - var JQUERY_NO_CONFLICT$8 = $__default["default"].fn[NAME$8]; - var Default$6 = { - offset: 10, - method: "auto", - target: "" - }; - var DefaultType$6 = { - offset: "number", - method: "string", - target: "(string|element)" - }; - var EVENT_ACTIVATE = "activate" + EVENT_KEY$8; - var EVENT_SCROLL = "scroll" + EVENT_KEY$8; - var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$8 + DATA_API_KEY$6; - var CLASS_NAME_DROPDOWN_ITEM = "dropdown-item"; - var CLASS_NAME_ACTIVE$2 = "active"; - var SELECTOR_DATA_SPY = '[data-spy="scroll"]'; - var SELECTOR_NAV_LIST_GROUP = ".nav, .list-group"; - var SELECTOR_NAV_LINKS = ".nav-link"; - var SELECTOR_NAV_ITEMS = ".nav-item"; - var SELECTOR_LIST_ITEMS = ".list-group-item"; - var SELECTOR_DROPDOWN = ".dropdown"; - var SELECTOR_DROPDOWN_ITEMS = ".dropdown-item"; - var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle"; - var METHOD_OFFSET = "offset"; - var METHOD_POSITION = "position"; - var ScrollSpy = function() { - function ScrollSpy(element, config) { - var _this = this; - this._element = element; - this._scrollElement = element.tagName === "BODY" ? window : element; - this._config = this._getConfig(config); - this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS); - this._offsets = []; - this._targets = []; - this._activeTarget = null; - this._scrollHeight = 0; - $__default["default"](this._scrollElement).on(EVENT_SCROLL, function(event) { - return _this._process(event); - }); - this.refresh(); - this._process(); - } - var _proto = ScrollSpy.prototype; - _proto.refresh = function refresh() { - var _this2 = this; - var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; - var offsetMethod = this._config.method === "auto" ? autoMethod : this._config.method; - var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; - this._offsets = []; - this._targets = []; - this._scrollHeight = this._getScrollHeight(); - var targets = [].slice.call(document.querySelectorAll(this._selector)); - targets.map(function(element) { - var target; - var targetSelector = Util.getSelectorFromElement(element); - if (targetSelector) { - target = document.querySelector(targetSelector); - } - if (target) { - var targetBCR = target.getBoundingClientRect(); - if (targetBCR.width || targetBCR.height) { - return [ $__default["default"](target)[offsetMethod]().top + offsetBase, targetSelector ]; - } - } - return null; - }).filter(function(item) { - return item; - }).sort(function(a, b) { - return a[0] - b[0]; - }).forEach(function(item) { - _this2._offsets.push(item[0]); - _this2._targets.push(item[1]); - }); - }; - _proto.dispose = function dispose() { - $__default["default"].removeData(this._element, DATA_KEY$8); - $__default["default"](this._scrollElement).off(EVENT_KEY$8); - this._element = null; - this._scrollElement = null; - this._config = null; - this._selector = null; - this._offsets = null; - this._targets = null; - this._activeTarget = null; - this._scrollHeight = null; - }; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$6, typeof config === "object" && config ? config : {}); - if (typeof config.target !== "string" && Util.isElement(config.target)) { - var id = $__default["default"](config.target).attr("id"); - if (!id) { - id = Util.getUID(NAME$8); - $__default["default"](config.target).attr("id", id); - } - config.target = "#" + id; - } - Util.typeCheckConfig(NAME$8, config, DefaultType$6); - return config; - }; - _proto._getScrollTop = function _getScrollTop() { - return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; - }; - _proto._getScrollHeight = function _getScrollHeight() { - return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); - }; - _proto._getOffsetHeight = function _getOffsetHeight() { - return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; - }; - _proto._process = function _process() { - var scrollTop = this._getScrollTop() + this._config.offset; - var scrollHeight = this._getScrollHeight(); - var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); - if (this._scrollHeight !== scrollHeight) { - this.refresh(); - } - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1]; - if (this._activeTarget !== target) { - this._activate(target); - } - return; - } - if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { - this._activeTarget = null; - this._clear(); - return; - } - for (var i = this._offsets.length; i--; ) { - var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === "undefined" || scrollTop < this._offsets[i + 1]); - if (isActiveTarget) { - this._activate(this._targets[i]); - } - } - }; - _proto._activate = function _activate(target) { - this._activeTarget = target; - this._clear(); - var queries = this._selector.split(",").map(function(selector) { - return selector + '[data-target="' + target + '"],' + selector + '[href="' + target + '"]'; - }); - var $link = $__default["default"]([].slice.call(document.querySelectorAll(queries.join(",")))); - if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) { - $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2); - $link.addClass(CLASS_NAME_ACTIVE$2); - } else { - $link.addClass(CLASS_NAME_ACTIVE$2); - $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$2); - $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$2); - } - $__default["default"](this._scrollElement).trigger(EVENT_ACTIVATE, { - relatedTarget: target - }); - }; - _proto._clear = function _clear() { - [].slice.call(document.querySelectorAll(this._selector)).filter(function(node) { - return node.classList.contains(CLASS_NAME_ACTIVE$2); - }).forEach(function(node) { - return node.classList.remove(CLASS_NAME_ACTIVE$2); - }); - }; - ScrollSpy._jQueryInterface = function _jQueryInterface(config) { - return this.each(function() { - var data = $__default["default"](this).data(DATA_KEY$8); - var _config = typeof config === "object" && config; - if (!data) { - data = new ScrollSpy(this, _config); - $__default["default"](this).data(DATA_KEY$8, data); - } - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - data[config](); - } - }); - }; - _createClass(ScrollSpy, null, [ { - key: "VERSION", - get: function get() { - return VERSION$8; - } - }, { - key: "Default", - get: function get() { - return Default$6; - } - } ]); - return ScrollSpy; - }(); - $__default["default"](window).on(EVENT_LOAD_DATA_API$2, function() { - var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY)); - var scrollSpysLength = scrollSpys.length; - for (var i = scrollSpysLength; i--; ) { - var $spy = $__default["default"](scrollSpys[i]); - ScrollSpy._jQueryInterface.call($spy, $spy.data()); - } - }); - $__default["default"].fn[NAME$8] = ScrollSpy._jQueryInterface; - $__default["default"].fn[NAME$8].Constructor = ScrollSpy; - $__default["default"].fn[NAME$8].noConflict = function() { - $__default["default"].fn[NAME$8] = JQUERY_NO_CONFLICT$8; - return ScrollSpy._jQueryInterface; - }; - var NAME$9 = "tab"; - var VERSION$9 = "4.6.0"; - var DATA_KEY$9 = "bs.tab"; - var EVENT_KEY$9 = "." + DATA_KEY$9; - var DATA_API_KEY$7 = ".data-api"; - var JQUERY_NO_CONFLICT$9 = $__default["default"].fn[NAME$9]; - var EVENT_HIDE$3 = "hide" + EVENT_KEY$9; - var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$9; - var EVENT_SHOW$3 = "show" + EVENT_KEY$9; - var EVENT_SHOWN$3 = "shown" + EVENT_KEY$9; - var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$9 + DATA_API_KEY$7; - var CLASS_NAME_DROPDOWN_MENU = "dropdown-menu"; - var CLASS_NAME_ACTIVE$3 = "active"; - var CLASS_NAME_DISABLED$1 = "disabled"; - var CLASS_NAME_FADE$4 = "fade"; - var CLASS_NAME_SHOW$6 = "show"; - var SELECTOR_DROPDOWN$1 = ".dropdown"; - var SELECTOR_NAV_LIST_GROUP$1 = ".nav, .list-group"; - var SELECTOR_ACTIVE$2 = ".active"; - var SELECTOR_ACTIVE_UL = "> li > .active"; - var SELECTOR_DATA_TOGGLE$4 = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]'; - var SELECTOR_DROPDOWN_TOGGLE$1 = ".dropdown-toggle"; - var SELECTOR_DROPDOWN_ACTIVE_CHILD = "> .dropdown-menu .active"; - var Tab = function() { - function Tab(element) { - this._element = element; - } - var _proto = Tab.prototype; - _proto.show = function show() { - var _this = this; - if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default["default"](this._element).hasClass(CLASS_NAME_ACTIVE$3) || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1)) { - return; - } - var target; - var previous; - var listElement = $__default["default"](this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0]; - var selector = Util.getSelectorFromElement(this._element); - if (listElement) { - var itemSelector = listElement.nodeName === "UL" || listElement.nodeName === "OL" ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2; - previous = $__default["default"].makeArray($__default["default"](listElement).find(itemSelector)); - previous = previous[previous.length - 1]; - } - var hideEvent = $__default["default"].Event(EVENT_HIDE$3, { - relatedTarget: this._element - }); - var showEvent = $__default["default"].Event(EVENT_SHOW$3, { - relatedTarget: previous - }); - if (previous) { - $__default["default"](previous).trigger(hideEvent); - } - $__default["default"](this._element).trigger(showEvent); - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { - return; - } - if (selector) { - target = document.querySelector(selector); - } - this._activate(this._element, listElement); - var complete = function complete() { - var hiddenEvent = $__default["default"].Event(EVENT_HIDDEN$3, { - relatedTarget: _this._element - }); - var shownEvent = $__default["default"].Event(EVENT_SHOWN$3, { - relatedTarget: previous - }); - $__default["default"](previous).trigger(hiddenEvent); - $__default["default"](_this._element).trigger(shownEvent); - }; - if (target) { - this._activate(target, target.parentNode, complete); - } else { - complete(); - } - }; - _proto.dispose = function dispose() { - $__default["default"].removeData(this._element, DATA_KEY$9); - this._element = null; - }; - _proto._activate = function _activate(element, container, callback) { - var _this2 = this; - var activeElements = container && (container.nodeName === "UL" || container.nodeName === "OL") ? $__default["default"](container).find(SELECTOR_ACTIVE_UL) : $__default["default"](container).children(SELECTOR_ACTIVE$2); - var active = activeElements[0]; - var isTransitioning = callback && active && $__default["default"](active).hasClass(CLASS_NAME_FADE$4); - var complete = function complete() { - return _this2._transitionComplete(element, active, callback); - }; - if (active && isTransitioning) { - var transitionDuration = Util.getTransitionDurationFromElement(active); - $__default["default"](active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - } else { - complete(); - } - }; - _proto._transitionComplete = function _transitionComplete(element, active, callback) { - if (active) { - $__default["default"](active).removeClass(CLASS_NAME_ACTIVE$3); - var dropdownChild = $__default["default"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0]; - if (dropdownChild) { - $__default["default"](dropdownChild).removeClass(CLASS_NAME_ACTIVE$3); - } - if (active.getAttribute("role") === "tab") { - active.setAttribute("aria-selected", false); - } - } - $__default["default"](element).addClass(CLASS_NAME_ACTIVE$3); - if (element.getAttribute("role") === "tab") { - element.setAttribute("aria-selected", true); - } - Util.reflow(element); - if (element.classList.contains(CLASS_NAME_FADE$4)) { - element.classList.add(CLASS_NAME_SHOW$6); - } - if (element.parentNode && $__default["default"](element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) { - var dropdownElement = $__default["default"](element).closest(SELECTOR_DROPDOWN$1)[0]; - if (dropdownElement) { - var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1)); - $__default["default"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3); - } - element.setAttribute("aria-expanded", true); - } - if (callback) { - callback(); - } - }; - Tab._jQueryInterface = function _jQueryInterface(config) { - return this.each(function() { - var $this = $__default["default"](this); - var data = $this.data(DATA_KEY$9); - if (!data) { - data = new Tab(this); - $this.data(DATA_KEY$9, data); - } - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - data[config](); - } - }); - }; - _createClass(Tab, null, [ { - key: "VERSION", - get: function get() { - return VERSION$9; - } - } ]); - return Tab; - }(); - $__default["default"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function(event) { - event.preventDefault(); - Tab._jQueryInterface.call($__default["default"](this), "show"); - }); - $__default["default"].fn[NAME$9] = Tab._jQueryInterface; - $__default["default"].fn[NAME$9].Constructor = Tab; - $__default["default"].fn[NAME$9].noConflict = function() { - $__default["default"].fn[NAME$9] = JQUERY_NO_CONFLICT$9; - return Tab._jQueryInterface; - }; - var NAME$a = "toast"; - var VERSION$a = "4.6.0"; - var DATA_KEY$a = "bs.toast"; - var EVENT_KEY$a = "." + DATA_KEY$a; - var JQUERY_NO_CONFLICT$a = $__default["default"].fn[NAME$a]; - var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$a; - var EVENT_HIDE$4 = "hide" + EVENT_KEY$a; - var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$a; - var EVENT_SHOW$4 = "show" + EVENT_KEY$a; - var EVENT_SHOWN$4 = "shown" + EVENT_KEY$a; - var CLASS_NAME_FADE$5 = "fade"; - var CLASS_NAME_HIDE = "hide"; - var CLASS_NAME_SHOW$7 = "show"; - var CLASS_NAME_SHOWING = "showing"; - var DefaultType$7 = { - animation: "boolean", - autohide: "boolean", - delay: "number" - }; - var Default$7 = { - animation: true, - autohide: true, - delay: 500 - }; - var SELECTOR_DATA_DISMISS$1 = '[data-dismiss="toast"]'; - var Toast = function() { - function Toast(element, config) { - this._element = element; - this._config = this._getConfig(config); - this._timeout = null; - this._setListeners(); - } - var _proto = Toast.prototype; - _proto.show = function show() { - var _this = this; - var showEvent = $__default["default"].Event(EVENT_SHOW$4); - $__default["default"](this._element).trigger(showEvent); - if (showEvent.isDefaultPrevented()) { - return; - } - this._clearTimeout(); - if (this._config.animation) { - this._element.classList.add(CLASS_NAME_FADE$5); - } - var complete = function complete() { - _this._element.classList.remove(CLASS_NAME_SHOWING); - _this._element.classList.add(CLASS_NAME_SHOW$7); - $__default["default"](_this._element).trigger(EVENT_SHOWN$4); - if (_this._config.autohide) { - _this._timeout = setTimeout(function() { - _this.hide(); - }, _this._config.delay); - } - }; - this._element.classList.remove(CLASS_NAME_HIDE); - Util.reflow(this._element); - this._element.classList.add(CLASS_NAME_SHOWING); - if (this._config.animation) { - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - } else { - complete(); - } - }; - _proto.hide = function hide() { - if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) { - return; - } - var hideEvent = $__default["default"].Event(EVENT_HIDE$4); - $__default["default"](this._element).trigger(hideEvent); - if (hideEvent.isDefaultPrevented()) { - return; - } - this._close(); - }; - _proto.dispose = function dispose() { - this._clearTimeout(); - if (this._element.classList.contains(CLASS_NAME_SHOW$7)) { - this._element.classList.remove(CLASS_NAME_SHOW$7); - } - $__default["default"](this._element).off(EVENT_CLICK_DISMISS$1); - $__default["default"].removeData(this._element, DATA_KEY$a); - this._element = null; - this._config = null; - }; - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$7, $__default["default"](this._element).data(), typeof config === "object" && config ? config : {}); - Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType); - return config; - }; - _proto._setListeners = function _setListeners() { - var _this2 = this; - $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function() { - return _this2.hide(); - }); - }; - _proto._close = function _close() { - var _this3 = this; - var complete = function complete() { - _this3._element.classList.add(CLASS_NAME_HIDE); - $__default["default"](_this3._element).trigger(EVENT_HIDDEN$4); - }; - this._element.classList.remove(CLASS_NAME_SHOW$7); - if (this._config.animation) { - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - } else { - complete(); - } - }; - _proto._clearTimeout = function _clearTimeout() { - clearTimeout(this._timeout); - this._timeout = null; - }; - Toast._jQueryInterface = function _jQueryInterface(config) { - return this.each(function() { - var $element = $__default["default"](this); - var data = $element.data(DATA_KEY$a); - var _config = typeof config === "object" && config; - if (!data) { - data = new Toast(this, _config); - $element.data(DATA_KEY$a, data); - } - if (typeof config === "string") { - if (typeof data[config] === "undefined") { - throw new TypeError('No method named "' + config + '"'); - } - data[config](this); - } - }); - }; - _createClass(Toast, null, [ { - key: "VERSION", - get: function get() { - return VERSION$a; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$7; - } - }, { - key: "Default", - get: function get() { - return Default$7; - } - } ]); - return Toast; - }(); - $__default["default"].fn[NAME$a] = Toast._jQueryInterface; - $__default["default"].fn[NAME$a].Constructor = Toast; - $__default["default"].fn[NAME$a].noConflict = function() { - $__default["default"].fn[NAME$a] = JQUERY_NO_CONFLICT$a; - return Toast._jQueryInterface; - }; - exports.Alert = Alert; - exports.Button = Button; - exports.Carousel = Carousel; - exports.Collapse = Collapse; - exports.Dropdown = Dropdown; - exports.Modal = Modal; - exports.Popover = Popover; - exports.Scrollspy = ScrollSpy; - exports.Tab = Tab; - exports.Toast = Toast; - exports.Tooltip = Tooltip; - exports.Util = Util; - Object.defineProperty(exports, "__esModule", { - value: true - }); -}); - -!function(a, b) { - "function" == typeof define && define.amd && define.amd.dust === !0 ? define("dust.core", [], b) : "object" == typeof exports ? module.exports = b() : a.dust = b(); -}(this, function() { - function getTemplate(a, b) { - return a ? "function" == typeof a && a.template ? a.template : dust.isTemplateFn(a) ? a : b !== !1 ? dust.cache[a] : void 0 : void 0; - } - function load(a, b, c) { - if (!a) return b.setError(new Error("No template or template name provided to render")); - var d = getTemplate(a, dust.config.cache); - return d ? d(b, Context.wrap(c, d.templateName)) : dust.onLoad ? b.map(function(b) { - function d(a, d) { - var f; - if (a) return b.setError(a); - if (f = getTemplate(d, !1) || getTemplate(e, dust.config.cache), !f) { - if (!dust.compile) return b.setError(new Error("Dust compiler not available")); - f = dust.loadSource(dust.compile(d, e)); - } - f(b, Context.wrap(c, f.templateName)).end(); - } - var e = a; - 3 === dust.onLoad.length ? dust.onLoad(e, c.options, d) : dust.onLoad(e, d); - }) : b.setError(new Error("Template Not Found: " + a)); - } - function Context(a, b, c, d, e) { - void 0 === a || a instanceof Stack || (a = new Stack(a)), this.stack = a, this.global = b, - this.options = c, this.blocks = d, this.templateName = e, this._isContext = !0; - } - function getWithResolvedData(a, b, c) { - return function(d) { - return a.push(d)._get(b, c); - }; - } - function Stack(a, b, c, d) { - this.tail = b, this.isObject = a && "object" == typeof a, this.head = a, this.index = c, - this.of = d; - } - function Stub(a) { - this.head = new Chunk(this), this.callback = a, this.out = ""; - } - function Stream() { - this.head = new Chunk(this); - } - function Chunk(a, b, c) { - this.root = a, this.next = b, this.data = [], this.flushable = !1, this.taps = c; - } - function Tap(a, b) { - this.head = a, this.tail = b; - } - var dust = { - version: "2.7.5" - }, NONE = "NONE", ERROR = "ERROR", WARN = "WARN", INFO = "INFO", DEBUG = "DEBUG", EMPTY_FUNC = function() {}; - dust.config = { - whitespace: !1, - amd: !1, - cjs: !1, - cache: !0 - }, dust._aliases = { - write: "w", - end: "e", - map: "m", - render: "r", - reference: "f", - section: "s", - exists: "x", - notexists: "nx", - block: "b", - partial: "p", - helper: "h" - }, function() { - var a, b, c = { - DEBUG: 0, - INFO: 1, - WARN: 2, - ERROR: 3, - NONE: 4 - }; - "undefined" != typeof console && console.log ? (a = console.log, b = "function" == typeof a ? function() { - a.apply(console, arguments); - } : function() { - a(Array.prototype.slice.apply(arguments).join(" ")); - }) : b = EMPTY_FUNC, dust.log = function(a, d) { - d = d || INFO, c[d] >= c[dust.debugLevel] && b("[DUST:" + d + "]", a); - }, dust.debugLevel = NONE, "undefined" != typeof process && process.env && /\bdust\b/.test(process.env.DEBUG) && (dust.debugLevel = DEBUG); - }(), dust.helpers = {}, dust.cache = {}, dust.register = function(a, b) { - a && (b.templateName = a, dust.config.cache !== !1 && (dust.cache[a] = b)); - }, dust.render = function(a, b, c) { - var d = new Stub(c).head; - try { - load(a, d, b).end(); - } catch (e) { - d.setError(e); - } - }, dust.stream = function(a, b) { - var c = new Stream(), d = c.head; - return dust.nextTick(function() { - try { - load(a, d, b).end(); - } catch (c) { - d.setError(c); - } - }), c; - }, dust.loadSource = function(source) { - return eval(source); - }, dust.isArray = Array.isArray ? Array.isArray : function(a) { - return "[object Array]" === Object.prototype.toString.call(a); - }, dust.nextTick = function() { - return function(a) { - setTimeout(a, 0); - }; - }(), dust.isEmpty = function(a) { - return 0 === a ? !1 : dust.isArray(a) && !a.length ? !0 : !a; - }, dust.isEmptyObject = function(a) { - var b; - if (null === a) return !1; - if (void 0 === a) return !1; - if (a.length > 0) return !1; - for (b in a) if (Object.prototype.hasOwnProperty.call(a, b)) return !1; - return !0; - }, dust.isTemplateFn = function(a) { - return "function" == typeof a && a.__dustBody; - }, dust.isThenable = function(a) { - return a && "object" == typeof a && "function" == typeof a.then; - }, dust.isStreamable = function(a) { - return a && "function" == typeof a.on && "function" == typeof a.pipe; - }, dust.filter = function(a, b, c, d) { - var e, f, g, h; - if (c) for (e = 0, f = c.length; f > e; e++) g = c[e], g.length && (h = dust.filters[g], - "s" === g ? b = null : "function" == typeof h ? a = h(a, d) : dust.log("Invalid filter `" + g + "`", WARN)); - return b && (a = dust.filters[b](a, d)), a; - }, dust.filters = { - h: function(a) { - return dust.escapeHtml(a); - }, - j: function(a) { - return dust.escapeJs(a); - }, - u: encodeURI, - uc: encodeURIComponent, - js: function(a) { - return dust.escapeJSON(a); - }, - jp: function(a) { - return JSON ? JSON.parse(a) : (dust.log("JSON is undefined; could not parse `" + a + "`", WARN), - a); - } - }, dust.makeBase = dust.context = function(a, b) { - return new Context(void 0, a, b); - }, dust.isContext = function(a) { - return "object" == typeof a && a._isContext === !0; - }, Context.wrap = function(a, b) { - return dust.isContext(a) ? a : new Context(a, {}, {}, null, b); - }, Context.prototype.get = function(a, b) { - return "string" == typeof a && ("." === a[0] && (b = !0, a = a.substr(1)), a = a.split(".")), - this._get(b, a); - }, Context.prototype._get = function(a, b) { - var c, d, e, f, g, h = this.stack || {}, i = 1; - if (d = b[0], e = b.length, a && 0 === e) f = h, h = h.head; else { - if (a) h && (h = h.head ? h.head[d] : void 0); else { - for (;h && (!h.isObject || (f = h.head, c = h.head[d], void 0 === c)); ) h = h.tail; - h = void 0 !== c ? c : this.global && this.global[d]; - } - for (;h && e > i; ) { - if (dust.isThenable(h)) return h.then(getWithResolvedData(this, a, b.slice(i))); - f = h, h = h[b[i]], i++; - } - } - return "function" == typeof h ? (g = function() { - try { - return h.apply(f, arguments); - } catch (a) { - throw dust.log(a, ERROR), a; - } - }, g.__dustBody = !!h.__dustBody, g) : (void 0 === h && dust.log("Cannot find reference `{" + b.join(".") + "}` in template `" + this.getTemplateName() + "`", INFO), - h); - }, Context.prototype.getPath = function(a, b) { - return this._get(a, b); - }, Context.prototype.push = function(a, b, c) { - return void 0 === a ? (dust.log("Not pushing an undefined variable onto the context", INFO), - this) : this.rebase(new Stack(a, this.stack, b, c)); - }, Context.prototype.pop = function() { - var a = this.current(); - return this.stack = this.stack && this.stack.tail, a; - }, Context.prototype.rebase = function(a) { - return new Context(a, this.global, this.options, this.blocks, this.getTemplateName()); - }, Context.prototype.clone = function() { - var a = this.rebase(); - return a.stack = this.stack, a; - }, Context.prototype.current = function() { - return this.stack && this.stack.head; - }, Context.prototype.getBlock = function(a) { - var b, c, d; - if ("function" == typeof a && (a = a(new Chunk(), this).data.join("")), b = this.blocks, - !b) return dust.log("No blocks for context `" + a + "` in template `" + this.getTemplateName() + "`", DEBUG), - !1; - for (c = b.length; c--; ) if (d = b[c][a]) return d; - return dust.log("Malformed template `" + this.getTemplateName() + "` was missing one or more blocks."), - !1; - }, Context.prototype.shiftBlocks = function(a) { - var b, c = this.blocks; - return a ? (b = c ? c.concat([ a ]) : [ a ], new Context(this.stack, this.global, this.options, b, this.getTemplateName())) : this; - }, Context.prototype.resolve = function(a) { - var b; - return "function" != typeof a ? a : (b = new Chunk().render(a, this), b instanceof Chunk ? b.data.join("") : b); - }, Context.prototype.getTemplateName = function() { - return this.templateName; - }, Stub.prototype.flush = function() { - for (var a = this.head; a; ) { - if (!a.flushable) return a.error ? (this.callback(a.error), dust.log("Rendering failed with error `" + a.error + "`", ERROR), - void (this.flush = EMPTY_FUNC)) : void 0; - this.out += a.data.join(""), a = a.next, this.head = a; - } - this.callback(null, this.out); - }, Stream.prototype.flush = function() { - for (var a = this.head; a; ) { - if (!a.flushable) return a.error ? (this.emit("error", a.error), this.emit("end"), - dust.log("Streaming failed with error `" + a.error + "`", ERROR), void (this.flush = EMPTY_FUNC)) : void 0; - this.emit("data", a.data.join("")), a = a.next, this.head = a; - } - this.emit("end"); - }, Stream.prototype.emit = function(a, b) { - var c, d, e = this.events || {}, f = e[a] || []; - if (!f.length) return dust.log("Stream broadcasting, but no listeners for `" + a + "`", DEBUG), - !1; - for (f = f.slice(0), c = 0, d = f.length; d > c; c++) f[c](b); - return !0; - }, Stream.prototype.on = function(a, b) { - var c = this.events = this.events || {}, d = c[a] = c[a] || []; - return "function" != typeof b ? dust.log("No callback function provided for `" + a + "` event listener", WARN) : d.push(b), - this; - }, Stream.prototype.pipe = function(a) { - if ("function" != typeof a.write || "function" != typeof a.end) return dust.log("Incompatible stream passed to `pipe`", WARN), - this; - var b = !1; - return "function" == typeof a.emit && a.emit("pipe", this), "function" == typeof a.on && a.on("error", function() { - b = !0; - }), this.on("data", function(c) { - if (!b) try { - a.write(c, "utf8"); - } catch (d) { - dust.log(d, ERROR); - } - }).on("end", function() { - if (!b) try { - a.end(), b = !0; - } catch (c) { - dust.log(c, ERROR); - } - }); - }, Chunk.prototype.write = function(a) { - var b = this.taps; - return b && (a = b.go(a)), this.data.push(a), this; - }, Chunk.prototype.end = function(a) { - return a && this.write(a), this.flushable = !0, this.root.flush(), this; - }, Chunk.prototype.map = function(a) { - var b = new Chunk(this.root, this.next, this.taps), c = new Chunk(this.root, b, this.taps); - this.next = c, this.flushable = !0; - try { - a(c); - } catch (d) { - dust.log(d, ERROR), c.setError(d); - } - return b; - }, Chunk.prototype.tap = function(a) { - var b = this.taps; - return this.taps = b ? b.push(a) : new Tap(a), this; - }, Chunk.prototype.untap = function() { - return this.taps = this.taps.tail, this; - }, Chunk.prototype.render = function(a, b) { - return a(this, b); - }, Chunk.prototype.reference = function(a, b, c, d) { - return "function" == typeof a ? (a = a.apply(b.current(), [ this, b, null, { - auto: c, - filters: d - } ]), a instanceof Chunk ? a : this.reference(a, b, c, d)) : dust.isThenable(a) ? this.await(a, b, null, c, d) : dust.isStreamable(a) ? this.stream(a, b, null, c, d) : dust.isEmpty(a) ? this : this.write(dust.filter(a, c, d, b)); - }, Chunk.prototype.section = function(a, b, c, d) { - var e, f, g, h = c.block, i = c["else"], j = this; - if ("function" == typeof a && !dust.isTemplateFn(a)) { - try { - a = a.apply(b.current(), [ this, b, c, d ]); - } catch (k) { - return dust.log(k, ERROR), this.setError(k); - } - if (a instanceof Chunk) return a; - } - if (dust.isEmptyObject(c)) return j; - if (dust.isEmptyObject(d) || (b = b.push(d)), dust.isArray(a)) { - if (h) { - if (f = a.length, f > 0) { - for (g = b.stack && b.stack.head || {}, g.$len = f, e = 0; f > e; e++) g.$idx = e, - j = h(j, b.push(a[e], e, f)); - return g.$idx = void 0, g.$len = void 0, j; - } - if (i) return i(this, b); - } - } else { - if (dust.isThenable(a)) return this.await(a, b, c); - if (dust.isStreamable(a)) return this.stream(a, b, c); - if (a === !0) { - if (h) return h(this, b); - } else if (a || 0 === a) { - if (h) return h(this, b.push(a)); - } else if (i) return i(this, b); - } - return dust.log("Section without corresponding key in template `" + b.getTemplateName() + "`", DEBUG), - this; - }, Chunk.prototype.exists = function(a, b, c) { - var d = c.block, e = c["else"]; - if (dust.isEmpty(a)) { - if (e) return e(this, b); - } else { - if (d) return d(this, b); - dust.log("No block for exists check in template `" + b.getTemplateName() + "`", DEBUG); - } - return this; - }, Chunk.prototype.notexists = function(a, b, c) { - var d = c.block, e = c["else"]; - if (dust.isEmpty(a)) { - if (d) return d(this, b); - dust.log("No block for not-exists check in template `" + b.getTemplateName() + "`", DEBUG); - } else if (e) return e(this, b); - return this; - }, Chunk.prototype.block = function(a, b, c) { - var d = a || c.block; - return d ? d(this, b) : this; - }, Chunk.prototype.partial = function(a, b, c, d) { - var e; - return void 0 === d && (d = c, c = b), dust.isEmptyObject(d) || (c = c.clone(), - e = c.pop(), c = c.push(d).push(e)), dust.isTemplateFn(a) ? this.capture(a, b, function(a, b) { - c.templateName = a, load(a, b, c).end(); - }) : (c.templateName = a, load(a, this, c)); - }, Chunk.prototype.helper = function(a, b, c, d, e) { - var f, g = this, h = d.filters; - if (void 0 === e && (e = "h"), !dust.helpers[a]) return dust.log("Helper `" + a + "` does not exist", WARN), - g; - try { - return f = dust.helpers[a](g, b, c, d), f instanceof Chunk ? f : ("string" == typeof h && (h = h.split("|")), - dust.isEmptyObject(c) ? g.reference(f, b, e, h) : g.section(f, b, c, d)); - } catch (i) { - return dust.log("Error in helper `" + a + "`: " + i.message, ERROR), g.setError(i); - } - }, Chunk.prototype.await = function(a, b, c, d, e) { - return this.map(function(f) { - a.then(function(a) { - f = c ? f.section(a, b, c) : f.reference(a, b, d, e), f.end(); - }, function(a) { - var d = c && c.error; - d ? f.render(d, b.push(a)).end() : (dust.log("Unhandled promise rejection in `" + b.getTemplateName() + "`", INFO), - f.end()); - }); - }); - }, Chunk.prototype.stream = function(a, b, c, d, e) { - var f = c && c.block, g = c && c.error; - return this.map(function(h) { - var i = !1; - a.on("data", function(a) { - i || (f ? h = h.map(function(c) { - c.render(f, b.push(a)).end(); - }) : c || (h = h.reference(a, b, d, e))); - }).on("error", function(a) { - i || (g ? h.render(g, b.push(a)) : dust.log("Unhandled stream error in `" + b.getTemplateName() + "`", INFO), - i || (i = !0, h.end())); - }).on("end", function() { - i || (i = !0, h.end()); - }); - }); - }, Chunk.prototype.capture = function(a, b, c) { - return this.map(function(d) { - var e = new Stub(function(a, b) { - a ? d.setError(a) : c(b, d); - }); - a(e.head, b).end(); - }); - }, Chunk.prototype.setError = function(a) { - return this.error = a, this.root.flush(), this; - }; - for (var f in Chunk.prototype) dust._aliases[f] && (Chunk.prototype[dust._aliases[f]] = Chunk.prototype[f]); - Tap.prototype.push = function(a) { - return new Tap(a, this); - }, Tap.prototype.go = function(a) { - for (var b = this; b; ) a = b.head(a), b = b.tail; - return a; - }; - var HCHARS = /[&<>"']/, AMP = /&/g, LT = /</g, GT = />/g, QUOT = /\"/g, SQUOT = /\'/g; - dust.escapeHtml = function(a) { - return "string" == typeof a || a && "function" == typeof a.toString ? ("string" != typeof a && (a = a.toString()), - HCHARS.test(a) ? a.replace(AMP, "&").replace(LT, "<").replace(GT, ">").replace(QUOT, """).replace(SQUOT, "'") : a) : a; - }; - var BS = /\\/g, FS = /\//g, CR = /\r/g, LS = /\u2028/g, PS = /\u2029/g, NL = /\n/g, LF = /\f/g, SQ = /'/g, DQ = /"/g, TB = /\t/g; - return dust.escapeJs = function(a) { - return "string" == typeof a ? a.replace(BS, "\\\\").replace(FS, "\\/").replace(DQ, '\\"').replace(SQ, "\\'").replace(CR, "\\r").replace(LS, "\\u2028").replace(PS, "\\u2029").replace(NL, "\\n").replace(LF, "\\f").replace(TB, "\\t") : a; - }, dust.escapeJSON = function(a) { - return JSON ? JSON.stringify(a).replace(LS, "\\u2028").replace(PS, "\\u2029").replace(LT, "\\u003c") : (dust.log("JSON is undefined; could not escape `" + a + "`", WARN), - a); - }, dust; -}), function(a, b) { - "function" == typeof define && define.amd && define.amd.dust === !0 ? define("dust.parse", [ "dust.core" ], function(dust) { - return b(dust).parse; - }) : "object" == typeof exports ? module.exports = b(require("./dust")) : b(a.dust); -}(this, function(dust) { - var a = function() { - function a(a, b) { - function c() { - this.constructor = a; - } - c.prototype = b.prototype, a.prototype = new c(); - } - function b(a, b, c, d, e, f) { - this.message = a, this.expected = b, this.found = c, this.offset = d, this.line = e, - this.column = f, this.name = "SyntaxError"; - } - function c(a) { - function c() { - return f(wc).line; - } - function d() { - return f(wc).column; - } - function e(a) { - throw h(a, null, wc); - } - function f(b) { - function c(b, c, d) { - var e, f; - for (e = c; d > e; e++) f = a.charAt(e), "\n" === f ? (b.seenCR || b.line++, b.column = 1, - b.seenCR = !1) : "\r" === f || "\u2028" === f || "\u2029" === f ? (b.line++, b.column = 1, - b.seenCR = !0) : (b.column++, b.seenCR = !1); - } - return xc !== b && (xc > b && (xc = 0, yc = { - line: 1, - column: 1, - seenCR: !1 - }), c(yc, xc, b), xc = b), yc; - } - function g(a) { - zc > vc || (vc > zc && (zc = vc, Ac = []), Ac.push(a)); - } - function h(c, d, e) { - function g(a) { - var b = 1; - for (a.sort(function(a, b) { - return a.description < b.description ? -1 : a.description > b.description ? 1 : 0; - }); b < a.length; ) a[b - 1] === a[b] ? a.splice(b, 1) : b++; - } - function h(a, b) { - function c(a) { - function b(a) { - return a.charCodeAt(0).toString(16).toUpperCase(); - } - return a.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\x08/g, "\\b").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\f/g, "\\f").replace(/\r/g, "\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(a) { - return "\\x0" + b(a); - }).replace(/[\x10-\x1F\x80-\xFF]/g, function(a) { - return "\\x" + b(a); - }).replace(/[\u0180-\u0FFF]/g, function(a) { - return "\\u0" + b(a); - }).replace(/[\u1080-\uFFFF]/g, function(a) { - return "\\u" + b(a); - }); - } - var d, e, f, g = new Array(a.length); - for (f = 0; f < a.length; f++) g[f] = a[f].description; - return d = a.length > 1 ? g.slice(0, -1).join(", ") + " or " + g[a.length - 1] : g[0], - e = b ? '"' + c(b) + '"' : "end of input", "Expected " + d + " but " + e + " found."; - } - var i = f(e), j = e < a.length ? a.charAt(e) : null; - return null !== d && g(d), new b(null !== c ? c : h(d, j), d, j, e, i.line, i.column); - } - function i() { - var a; - return a = j(); - } - function j() { - var a, b, c; - for (a = vc, b = [], c = k(); c !== X; ) b.push(c), c = k(); - return b !== X && (wc = a, b = $(b)), a = b; - } - function k() { - var a; - return a = K(), a === X && (a = L(), a === X && (a = l(), a === X && (a = s(), a === X && (a = u(), - a === X && (a = r(), a === X && (a = H())))))), a; - } - function l() { - var b, c, d, e, f, h, i, k; - if (Bc++, b = vc, c = m(), c !== X) { - for (d = [], e = S(); e !== X; ) d.push(e), e = S(); - d !== X ? (e = O(), e !== X ? (f = j(), f !== X ? (h = q(), h !== X ? (i = n(), - i === X && (i = ba), i !== X ? (wc = vc, k = ca(c, f, h, i), k = k ? da : aa, k !== X ? (wc = b, - c = ea(c, f, h, i), b = c) : (vc = b, b = aa)) : (vc = b, b = aa)) : (vc = b, b = aa)) : (vc = b, - b = aa)) : (vc = b, b = aa)) : (vc = b, b = aa); - } else vc = b, b = aa; - if (b === X) if (b = vc, c = m(), c !== X) { - for (d = [], e = S(); e !== X; ) d.push(e), e = S(); - d !== X ? (47 === a.charCodeAt(vc) ? (e = fa, vc++) : (e = X, 0 === Bc && g(ga)), - e !== X ? (f = O(), f !== X ? (wc = b, c = ha(c), b = c) : (vc = b, b = aa)) : (vc = b, - b = aa)) : (vc = b, b = aa); - } else vc = b, b = aa; - return Bc--, b === X && (c = X, 0 === Bc && g(_)), b; - } - function m() { - var b, c, d, e, f, h, i; - if (b = vc, c = N(), c !== X) if (ia.test(a.charAt(vc)) ? (d = a.charAt(vc), vc++) : (d = X, - 0 === Bc && g(ja)), d !== X) { - for (e = [], f = S(); f !== X; ) e.push(f), f = S(); - e !== X ? (f = v(), f !== X ? (h = o(), h !== X ? (i = p(), i !== X ? (wc = b, c = ka(d, f, h, i), - b = c) : (vc = b, b = aa)) : (vc = b, b = aa)) : (vc = b, b = aa)) : (vc = b, b = aa); - } else vc = b, b = aa; else vc = b, b = aa; - return b; - } - function n() { - var b, c, d, e, f, h, i; - if (Bc++, b = vc, c = N(), c !== X) if (47 === a.charCodeAt(vc) ? (d = fa, vc++) : (d = X, - 0 === Bc && g(ga)), d !== X) { - for (e = [], f = S(); f !== X; ) e.push(f), f = S(); - if (e !== X) if (f = v(), f !== X) { - for (h = [], i = S(); i !== X; ) h.push(i), i = S(); - h !== X ? (i = O(), i !== X ? (wc = b, c = ma(f), b = c) : (vc = b, b = aa)) : (vc = b, - b = aa); - } else vc = b, b = aa; else vc = b, b = aa; - } else vc = b, b = aa; else vc = b, b = aa; - return Bc--, b === X && (c = X, 0 === Bc && g(la)), b; - } - function o() { - var b, c, d, e; - return b = vc, c = vc, 58 === a.charCodeAt(vc) ? (d = na, vc++) : (d = X, 0 === Bc && g(oa)), - d !== X ? (e = v(), e !== X ? (wc = c, d = pa(e), c = d) : (vc = c, c = aa)) : (vc = c, - c = aa), c === X && (c = ba), c !== X && (wc = b, c = qa(c)), b = c; - } - function p() { - var b, c, d, e, f, h, i; - if (Bc++, b = vc, c = [], d = vc, e = [], f = S(), f !== X) for (;f !== X; ) e.push(f), - f = S(); else e = aa; - for (e !== X ? (f = C(), f !== X ? (61 === a.charCodeAt(vc) ? (h = sa, vc++) : (h = X, - 0 === Bc && g(ta)), h !== X ? (i = w(), i === X && (i = v(), i === X && (i = F())), - i !== X ? (wc = d, e = ua(f, i), d = e) : (vc = d, d = aa)) : (vc = d, d = aa)) : (vc = d, - d = aa)) : (vc = d, d = aa); d !== X; ) { - if (c.push(d), d = vc, e = [], f = S(), f !== X) for (;f !== X; ) e.push(f), f = S(); else e = aa; - e !== X ? (f = C(), f !== X ? (61 === a.charCodeAt(vc) ? (h = sa, vc++) : (h = X, - 0 === Bc && g(ta)), h !== X ? (i = w(), i === X && (i = v(), i === X && (i = F())), - i !== X ? (wc = d, e = ua(f, i), d = e) : (vc = d, d = aa)) : (vc = d, d = aa)) : (vc = d, - d = aa)) : (vc = d, d = aa); - } - return c !== X && (wc = b, c = va(c)), b = c, Bc--, b === X && (c = X, 0 === Bc && g(ra)), - b; - } - function q() { - var b, c, d, e, f, h, i, k; - for (Bc++, b = vc, c = [], d = vc, e = N(), e !== X ? (58 === a.charCodeAt(vc) ? (f = na, - vc++) : (f = X, 0 === Bc && g(oa)), f !== X ? (h = C(), h !== X ? (i = O(), i !== X ? (k = j(), - k !== X ? (wc = d, e = ua(h, k), d = e) : (vc = d, d = aa)) : (vc = d, d = aa)) : (vc = d, - d = aa)) : (vc = d, d = aa)) : (vc = d, d = aa); d !== X; ) c.push(d), d = vc, e = N(), - e !== X ? (58 === a.charCodeAt(vc) ? (f = na, vc++) : (f = X, 0 === Bc && g(oa)), - f !== X ? (h = C(), h !== X ? (i = O(), i !== X ? (k = j(), k !== X ? (wc = d, e = ua(h, k), - d = e) : (vc = d, d = aa)) : (vc = d, d = aa)) : (vc = d, d = aa)) : (vc = d, d = aa)) : (vc = d, - d = aa); - return c !== X && (wc = b, c = xa(c)), b = c, Bc--, b === X && (c = X, 0 === Bc && g(wa)), - b; - } - function r() { - var a, b, c, d, e; - return Bc++, a = vc, b = N(), b !== X ? (c = v(), c !== X ? (d = t(), d !== X ? (e = O(), - e !== X ? (wc = a, b = za(c, d), a = b) : (vc = a, a = aa)) : (vc = a, a = aa)) : (vc = a, - a = aa)) : (vc = a, a = aa), Bc--, a === X && (b = X, 0 === Bc && g(ya)), a; - } - function s() { - var b, c, d, e, f, h, i, j, k, l; - if (Bc++, b = vc, c = N(), c !== X) if (62 === a.charCodeAt(vc) ? (d = Ba, vc++) : (d = X, - 0 === Bc && g(Ca)), d === X && (43 === a.charCodeAt(vc) ? (d = Da, vc++) : (d = X, - 0 === Bc && g(Ea))), d !== X) { - for (e = [], f = S(); f !== X; ) e.push(f), f = S(); - if (e !== X) if (f = vc, h = C(), h !== X && (wc = f, h = Fa(h)), f = h, f === X && (f = F()), - f !== X) if (h = o(), h !== X) if (i = p(), i !== X) { - for (j = [], k = S(); k !== X; ) j.push(k), k = S(); - j !== X ? (47 === a.charCodeAt(vc) ? (k = fa, vc++) : (k = X, 0 === Bc && g(ga)), - k !== X ? (l = O(), l !== X ? (wc = b, c = Ga(d, f, h, i), b = c) : (vc = b, b = aa)) : (vc = b, - b = aa)) : (vc = b, b = aa); - } else vc = b, b = aa; else vc = b, b = aa; else vc = b, b = aa; else vc = b, b = aa; - } else vc = b, b = aa; else vc = b, b = aa; - return Bc--, b === X && (c = X, 0 === Bc && g(Aa)), b; - } - function t() { - var b, c, d, e, f; - for (Bc++, b = vc, c = [], d = vc, 124 === a.charCodeAt(vc) ? (e = Ia, vc++) : (e = X, - 0 === Bc && g(Ja)), e !== X ? (f = C(), f !== X ? (wc = d, e = pa(f), d = e) : (vc = d, - d = aa)) : (vc = d, d = aa); d !== X; ) c.push(d), d = vc, 124 === a.charCodeAt(vc) ? (e = Ia, - vc++) : (e = X, 0 === Bc && g(Ja)), e !== X ? (f = C(), f !== X ? (wc = d, e = pa(f), - d = e) : (vc = d, d = aa)) : (vc = d, d = aa); - return c !== X && (wc = b, c = Ka(c)), b = c, Bc--, b === X && (c = X, 0 === Bc && g(Ha)), - b; - } - function u() { - var b, c, d, e, f; - return Bc++, b = vc, c = N(), c !== X ? (126 === a.charCodeAt(vc) ? (d = Ma, vc++) : (d = X, - 0 === Bc && g(Na)), d !== X ? (e = C(), e !== X ? (f = O(), f !== X ? (wc = b, c = Oa(e), - b = c) : (vc = b, b = aa)) : (vc = b, b = aa)) : (vc = b, b = aa)) : (vc = b, b = aa), - Bc--, b === X && (c = X, 0 === Bc && g(La)), b; - } - function v() { - var a, b; - return Bc++, a = vc, b = B(), b !== X && (wc = a, b = Qa(b)), a = b, a === X && (a = vc, - b = C(), b !== X && (wc = a, b = Ra(b)), a = b), Bc--, a === X && (b = X, 0 === Bc && g(Pa)), - a; - } - function w() { - var a, b; - return Bc++, a = vc, b = x(), b === X && (b = A()), b !== X && (wc = a, b = Ta(b)), - a = b, Bc--, a === X && (b = X, 0 === Bc && g(Sa)), a; - } - function x() { - var b, c, d, e; - return Bc++, b = vc, c = A(), c !== X ? (46 === a.charCodeAt(vc) ? (d = Va, vc++) : (d = X, - 0 === Bc && g(Wa)), d !== X ? (e = y(), e !== X ? (wc = b, c = Xa(c, e), b = c) : (vc = b, - b = aa)) : (vc = b, b = aa)) : (vc = b, b = aa), Bc--, b === X && (c = X, 0 === Bc && g(Ua)), - b; - } - function y() { - var b, c, d; - if (Bc++, b = vc, c = [], Za.test(a.charAt(vc)) ? (d = a.charAt(vc), vc++) : (d = X, - 0 === Bc && g($a)), d !== X) for (;d !== X; ) c.push(d), Za.test(a.charAt(vc)) ? (d = a.charAt(vc), - vc++) : (d = X, 0 === Bc && g($a)); else c = aa; - return c !== X && (wc = b, c = _a(c)), b = c, Bc--, b === X && (c = X, 0 === Bc && g(Ya)), - b; - } - function z() { - var b, c, d; - return Bc++, b = vc, 45 === a.charCodeAt(vc) ? (c = bb, vc++) : (c = X, 0 === Bc && g(cb)), - c !== X ? (d = y(), d !== X ? (wc = b, c = db(c, d), b = c) : (vc = b, b = aa)) : (vc = b, - b = aa), Bc--, b === X && (c = X, 0 === Bc && g(ab)), b; - } - function A() { - var a, b; - return Bc++, a = z(), a === X && (a = y()), Bc--, a === X && (b = X, 0 === Bc && g(eb)), - a; - } - function B() { - var b, c, d, e; - if (Bc++, b = vc, c = C(), c === X && (c = ba), c !== X) { - if (d = [], e = E(), e === X && (e = D()), e !== X) for (;e !== X; ) d.push(e), - e = E(), e === X && (e = D()); else d = aa; - d !== X ? (wc = b, c = gb(c, d), b = c) : (vc = b, b = aa); - } else vc = b, b = aa; - if (b === X) if (b = vc, 46 === a.charCodeAt(vc) ? (c = Va, vc++) : (c = X, 0 === Bc && g(Wa)), - c !== X) { - for (d = [], e = E(), e === X && (e = D()); e !== X; ) d.push(e), e = E(), e === X && (e = D()); - d !== X ? (wc = b, c = hb(d), b = c) : (vc = b, b = aa); - } else vc = b, b = aa; - return Bc--, b === X && (c = X, 0 === Bc && g(fb)), b; - } - function C() { - var b, c, d, e; - if (Bc++, b = vc, jb.test(a.charAt(vc)) ? (c = a.charAt(vc), vc++) : (c = X, 0 === Bc && g(kb)), - c !== X) { - for (d = [], lb.test(a.charAt(vc)) ? (e = a.charAt(vc), vc++) : (e = X, 0 === Bc && g(mb)); e !== X; ) d.push(e), - lb.test(a.charAt(vc)) ? (e = a.charAt(vc), vc++) : (e = X, 0 === Bc && g(mb)); - d !== X ? (wc = b, c = nb(c, d), b = c) : (vc = b, b = aa); - } else vc = b, b = aa; - return Bc--, b === X && (c = X, 0 === Bc && g(ib)), b; - } - function D() { - var b, c, d, e, f, h; - if (Bc++, b = vc, c = vc, d = P(), d !== X) { - if (e = vc, f = [], Za.test(a.charAt(vc)) ? (h = a.charAt(vc), vc++) : (h = X, 0 === Bc && g($a)), - h !== X) for (;h !== X; ) f.push(h), Za.test(a.charAt(vc)) ? (h = a.charAt(vc), - vc++) : (h = X, 0 === Bc && g($a)); else f = aa; - f !== X && (wc = e, f = pb(f)), e = f, e === X && (e = v()), e !== X ? (f = Q(), - f !== X ? (wc = c, d = qb(e), c = d) : (vc = c, c = aa)) : (vc = c, c = aa); - } else vc = c, c = aa; - return c !== X ? (d = E(), d === X && (d = ba), d !== X ? (wc = b, c = rb(c, d), - b = c) : (vc = b, b = aa)) : (vc = b, b = aa), Bc--, b === X && (c = X, 0 === Bc && g(ob)), - b; - } - function E() { - var b, c, d, e, f; - if (Bc++, b = vc, c = [], d = vc, 46 === a.charCodeAt(vc) ? (e = Va, vc++) : (e = X, - 0 === Bc && g(Wa)), e !== X ? (f = C(), f !== X ? (wc = d, e = tb(f), d = e) : (vc = d, - d = aa)) : (vc = d, d = aa), d !== X) for (;d !== X; ) c.push(d), d = vc, 46 === a.charCodeAt(vc) ? (e = Va, - vc++) : (e = X, 0 === Bc && g(Wa)), e !== X ? (f = C(), f !== X ? (wc = d, e = tb(f), - d = e) : (vc = d, d = aa)) : (vc = d, d = aa); else c = aa; - return c !== X ? (d = D(), d === X && (d = ba), d !== X ? (wc = b, c = ub(c, d), - b = c) : (vc = b, b = aa)) : (vc = b, b = aa), Bc--, b === X && (c = X, 0 === Bc && g(sb)), - b; - } - function F() { - var b, c, d, e; - if (Bc++, b = vc, 34 === a.charCodeAt(vc) ? (c = wb, vc++) : (c = X, 0 === Bc && g(xb)), - c !== X ? (34 === a.charCodeAt(vc) ? (d = wb, vc++) : (d = X, 0 === Bc && g(xb)), - d !== X ? (wc = b, c = yb(), b = c) : (vc = b, b = aa)) : (vc = b, b = aa), b === X && (b = vc, - 34 === a.charCodeAt(vc) ? (c = wb, vc++) : (c = X, 0 === Bc && g(xb)), c !== X ? (d = I(), - d !== X ? (34 === a.charCodeAt(vc) ? (e = wb, vc++) : (e = X, 0 === Bc && g(xb)), - e !== X ? (wc = b, c = zb(d), b = c) : (vc = b, b = aa)) : (vc = b, b = aa)) : (vc = b, - b = aa), b === X)) if (b = vc, 34 === a.charCodeAt(vc) ? (c = wb, vc++) : (c = X, - 0 === Bc && g(xb)), c !== X) { - if (d = [], e = G(), e !== X) for (;e !== X; ) d.push(e), e = G(); else d = aa; - d !== X ? (34 === a.charCodeAt(vc) ? (e = wb, vc++) : (e = X, 0 === Bc && g(xb)), - e !== X ? (wc = b, c = Ab(d), b = c) : (vc = b, b = aa)) : (vc = b, b = aa); - } else vc = b, b = aa; - return Bc--, b === X && (c = X, 0 === Bc && g(vb)), b; - } - function G() { - var a, b; - return a = u(), a === X && (a = r(), a === X && (a = vc, b = I(), b !== X && (wc = a, - b = Bb(b)), a = b)), a; - } - function H() { - var b, c, d, e, f, h, i, j; - if (Bc++, b = vc, c = R(), c !== X) { - for (d = [], e = S(); e !== X; ) d.push(e), e = S(); - d !== X ? (wc = b, c = Db(c, d), b = c) : (vc = b, b = aa); - } else vc = b, b = aa; - if (b === X) { - if (b = vc, c = [], d = vc, e = vc, Bc++, f = M(), Bc--, f === X ? e = da : (vc = e, - e = aa), e !== X ? (f = vc, Bc++, h = K(), Bc--, h === X ? f = da : (vc = f, f = aa), - f !== X ? (h = vc, Bc++, i = L(), Bc--, i === X ? h = da : (vc = h, h = aa), h !== X ? (i = vc, - Bc++, j = R(), Bc--, j === X ? i = da : (vc = i, i = aa), i !== X ? (a.length > vc ? (j = a.charAt(vc), - vc++) : (j = X, 0 === Bc && g(Eb)), j !== X ? (wc = d, e = Fb(j), d = e) : (vc = d, - d = aa)) : (vc = d, d = aa)) : (vc = d, d = aa)) : (vc = d, d = aa)) : (vc = d, - d = aa), d !== X) for (;d !== X; ) c.push(d), d = vc, e = vc, Bc++, f = M(), Bc--, - f === X ? e = da : (vc = e, e = aa), e !== X ? (f = vc, Bc++, h = K(), Bc--, h === X ? f = da : (vc = f, - f = aa), f !== X ? (h = vc, Bc++, i = L(), Bc--, i === X ? h = da : (vc = h, h = aa), - h !== X ? (i = vc, Bc++, j = R(), Bc--, j === X ? i = da : (vc = i, i = aa), i !== X ? (a.length > vc ? (j = a.charAt(vc), - vc++) : (j = X, 0 === Bc && g(Eb)), j !== X ? (wc = d, e = Fb(j), d = e) : (vc = d, - d = aa)) : (vc = d, d = aa)) : (vc = d, d = aa)) : (vc = d, d = aa)) : (vc = d, - d = aa); else c = aa; - c !== X && (wc = b, c = Gb(c)), b = c; - } - return Bc--, b === X && (c = X, 0 === Bc && g(Cb)), b; - } - function I() { - var b, c, d, e, f; - if (Bc++, b = vc, c = [], d = vc, e = vc, Bc++, f = M(), Bc--, f === X ? e = da : (vc = e, - e = aa), e !== X ? (f = J(), f === X && (Ib.test(a.charAt(vc)) ? (f = a.charAt(vc), - vc++) : (f = X, 0 === Bc && g(Jb))), f !== X ? (wc = d, e = Fb(f), d = e) : (vc = d, - d = aa)) : (vc = d, d = aa), d !== X) for (;d !== X; ) c.push(d), d = vc, e = vc, - Bc++, f = M(), Bc--, f === X ? e = da : (vc = e, e = aa), e !== X ? (f = J(), f === X && (Ib.test(a.charAt(vc)) ? (f = a.charAt(vc), - vc++) : (f = X, 0 === Bc && g(Jb))), f !== X ? (wc = d, e = Fb(f), d = e) : (vc = d, - d = aa)) : (vc = d, d = aa); else c = aa; - return c !== X && (wc = b, c = Kb(c)), b = c, Bc--, b === X && (c = X, 0 === Bc && g(Hb)), - b; - } - function J() { - var b, c; - return b = vc, a.substr(vc, 2) === Lb ? (c = Lb, vc += 2) : (c = X, 0 === Bc && g(Mb)), - c !== X && (wc = b, c = Nb()), b = c; - } - function K() { - var b, c, d, e, f, h; - if (Bc++, b = vc, a.substr(vc, 2) === Pb ? (c = Pb, vc += 2) : (c = X, 0 === Bc && g(Qb)), - c !== X) { - for (d = [], e = vc, f = vc, Bc++, a.substr(vc, 2) === Rb ? (h = Rb, vc += 2) : (h = X, - 0 === Bc && g(Sb)), Bc--, h === X ? f = da : (vc = f, f = aa), f !== X ? (a.length > vc ? (h = a.charAt(vc), - vc++) : (h = X, 0 === Bc && g(Eb)), h !== X ? (wc = e, f = Tb(h), e = f) : (vc = e, - e = aa)) : (vc = e, e = aa); e !== X; ) d.push(e), e = vc, f = vc, Bc++, a.substr(vc, 2) === Rb ? (h = Rb, - vc += 2) : (h = X, 0 === Bc && g(Sb)), Bc--, h === X ? f = da : (vc = f, f = aa), - f !== X ? (a.length > vc ? (h = a.charAt(vc), vc++) : (h = X, 0 === Bc && g(Eb)), - h !== X ? (wc = e, f = Tb(h), e = f) : (vc = e, e = aa)) : (vc = e, e = aa); - d !== X ? (a.substr(vc, 2) === Rb ? (e = Rb, vc += 2) : (e = X, 0 === Bc && g(Sb)), - e !== X ? (wc = b, c = Ub(d), b = c) : (vc = b, b = aa)) : (vc = b, b = aa); - } else vc = b, b = aa; - return Bc--, b === X && (c = X, 0 === Bc && g(Ob)), b; - } - function L() { - var b, c, d, e, f, h; - if (Bc++, b = vc, a.substr(vc, 2) === Wb ? (c = Wb, vc += 2) : (c = X, 0 === Bc && g(Xb)), - c !== X) { - for (d = [], e = vc, f = vc, Bc++, a.substr(vc, 2) === Yb ? (h = Yb, vc += 2) : (h = X, - 0 === Bc && g(Zb)), Bc--, h === X ? f = da : (vc = f, f = aa), f !== X ? (a.length > vc ? (h = a.charAt(vc), - vc++) : (h = X, 0 === Bc && g(Eb)), h !== X ? (wc = e, f = Fb(h), e = f) : (vc = e, - e = aa)) : (vc = e, e = aa); e !== X; ) d.push(e), e = vc, f = vc, Bc++, a.substr(vc, 2) === Yb ? (h = Yb, - vc += 2) : (h = X, 0 === Bc && g(Zb)), Bc--, h === X ? f = da : (vc = f, f = aa), - f !== X ? (a.length > vc ? (h = a.charAt(vc), vc++) : (h = X, 0 === Bc && g(Eb)), - h !== X ? (wc = e, f = Fb(h), e = f) : (vc = e, e = aa)) : (vc = e, e = aa); - d !== X ? (a.substr(vc, 2) === Yb ? (e = Yb, vc += 2) : (e = X, 0 === Bc && g(Zb)), - e !== X ? (wc = b, c = $b(d), b = c) : (vc = b, b = aa)) : (vc = b, b = aa); - } else vc = b, b = aa; - return Bc--, b === X && (c = X, 0 === Bc && g(Vb)), b; - } - function M() { - var b, c, d, e, f, h, i, j, k, l; - if (b = vc, c = N(), c !== X) { - for (d = [], e = S(); e !== X; ) d.push(e), e = S(); - if (d !== X) if (_b.test(a.charAt(vc)) ? (e = a.charAt(vc), vc++) : (e = X, 0 === Bc && g(ac)), - e !== X) { - for (f = [], h = S(); h !== X; ) f.push(h), h = S(); - if (f !== X) { - if (h = [], i = vc, j = vc, Bc++, k = O(), Bc--, k === X ? j = da : (vc = j, j = aa), - j !== X ? (k = vc, Bc++, l = R(), Bc--, l === X ? k = da : (vc = k, k = aa), k !== X ? (a.length > vc ? (l = a.charAt(vc), - vc++) : (l = X, 0 === Bc && g(Eb)), l !== X ? (j = [ j, k, l ], i = j) : (vc = i, - i = aa)) : (vc = i, i = aa)) : (vc = i, i = aa), i !== X) for (;i !== X; ) h.push(i), - i = vc, j = vc, Bc++, k = O(), Bc--, k === X ? j = da : (vc = j, j = aa), j !== X ? (k = vc, - Bc++, l = R(), Bc--, l === X ? k = da : (vc = k, k = aa), k !== X ? (a.length > vc ? (l = a.charAt(vc), - vc++) : (l = X, 0 === Bc && g(Eb)), l !== X ? (j = [ j, k, l ], i = j) : (vc = i, - i = aa)) : (vc = i, i = aa)) : (vc = i, i = aa); else h = aa; - if (h !== X) { - for (i = [], j = S(); j !== X; ) i.push(j), j = S(); - i !== X ? (j = O(), j !== X ? (c = [ c, d, e, f, h, i, j ], b = c) : (vc = b, b = aa)) : (vc = b, - b = aa); - } else vc = b, b = aa; - } else vc = b, b = aa; - } else vc = b, b = aa; else vc = b, b = aa; - } else vc = b, b = aa; - return b === X && (b = r()), b; - } - function N() { - var b; - return 123 === a.charCodeAt(vc) ? (b = bc, vc++) : (b = X, 0 === Bc && g(cc)), b; - } - function O() { - var b; - return 125 === a.charCodeAt(vc) ? (b = dc, vc++) : (b = X, 0 === Bc && g(ec)), b; - } - function P() { - var b; - return 91 === a.charCodeAt(vc) ? (b = fc, vc++) : (b = X, 0 === Bc && g(gc)), b; - } - function Q() { - var b; - return 93 === a.charCodeAt(vc) ? (b = hc, vc++) : (b = X, 0 === Bc && g(ic)), b; - } - function R() { - var b; - return 10 === a.charCodeAt(vc) ? (b = jc, vc++) : (b = X, 0 === Bc && g(kc)), b === X && (a.substr(vc, 2) === lc ? (b = lc, - vc += 2) : (b = X, 0 === Bc && g(mc)), b === X && (13 === a.charCodeAt(vc) ? (b = nc, - vc++) : (b = X, 0 === Bc && g(oc)), b === X && (8232 === a.charCodeAt(vc) ? (b = pc, - vc++) : (b = X, 0 === Bc && g(qc)), b === X && (8233 === a.charCodeAt(vc) ? (b = rc, - vc++) : (b = X, 0 === Bc && g(sc)))))), b; - } - function S() { - var b; - return tc.test(a.charAt(vc)) ? (b = a.charAt(vc), vc++) : (b = X, 0 === Bc && g(uc)), - b === X && (b = R()), b; - } - function T(a) { - return parseInt(a.join(""), 10); - } - function U(a) { - return a.concat([ [ "line", c() ], [ "col", d() ] ]); - } - var V, W = arguments.length > 1 ? arguments[1] : {}, X = {}, Y = { - start: i - }, Z = i, $ = function(a) { - var b = [ "body" ].concat(a); - return U(b); - }, _ = { - type: "other", - description: "section" - }, aa = X, ba = null, ca = function(a, b, c, d) { - return d && a[1].text === d.text || e("Expected end tag for " + a[1].text + " but it was not found."), - !0; - }, da = void 0, ea = function(a, b, c) { - return c.push([ "param", [ "literal", "block" ], b ]), a.push(c, [ "filters" ]), - U(a); - }, fa = "/", ga = { - type: "literal", - value: "/", - description: '"/"' - }, ha = function(a) { - return a.push([ "bodies" ], [ "filters" ]), U(a); - }, ia = /^[#?\^<+@%]/, ja = { - type: "class", - value: "[#?\\^<+@%]", - description: "[#?\\^<+@%]" - }, ka = function(a, b, c, d) { - return [ a, b, c, d ]; - }, la = { - type: "other", - description: "end tag" - }, ma = function(a) { - return a; - }, na = ":", oa = { - type: "literal", - value: ":", - description: '":"' - }, pa = function(a) { - return a; - }, qa = function(a) { - return a ? [ "context", a ] : [ "context" ]; - }, ra = { - type: "other", - description: "params" - }, sa = "=", ta = { - type: "literal", - value: "=", - description: '"="' - }, ua = function(a, b) { - return [ "param", [ "literal", a ], b ]; - }, va = function(a) { - return [ "params" ].concat(a); - }, wa = { - type: "other", - description: "bodies" - }, xa = function(a) { - return [ "bodies" ].concat(a); - }, ya = { - type: "other", - description: "reference" - }, za = function(a, b) { - return U([ "reference", a, b ]); - }, Aa = { - type: "other", - description: "partial" - }, Ba = ">", Ca = { - type: "literal", - value: ">", - description: '">"' - }, Da = "+", Ea = { - type: "literal", - value: "+", - description: '"+"' - }, Fa = function(a) { - return [ "literal", a ]; - }, Ga = function(a, b, c, d) { - var e = ">" === a ? "partial" : a; - return U([ e, b, c, d ]); - }, Ha = { - type: "other", - description: "filters" - }, Ia = "|", Ja = { - type: "literal", - value: "|", - description: '"|"' - }, Ka = function(a) { - return [ "filters" ].concat(a); - }, La = { - type: "other", - description: "special" - }, Ma = "~", Na = { - type: "literal", - value: "~", - description: '"~"' - }, Oa = function(a) { - return U([ "special", a ]); - }, Pa = { - type: "other", - description: "identifier" - }, Qa = function(a) { - var b = [ "path" ].concat(a); - return b.text = a[1].join(".").replace(/,line,\d+,col,\d+/g, ""), b; - }, Ra = function(a) { - var b = [ "key", a ]; - return b.text = a, b; - }, Sa = { - type: "other", - description: "number" - }, Ta = function(a) { - return [ "literal", a ]; - }, Ua = { - type: "other", - description: "float" - }, Va = ".", Wa = { - type: "literal", - value: ".", - description: '"."' - }, Xa = function(a, b) { - return parseFloat(a + "." + b); - }, Ya = { - type: "other", - description: "unsigned_integer" - }, Za = /^[0-9]/, $a = { - type: "class", - value: "[0-9]", - description: "[0-9]" - }, _a = function(a) { - return T(a); - }, ab = { - type: "other", - description: "signed_integer" - }, bb = "-", cb = { - type: "literal", - value: "-", - description: '"-"' - }, db = function(a, b) { - return -1 * b; - }, eb = { - type: "other", - description: "integer" - }, fb = { - type: "other", - description: "path" - }, gb = function(a, b) { - return b = b[0], a && b ? (b.unshift(a), U([ !1, b ])) : U([ !0, b ]); - }, hb = function(a) { - return U(a.length > 0 ? [ !0, a[0] ] : [ !0, [] ]); - }, ib = { - type: "other", - description: "key" - }, jb = /^[a-zA-Z_$]/, kb = { - type: "class", - value: "[a-zA-Z_$]", - description: "[a-zA-Z_$]" - }, lb = /^[0-9a-zA-Z_$\-]/, mb = { - type: "class", - value: "[0-9a-zA-Z_$\\-]", - description: "[0-9a-zA-Z_$\\-]" - }, nb = function(a, b) { - return a + b.join(""); - }, ob = { - type: "other", - description: "array" - }, pb = function(a) { - return a.join(""); - }, qb = function(a) { - return a; - }, rb = function(a, b) { - return b ? b.unshift(a) : b = [ a ], b; - }, sb = { - type: "other", - description: "array_part" - }, tb = function(a) { - return a; - }, ub = function(a, b) { - return b ? a.concat(b) : a; - }, vb = { - type: "other", - description: "inline" - }, wb = '"', xb = { - type: "literal", - value: '"', - description: '"\\""' - }, yb = function() { - return U([ "literal", "" ]); - }, zb = function(a) { - return U([ "literal", a ]); - }, Ab = function(a) { - return U([ "body" ].concat(a)); - }, Bb = function(a) { - return [ "buffer", a ]; - }, Cb = { - type: "other", - description: "buffer" - }, Db = function(a, b) { - return U([ "format", a, b.join("") ]); - }, Eb = { - type: "any", - description: "any character" - }, Fb = function(a) { - return a; - }, Gb = function(a) { - return U([ "buffer", a.join("") ]); - }, Hb = { - type: "other", - description: "literal" - }, Ib = /^[^"]/, Jb = { - type: "class", - value: '[^"]', - description: '[^"]' - }, Kb = function(a) { - return a.join(""); - }, Lb = '\\"', Mb = { - type: "literal", - value: '\\"', - description: '"\\\\\\""' - }, Nb = function() { - return '"'; - }, Ob = { - type: "other", - description: "raw" - }, Pb = "{`", Qb = { - type: "literal", - value: "{`", - description: '"{`"' - }, Rb = "`}", Sb = { - type: "literal", - value: "`}", - description: '"`}"' - }, Tb = function(a) { - return a; - }, Ub = function(a) { - return U([ "raw", a.join("") ]); - }, Vb = { - type: "other", - description: "comment" - }, Wb = "{!", Xb = { - type: "literal", - value: "{!", - description: '"{!"' - }, Yb = "!}", Zb = { - type: "literal", - value: "!}", - description: '"!}"' - }, $b = function(a) { - return U([ "comment", a.join("") ]); - }, _b = /^[#?\^><+%:@\/~%]/, ac = { - type: "class", - value: "[#?\\^><+%:@\\/~%]", - description: "[#?\\^><+%:@\\/~%]" - }, bc = "{", cc = { - type: "literal", - value: "{", - description: '"{"' - }, dc = "}", ec = { - type: "literal", - value: "}", - description: '"}"' - }, fc = "[", gc = { - type: "literal", - value: "[", - description: '"["' - }, hc = "]", ic = { - type: "literal", - value: "]", - description: '"]"' - }, jc = "\n", kc = { - type: "literal", - value: "\n", - description: '"\\n"' - }, lc = "\r\n", mc = { - type: "literal", - value: "\r\n", - description: '"\\r\\n"' - }, nc = "\r", oc = { - type: "literal", - value: "\r", - description: '"\\r"' - }, pc = "\u2028", qc = { - type: "literal", - value: "\u2028", - description: '"\\u2028"' - }, rc = "\u2029", sc = { - type: "literal", - value: "\u2029", - description: '"\\u2029"' - }, tc = /^[\t\x0B\f \xA0\uFEFF]/, uc = { - type: "class", - value: "[\\t\\x0B\\f \\xA0\\uFEFF]", - description: "[\\t\\x0B\\f \\xA0\\uFEFF]" - }, vc = 0, wc = 0, xc = 0, yc = { - line: 1, - column: 1, - seenCR: !1 - }, zc = 0, Ac = [], Bc = 0; - if ("startRule" in W) { - if (!(W.startRule in Y)) throw new Error("Can't start parsing from rule \"" + W.startRule + '".'); - Z = Y[W.startRule]; - } - if (V = Z(), V !== X && vc === a.length) return V; - throw V !== X && vc < a.length && g({ - type: "end", - description: "end of input" - }), h(null, Ac, zc); - } - return a(b, Error), { - SyntaxError: b, - parse: c - }; - }(); - return dust.parse = a.parse, a; -}), function(a, b) { - "function" == typeof define && define.amd && define.amd.dust === !0 ? define("dust.compile", [ "dust.core", "dust.parse" ], function(dust, a) { - return b(a, dust).compile; - }) : "object" == typeof exports ? module.exports = b(require("./parser").parse, require("./dust")) : b(a.dust.parse, a.dust); -}(this, function(a, dust) { - function b(a) { - var b = {}; - return r.filterNode(b, a); - } - function c(a, b) { - var c, d, e, f = [ b[0] ]; - for (c = 1, d = b.length; d > c; c++) e = r.filterNode(a, b[c]), e && f.push(e); - return f; - } - function d(a, b) { - var c, d, e, f, g = [ b[0] ]; - for (d = 1, e = b.length; e > d; d++) f = r.filterNode(a, b[d]), f && ("buffer" === f[0] || "format" === f[0] ? c ? (c[0] = "buffer" === f[0] ? "buffer" : c[0], - c[1] += f.slice(1, -2).join("")) : (c = f, g.push(f)) : (c = null, g.push(f))); - return g; - } - function e(a, b) { - return [ "buffer", t[b[1]], b[2], b[3] ]; - } - function f(a, b) { - return b; - } - function g() {} - function h(a, b) { - return dust.config.whitespace ? (b.splice(1, 2, b.slice(1, -2).join("")), b) : null; - } - function i(a, b) { - var c, d = { - name: b, - bodies: [], - blocks: {}, - index: 0, - auto: "h" - }, e = dust.escapeJs(b), f = b ? '"' + e + '",' : "", g = "function(dust){", h = r.compileNode(d, a); - return b && (g += 'dust.register("' + e + '",' + h + ");"), g += j(d) + k(d) + "return " + h + "}", - c = "(" + g + "(dust));", dust.config.amd ? "define(" + f + '["dust.core"],' + g + ");" : dust.config.cjs ? "module.exports=function(dust){var tmpl=" + c + "var f=" + q().toString() + ";f.template=tmpl;return f}" : c; - } - function j(a) { - var b, c = [], d = a.blocks; - for (b in d) c.push('"' + b + '":' + d[b]); - return c.length ? (a.blocks = "ctx=ctx.shiftBlocks(blocks);", "var blocks={" + c.join(",") + "};") : (a.blocks = "", - a.blocks); - } - function k(a) { - var b, c, d = [], e = a.bodies, f = a.blocks; - for (b = 0, c = e.length; c > b; b++) d[b] = "function body_" + b + "(chk,ctx){" + f + "return chk" + e[b] + ";}body_" + b + ".__dustBody=!0;"; - return d.join(""); - } - function l(a, b) { - var c, d, e = ""; - for (c = 1, d = b.length; d > c; c++) e += r.compileNode(a, b[c]); - return e; - } - function m(a, b, c) { - return "." + (dust._aliases[c] || c) + "(" + r.compileNode(a, b[1]) + "," + r.compileNode(a, b[2]) + "," + r.compileNode(a, b[4]) + "," + r.compileNode(a, b[3]) + ")"; - } - function n(a) { - return a.replace(u, "\\\\").replace(v, '\\"').replace(w, "\\f").replace(x, "\\n").replace(y, "\\r").replace(z, "\\t"); - } - function o(a, b, c) { - var d = dust.loadSource(dust.compile(a)); - return q(d)(b, c); - } - function p(a, b) { - var c = dust.loadSource(dust.compile(a, b)); - return q(c); - } - function q(a) { - return function(b, c) { - var d = c ? "render" : "stream"; - return dust[d](a, b, c); - }; - } - var r = {}, s = dust.isArray; - r.compile = function(c, d) { - try { - var e = b(a(c)); - return i(e, d); - } catch (f) { - if (!f.line || !f.column) throw f; - throw new SyntaxError(f.message + " At line : " + f.line + ", column : " + f.column); - } - }, r.filterNode = function(a, b) { - return r.optimizers[b[0]](a, b); - }, r.optimizers = { - body: d, - buffer: f, - special: e, - format: h, - reference: c, - "#": c, - "?": c, - "^": c, - "<": c, - "+": c, - "@": c, - "%": c, - partial: c, - context: c, - params: c, - bodies: c, - param: c, - filters: f, - key: f, - path: f, - literal: f, - raw: f, - comment: g, - line: g, - col: g - }, r.pragmas = { - esc: function(a, b, c) { - var d, e = a.auto; - return b || (b = "h"), a.auto = "s" === b ? "" : b, d = l(a, c.block), a.auto = e, - d; - } - }; - var t = { - s: " ", - n: "\n", - r: "\r", - lb: "{", - rb: "}" - }; - r.compileNode = function(a, b) { - return r.nodes[b[0]](a, b); - }, r.nodes = { - body: function(a, b) { - var c = a.index++, d = "body_" + c; - return a.bodies[c] = l(a, b), d; - }, - buffer: function(a, b) { - return ".w(" + A(b[1]) + ")"; - }, - format: function(a, b) { - return ".w(" + A(b[1]) + ")"; - }, - reference: function(a, b) { - return ".f(" + r.compileNode(a, b[1]) + ",ctx," + r.compileNode(a, b[2]) + ")"; - }, - "#": function(a, b) { - return m(a, b, "section"); - }, - "?": function(a, b) { - return m(a, b, "exists"); - }, - "^": function(a, b) { - return m(a, b, "notexists"); - }, - "<": function(a, b) { - for (var c = b[4], d = 1, e = c.length; e > d; d++) { - var f = c[d], g = f[1][1]; - if ("block" === g) return a.blocks[b[1].text] = r.compileNode(a, f[2]), ""; - } - return ""; - }, - "+": function(a, b) { - return "undefined" == typeof b[1].text && "undefined" == typeof b[4] ? ".b(ctx.getBlock(" + r.compileNode(a, b[1]) + ",chk, ctx)," + r.compileNode(a, b[2]) + ", {}," + r.compileNode(a, b[3]) + ")" : ".b(ctx.getBlock(" + A(b[1].text) + ")," + r.compileNode(a, b[2]) + "," + r.compileNode(a, b[4]) + "," + r.compileNode(a, b[3]) + ")"; - }, - "@": function(a, b) { - return ".h(" + A(b[1].text) + "," + r.compileNode(a, b[2]) + "," + r.compileNode(a, b[4]) + "," + r.compileNode(a, b[3]) + "," + r.compileNode(a, b[5]) + ")"; - }, - "%": function(a, b) { - var c, d, e, f, g, h, i, j, k, l = b[1][1]; - if (!r.pragmas[l]) return ""; - for (c = b[4], d = {}, j = 1, k = c.length; k > j; j++) h = c[j], d[h[1][1]] = h[2]; - for (e = b[3], f = {}, j = 1, k = e.length; k > j; j++) i = e[j], f[i[1][1]] = i[2][1]; - return g = b[2][1] ? b[2][1].text : null, r.pragmas[l](a, g, d, f); - }, - partial: function(a, b) { - return ".p(" + r.compileNode(a, b[1]) + ",ctx," + r.compileNode(a, b[2]) + "," + r.compileNode(a, b[3]) + ")"; - }, - context: function(a, b) { - return b[1] ? "ctx.rebase(" + r.compileNode(a, b[1]) + ")" : "ctx"; - }, - params: function(a, b) { - for (var c = [], d = 1, e = b.length; e > d; d++) c.push(r.compileNode(a, b[d])); - return c.length ? "{" + c.join(",") + "}" : "{}"; - }, - bodies: function(a, b) { - for (var c = [], d = 1, e = b.length; e > d; d++) c.push(r.compileNode(a, b[d])); - return "{" + c.join(",") + "}"; - }, - param: function(a, b) { - return r.compileNode(a, b[1]) + ":" + r.compileNode(a, b[2]); - }, - filters: function(a, b) { - for (var c = [], d = 1, e = b.length; e > d; d++) { - var f = b[d]; - c.push('"' + f + '"'); - } - return '"' + a.auto + '"' + (c.length ? ",[" + c.join(",") + "]" : ""); - }, - key: function(a, b) { - return 'ctx.get(["' + b[1] + '"], false)'; - }, - path: function(a, b) { - for (var c = b[1], d = b[2], e = [], f = 0, g = d.length; g > f; f++) e.push(s(d[f]) ? r.compileNode(a, d[f]) : '"' + d[f] + '"'); - return "ctx.getPath(" + c + ", [" + e.join(",") + "])"; - }, - literal: function(a, b) { - return A(b[1]); - }, - raw: function(a, b) { - return ".w(" + A(b[1]) + ")"; - } - }; - var u = /\\/g, v = /"/g, w = /\f/g, x = /\n/g, y = /\r/g, z = /\t/g, A = "undefined" == typeof JSON ? function(a) { - return '"' + n(a) + '"'; - } : JSON.stringify; - return dust.compiler = r, dust.compile = dust.compiler.compile, dust.renderSource = o, - dust.compileFn = p, dust.filterNode = r.filterNode, dust.optimizers = r.optimizers, - dust.pragmas = r.pragmas, dust.compileNode = r.compileNode, dust.nodes = r.nodes, - r; -}), "function" == typeof define && define.amd && define.amd.dust === !0 && define([ "require", "dust.core", "dust.compile" ], function(require, dust) { - return dust.onLoad = function(a, b) { - require([ a ], function() { - b(); - }); - }, dust; -}); - -!function(a, b) { - "function" == typeof define && define.amd && define.amd.dust === !0 ? define([ "dust.core" ], b) : "object" == typeof exports ? (module.exports = b(require("dustjs-linkedin")), - module.exports.registerWith = b) : b(a.dust); -}(this, function(dust) { - function a(a, b, c) { - c = c || "INFO", a = a ? "{@" + a + "}: " : "", dust.log(a + b, c); - } - function b(b) { - k[b] || (a(b, "Deprecation warning: " + b + " is deprecated and will be removed in a future version of dustjs-helpers", "WARN"), - a(null, "For help and a deprecation timeline, see https://github.com/linkedin/dustjs-helpers/wiki/Deprecated-Features#" + b.replace(/\W+/g, ""), "WARN"), - k[b] = !0); - } - function c(a) { - return a.stack.tail && a.stack.tail.head && "undefined" != typeof a.stack.tail.head.__select__; - } - function d(a) { - return c(a) && a.get("__select__"); - } - function e(a, b) { - var c, d = a.stack.head, e = a.rebase(); - a.stack && a.stack.tail && (e.stack = a.stack.tail); - var f = { - isPending: !1, - isResolved: !1, - isDeferredComplete: !1, - deferreds: [] - }; - for (c in b) f[c] = b[c]; - return e.push({ - __select__: f - }).push(d, a.stack.index, a.stack.of); - } - function f(a) { - var b, c; - if (a.isDeferredPending = !0, a.deferreds.length) for (a.isDeferredComplete = !0, - b = 0, c = a.deferreds.length; c > b; b++) a.deferreds[b](); - a.isDeferredPending = !1; - } - function g(a, b) { - return "function" == typeof b ? b.toString().replace(/(^\s+|\s+$)/gm, "").replace(/\n/gm, "").replace(/,\s*/gm, ", ").replace(/\)\{/gm, ") {") : b; - } - function h(a, b) { - return function(c, d, e, f) { - return i(c, d, e, f, a, b); - }; - } - function i(b, c, e, f, g, h) { - var i, k, l, m, n = e.block, o = e["else"], p = d(c) || {}; - if (p.isResolved && !p.isDeferredPending) return b; - if (f.hasOwnProperty("key")) k = f.key; else { - if (!p.hasOwnProperty("key")) return a(g, "No key specified", "WARN"), b; - k = p.key; - } - return m = f.type || p.type, k = j(c.resolve(k), m), l = j(c.resolve(f.value), m), - h(k, l) ? (p.isPending || (i = !0, p.isPending = !0), n && (b = b.render(n, c)), - i && (p.isResolved = !0)) : o && (b = b.render(o, c)), b; - } - function j(a, b) { - switch (b && (b = b.toLowerCase()), b) { - case "number": - return +a; - - case "string": - return String(a); - - case "boolean": - return a = "false" === a ? !1 : a, Boolean(a); - - case "date": - return new Date(a); - } - return a; - } - var k = {}, l = { - tap: function(a, c, d) { - return b("tap"), d.resolve(a); - }, - sep: function(a, b, c) { - var d = c.block; - return b.stack.index === b.stack.of - 1 ? a : d ? d(a, b) : a; - }, - first: function(a, b, c) { - return 0 === b.stack.index ? c.block(a, b) : a; - }, - last: function(a, b, c) { - return b.stack.index === b.stack.of - 1 ? c.block(a, b) : a; - }, - contextDump: function(b, c, d, e) { - var f, h, i = c.resolve(e.to), j = c.resolve(e.key); - switch (j) { - case "full": - f = c.stack; - break; - - default: - f = c.stack.head; - } - switch (h = JSON.stringify(f, g, 2), i) { - case "console": - a("contextDump", h); - break; - - default: - h = h.replace(/</g, "\\u003c"), b = b.write(h); - } - return b; - }, - math: function(b, c, g, h) { - var i, j = h.key, k = h.method, l = h.operand, m = h.round; - if (!h.hasOwnProperty("key") || !h.method) return a("math", "`key` or `method` was not provided", "ERROR"), - b; - switch (j = parseFloat(c.resolve(j)), l = parseFloat(c.resolve(l)), k) { - case "mod": - 0 === l && a("math", "Division by 0", "ERROR"), i = j % l; - break; - - case "add": - i = j + l; - break; - - case "subtract": - i = j - l; - break; - - case "multiply": - i = j * l; - break; - - case "divide": - 0 === l && a("math", "Division by 0", "ERROR"), i = j / l; - break; - - case "ceil": - case "floor": - case "round": - case "abs": - i = Math[k](j); - break; - - case "toint": - i = parseInt(j, 10); - break; - - default: - a("math", "Method `" + k + "` is not supported", "ERROR"); - } - return "undefined" != typeof i && (m && (i = Math.round(i)), g && g.block ? (c = e(c, { - key: i - }), b = b.render(g.block, c), f(d(c))) : b = b.write(i)), b; - }, - select: function(b, c, g, h) { - var i = g.block, j = {}; - return h.hasOwnProperty("key") && (j.key = c.resolve(h.key)), h.hasOwnProperty("type") && (j.type = h.type), - i ? (c = e(c, j), b = b.render(i, c), f(d(c))) : a("select", "Missing body block", "WARN"), - b; - }, - eq: h("eq", function(a, b) { - return a === b; - }), - ne: h("ne", function(a, b) { - return a !== b; - }), - lt: h("lt", function(a, b) { - return b > a; - }), - lte: h("lte", function(a, b) { - return b >= a; - }), - gt: h("gt", function(a, b) { - return a > b; - }), - gte: h("gte", function(a, b) { - return a >= b; - }), - any: function(b, c, e) { - var f = d(c); - return f ? f.isDeferredComplete ? a("any", "Must not be nested inside {@any} or {@none} block", "ERROR") : b = b.map(function(a) { - f.deferreds.push(function() { - f.isResolved && (a = a.render(e.block, c)), a.end(); - }); - }) : a("any", "Must be used inside a {@select} block", "ERROR"), b; - }, - none: function(b, c, e) { - var f = d(c); - return f ? f.isDeferredComplete ? a("none", "Must not be nested inside {@any} or {@none} block", "ERROR") : b = b.map(function(a) { - f.deferreds.push(function() { - f.isResolved || (a = a.render(e.block, c)), a.end(); - }); - }) : a("none", "Must be used inside a {@select} block", "ERROR"), b; - }, - size: function(a, b, c, d) { - var e, f, g = d.key; - if (g = b.resolve(d.key), g && g !== !0) if (dust.isArray(g)) e = g.length; else if (!isNaN(parseFloat(g)) && isFinite(g)) e = g; else if ("object" == typeof g) { - e = 0; - for (f in g) g.hasOwnProperty(f) && e++; - } else e = (g + "").length; else e = 0; - return a.write(e); - } - }; - for (var m in l) dust.helpers[m] = l[m]; - return dust; -}); - -(function() { - function n(n, t, r) { - switch (r.length) { - case 0: - return n.call(t); - - case 1: - return n.call(t, r[0]); - - case 2: - return n.call(t, r[0], r[1]); - - case 3: - return n.call(t, r[0], r[1], r[2]); - } - return n.apply(t, r); - } - function t(n, t, r, e) { - for (var u = -1, i = null == n ? 0 : n.length; ++u < i; ) { - var o = n[u]; - t(e, o, r(o), n); - } - return e; - } - function r(n, t) { - for (var r = -1, e = null == n ? 0 : n.length; ++r < e && t(n[r], r, n) !== !1; ) ; - return n; - } - function e(n, t) { - for (var r = null == n ? 0 : n.length; r-- && t(n[r], r, n) !== !1; ) ; - return n; - } - function u(n, t) { - for (var r = -1, e = null == n ? 0 : n.length; ++r < e; ) if (!t(n[r], r, n)) return !1; - return !0; - } - function i(n, t) { - for (var r = -1, e = null == n ? 0 : n.length, u = 0, i = []; ++r < e; ) { - var o = n[r]; - t(o, r, n) && (i[u++] = o); - } - return i; - } - function o(n, t) { - return !!(null == n ? 0 : n.length) && y(n, t, 0) > -1; - } - function f(n, t, r) { - for (var e = -1, u = null == n ? 0 : n.length; ++e < u; ) if (r(t, n[e])) return !0; - return !1; - } - function c(n, t) { - for (var r = -1, e = null == n ? 0 : n.length, u = Array(e); ++r < e; ) u[r] = t(n[r], r, n); - return u; - } - function a(n, t) { - for (var r = -1, e = t.length, u = n.length; ++r < e; ) n[u + r] = t[r]; - return n; - } - function l(n, t, r, e) { - var u = -1, i = null == n ? 0 : n.length; - for (e && i && (r = n[++u]); ++u < i; ) r = t(r, n[u], u, n); - return r; - } - function s(n, t, r, e) { - var u = null == n ? 0 : n.length; - for (e && u && (r = n[--u]); u--; ) r = t(r, n[u], u, n); - return r; - } - function h(n, t) { - for (var r = -1, e = null == n ? 0 : n.length; ++r < e; ) if (t(n[r], r, n)) return !0; - return !1; - } - function p(n) { - return n.split(""); - } - function _(n) { - return n.match($t) || []; - } - function v(n, t, r) { - var e; - return r(n, function(n, r, u) { - if (t(n, r, u)) return e = r, !1; - }), e; - } - function g(n, t, r, e) { - for (var u = n.length, i = r + (e ? 1 : -1); e ? i-- : ++i < u; ) if (t(n[i], i, n)) return i; - return -1; - } - function y(n, t, r) { - return t === t ? Z(n, t, r) : g(n, b, r); - } - function d(n, t, r, e) { - for (var u = r - 1, i = n.length; ++u < i; ) if (e(n[u], t)) return u; - return -1; - } - function b(n) { - return n !== n; - } - function w(n, t) { - var r = null == n ? 0 : n.length; - return r ? k(n, t) / r : Cn; - } - function m(n) { - return function(t) { - return null == t ? X : t[n]; - }; - } - function x(n) { - return function(t) { - return null == n ? X : n[t]; - }; - } - function j(n, t, r, e, u) { - return u(n, function(n, u, i) { - r = e ? (e = !1, n) : t(r, n, u, i); - }), r; - } - function A(n, t) { - var r = n.length; - for (n.sort(t); r--; ) n[r] = n[r].value; - return n; - } - function k(n, t) { - for (var r, e = -1, u = n.length; ++e < u; ) { - var i = t(n[e]); - i !== X && (r = r === X ? i : r + i); - } - return r; - } - function O(n, t) { - for (var r = -1, e = Array(n); ++r < n; ) e[r] = t(r); - return e; - } - function I(n, t) { - return c(t, function(t) { - return [ t, n[t] ]; - }); - } - function R(n) { - return n ? n.slice(0, H(n) + 1).replace(Lt, "") : n; - } - function z(n) { - return function(t) { - return n(t); - }; - } - function E(n, t) { - return c(t, function(t) { - return n[t]; - }); - } - function S(n, t) { - return n.has(t); - } - function W(n, t) { - for (var r = -1, e = n.length; ++r < e && y(t, n[r], 0) > -1; ) ; - return r; - } - function L(n, t) { - for (var r = n.length; r-- && y(t, n[r], 0) > -1; ) ; - return r; - } - function C(n, t) { - for (var r = n.length, e = 0; r--; ) n[r] === t && ++e; - return e; - } - function U(n) { - return "\\" + Yr[n]; - } - function B(n, t) { - return null == n ? X : n[t]; - } - function T(n) { - return Nr.test(n); - } - function $(n) { - return Pr.test(n); - } - function D(n) { - for (var t, r = []; !(t = n.next()).done; ) r.push(t.value); - return r; - } - function M(n) { - var t = -1, r = Array(n.size); - return n.forEach(function(n, e) { - r[++t] = [ e, n ]; - }), r; - } - function F(n, t) { - return function(r) { - return n(t(r)); - }; - } - function N(n, t) { - for (var r = -1, e = n.length, u = 0, i = []; ++r < e; ) { - var o = n[r]; - o !== t && o !== cn || (n[r] = cn, i[u++] = r); - } - return i; - } - function P(n) { - var t = -1, r = Array(n.size); - return n.forEach(function(n) { - r[++t] = n; - }), r; - } - function q(n) { - var t = -1, r = Array(n.size); - return n.forEach(function(n) { - r[++t] = [ n, n ]; - }), r; - } - function Z(n, t, r) { - for (var e = r - 1, u = n.length; ++e < u; ) if (n[e] === t) return e; - return -1; - } - function K(n, t, r) { - for (var e = r + 1; e--; ) if (n[e] === t) return e; - return e; - } - function V(n) { - return T(n) ? J(n) : _e(n); - } - function G(n) { - return T(n) ? Y(n) : p(n); - } - function H(n) { - for (var t = n.length; t-- && Ct.test(n.charAt(t)); ) ; - return t; - } - function J(n) { - for (var t = Mr.lastIndex = 0; Mr.test(n); ) ++t; - return t; - } - function Y(n) { - return n.match(Mr) || []; - } - function Q(n) { - return n.match(Fr) || []; - } - var X, nn = "4.17.21", tn = 200, rn = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", en = "Expected a function", un = "Invalid `variable` option passed into `_.template`", on = "__lodash_hash_undefined__", fn = 500, cn = "__lodash_placeholder__", an = 1, ln = 2, sn = 4, hn = 1, pn = 2, _n = 1, vn = 2, gn = 4, yn = 8, dn = 16, bn = 32, wn = 64, mn = 128, xn = 256, jn = 512, An = 30, kn = "...", On = 800, In = 16, Rn = 1, zn = 2, En = 3, Sn = 1 / 0, Wn = 9007199254740991, Ln = 17976931348623157e292, Cn = NaN, Un = 4294967295, Bn = Un - 1, Tn = Un >>> 1, $n = [ [ "ary", mn ], [ "bind", _n ], [ "bindKey", vn ], [ "curry", yn ], [ "curryRight", dn ], [ "flip", jn ], [ "partial", bn ], [ "partialRight", wn ], [ "rearg", xn ] ], Dn = "[object Arguments]", Mn = "[object Array]", Fn = "[object AsyncFunction]", Nn = "[object Boolean]", Pn = "[object Date]", qn = "[object DOMException]", Zn = "[object Error]", Kn = "[object Function]", Vn = "[object GeneratorFunction]", Gn = "[object Map]", Hn = "[object Number]", Jn = "[object Null]", Yn = "[object Object]", Qn = "[object Promise]", Xn = "[object Proxy]", nt = "[object RegExp]", tt = "[object Set]", rt = "[object String]", et = "[object Symbol]", ut = "[object Undefined]", it = "[object WeakMap]", ot = "[object WeakSet]", ft = "[object ArrayBuffer]", ct = "[object DataView]", at = "[object Float32Array]", lt = "[object Float64Array]", st = "[object Int8Array]", ht = "[object Int16Array]", pt = "[object Int32Array]", _t = "[object Uint8Array]", vt = "[object Uint8ClampedArray]", gt = "[object Uint16Array]", yt = "[object Uint32Array]", dt = /\b__p \+= '';/g, bt = /\b(__p \+=) '' \+/g, wt = /(__e\(.*?\)|\b__t\)) \+\n'';/g, mt = /&(?:amp|lt|gt|quot|#39);/g, xt = /[&<>"']/g, jt = RegExp(mt.source), At = RegExp(xt.source), kt = /<%-([\s\S]+?)%>/g, Ot = /<%([\s\S]+?)%>/g, It = /<%=([\s\S]+?)%>/g, Rt = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, zt = /^\w*$/, Et = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, St = /[\\^$.*+?()[\]{}|]/g, Wt = RegExp(St.source), Lt = /^\s+/, Ct = /\s/, Ut = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Bt = /\{\n\/\* \[wrapped with (.+)\] \*/, Tt = /,? & /, $t = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, Dt = /[()=,{}\[\]\/\s]/, Mt = /\\(\\)?/g, Ft = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, Nt = /\w*$/, Pt = /^[-+]0x[0-9a-f]+$/i, qt = /^0b[01]+$/i, Zt = /^\[object .+?Constructor\]$/, Kt = /^0o[0-7]+$/i, Vt = /^(?:0|[1-9]\d*)$/, Gt = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, Ht = /($^)/, Jt = /['\n\r\u2028\u2029\\]/g, Yt = "\\ud800-\\udfff", Qt = "\\u0300-\\u036f", Xt = "\\ufe20-\\ufe2f", nr = "\\u20d0-\\u20ff", tr = Qt + Xt + nr, rr = "\\u2700-\\u27bf", er = "a-z\\xdf-\\xf6\\xf8-\\xff", ur = "\\xac\\xb1\\xd7\\xf7", ir = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", or = "\\u2000-\\u206f", fr = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", cr = "A-Z\\xc0-\\xd6\\xd8-\\xde", ar = "\\ufe0e\\ufe0f", lr = ur + ir + or + fr, sr = "['’]", hr = "[" + Yt + "]", pr = "[" + lr + "]", _r = "[" + tr + "]", vr = "\\d+", gr = "[" + rr + "]", yr = "[" + er + "]", dr = "[^" + Yt + lr + vr + rr + er + cr + "]", br = "\\ud83c[\\udffb-\\udfff]", wr = "(?:" + _r + "|" + br + ")", mr = "[^" + Yt + "]", xr = "(?:\\ud83c[\\udde6-\\uddff]){2}", jr = "[\\ud800-\\udbff][\\udc00-\\udfff]", Ar = "[" + cr + "]", kr = "\\u200d", Or = "(?:" + yr + "|" + dr + ")", Ir = "(?:" + Ar + "|" + dr + ")", Rr = "(?:" + sr + "(?:d|ll|m|re|s|t|ve))?", zr = "(?:" + sr + "(?:D|LL|M|RE|S|T|VE))?", Er = wr + "?", Sr = "[" + ar + "]?", Wr = "(?:" + kr + "(?:" + [ mr, xr, jr ].join("|") + ")" + Sr + Er + ")*", Lr = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", Cr = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", Ur = Sr + Er + Wr, Br = "(?:" + [ gr, xr, jr ].join("|") + ")" + Ur, Tr = "(?:" + [ mr + _r + "?", _r, xr, jr, hr ].join("|") + ")", $r = RegExp(sr, "g"), Dr = RegExp(_r, "g"), Mr = RegExp(br + "(?=" + br + ")|" + Tr + Ur, "g"), Fr = RegExp([ Ar + "?" + yr + "+" + Rr + "(?=" + [ pr, Ar, "$" ].join("|") + ")", Ir + "+" + zr + "(?=" + [ pr, Ar + Or, "$" ].join("|") + ")", Ar + "?" + Or + "+" + Rr, Ar + "+" + zr, Cr, Lr, vr, Br ].join("|"), "g"), Nr = RegExp("[" + kr + Yt + tr + ar + "]"), Pr = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, qr = [ "Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout" ], Zr = -1, Kr = {}; - Kr[at] = Kr[lt] = Kr[st] = Kr[ht] = Kr[pt] = Kr[_t] = Kr[vt] = Kr[gt] = Kr[yt] = !0, - Kr[Dn] = Kr[Mn] = Kr[ft] = Kr[Nn] = Kr[ct] = Kr[Pn] = Kr[Zn] = Kr[Kn] = Kr[Gn] = Kr[Hn] = Kr[Yn] = Kr[nt] = Kr[tt] = Kr[rt] = Kr[it] = !1; - var Vr = {}; - Vr[Dn] = Vr[Mn] = Vr[ft] = Vr[ct] = Vr[Nn] = Vr[Pn] = Vr[at] = Vr[lt] = Vr[st] = Vr[ht] = Vr[pt] = Vr[Gn] = Vr[Hn] = Vr[Yn] = Vr[nt] = Vr[tt] = Vr[rt] = Vr[et] = Vr[_t] = Vr[vt] = Vr[gt] = Vr[yt] = !0, - Vr[Zn] = Vr[Kn] = Vr[it] = !1; - var Gr = { - "À": "A", - "Ã": "A", - "Â": "A", - "Ã": "A", - "Ä": "A", - "Ã…": "A", - "à ": "a", - "á": "a", - "â": "a", - "ã": "a", - "ä": "a", - "Ã¥": "a", - "Ç": "C", - "ç": "c", - "Ã": "D", - "ð": "d", - "È": "E", - "É": "E", - "Ê": "E", - "Ë": "E", - "è": "e", - "é": "e", - "ê": "e", - "ë": "e", - "ÃŒ": "I", - "Ã": "I", - "ÃŽ": "I", - "Ã": "I", - "ì": "i", - "Ã": "i", - "î": "i", - "ï": "i", - "Ñ": "N", - "ñ": "n", - "Ã’": "O", - "Ó": "O", - "Ô": "O", - "Õ": "O", - "Ö": "O", - "Ø": "O", - "ò": "o", - "ó": "o", - "ô": "o", - "õ": "o", - "ö": "o", - "ø": "o", - "Ù": "U", - "Ú": "U", - "Û": "U", - "Ãœ": "U", - "ù": "u", - "ú": "u", - "û": "u", - "ü": "u", - "Ã": "Y", - "ý": "y", - "ÿ": "y", - "Æ": "Ae", - "æ": "ae", - "Þ": "Th", - "þ": "th", - "ß": "ss", - "Ä€": "A", - "Ä‚": "A", - "Ä„": "A", - "Ä": "a", - "ă": "a", - "Ä…": "a", - "Ć": "C", - "Ĉ": "C", - "ÄŠ": "C", - "ÄŒ": "C", - "ć": "c", - "ĉ": "c", - "Ä‹": "c", - "Ä": "c", - "ÄŽ": "D", - "Ä": "D", - "Ä": "d", - "Ä‘": "d", - "Ä’": "E", - "Ä”": "E", - "Ä–": "E", - "Ę": "E", - "Äš": "E", - "Ä“": "e", - "Ä•": "e", - "Ä—": "e", - "Ä™": "e", - "Ä›": "e", - "Äœ": "G", - "Äž": "G", - "Ä ": "G", - "Ä¢": "G", - "Ä": "g", - "ÄŸ": "g", - "Ä¡": "g", - "Ä£": "g", - "Ĥ": "H", - "Ħ": "H", - "Ä¥": "h", - "ħ": "h", - "Ĩ": "I", - "Ī": "I", - "Ĭ": "I", - "Ä®": "I", - "Ä°": "I", - "Ä©": "i", - "Ä«": "i", - "Ä": "i", - "į": "i", - "ı": "i", - "Ä´": "J", - "ĵ": "j", - "Ķ": "K", - "Ä·": "k", - "ĸ": "k", - "Ĺ": "L", - "Ä»": "L", - "Ľ": "L", - "Ä¿": "L", - "Å": "L", - "ĺ": "l", - "ļ": "l", - "ľ": "l", - "Å€": "l", - "Å‚": "l", - "Ń": "N", - "Å…": "N", - "Ň": "N", - "ÅŠ": "N", - "Å„": "n", - "ņ": "n", - "ň": "n", - "Å‹": "n", - "ÅŒ": "O", - "ÅŽ": "O", - "Å": "O", - "Å": "o", - "Å": "o", - "Å‘": "o", - "Å”": "R", - "Å–": "R", - "Ř": "R", - "Å•": "r", - "Å—": "r", - "Å™": "r", - "Åš": "S", - "Åœ": "S", - "Åž": "S", - "Å ": "S", - "Å›": "s", - "Å": "s", - "ÅŸ": "s", - "Å¡": "s", - "Å¢": "T", - "Ť": "T", - "Ŧ": "T", - "Å£": "t", - "Å¥": "t", - "ŧ": "t", - "Ũ": "U", - "Ū": "U", - "Ŭ": "U", - "Å®": "U", - "Å°": "U", - "Ų": "U", - "Å©": "u", - "Å«": "u", - "Å": "u", - "ů": "u", - "ű": "u", - "ų": "u", - "Å´": "W", - "ŵ": "w", - "Ŷ": "Y", - "Å·": "y", - "Ÿ": "Y", - "Ź": "Z", - "Å»": "Z", - "Ž": "Z", - "ź": "z", - "ż": "z", - "ž": "z", - "IJ": "IJ", - "ij": "ij", - "Å’": "Oe", - "Å“": "oe", - "ʼn": "'n", - "Å¿": "s" - }, Hr = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'" - }, Jr = { - "&": "&", - "<": "<", - ">": ">", - """: '"', - "'": "'" - }, Yr = { - "\\": "\\", - "'": "'", - "\n": "n", - "\r": "r", - "\u2028": "u2028", - "\u2029": "u2029" - }, Qr = parseFloat, Xr = parseInt, ne = "object" == typeof global && global && global.Object === Object && global, te = "object" == typeof self && self && self.Object === Object && self, re = ne || te || Function("return this")(), ee = "object" == typeof exports && exports && !exports.nodeType && exports, ue = ee && "object" == typeof module && module && !module.nodeType && module, ie = ue && ue.exports === ee, oe = ie && ne.process, fe = function() { - try { - var n = ue && ue.require && ue.require("util").types; - return n ? n : oe && oe.binding && oe.binding("util"); - } catch (n) {} - }(), ce = fe && fe.isArrayBuffer, ae = fe && fe.isDate, le = fe && fe.isMap, se = fe && fe.isRegExp, he = fe && fe.isSet, pe = fe && fe.isTypedArray, _e = m("length"), ve = x(Gr), ge = x(Hr), ye = x(Jr), de = function p(x) { - function Z(n) { - if (cc(n) && !bh(n) && !(n instanceof Ct)) { - if (n instanceof Y) return n; - if (bl.call(n, "__wrapped__")) return eo(n); - } - return new Y(n); - } - function J() {} - function Y(n, t) { - this.__wrapped__ = n, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, - this.__values__ = X; - } - function Ct(n) { - this.__wrapped__ = n, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, - this.__iteratees__ = [], this.__takeCount__ = Un, this.__views__ = []; - } - function $t() { - var n = new Ct(this.__wrapped__); - return n.__actions__ = Tu(this.__actions__), n.__dir__ = this.__dir__, n.__filtered__ = this.__filtered__, - n.__iteratees__ = Tu(this.__iteratees__), n.__takeCount__ = this.__takeCount__, - n.__views__ = Tu(this.__views__), n; - } - function Yt() { - if (this.__filtered__) { - var n = new Ct(this); - n.__dir__ = -1, n.__filtered__ = !0; - } else n = this.clone(), n.__dir__ *= -1; - return n; - } - function Qt() { - var n = this.__wrapped__.value(), t = this.__dir__, r = bh(n), e = t < 0, u = r ? n.length : 0, i = Oi(0, u, this.__views__), o = i.start, f = i.end, c = f - o, a = e ? f : o - 1, l = this.__iteratees__, s = l.length, h = 0, p = Hl(c, this.__takeCount__); - if (!r || !e && u == c && p == c) return wu(n, this.__actions__); - var _ = []; - n: for (;c-- && h < p; ) { - a += t; - for (var v = -1, g = n[a]; ++v < s; ) { - var y = l[v], d = y.iteratee, b = y.type, w = d(g); - if (b == zn) g = w; else if (!w) { - if (b == Rn) continue n; - break n; - } - } - _[h++] = g; - } - return _; - } - function Xt(n) { - var t = -1, r = null == n ? 0 : n.length; - for (this.clear(); ++t < r; ) { - var e = n[t]; - this.set(e[0], e[1]); - } - } - function nr() { - this.__data__ = is ? is(null) : {}, this.size = 0; - } - function tr(n) { - var t = this.has(n) && delete this.__data__[n]; - return this.size -= t ? 1 : 0, t; - } - function rr(n) { - var t = this.__data__; - if (is) { - var r = t[n]; - return r === on ? X : r; - } - return bl.call(t, n) ? t[n] : X; - } - function er(n) { - var t = this.__data__; - return is ? t[n] !== X : bl.call(t, n); - } - function ur(n, t) { - var r = this.__data__; - return this.size += this.has(n) ? 0 : 1, r[n] = is && t === X ? on : t, this; - } - function ir(n) { - var t = -1, r = null == n ? 0 : n.length; - for (this.clear(); ++t < r; ) { - var e = n[t]; - this.set(e[0], e[1]); - } - } - function or() { - this.__data__ = [], this.size = 0; - } - function fr(n) { - var t = this.__data__, r = Wr(t, n); - return !(r < 0) && (r == t.length - 1 ? t.pop() : Ll.call(t, r, 1), --this.size, - !0); - } - function cr(n) { - var t = this.__data__, r = Wr(t, n); - return r < 0 ? X : t[r][1]; - } - function ar(n) { - return Wr(this.__data__, n) > -1; - } - function lr(n, t) { - var r = this.__data__, e = Wr(r, n); - return e < 0 ? (++this.size, r.push([ n, t ])) : r[e][1] = t, this; - } - function sr(n) { - var t = -1, r = null == n ? 0 : n.length; - for (this.clear(); ++t < r; ) { - var e = n[t]; - this.set(e[0], e[1]); - } - } - function hr() { - this.size = 0, this.__data__ = { - hash: new Xt(), - map: new (ts || ir)(), - string: new Xt() - }; - } - function pr(n) { - var t = xi(this, n).delete(n); - return this.size -= t ? 1 : 0, t; - } - function _r(n) { - return xi(this, n).get(n); - } - function vr(n) { - return xi(this, n).has(n); - } - function gr(n, t) { - var r = xi(this, n), e = r.size; - return r.set(n, t), this.size += r.size == e ? 0 : 1, this; - } - function yr(n) { - var t = -1, r = null == n ? 0 : n.length; - for (this.__data__ = new sr(); ++t < r; ) this.add(n[t]); - } - function dr(n) { - return this.__data__.set(n, on), this; - } - function br(n) { - return this.__data__.has(n); - } - function wr(n) { - this.size = (this.__data__ = new ir(n)).size; - } - function mr() { - this.__data__ = new ir(), this.size = 0; - } - function xr(n) { - var t = this.__data__, r = t.delete(n); - return this.size = t.size, r; - } - function jr(n) { - return this.__data__.get(n); - } - function Ar(n) { - return this.__data__.has(n); - } - function kr(n, t) { - var r = this.__data__; - if (r instanceof ir) { - var e = r.__data__; - if (!ts || e.length < tn - 1) return e.push([ n, t ]), this.size = ++r.size, this; - r = this.__data__ = new sr(e); - } - return r.set(n, t), this.size = r.size, this; - } - function Or(n, t) { - var r = bh(n), e = !r && dh(n), u = !r && !e && mh(n), i = !r && !e && !u && Oh(n), o = r || e || u || i, f = o ? O(n.length, hl) : [], c = f.length; - for (var a in n) !t && !bl.call(n, a) || o && ("length" == a || u && ("offset" == a || "parent" == a) || i && ("buffer" == a || "byteLength" == a || "byteOffset" == a) || Ci(a, c)) || f.push(a); - return f; - } - function Ir(n) { - var t = n.length; - return t ? n[tu(0, t - 1)] : X; - } - function Rr(n, t) { - return Xi(Tu(n), Mr(t, 0, n.length)); - } - function zr(n) { - return Xi(Tu(n)); - } - function Er(n, t, r) { - (r === X || Gf(n[t], r)) && (r !== X || t in n) || Br(n, t, r); - } - function Sr(n, t, r) { - var e = n[t]; - bl.call(n, t) && Gf(e, r) && (r !== X || t in n) || Br(n, t, r); - } - function Wr(n, t) { - for (var r = n.length; r--; ) if (Gf(n[r][0], t)) return r; - return -1; - } - function Lr(n, t, r, e) { - return ys(n, function(n, u, i) { - t(e, n, r(n), i); - }), e; - } - function Cr(n, t) { - return n && $u(t, Pc(t), n); - } - function Ur(n, t) { - return n && $u(t, qc(t), n); - } - function Br(n, t, r) { - "__proto__" == t && Tl ? Tl(n, t, { - configurable: !0, - enumerable: !0, - value: r, - writable: !0 - }) : n[t] = r; - } - function Tr(n, t) { - for (var r = -1, e = t.length, u = il(e), i = null == n; ++r < e; ) u[r] = i ? X : Mc(n, t[r]); - return u; - } - function Mr(n, t, r) { - return n === n && (r !== X && (n = n <= r ? n : r), t !== X && (n = n >= t ? n : t)), - n; - } - function Fr(n, t, e, u, i, o) { - var f, c = t & an, a = t & ln, l = t & sn; - if (e && (f = i ? e(n, u, i, o) : e(n)), f !== X) return f; - if (!fc(n)) return n; - var s = bh(n); - if (s) { - if (f = zi(n), !c) return Tu(n, f); - } else { - var h = zs(n), p = h == Kn || h == Vn; - if (mh(n)) return Iu(n, c); - if (h == Yn || h == Dn || p && !i) { - if (f = a || p ? {} : Ei(n), !c) return a ? Mu(n, Ur(f, n)) : Du(n, Cr(f, n)); - } else { - if (!Vr[h]) return i ? n : {}; - f = Si(n, h, c); - } - } - o || (o = new wr()); - var _ = o.get(n); - if (_) return _; - o.set(n, f), kh(n) ? n.forEach(function(r) { - f.add(Fr(r, t, e, r, n, o)); - }) : jh(n) && n.forEach(function(r, u) { - f.set(u, Fr(r, t, e, u, n, o)); - }); - var v = l ? a ? di : yi : a ? qc : Pc, g = s ? X : v(n); - return r(g || n, function(r, u) { - g && (u = r, r = n[u]), Sr(f, u, Fr(r, t, e, u, n, o)); - }), f; - } - function Nr(n) { - var t = Pc(n); - return function(r) { - return Pr(r, n, t); - }; - } - function Pr(n, t, r) { - var e = r.length; - if (null == n) return !e; - for (n = ll(n); e--; ) { - var u = r[e], i = t[u], o = n[u]; - if (o === X && !(u in n) || !i(o)) return !1; - } - return !0; - } - function Gr(n, t, r) { - if ("function" != typeof n) throw new pl(en); - return Ws(function() { - n.apply(X, r); - }, t); - } - function Hr(n, t, r, e) { - var u = -1, i = o, a = !0, l = n.length, s = [], h = t.length; - if (!l) return s; - r && (t = c(t, z(r))), e ? (i = f, a = !1) : t.length >= tn && (i = S, a = !1, t = new yr(t)); - n: for (;++u < l; ) { - var p = n[u], _ = null == r ? p : r(p); - if (p = e || 0 !== p ? p : 0, a && _ === _) { - for (var v = h; v--; ) if (t[v] === _) continue n; - s.push(p); - } else i(t, _, e) || s.push(p); - } - return s; - } - function Jr(n, t) { - var r = !0; - return ys(n, function(n, e, u) { - return r = !!t(n, e, u); - }), r; - } - function Yr(n, t, r) { - for (var e = -1, u = n.length; ++e < u; ) { - var i = n[e], o = t(i); - if (null != o && (f === X ? o === o && !bc(o) : r(o, f))) var f = o, c = i; - } - return c; - } - function ne(n, t, r, e) { - var u = n.length; - for (r = kc(r), r < 0 && (r = -r > u ? 0 : u + r), e = e === X || e > u ? u : kc(e), - e < 0 && (e += u), e = r > e ? 0 : Oc(e); r < e; ) n[r++] = t; - return n; - } - function te(n, t) { - var r = []; - return ys(n, function(n, e, u) { - t(n, e, u) && r.push(n); - }), r; - } - function ee(n, t, r, e, u) { - var i = -1, o = n.length; - for (r || (r = Li), u || (u = []); ++i < o; ) { - var f = n[i]; - t > 0 && r(f) ? t > 1 ? ee(f, t - 1, r, e, u) : a(u, f) : e || (u[u.length] = f); - } - return u; - } - function ue(n, t) { - return n && bs(n, t, Pc); - } - function oe(n, t) { - return n && ws(n, t, Pc); - } - function fe(n, t) { - return i(t, function(t) { - return uc(n[t]); - }); - } - function _e(n, t) { - t = ku(t, n); - for (var r = 0, e = t.length; null != n && r < e; ) n = n[no(t[r++])]; - return r && r == e ? n : X; - } - function de(n, t, r) { - var e = t(n); - return bh(n) ? e : a(e, r(n)); - } - function we(n) { - return null == n ? n === X ? ut : Jn : Bl && Bl in ll(n) ? ki(n) : Ki(n); - } - function me(n, t) { - return n > t; - } - function xe(n, t) { - return null != n && bl.call(n, t); - } - function je(n, t) { - return null != n && t in ll(n); - } - function Ae(n, t, r) { - return n >= Hl(t, r) && n < Gl(t, r); - } - function ke(n, t, r) { - for (var e = r ? f : o, u = n[0].length, i = n.length, a = i, l = il(i), s = 1 / 0, h = []; a--; ) { - var p = n[a]; - a && t && (p = c(p, z(t))), s = Hl(p.length, s), l[a] = !r && (t || u >= 120 && p.length >= 120) ? new yr(a && p) : X; - } - p = n[0]; - var _ = -1, v = l[0]; - n: for (;++_ < u && h.length < s; ) { - var g = p[_], y = t ? t(g) : g; - if (g = r || 0 !== g ? g : 0, !(v ? S(v, y) : e(h, y, r))) { - for (a = i; --a; ) { - var d = l[a]; - if (!(d ? S(d, y) : e(n[a], y, r))) continue n; - } - v && v.push(y), h.push(g); - } - } - return h; - } - function Oe(n, t, r, e) { - return ue(n, function(n, u, i) { - t(e, r(n), u, i); - }), e; - } - function Ie(t, r, e) { - r = ku(r, t), t = Gi(t, r); - var u = null == t ? t : t[no(jo(r))]; - return null == u ? X : n(u, t, e); - } - function Re(n) { - return cc(n) && we(n) == Dn; - } - function ze(n) { - return cc(n) && we(n) == ft; - } - function Ee(n) { - return cc(n) && we(n) == Pn; - } - function Se(n, t, r, e, u) { - return n === t || (null == n || null == t || !cc(n) && !cc(t) ? n !== n && t !== t : We(n, t, r, e, Se, u)); - } - function We(n, t, r, e, u, i) { - var o = bh(n), f = bh(t), c = o ? Mn : zs(n), a = f ? Mn : zs(t); - c = c == Dn ? Yn : c, a = a == Dn ? Yn : a; - var l = c == Yn, s = a == Yn, h = c == a; - if (h && mh(n)) { - if (!mh(t)) return !1; - o = !0, l = !1; - } - if (h && !l) return i || (i = new wr()), o || Oh(n) ? pi(n, t, r, e, u, i) : _i(n, t, c, r, e, u, i); - if (!(r & hn)) { - var p = l && bl.call(n, "__wrapped__"), _ = s && bl.call(t, "__wrapped__"); - if (p || _) { - var v = p ? n.value() : n, g = _ ? t.value() : t; - return i || (i = new wr()), u(v, g, r, e, i); - } - } - return !!h && (i || (i = new wr()), vi(n, t, r, e, u, i)); - } - function Le(n) { - return cc(n) && zs(n) == Gn; - } - function Ce(n, t, r, e) { - var u = r.length, i = u, o = !e; - if (null == n) return !i; - for (n = ll(n); u--; ) { - var f = r[u]; - if (o && f[2] ? f[1] !== n[f[0]] : !(f[0] in n)) return !1; - } - for (;++u < i; ) { - f = r[u]; - var c = f[0], a = n[c], l = f[1]; - if (o && f[2]) { - if (a === X && !(c in n)) return !1; - } else { - var s = new wr(); - if (e) var h = e(a, l, c, n, t, s); - if (!(h === X ? Se(l, a, hn | pn, e, s) : h)) return !1; - } - } - return !0; - } - function Ue(n) { - return !(!fc(n) || Di(n)) && (uc(n) ? kl : Zt).test(to(n)); - } - function Be(n) { - return cc(n) && we(n) == nt; - } - function Te(n) { - return cc(n) && zs(n) == tt; - } - function $e(n) { - return cc(n) && oc(n.length) && !!Kr[we(n)]; - } - function De(n) { - return "function" == typeof n ? n : null == n ? La : "object" == typeof n ? bh(n) ? Ze(n[0], n[1]) : qe(n) : Fa(n); - } - function Me(n) { - if (!Mi(n)) return Vl(n); - var t = []; - for (var r in ll(n)) bl.call(n, r) && "constructor" != r && t.push(r); - return t; - } - function Fe(n) { - if (!fc(n)) return Zi(n); - var t = Mi(n), r = []; - for (var e in n) ("constructor" != e || !t && bl.call(n, e)) && r.push(e); - return r; - } - function Ne(n, t) { - return n < t; - } - function Pe(n, t) { - var r = -1, e = Hf(n) ? il(n.length) : []; - return ys(n, function(n, u, i) { - e[++r] = t(n, u, i); - }), e; - } - function qe(n) { - var t = ji(n); - return 1 == t.length && t[0][2] ? Ni(t[0][0], t[0][1]) : function(r) { - return r === n || Ce(r, n, t); - }; - } - function Ze(n, t) { - return Bi(n) && Fi(t) ? Ni(no(n), t) : function(r) { - var e = Mc(r, n); - return e === X && e === t ? Nc(r, n) : Se(t, e, hn | pn); - }; - } - function Ke(n, t, r, e, u) { - n !== t && bs(t, function(i, o) { - if (u || (u = new wr()), fc(i)) Ve(n, t, o, r, Ke, e, u); else { - var f = e ? e(Ji(n, o), i, o + "", n, t, u) : X; - f === X && (f = i), Er(n, o, f); - } - }, qc); - } - function Ve(n, t, r, e, u, i, o) { - var f = Ji(n, r), c = Ji(t, r), a = o.get(c); - if (a) return Er(n, r, a), X; - var l = i ? i(f, c, r + "", n, t, o) : X, s = l === X; - if (s) { - var h = bh(c), p = !h && mh(c), _ = !h && !p && Oh(c); - l = c, h || p || _ ? bh(f) ? l = f : Jf(f) ? l = Tu(f) : p ? (s = !1, l = Iu(c, !0)) : _ ? (s = !1, - l = Wu(c, !0)) : l = [] : gc(c) || dh(c) ? (l = f, dh(f) ? l = Rc(f) : fc(f) && !uc(f) || (l = Ei(c))) : s = !1; - } - s && (o.set(c, l), u(l, c, e, i, o), o.delete(c)), Er(n, r, l); - } - function Ge(n, t) { - var r = n.length; - if (r) return t += t < 0 ? r : 0, Ci(t, r) ? n[t] : X; - } - function He(n, t, r) { - t = t.length ? c(t, function(n) { - return bh(n) ? function(t) { - return _e(t, 1 === n.length ? n[0] : n); - } : n; - }) : [ La ]; - var e = -1; - return t = c(t, z(mi())), A(Pe(n, function(n, r, u) { - return { - criteria: c(t, function(t) { - return t(n); - }), - index: ++e, - value: n - }; - }), function(n, t) { - return Cu(n, t, r); - }); - } - function Je(n, t) { - return Ye(n, t, function(t, r) { - return Nc(n, r); - }); - } - function Ye(n, t, r) { - for (var e = -1, u = t.length, i = {}; ++e < u; ) { - var o = t[e], f = _e(n, o); - r(f, o) && fu(i, ku(o, n), f); - } - return i; - } - function Qe(n) { - return function(t) { - return _e(t, n); - }; - } - function Xe(n, t, r, e) { - var u = e ? d : y, i = -1, o = t.length, f = n; - for (n === t && (t = Tu(t)), r && (f = c(n, z(r))); ++i < o; ) for (var a = 0, l = t[i], s = r ? r(l) : l; (a = u(f, s, a, e)) > -1; ) f !== n && Ll.call(f, a, 1), - Ll.call(n, a, 1); - return n; - } - function nu(n, t) { - for (var r = n ? t.length : 0, e = r - 1; r--; ) { - var u = t[r]; - if (r == e || u !== i) { - var i = u; - Ci(u) ? Ll.call(n, u, 1) : yu(n, u); - } - } - return n; - } - function tu(n, t) { - return n + Nl(Ql() * (t - n + 1)); - } - function ru(n, t, r, e) { - for (var u = -1, i = Gl(Fl((t - n) / (r || 1)), 0), o = il(i); i--; ) o[e ? i : ++u] = n, - n += r; - return o; - } - function eu(n, t) { - var r = ""; - if (!n || t < 1 || t > Wn) return r; - do { - t % 2 && (r += n), t = Nl(t / 2), t && (n += n); - } while (t); - return r; - } - function uu(n, t) { - return Ls(Vi(n, t, La), n + ""); - } - function iu(n) { - return Ir(ra(n)); - } - function ou(n, t) { - var r = ra(n); - return Xi(r, Mr(t, 0, r.length)); - } - function fu(n, t, r, e) { - if (!fc(n)) return n; - t = ku(t, n); - for (var u = -1, i = t.length, o = i - 1, f = n; null != f && ++u < i; ) { - var c = no(t[u]), a = r; - if ("__proto__" === c || "constructor" === c || "prototype" === c) return n; - if (u != o) { - var l = f[c]; - a = e ? e(l, c, f) : X, a === X && (a = fc(l) ? l : Ci(t[u + 1]) ? [] : {}); - } - Sr(f, c, a), f = f[c]; - } - return n; - } - function cu(n) { - return Xi(ra(n)); - } - function au(n, t, r) { - var e = -1, u = n.length; - t < 0 && (t = -t > u ? 0 : u + t), r = r > u ? u : r, r < 0 && (r += u), u = t > r ? 0 : r - t >>> 0, - t >>>= 0; - for (var i = il(u); ++e < u; ) i[e] = n[e + t]; - return i; - } - function lu(n, t) { - var r; - return ys(n, function(n, e, u) { - return r = t(n, e, u), !r; - }), !!r; - } - function su(n, t, r) { - var e = 0, u = null == n ? e : n.length; - if ("number" == typeof t && t === t && u <= Tn) { - for (;e < u; ) { - var i = e + u >>> 1, o = n[i]; - null !== o && !bc(o) && (r ? o <= t : o < t) ? e = i + 1 : u = i; - } - return u; - } - return hu(n, t, La, r); - } - function hu(n, t, r, e) { - var u = 0, i = null == n ? 0 : n.length; - if (0 === i) return 0; - t = r(t); - for (var o = t !== t, f = null === t, c = bc(t), a = t === X; u < i; ) { - var l = Nl((u + i) / 2), s = r(n[l]), h = s !== X, p = null === s, _ = s === s, v = bc(s); - if (o) var g = e || _; else g = a ? _ && (e || h) : f ? _ && h && (e || !p) : c ? _ && h && !p && (e || !v) : !p && !v && (e ? s <= t : s < t); - g ? u = l + 1 : i = l; - } - return Hl(i, Bn); - } - function pu(n, t) { - for (var r = -1, e = n.length, u = 0, i = []; ++r < e; ) { - var o = n[r], f = t ? t(o) : o; - if (!r || !Gf(f, c)) { - var c = f; - i[u++] = 0 === o ? 0 : o; - } - } - return i; - } - function _u(n) { - return "number" == typeof n ? n : bc(n) ? Cn : +n; - } - function vu(n) { - if ("string" == typeof n) return n; - if (bh(n)) return c(n, vu) + ""; - if (bc(n)) return vs ? vs.call(n) : ""; - var t = n + ""; - return "0" == t && 1 / n == -Sn ? "-0" : t; - } - function gu(n, t, r) { - var e = -1, u = o, i = n.length, c = !0, a = [], l = a; - if (r) c = !1, u = f; else if (i >= tn) { - var s = t ? null : ks(n); - if (s) return P(s); - c = !1, u = S, l = new yr(); - } else l = t ? [] : a; - n: for (;++e < i; ) { - var h = n[e], p = t ? t(h) : h; - if (h = r || 0 !== h ? h : 0, c && p === p) { - for (var _ = l.length; _--; ) if (l[_] === p) continue n; - t && l.push(p), a.push(h); - } else u(l, p, r) || (l !== a && l.push(p), a.push(h)); - } - return a; - } - function yu(n, t) { - return t = ku(t, n), n = Gi(n, t), null == n || delete n[no(jo(t))]; - } - function du(n, t, r, e) { - return fu(n, t, r(_e(n, t)), e); - } - function bu(n, t, r, e) { - for (var u = n.length, i = e ? u : -1; (e ? i-- : ++i < u) && t(n[i], i, n); ) ; - return r ? au(n, e ? 0 : i, e ? i + 1 : u) : au(n, e ? i + 1 : 0, e ? u : i); - } - function wu(n, t) { - var r = n; - return r instanceof Ct && (r = r.value()), l(t, function(n, t) { - return t.func.apply(t.thisArg, a([ n ], t.args)); - }, r); - } - function mu(n, t, r) { - var e = n.length; - if (e < 2) return e ? gu(n[0]) : []; - for (var u = -1, i = il(e); ++u < e; ) for (var o = n[u], f = -1; ++f < e; ) f != u && (i[u] = Hr(i[u] || o, n[f], t, r)); - return gu(ee(i, 1), t, r); - } - function xu(n, t, r) { - for (var e = -1, u = n.length, i = t.length, o = {}; ++e < u; ) { - r(o, n[e], e < i ? t[e] : X); - } - return o; - } - function ju(n) { - return Jf(n) ? n : []; - } - function Au(n) { - return "function" == typeof n ? n : La; - } - function ku(n, t) { - return bh(n) ? n : Bi(n, t) ? [ n ] : Cs(Ec(n)); - } - function Ou(n, t, r) { - var e = n.length; - return r = r === X ? e : r, !t && r >= e ? n : au(n, t, r); - } - function Iu(n, t) { - if (t) return n.slice(); - var r = n.length, e = zl ? zl(r) : new n.constructor(r); - return n.copy(e), e; - } - function Ru(n) { - var t = new n.constructor(n.byteLength); - return new Rl(t).set(new Rl(n)), t; - } - function zu(n, t) { - return new n.constructor(t ? Ru(n.buffer) : n.buffer, n.byteOffset, n.byteLength); - } - function Eu(n) { - var t = new n.constructor(n.source, Nt.exec(n)); - return t.lastIndex = n.lastIndex, t; - } - function Su(n) { - return _s ? ll(_s.call(n)) : {}; - } - function Wu(n, t) { - return new n.constructor(t ? Ru(n.buffer) : n.buffer, n.byteOffset, n.length); - } - function Lu(n, t) { - if (n !== t) { - var r = n !== X, e = null === n, u = n === n, i = bc(n), o = t !== X, f = null === t, c = t === t, a = bc(t); - if (!f && !a && !i && n > t || i && o && c && !f && !a || e && o && c || !r && c || !u) return 1; - if (!e && !i && !a && n < t || a && r && u && !e && !i || f && r && u || !o && u || !c) return -1; - } - return 0; - } - function Cu(n, t, r) { - for (var e = -1, u = n.criteria, i = t.criteria, o = u.length, f = r.length; ++e < o; ) { - var c = Lu(u[e], i[e]); - if (c) { - if (e >= f) return c; - return c * ("desc" == r[e] ? -1 : 1); - } - } - return n.index - t.index; - } - function Uu(n, t, r, e) { - for (var u = -1, i = n.length, o = r.length, f = -1, c = t.length, a = Gl(i - o, 0), l = il(c + a), s = !e; ++f < c; ) l[f] = t[f]; - for (;++u < o; ) (s || u < i) && (l[r[u]] = n[u]); - for (;a--; ) l[f++] = n[u++]; - return l; - } - function Bu(n, t, r, e) { - for (var u = -1, i = n.length, o = -1, f = r.length, c = -1, a = t.length, l = Gl(i - f, 0), s = il(l + a), h = !e; ++u < l; ) s[u] = n[u]; - for (var p = u; ++c < a; ) s[p + c] = t[c]; - for (;++o < f; ) (h || u < i) && (s[p + r[o]] = n[u++]); - return s; - } - function Tu(n, t) { - var r = -1, e = n.length; - for (t || (t = il(e)); ++r < e; ) t[r] = n[r]; - return t; - } - function $u(n, t, r, e) { - var u = !r; - r || (r = {}); - for (var i = -1, o = t.length; ++i < o; ) { - var f = t[i], c = e ? e(r[f], n[f], f, r, n) : X; - c === X && (c = n[f]), u ? Br(r, f, c) : Sr(r, f, c); - } - return r; - } - function Du(n, t) { - return $u(n, Is(n), t); - } - function Mu(n, t) { - return $u(n, Rs(n), t); - } - function Fu(n, r) { - return function(e, u) { - var i = bh(e) ? t : Lr, o = r ? r() : {}; - return i(e, n, mi(u, 2), o); - }; - } - function Nu(n) { - return uu(function(t, r) { - var e = -1, u = r.length, i = u > 1 ? r[u - 1] : X, o = u > 2 ? r[2] : X; - for (i = n.length > 3 && "function" == typeof i ? (u--, i) : X, o && Ui(r[0], r[1], o) && (i = u < 3 ? X : i, - u = 1), t = ll(t); ++e < u; ) { - var f = r[e]; - f && n(t, f, e, i); - } - return t; - }); - } - function Pu(n, t) { - return function(r, e) { - if (null == r) return r; - if (!Hf(r)) return n(r, e); - for (var u = r.length, i = t ? u : -1, o = ll(r); (t ? i-- : ++i < u) && e(o[i], i, o) !== !1; ) ; - return r; - }; - } - function qu(n) { - return function(t, r, e) { - for (var u = -1, i = ll(t), o = e(t), f = o.length; f--; ) { - var c = o[n ? f : ++u]; - if (r(i[c], c, i) === !1) break; - } - return t; - }; - } - function Zu(n, t, r) { - function e() { - return (this && this !== re && this instanceof e ? i : n).apply(u ? r : this, arguments); - } - var u = t & _n, i = Gu(n); - return e; - } - function Ku(n) { - return function(t) { - t = Ec(t); - var r = T(t) ? G(t) : X, e = r ? r[0] : t.charAt(0), u = r ? Ou(r, 1).join("") : t.slice(1); - return e[n]() + u; - }; - } - function Vu(n) { - return function(t) { - return l(Ra(ca(t).replace($r, "")), n, ""); - }; - } - function Gu(n) { - return function() { - var t = arguments; - switch (t.length) { - case 0: - return new n(); - - case 1: - return new n(t[0]); - - case 2: - return new n(t[0], t[1]); - - case 3: - return new n(t[0], t[1], t[2]); - - case 4: - return new n(t[0], t[1], t[2], t[3]); - - case 5: - return new n(t[0], t[1], t[2], t[3], t[4]); - - case 6: - return new n(t[0], t[1], t[2], t[3], t[4], t[5]); - - case 7: - return new n(t[0], t[1], t[2], t[3], t[4], t[5], t[6]); - } - var r = gs(n.prototype), e = n.apply(r, t); - return fc(e) ? e : r; - }; - } - function Hu(t, r, e) { - function u() { - for (var o = arguments.length, f = il(o), c = o, a = wi(u); c--; ) f[c] = arguments[c]; - var l = o < 3 && f[0] !== a && f[o - 1] !== a ? [] : N(f, a); - return o -= l.length, o < e ? oi(t, r, Qu, u.placeholder, X, f, l, X, X, e - o) : n(this && this !== re && this instanceof u ? i : t, this, f); - } - var i = Gu(t); - return u; - } - function Ju(n) { - return function(t, r, e) { - var u = ll(t); - if (!Hf(t)) { - var i = mi(r, 3); - t = Pc(t), r = function(n) { - return i(u[n], n, u); - }; - } - var o = n(t, r, e); - return o > -1 ? u[i ? t[o] : o] : X; - }; - } - function Yu(n) { - return gi(function(t) { - var r = t.length, e = r, u = Y.prototype.thru; - for (n && t.reverse(); e--; ) { - var i = t[e]; - if ("function" != typeof i) throw new pl(en); - if (u && !o && "wrapper" == bi(i)) var o = new Y([], !0); - } - for (e = o ? e : r; ++e < r; ) { - i = t[e]; - var f = bi(i), c = "wrapper" == f ? Os(i) : X; - o = c && $i(c[0]) && c[1] == (mn | yn | bn | xn) && !c[4].length && 1 == c[9] ? o[bi(c[0])].apply(o, c[3]) : 1 == i.length && $i(i) ? o[f]() : o.thru(i); - } - return function() { - var n = arguments, e = n[0]; - if (o && 1 == n.length && bh(e)) return o.plant(e).value(); - for (var u = 0, i = r ? t[u].apply(this, n) : e; ++u < r; ) i = t[u].call(this, i); - return i; - }; - }); - } - function Qu(n, t, r, e, u, i, o, f, c, a) { - function l() { - for (var y = arguments.length, d = il(y), b = y; b--; ) d[b] = arguments[b]; - if (_) var w = wi(l), m = C(d, w); - if (e && (d = Uu(d, e, u, _)), i && (d = Bu(d, i, o, _)), y -= m, _ && y < a) { - return oi(n, t, Qu, l.placeholder, r, d, N(d, w), f, c, a - y); - } - var x = h ? r : this, j = p ? x[n] : n; - return y = d.length, f ? d = Hi(d, f) : v && y > 1 && d.reverse(), s && c < y && (d.length = c), - this && this !== re && this instanceof l && (j = g || Gu(j)), j.apply(x, d); - } - var s = t & mn, h = t & _n, p = t & vn, _ = t & (yn | dn), v = t & jn, g = p ? X : Gu(n); - return l; - } - function Xu(n, t) { - return function(r, e) { - return Oe(r, n, t(e), {}); - }; - } - function ni(n, t) { - return function(r, e) { - var u; - if (r === X && e === X) return t; - if (r !== X && (u = r), e !== X) { - if (u === X) return e; - "string" == typeof r || "string" == typeof e ? (r = vu(r), e = vu(e)) : (r = _u(r), - e = _u(e)), u = n(r, e); - } - return u; - }; - } - function ti(t) { - return gi(function(r) { - return r = c(r, z(mi())), uu(function(e) { - var u = this; - return t(r, function(t) { - return n(t, u, e); - }); - }); - }); - } - function ri(n, t) { - t = t === X ? " " : vu(t); - var r = t.length; - if (r < 2) return r ? eu(t, n) : t; - var e = eu(t, Fl(n / V(t))); - return T(t) ? Ou(G(e), 0, n).join("") : e.slice(0, n); - } - function ei(t, r, e, u) { - function i() { - for (var r = -1, c = arguments.length, a = -1, l = u.length, s = il(l + c), h = this && this !== re && this instanceof i ? f : t; ++a < l; ) s[a] = u[a]; - for (;c--; ) s[a++] = arguments[++r]; - return n(h, o ? e : this, s); - } - var o = r & _n, f = Gu(t); - return i; - } - function ui(n) { - return function(t, r, e) { - return e && "number" != typeof e && Ui(t, r, e) && (r = e = X), t = Ac(t), r === X ? (r = t, - t = 0) : r = Ac(r), e = e === X ? t < r ? 1 : -1 : Ac(e), ru(t, r, e, n); - }; - } - function ii(n) { - return function(t, r) { - return "string" == typeof t && "string" == typeof r || (t = Ic(t), r = Ic(r)), n(t, r); - }; - } - function oi(n, t, r, e, u, i, o, f, c, a) { - var l = t & yn, s = l ? o : X, h = l ? X : o, p = l ? i : X, _ = l ? X : i; - t |= l ? bn : wn, t &= ~(l ? wn : bn), t & gn || (t &= ~(_n | vn)); - var v = [ n, t, u, p, s, _, h, f, c, a ], g = r.apply(X, v); - return $i(n) && Ss(g, v), g.placeholder = e, Yi(g, n, t); - } - function fi(n) { - var t = al[n]; - return function(n, r) { - if (n = Ic(n), r = null == r ? 0 : Hl(kc(r), 292), r && Zl(n)) { - var e = (Ec(n) + "e").split("e"); - return e = (Ec(t(e[0] + "e" + (+e[1] + r))) + "e").split("e"), +(e[0] + "e" + (+e[1] - r)); - } - return t(n); - }; - } - function ci(n) { - return function(t) { - var r = zs(t); - return r == Gn ? M(t) : r == tt ? q(t) : I(t, n(t)); - }; - } - function ai(n, t, r, e, u, i, o, f) { - var c = t & vn; - if (!c && "function" != typeof n) throw new pl(en); - var a = e ? e.length : 0; - if (a || (t &= ~(bn | wn), e = u = X), o = o === X ? o : Gl(kc(o), 0), f = f === X ? f : kc(f), - a -= u ? u.length : 0, t & wn) { - var l = e, s = u; - e = u = X; - } - var h = c ? X : Os(n), p = [ n, t, r, e, u, l, s, i, o, f ]; - if (h && qi(p, h), n = p[0], t = p[1], r = p[2], e = p[3], u = p[4], f = p[9] = p[9] === X ? c ? 0 : n.length : Gl(p[9] - a, 0), - !f && t & (yn | dn) && (t &= ~(yn | dn)), t && t != _n) _ = t == yn || t == dn ? Hu(n, t, f) : t != bn && t != (_n | bn) || u.length ? Qu.apply(X, p) : ei(n, t, r, e); else var _ = Zu(n, t, r); - return Yi((h ? ms : Ss)(_, p), n, t); - } - function li(n, t, r, e) { - return n === X || Gf(n, gl[r]) && !bl.call(e, r) ? t : n; - } - function si(n, t, r, e, u, i) { - return fc(n) && fc(t) && (i.set(t, n), Ke(n, t, X, si, i), i.delete(t)), n; - } - function hi(n) { - return gc(n) ? X : n; - } - function pi(n, t, r, e, u, i) { - var o = r & hn, f = n.length, c = t.length; - if (f != c && !(o && c > f)) return !1; - var a = i.get(n), l = i.get(t); - if (a && l) return a == t && l == n; - var s = -1, p = !0, _ = r & pn ? new yr() : X; - for (i.set(n, t), i.set(t, n); ++s < f; ) { - var v = n[s], g = t[s]; - if (e) var y = o ? e(g, v, s, t, n, i) : e(v, g, s, n, t, i); - if (y !== X) { - if (y) continue; - p = !1; - break; - } - if (_) { - if (!h(t, function(n, t) { - if (!S(_, t) && (v === n || u(v, n, r, e, i))) return _.push(t); - })) { - p = !1; - break; - } - } else if (v !== g && !u(v, g, r, e, i)) { - p = !1; - break; - } - } - return i.delete(n), i.delete(t), p; - } - function _i(n, t, r, e, u, i, o) { - switch (r) { - case ct: - if (n.byteLength != t.byteLength || n.byteOffset != t.byteOffset) return !1; - n = n.buffer, t = t.buffer; - - case ft: - return !(n.byteLength != t.byteLength || !i(new Rl(n), new Rl(t))); - - case Nn: - case Pn: - case Hn: - return Gf(+n, +t); - - case Zn: - return n.name == t.name && n.message == t.message; - - case nt: - case rt: - return n == t + ""; - - case Gn: - var f = M; - - case tt: - var c = e & hn; - if (f || (f = P), n.size != t.size && !c) return !1; - var a = o.get(n); - if (a) return a == t; - e |= pn, o.set(n, t); - var l = pi(f(n), f(t), e, u, i, o); - return o.delete(n), l; - - case et: - if (_s) return _s.call(n) == _s.call(t); - } - return !1; - } - function vi(n, t, r, e, u, i) { - var o = r & hn, f = yi(n), c = f.length; - if (c != yi(t).length && !o) return !1; - for (var a = c; a--; ) { - var l = f[a]; - if (!(o ? l in t : bl.call(t, l))) return !1; - } - var s = i.get(n), h = i.get(t); - if (s && h) return s == t && h == n; - var p = !0; - i.set(n, t), i.set(t, n); - for (var _ = o; ++a < c; ) { - l = f[a]; - var v = n[l], g = t[l]; - if (e) var y = o ? e(g, v, l, t, n, i) : e(v, g, l, n, t, i); - if (!(y === X ? v === g || u(v, g, r, e, i) : y)) { - p = !1; - break; - } - _ || (_ = "constructor" == l); - } - if (p && !_) { - var d = n.constructor, b = t.constructor; - d != b && "constructor" in n && "constructor" in t && !("function" == typeof d && d instanceof d && "function" == typeof b && b instanceof b) && (p = !1); - } - return i.delete(n), i.delete(t), p; - } - function gi(n) { - return Ls(Vi(n, X, _o), n + ""); - } - function yi(n) { - return de(n, Pc, Is); - } - function di(n) { - return de(n, qc, Rs); - } - function bi(n) { - for (var t = n.name + "", r = fs[t], e = bl.call(fs, t) ? r.length : 0; e--; ) { - var u = r[e], i = u.func; - if (null == i || i == n) return u.name; - } - return t; - } - function wi(n) { - return (bl.call(Z, "placeholder") ? Z : n).placeholder; - } - function mi() { - var n = Z.iteratee || Ca; - return n = n === Ca ? De : n, arguments.length ? n(arguments[0], arguments[1]) : n; - } - function xi(n, t) { - var r = n.__data__; - return Ti(t) ? r["string" == typeof t ? "string" : "hash"] : r.map; - } - function ji(n) { - for (var t = Pc(n), r = t.length; r--; ) { - var e = t[r], u = n[e]; - t[r] = [ e, u, Fi(u) ]; - } - return t; - } - function Ai(n, t) { - var r = B(n, t); - return Ue(r) ? r : X; - } - function ki(n) { - var t = bl.call(n, Bl), r = n[Bl]; - try { - n[Bl] = X; - var e = !0; - } catch (n) {} - var u = xl.call(n); - return e && (t ? n[Bl] = r : delete n[Bl]), u; - } - function Oi(n, t, r) { - for (var e = -1, u = r.length; ++e < u; ) { - var i = r[e], o = i.size; - switch (i.type) { - case "drop": - n += o; - break; - - case "dropRight": - t -= o; - break; - - case "take": - t = Hl(t, n + o); - break; - - case "takeRight": - n = Gl(n, t - o); - } - } - return { - start: n, - end: t - }; - } - function Ii(n) { - var t = n.match(Bt); - return t ? t[1].split(Tt) : []; - } - function Ri(n, t, r) { - t = ku(t, n); - for (var e = -1, u = t.length, i = !1; ++e < u; ) { - var o = no(t[e]); - if (!(i = null != n && r(n, o))) break; - n = n[o]; - } - return i || ++e != u ? i : (u = null == n ? 0 : n.length, !!u && oc(u) && Ci(o, u) && (bh(n) || dh(n))); - } - function zi(n) { - var t = n.length, r = new n.constructor(t); - return t && "string" == typeof n[0] && bl.call(n, "index") && (r.index = n.index, - r.input = n.input), r; - } - function Ei(n) { - return "function" != typeof n.constructor || Mi(n) ? {} : gs(El(n)); - } - function Si(n, t, r) { - var e = n.constructor; - switch (t) { - case ft: - return Ru(n); - - case Nn: - case Pn: - return new e(+n); - - case ct: - return zu(n, r); - - case at: - case lt: - case st: - case ht: - case pt: - case _t: - case vt: - case gt: - case yt: - return Wu(n, r); - - case Gn: - return new e(); - - case Hn: - case rt: - return new e(n); - - case nt: - return Eu(n); - - case tt: - return new e(); - - case et: - return Su(n); - } - } - function Wi(n, t) { - var r = t.length; - if (!r) return n; - var e = r - 1; - return t[e] = (r > 1 ? "& " : "") + t[e], t = t.join(r > 2 ? ", " : " "), n.replace(Ut, "{\n/* [wrapped with " + t + "] */\n"); - } - function Li(n) { - return bh(n) || dh(n) || !!(Cl && n && n[Cl]); - } - function Ci(n, t) { - var r = typeof n; - return t = null == t ? Wn : t, !!t && ("number" == r || "symbol" != r && Vt.test(n)) && n > -1 && n % 1 == 0 && n < t; - } - function Ui(n, t, r) { - if (!fc(r)) return !1; - var e = typeof t; - return !!("number" == e ? Hf(r) && Ci(t, r.length) : "string" == e && t in r) && Gf(r[t], n); - } - function Bi(n, t) { - if (bh(n)) return !1; - var r = typeof n; - return !("number" != r && "symbol" != r && "boolean" != r && null != n && !bc(n)) || (zt.test(n) || !Rt.test(n) || null != t && n in ll(t)); - } - function Ti(n) { - var t = typeof n; - return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== n : null === n; - } - function $i(n) { - var t = bi(n), r = Z[t]; - if ("function" != typeof r || !(t in Ct.prototype)) return !1; - if (n === r) return !0; - var e = Os(r); - return !!e && n === e[0]; - } - function Di(n) { - return !!ml && ml in n; - } - function Mi(n) { - var t = n && n.constructor; - return n === ("function" == typeof t && t.prototype || gl); - } - function Fi(n) { - return n === n && !fc(n); - } - function Ni(n, t) { - return function(r) { - return null != r && (r[n] === t && (t !== X || n in ll(r))); - }; - } - function Pi(n) { - var t = Cf(n, function(n) { - return r.size === fn && r.clear(), n; - }), r = t.cache; - return t; - } - function qi(n, t) { - var r = n[1], e = t[1], u = r | e, i = u < (_n | vn | mn), o = e == mn && r == yn || e == mn && r == xn && n[7].length <= t[8] || e == (mn | xn) && t[7].length <= t[8] && r == yn; - if (!i && !o) return n; - e & _n && (n[2] = t[2], u |= r & _n ? 0 : gn); - var f = t[3]; - if (f) { - var c = n[3]; - n[3] = c ? Uu(c, f, t[4]) : f, n[4] = c ? N(n[3], cn) : t[4]; - } - return f = t[5], f && (c = n[5], n[5] = c ? Bu(c, f, t[6]) : f, n[6] = c ? N(n[5], cn) : t[6]), - f = t[7], f && (n[7] = f), e & mn && (n[8] = null == n[8] ? t[8] : Hl(n[8], t[8])), - null == n[9] && (n[9] = t[9]), n[0] = t[0], n[1] = u, n; - } - function Zi(n) { - var t = []; - if (null != n) for (var r in ll(n)) t.push(r); - return t; - } - function Ki(n) { - return xl.call(n); - } - function Vi(t, r, e) { - return r = Gl(r === X ? t.length - 1 : r, 0), function() { - for (var u = arguments, i = -1, o = Gl(u.length - r, 0), f = il(o); ++i < o; ) f[i] = u[r + i]; - i = -1; - for (var c = il(r + 1); ++i < r; ) c[i] = u[i]; - return c[r] = e(f), n(t, this, c); - }; - } - function Gi(n, t) { - return t.length < 2 ? n : _e(n, au(t, 0, -1)); - } - function Hi(n, t) { - for (var r = n.length, e = Hl(t.length, r), u = Tu(n); e--; ) { - var i = t[e]; - n[e] = Ci(i, r) ? u[i] : X; - } - return n; - } - function Ji(n, t) { - if (("constructor" !== t || "function" != typeof n[t]) && "__proto__" != t) return n[t]; - } - function Yi(n, t, r) { - var e = t + ""; - return Ls(n, Wi(e, ro(Ii(e), r))); - } - function Qi(n) { - var t = 0, r = 0; - return function() { - var e = Jl(), u = In - (e - r); - if (r = e, u > 0) { - if (++t >= On) return arguments[0]; - } else t = 0; - return n.apply(X, arguments); - }; - } - function Xi(n, t) { - var r = -1, e = n.length, u = e - 1; - for (t = t === X ? e : t; ++r < t; ) { - var i = tu(r, u), o = n[i]; - n[i] = n[r], n[r] = o; - } - return n.length = t, n; - } - function no(n) { - if ("string" == typeof n || bc(n)) return n; - var t = n + ""; - return "0" == t && 1 / n == -Sn ? "-0" : t; - } - function to(n) { - if (null != n) { - try { - return dl.call(n); - } catch (n) {} - try { - return n + ""; - } catch (n) {} - } - return ""; - } - function ro(n, t) { - return r($n, function(r) { - var e = "_." + r[0]; - t & r[1] && !o(n, e) && n.push(e); - }), n.sort(); - } - function eo(n) { - if (n instanceof Ct) return n.clone(); - var t = new Y(n.__wrapped__, n.__chain__); - return t.__actions__ = Tu(n.__actions__), t.__index__ = n.__index__, t.__values__ = n.__values__, - t; - } - function uo(n, t, r) { - t = (r ? Ui(n, t, r) : t === X) ? 1 : Gl(kc(t), 0); - var e = null == n ? 0 : n.length; - if (!e || t < 1) return []; - for (var u = 0, i = 0, o = il(Fl(e / t)); u < e; ) o[i++] = au(n, u, u += t); - return o; - } - function io(n) { - for (var t = -1, r = null == n ? 0 : n.length, e = 0, u = []; ++t < r; ) { - var i = n[t]; - i && (u[e++] = i); - } - return u; - } - function oo() { - var n = arguments.length; - if (!n) return []; - for (var t = il(n - 1), r = arguments[0], e = n; e--; ) t[e - 1] = arguments[e]; - return a(bh(r) ? Tu(r) : [ r ], ee(t, 1)); - } - function fo(n, t, r) { - var e = null == n ? 0 : n.length; - return e ? (t = r || t === X ? 1 : kc(t), au(n, t < 0 ? 0 : t, e)) : []; - } - function co(n, t, r) { - var e = null == n ? 0 : n.length; - return e ? (t = r || t === X ? 1 : kc(t), t = e - t, au(n, 0, t < 0 ? 0 : t)) : []; - } - function ao(n, t) { - return n && n.length ? bu(n, mi(t, 3), !0, !0) : []; - } - function lo(n, t) { - return n && n.length ? bu(n, mi(t, 3), !0) : []; - } - function so(n, t, r, e) { - var u = null == n ? 0 : n.length; - return u ? (r && "number" != typeof r && Ui(n, t, r) && (r = 0, e = u), ne(n, t, r, e)) : []; - } - function ho(n, t, r) { - var e = null == n ? 0 : n.length; - if (!e) return -1; - var u = null == r ? 0 : kc(r); - return u < 0 && (u = Gl(e + u, 0)), g(n, mi(t, 3), u); - } - function po(n, t, r) { - var e = null == n ? 0 : n.length; - if (!e) return -1; - var u = e - 1; - return r !== X && (u = kc(r), u = r < 0 ? Gl(e + u, 0) : Hl(u, e - 1)), g(n, mi(t, 3), u, !0); - } - function _o(n) { - return (null == n ? 0 : n.length) ? ee(n, 1) : []; - } - function vo(n) { - return (null == n ? 0 : n.length) ? ee(n, Sn) : []; - } - function go(n, t) { - return (null == n ? 0 : n.length) ? (t = t === X ? 1 : kc(t), ee(n, t)) : []; - } - function yo(n) { - for (var t = -1, r = null == n ? 0 : n.length, e = {}; ++t < r; ) { - var u = n[t]; - e[u[0]] = u[1]; - } - return e; - } - function bo(n) { - return n && n.length ? n[0] : X; - } - function wo(n, t, r) { - var e = null == n ? 0 : n.length; - if (!e) return -1; - var u = null == r ? 0 : kc(r); - return u < 0 && (u = Gl(e + u, 0)), y(n, t, u); - } - function mo(n) { - return (null == n ? 0 : n.length) ? au(n, 0, -1) : []; - } - function xo(n, t) { - return null == n ? "" : Kl.call(n, t); - } - function jo(n) { - var t = null == n ? 0 : n.length; - return t ? n[t - 1] : X; - } - function Ao(n, t, r) { - var e = null == n ? 0 : n.length; - if (!e) return -1; - var u = e; - return r !== X && (u = kc(r), u = u < 0 ? Gl(e + u, 0) : Hl(u, e - 1)), t === t ? K(n, t, u) : g(n, b, u, !0); - } - function ko(n, t) { - return n && n.length ? Ge(n, kc(t)) : X; - } - function Oo(n, t) { - return n && n.length && t && t.length ? Xe(n, t) : n; - } - function Io(n, t, r) { - return n && n.length && t && t.length ? Xe(n, t, mi(r, 2)) : n; - } - function Ro(n, t, r) { - return n && n.length && t && t.length ? Xe(n, t, X, r) : n; - } - function zo(n, t) { - var r = []; - if (!n || !n.length) return r; - var e = -1, u = [], i = n.length; - for (t = mi(t, 3); ++e < i; ) { - var o = n[e]; - t(o, e, n) && (r.push(o), u.push(e)); - } - return nu(n, u), r; - } - function Eo(n) { - return null == n ? n : Xl.call(n); - } - function So(n, t, r) { - var e = null == n ? 0 : n.length; - return e ? (r && "number" != typeof r && Ui(n, t, r) ? (t = 0, r = e) : (t = null == t ? 0 : kc(t), - r = r === X ? e : kc(r)), au(n, t, r)) : []; - } - function Wo(n, t) { - return su(n, t); - } - function Lo(n, t, r) { - return hu(n, t, mi(r, 2)); - } - function Co(n, t) { - var r = null == n ? 0 : n.length; - if (r) { - var e = su(n, t); - if (e < r && Gf(n[e], t)) return e; - } - return -1; - } - function Uo(n, t) { - return su(n, t, !0); - } - function Bo(n, t, r) { - return hu(n, t, mi(r, 2), !0); - } - function To(n, t) { - if (null == n ? 0 : n.length) { - var r = su(n, t, !0) - 1; - if (Gf(n[r], t)) return r; - } - return -1; - } - function $o(n) { - return n && n.length ? pu(n) : []; - } - function Do(n, t) { - return n && n.length ? pu(n, mi(t, 2)) : []; - } - function Mo(n) { - var t = null == n ? 0 : n.length; - return t ? au(n, 1, t) : []; - } - function Fo(n, t, r) { - return n && n.length ? (t = r || t === X ? 1 : kc(t), au(n, 0, t < 0 ? 0 : t)) : []; - } - function No(n, t, r) { - var e = null == n ? 0 : n.length; - return e ? (t = r || t === X ? 1 : kc(t), t = e - t, au(n, t < 0 ? 0 : t, e)) : []; - } - function Po(n, t) { - return n && n.length ? bu(n, mi(t, 3), !1, !0) : []; - } - function qo(n, t) { - return n && n.length ? bu(n, mi(t, 3)) : []; - } - function Zo(n) { - return n && n.length ? gu(n) : []; - } - function Ko(n, t) { - return n && n.length ? gu(n, mi(t, 2)) : []; - } - function Vo(n, t) { - return t = "function" == typeof t ? t : X, n && n.length ? gu(n, X, t) : []; - } - function Go(n) { - if (!n || !n.length) return []; - var t = 0; - return n = i(n, function(n) { - if (Jf(n)) return t = Gl(n.length, t), !0; - }), O(t, function(t) { - return c(n, m(t)); - }); - } - function Ho(t, r) { - if (!t || !t.length) return []; - var e = Go(t); - return null == r ? e : c(e, function(t) { - return n(r, X, t); - }); - } - function Jo(n, t) { - return xu(n || [], t || [], Sr); - } - function Yo(n, t) { - return xu(n || [], t || [], fu); - } - function Qo(n) { - var t = Z(n); - return t.__chain__ = !0, t; - } - function Xo(n, t) { - return t(n), n; - } - function nf(n, t) { - return t(n); - } - function tf() { - return Qo(this); - } - function rf() { - return new Y(this.value(), this.__chain__); - } - function ef() { - this.__values__ === X && (this.__values__ = jc(this.value())); - var n = this.__index__ >= this.__values__.length; - return { - done: n, - value: n ? X : this.__values__[this.__index__++] - }; - } - function uf() { - return this; - } - function of(n) { - for (var t, r = this; r instanceof J; ) { - var e = eo(r); - e.__index__ = 0, e.__values__ = X, t ? u.__wrapped__ = e : t = e; - var u = e; - r = r.__wrapped__; - } - return u.__wrapped__ = n, t; - } - function ff() { - var n = this.__wrapped__; - if (n instanceof Ct) { - var t = n; - return this.__actions__.length && (t = new Ct(this)), t = t.reverse(), t.__actions__.push({ - func: nf, - args: [ Eo ], - thisArg: X - }), new Y(t, this.__chain__); - } - return this.thru(Eo); - } - function cf() { - return wu(this.__wrapped__, this.__actions__); - } - function af(n, t, r) { - var e = bh(n) ? u : Jr; - return r && Ui(n, t, r) && (t = X), e(n, mi(t, 3)); - } - function lf(n, t) { - return (bh(n) ? i : te)(n, mi(t, 3)); - } - function sf(n, t) { - return ee(yf(n, t), 1); - } - function hf(n, t) { - return ee(yf(n, t), Sn); - } - function pf(n, t, r) { - return r = r === X ? 1 : kc(r), ee(yf(n, t), r); - } - function _f(n, t) { - return (bh(n) ? r : ys)(n, mi(t, 3)); - } - function vf(n, t) { - return (bh(n) ? e : ds)(n, mi(t, 3)); - } - function gf(n, t, r, e) { - n = Hf(n) ? n : ra(n), r = r && !e ? kc(r) : 0; - var u = n.length; - return r < 0 && (r = Gl(u + r, 0)), dc(n) ? r <= u && n.indexOf(t, r) > -1 : !!u && y(n, t, r) > -1; - } - function yf(n, t) { - return (bh(n) ? c : Pe)(n, mi(t, 3)); - } - function df(n, t, r, e) { - return null == n ? [] : (bh(t) || (t = null == t ? [] : [ t ]), r = e ? X : r, bh(r) || (r = null == r ? [] : [ r ]), - He(n, t, r)); - } - function bf(n, t, r) { - var e = bh(n) ? l : j, u = arguments.length < 3; - return e(n, mi(t, 4), r, u, ys); - } - function wf(n, t, r) { - var e = bh(n) ? s : j, u = arguments.length < 3; - return e(n, mi(t, 4), r, u, ds); - } - function mf(n, t) { - return (bh(n) ? i : te)(n, Uf(mi(t, 3))); - } - function xf(n) { - return (bh(n) ? Ir : iu)(n); - } - function jf(n, t, r) { - return t = (r ? Ui(n, t, r) : t === X) ? 1 : kc(t), (bh(n) ? Rr : ou)(n, t); - } - function Af(n) { - return (bh(n) ? zr : cu)(n); - } - function kf(n) { - if (null == n) return 0; - if (Hf(n)) return dc(n) ? V(n) : n.length; - var t = zs(n); - return t == Gn || t == tt ? n.size : Me(n).length; - } - function Of(n, t, r) { - var e = bh(n) ? h : lu; - return r && Ui(n, t, r) && (t = X), e(n, mi(t, 3)); - } - function If(n, t) { - if ("function" != typeof t) throw new pl(en); - return n = kc(n), function() { - if (--n < 1) return t.apply(this, arguments); - }; - } - function Rf(n, t, r) { - return t = r ? X : t, t = n && null == t ? n.length : t, ai(n, mn, X, X, X, X, t); - } - function zf(n, t) { - var r; - if ("function" != typeof t) throw new pl(en); - return n = kc(n), function() { - return --n > 0 && (r = t.apply(this, arguments)), n <= 1 && (t = X), r; - }; - } - function Ef(n, t, r) { - t = r ? X : t; - var e = ai(n, yn, X, X, X, X, X, t); - return e.placeholder = Ef.placeholder, e; - } - function Sf(n, t, r) { - t = r ? X : t; - var e = ai(n, dn, X, X, X, X, X, t); - return e.placeholder = Sf.placeholder, e; - } - function Wf(n, t, r) { - function e(t) { - var r = h, e = p; - return h = p = X, d = t, v = n.apply(e, r); - } - function u(n) { - return d = n, g = Ws(f, t), b ? e(n) : v; - } - function i(n) { - var r = n - y, e = n - d, u = t - r; - return w ? Hl(u, _ - e) : u; - } - function o(n) { - var r = n - y, e = n - d; - return y === X || r >= t || r < 0 || w && e >= _; - } - function f() { - var n = fh(); - return o(n) ? c(n) : (g = Ws(f, i(n)), X); - } - function c(n) { - return g = X, m && h ? e(n) : (h = p = X, v); - } - function a() { - g !== X && As(g), d = 0, h = y = p = g = X; - } - function l() { - return g === X ? v : c(fh()); - } - function s() { - var n = fh(), r = o(n); - if (h = arguments, p = this, y = n, r) { - if (g === X) return u(y); - if (w) return As(g), g = Ws(f, t), e(y); - } - return g === X && (g = Ws(f, t)), v; - } - var h, p, _, v, g, y, d = 0, b = !1, w = !1, m = !0; - if ("function" != typeof n) throw new pl(en); - return t = Ic(t) || 0, fc(r) && (b = !!r.leading, w = "maxWait" in r, _ = w ? Gl(Ic(r.maxWait) || 0, t) : _, - m = "trailing" in r ? !!r.trailing : m), s.cancel = a, s.flush = l, s; - } - function Lf(n) { - return ai(n, jn); - } - function Cf(n, t) { - if ("function" != typeof n || null != t && "function" != typeof t) throw new pl(en); - var r = function() { - var e = arguments, u = t ? t.apply(this, e) : e[0], i = r.cache; - if (i.has(u)) return i.get(u); - var o = n.apply(this, e); - return r.cache = i.set(u, o) || i, o; - }; - return r.cache = new (Cf.Cache || sr)(), r; - } - function Uf(n) { - if ("function" != typeof n) throw new pl(en); - return function() { - var t = arguments; - switch (t.length) { - case 0: - return !n.call(this); - - case 1: - return !n.call(this, t[0]); - - case 2: - return !n.call(this, t[0], t[1]); - - case 3: - return !n.call(this, t[0], t[1], t[2]); - } - return !n.apply(this, t); - }; - } - function Bf(n) { - return zf(2, n); - } - function Tf(n, t) { - if ("function" != typeof n) throw new pl(en); - return t = t === X ? t : kc(t), uu(n, t); - } - function $f(t, r) { - if ("function" != typeof t) throw new pl(en); - return r = null == r ? 0 : Gl(kc(r), 0), uu(function(e) { - var u = e[r], i = Ou(e, 0, r); - return u && a(i, u), n(t, this, i); - }); - } - function Df(n, t, r) { - var e = !0, u = !0; - if ("function" != typeof n) throw new pl(en); - return fc(r) && (e = "leading" in r ? !!r.leading : e, u = "trailing" in r ? !!r.trailing : u), - Wf(n, t, { - leading: e, - maxWait: t, - trailing: u - }); - } - function Mf(n) { - return Rf(n, 1); - } - function Ff(n, t) { - return ph(Au(t), n); - } - function Nf() { - if (!arguments.length) return []; - var n = arguments[0]; - return bh(n) ? n : [ n ]; - } - function Pf(n) { - return Fr(n, sn); - } - function qf(n, t) { - return t = "function" == typeof t ? t : X, Fr(n, sn, t); - } - function Zf(n) { - return Fr(n, an | sn); - } - function Kf(n, t) { - return t = "function" == typeof t ? t : X, Fr(n, an | sn, t); - } - function Vf(n, t) { - return null == t || Pr(n, t, Pc(t)); - } - function Gf(n, t) { - return n === t || n !== n && t !== t; - } - function Hf(n) { - return null != n && oc(n.length) && !uc(n); - } - function Jf(n) { - return cc(n) && Hf(n); - } - function Yf(n) { - return n === !0 || n === !1 || cc(n) && we(n) == Nn; - } - function Qf(n) { - return cc(n) && 1 === n.nodeType && !gc(n); - } - function Xf(n) { - if (null == n) return !0; - if (Hf(n) && (bh(n) || "string" == typeof n || "function" == typeof n.splice || mh(n) || Oh(n) || dh(n))) return !n.length; - var t = zs(n); - if (t == Gn || t == tt) return !n.size; - if (Mi(n)) return !Me(n).length; - for (var r in n) if (bl.call(n, r)) return !1; - return !0; - } - function nc(n, t) { - return Se(n, t); - } - function tc(n, t, r) { - r = "function" == typeof r ? r : X; - var e = r ? r(n, t) : X; - return e === X ? Se(n, t, X, r) : !!e; - } - function rc(n) { - if (!cc(n)) return !1; - var t = we(n); - return t == Zn || t == qn || "string" == typeof n.message && "string" == typeof n.name && !gc(n); - } - function ec(n) { - return "number" == typeof n && Zl(n); - } - function uc(n) { - if (!fc(n)) return !1; - var t = we(n); - return t == Kn || t == Vn || t == Fn || t == Xn; - } - function ic(n) { - return "number" == typeof n && n == kc(n); - } - function oc(n) { - return "number" == typeof n && n > -1 && n % 1 == 0 && n <= Wn; - } - function fc(n) { - var t = typeof n; - return null != n && ("object" == t || "function" == t); - } - function cc(n) { - return null != n && "object" == typeof n; - } - function ac(n, t) { - return n === t || Ce(n, t, ji(t)); - } - function lc(n, t, r) { - return r = "function" == typeof r ? r : X, Ce(n, t, ji(t), r); - } - function sc(n) { - return vc(n) && n != +n; - } - function hc(n) { - if (Es(n)) throw new fl(rn); - return Ue(n); - } - function pc(n) { - return null === n; - } - function _c(n) { - return null == n; - } - function vc(n) { - return "number" == typeof n || cc(n) && we(n) == Hn; - } - function gc(n) { - if (!cc(n) || we(n) != Yn) return !1; - var t = El(n); - if (null === t) return !0; - var r = bl.call(t, "constructor") && t.constructor; - return "function" == typeof r && r instanceof r && dl.call(r) == jl; - } - function yc(n) { - return ic(n) && n >= -Wn && n <= Wn; - } - function dc(n) { - return "string" == typeof n || !bh(n) && cc(n) && we(n) == rt; - } - function bc(n) { - return "symbol" == typeof n || cc(n) && we(n) == et; - } - function wc(n) { - return n === X; - } - function mc(n) { - return cc(n) && zs(n) == it; - } - function xc(n) { - return cc(n) && we(n) == ot; - } - function jc(n) { - if (!n) return []; - if (Hf(n)) return dc(n) ? G(n) : Tu(n); - if (Ul && n[Ul]) return D(n[Ul]()); - var t = zs(n); - return (t == Gn ? M : t == tt ? P : ra)(n); - } - function Ac(n) { - if (!n) return 0 === n ? n : 0; - if (n = Ic(n), n === Sn || n === -Sn) { - return (n < 0 ? -1 : 1) * Ln; - } - return n === n ? n : 0; - } - function kc(n) { - var t = Ac(n), r = t % 1; - return t === t ? r ? t - r : t : 0; - } - function Oc(n) { - return n ? Mr(kc(n), 0, Un) : 0; - } - function Ic(n) { - if ("number" == typeof n) return n; - if (bc(n)) return Cn; - if (fc(n)) { - var t = "function" == typeof n.valueOf ? n.valueOf() : n; - n = fc(t) ? t + "" : t; - } - if ("string" != typeof n) return 0 === n ? n : +n; - n = R(n); - var r = qt.test(n); - return r || Kt.test(n) ? Xr(n.slice(2), r ? 2 : 8) : Pt.test(n) ? Cn : +n; - } - function Rc(n) { - return $u(n, qc(n)); - } - function zc(n) { - return n ? Mr(kc(n), -Wn, Wn) : 0 === n ? n : 0; - } - function Ec(n) { - return null == n ? "" : vu(n); - } - function Sc(n, t) { - var r = gs(n); - return null == t ? r : Cr(r, t); - } - function Wc(n, t) { - return v(n, mi(t, 3), ue); - } - function Lc(n, t) { - return v(n, mi(t, 3), oe); - } - function Cc(n, t) { - return null == n ? n : bs(n, mi(t, 3), qc); - } - function Uc(n, t) { - return null == n ? n : ws(n, mi(t, 3), qc); - } - function Bc(n, t) { - return n && ue(n, mi(t, 3)); - } - function Tc(n, t) { - return n && oe(n, mi(t, 3)); - } - function $c(n) { - return null == n ? [] : fe(n, Pc(n)); - } - function Dc(n) { - return null == n ? [] : fe(n, qc(n)); - } - function Mc(n, t, r) { - var e = null == n ? X : _e(n, t); - return e === X ? r : e; - } - function Fc(n, t) { - return null != n && Ri(n, t, xe); - } - function Nc(n, t) { - return null != n && Ri(n, t, je); - } - function Pc(n) { - return Hf(n) ? Or(n) : Me(n); - } - function qc(n) { - return Hf(n) ? Or(n, !0) : Fe(n); - } - function Zc(n, t) { - var r = {}; - return t = mi(t, 3), ue(n, function(n, e, u) { - Br(r, t(n, e, u), n); - }), r; - } - function Kc(n, t) { - var r = {}; - return t = mi(t, 3), ue(n, function(n, e, u) { - Br(r, e, t(n, e, u)); - }), r; - } - function Vc(n, t) { - return Gc(n, Uf(mi(t))); - } - function Gc(n, t) { - if (null == n) return {}; - var r = c(di(n), function(n) { - return [ n ]; - }); - return t = mi(t), Ye(n, r, function(n, r) { - return t(n, r[0]); - }); - } - function Hc(n, t, r) { - t = ku(t, n); - var e = -1, u = t.length; - for (u || (u = 1, n = X); ++e < u; ) { - var i = null == n ? X : n[no(t[e])]; - i === X && (e = u, i = r), n = uc(i) ? i.call(n) : i; - } - return n; - } - function Jc(n, t, r) { - return null == n ? n : fu(n, t, r); - } - function Yc(n, t, r, e) { - return e = "function" == typeof e ? e : X, null == n ? n : fu(n, t, r, e); - } - function Qc(n, t, e) { - var u = bh(n), i = u || mh(n) || Oh(n); - if (t = mi(t, 4), null == e) { - var o = n && n.constructor; - e = i ? u ? new o() : [] : fc(n) && uc(o) ? gs(El(n)) : {}; - } - return (i ? r : ue)(n, function(n, r, u) { - return t(e, n, r, u); - }), e; - } - function Xc(n, t) { - return null == n || yu(n, t); - } - function na(n, t, r) { - return null == n ? n : du(n, t, Au(r)); - } - function ta(n, t, r, e) { - return e = "function" == typeof e ? e : X, null == n ? n : du(n, t, Au(r), e); - } - function ra(n) { - return null == n ? [] : E(n, Pc(n)); - } - function ea(n) { - return null == n ? [] : E(n, qc(n)); - } - function ua(n, t, r) { - return r === X && (r = t, t = X), r !== X && (r = Ic(r), r = r === r ? r : 0), t !== X && (t = Ic(t), - t = t === t ? t : 0), Mr(Ic(n), t, r); - } - function ia(n, t, r) { - return t = Ac(t), r === X ? (r = t, t = 0) : r = Ac(r), n = Ic(n), Ae(n, t, r); - } - function oa(n, t, r) { - if (r && "boolean" != typeof r && Ui(n, t, r) && (t = r = X), r === X && ("boolean" == typeof t ? (r = t, - t = X) : "boolean" == typeof n && (r = n, n = X)), n === X && t === X ? (n = 0, - t = 1) : (n = Ac(n), t === X ? (t = n, n = 0) : t = Ac(t)), n > t) { - var e = n; - n = t, t = e; - } - if (r || n % 1 || t % 1) { - var u = Ql(); - return Hl(n + u * (t - n + Qr("1e-" + ((u + "").length - 1))), t); - } - return tu(n, t); - } - function fa(n) { - return Qh(Ec(n).toLowerCase()); - } - function ca(n) { - return n = Ec(n), n && n.replace(Gt, ve).replace(Dr, ""); - } - function aa(n, t, r) { - n = Ec(n), t = vu(t); - var e = n.length; - r = r === X ? e : Mr(kc(r), 0, e); - var u = r; - return r -= t.length, r >= 0 && n.slice(r, u) == t; - } - function la(n) { - return n = Ec(n), n && At.test(n) ? n.replace(xt, ge) : n; - } - function sa(n) { - return n = Ec(n), n && Wt.test(n) ? n.replace(St, "\\$&") : n; - } - function ha(n, t, r) { - n = Ec(n), t = kc(t); - var e = t ? V(n) : 0; - if (!t || e >= t) return n; - var u = (t - e) / 2; - return ri(Nl(u), r) + n + ri(Fl(u), r); - } - function pa(n, t, r) { - n = Ec(n), t = kc(t); - var e = t ? V(n) : 0; - return t && e < t ? n + ri(t - e, r) : n; - } - function _a(n, t, r) { - n = Ec(n), t = kc(t); - var e = t ? V(n) : 0; - return t && e < t ? ri(t - e, r) + n : n; - } - function va(n, t, r) { - return r || null == t ? t = 0 : t && (t = +t), Yl(Ec(n).replace(Lt, ""), t || 0); - } - function ga(n, t, r) { - return t = (r ? Ui(n, t, r) : t === X) ? 1 : kc(t), eu(Ec(n), t); - } - function ya() { - var n = arguments, t = Ec(n[0]); - return n.length < 3 ? t : t.replace(n[1], n[2]); - } - function da(n, t, r) { - return r && "number" != typeof r && Ui(n, t, r) && (t = r = X), (r = r === X ? Un : r >>> 0) ? (n = Ec(n), - n && ("string" == typeof t || null != t && !Ah(t)) && (t = vu(t), !t && T(n)) ? Ou(G(n), 0, r) : n.split(t, r)) : []; - } - function ba(n, t, r) { - return n = Ec(n), r = null == r ? 0 : Mr(kc(r), 0, n.length), t = vu(t), n.slice(r, r + t.length) == t; - } - function wa(n, t, r) { - var e = Z.templateSettings; - r && Ui(n, t, r) && (t = X), n = Ec(n), t = Sh({}, t, e, li); - var u, i, o = Sh({}, t.imports, e.imports, li), f = Pc(o), c = E(o, f), a = 0, l = t.interpolate || Ht, s = "__p += '", h = sl((t.escape || Ht).source + "|" + l.source + "|" + (l === It ? Ft : Ht).source + "|" + (t.evaluate || Ht).source + "|$", "g"), p = "//# sourceURL=" + (bl.call(t, "sourceURL") ? (t.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++Zr + "]") + "\n"; - n.replace(h, function(t, r, e, o, f, c) { - return e || (e = o), s += n.slice(a, c).replace(Jt, U), r && (u = !0, s += "' +\n__e(" + r + ") +\n'"), - f && (i = !0, s += "';\n" + f + ";\n__p += '"), e && (s += "' +\n((__t = (" + e + ")) == null ? '' : __t) +\n'"), - a = c + t.length, t; - }), s += "';\n"; - var _ = bl.call(t, "variable") && t.variable; - if (_) { - if (Dt.test(_)) throw new fl(un); - } else s = "with (obj) {\n" + s + "\n}\n"; - s = (i ? s.replace(dt, "") : s).replace(bt, "$1").replace(wt, "$1;"), s = "function(" + (_ || "obj") + ") {\n" + (_ ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (u ? ", __e = _.escape" : "") + (i ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + s + "return __p\n}"; - var v = Xh(function() { - return cl(f, p + "return " + s).apply(X, c); - }); - if (v.source = s, rc(v)) throw v; - return v; - } - function ma(n) { - return Ec(n).toLowerCase(); - } - function xa(n) { - return Ec(n).toUpperCase(); - } - function ja(n, t, r) { - if (n = Ec(n), n && (r || t === X)) return R(n); - if (!n || !(t = vu(t))) return n; - var e = G(n), u = G(t); - return Ou(e, W(e, u), L(e, u) + 1).join(""); - } - function Aa(n, t, r) { - if (n = Ec(n), n && (r || t === X)) return n.slice(0, H(n) + 1); - if (!n || !(t = vu(t))) return n; - var e = G(n); - return Ou(e, 0, L(e, G(t)) + 1).join(""); - } - function ka(n, t, r) { - if (n = Ec(n), n && (r || t === X)) return n.replace(Lt, ""); - if (!n || !(t = vu(t))) return n; - var e = G(n); - return Ou(e, W(e, G(t))).join(""); - } - function Oa(n, t) { - var r = An, e = kn; - if (fc(t)) { - var u = "separator" in t ? t.separator : u; - r = "length" in t ? kc(t.length) : r, e = "omission" in t ? vu(t.omission) : e; - } - n = Ec(n); - var i = n.length; - if (T(n)) { - var o = G(n); - i = o.length; - } - if (r >= i) return n; - var f = r - V(e); - if (f < 1) return e; - var c = o ? Ou(o, 0, f).join("") : n.slice(0, f); - if (u === X) return c + e; - if (o && (f += c.length - f), Ah(u)) { - if (n.slice(f).search(u)) { - var a, l = c; - for (u.global || (u = sl(u.source, Ec(Nt.exec(u)) + "g")), u.lastIndex = 0; a = u.exec(l); ) var s = a.index; - c = c.slice(0, s === X ? f : s); - } - } else if (n.indexOf(vu(u), f) != f) { - var h = c.lastIndexOf(u); - h > -1 && (c = c.slice(0, h)); - } - return c + e; - } - function Ia(n) { - return n = Ec(n), n && jt.test(n) ? n.replace(mt, ye) : n; - } - function Ra(n, t, r) { - return n = Ec(n), t = r ? X : t, t === X ? $(n) ? Q(n) : _(n) : n.match(t) || []; - } - function za(t) { - var r = null == t ? 0 : t.length, e = mi(); - return t = r ? c(t, function(n) { - if ("function" != typeof n[1]) throw new pl(en); - return [ e(n[0]), n[1] ]; - }) : [], uu(function(e) { - for (var u = -1; ++u < r; ) { - var i = t[u]; - if (n(i[0], this, e)) return n(i[1], this, e); - } - }); - } - function Ea(n) { - return Nr(Fr(n, an)); - } - function Sa(n) { - return function() { - return n; - }; - } - function Wa(n, t) { - return null == n || n !== n ? t : n; - } - function La(n) { - return n; - } - function Ca(n) { - return De("function" == typeof n ? n : Fr(n, an)); - } - function Ua(n) { - return qe(Fr(n, an)); - } - function Ba(n, t) { - return Ze(n, Fr(t, an)); - } - function Ta(n, t, e) { - var u = Pc(t), i = fe(t, u); - null != e || fc(t) && (i.length || !u.length) || (e = t, t = n, n = this, i = fe(t, Pc(t))); - var o = !(fc(e) && "chain" in e && !e.chain), f = uc(n); - return r(i, function(r) { - var e = t[r]; - n[r] = e, f && (n.prototype[r] = function() { - var t = this.__chain__; - if (o || t) { - var r = n(this.__wrapped__); - return (r.__actions__ = Tu(this.__actions__)).push({ - func: e, - args: arguments, - thisArg: n - }), r.__chain__ = t, r; - } - return e.apply(n, a([ this.value() ], arguments)); - }); - }), n; - } - function $a() { - return re._ === this && (re._ = Al), this; - } - function Da() {} - function Ma(n) { - return n = kc(n), uu(function(t) { - return Ge(t, n); - }); - } - function Fa(n) { - return Bi(n) ? m(no(n)) : Qe(n); - } - function Na(n) { - return function(t) { - return null == n ? X : _e(n, t); - }; - } - function Pa() { - return []; - } - function qa() { - return !1; - } - function Za() { - return {}; - } - function Ka() { - return ""; - } - function Va() { - return !0; - } - function Ga(n, t) { - if (n = kc(n), n < 1 || n > Wn) return []; - var r = Un, e = Hl(n, Un); - t = mi(t), n -= Un; - for (var u = O(e, t); ++r < n; ) t(r); - return u; - } - function Ha(n) { - return bh(n) ? c(n, no) : bc(n) ? [ n ] : Tu(Cs(Ec(n))); - } - function Ja(n) { - var t = ++wl; - return Ec(n) + t; - } - function Ya(n) { - return n && n.length ? Yr(n, La, me) : X; - } - function Qa(n, t) { - return n && n.length ? Yr(n, mi(t, 2), me) : X; - } - function Xa(n) { - return w(n, La); - } - function nl(n, t) { - return w(n, mi(t, 2)); - } - function tl(n) { - return n && n.length ? Yr(n, La, Ne) : X; - } - function rl(n, t) { - return n && n.length ? Yr(n, mi(t, 2), Ne) : X; - } - function el(n) { - return n && n.length ? k(n, La) : 0; - } - function ul(n, t) { - return n && n.length ? k(n, mi(t, 2)) : 0; - } - x = null == x ? re : be.defaults(re.Object(), x, be.pick(re, qr)); - var il = x.Array, ol = x.Date, fl = x.Error, cl = x.Function, al = x.Math, ll = x.Object, sl = x.RegExp, hl = x.String, pl = x.TypeError, _l = il.prototype, vl = cl.prototype, gl = ll.prototype, yl = x["__core-js_shared__"], dl = vl.toString, bl = gl.hasOwnProperty, wl = 0, ml = function() { - var n = /[^.]+$/.exec(yl && yl.keys && yl.keys.IE_PROTO || ""); - return n ? "Symbol(src)_1." + n : ""; - }(), xl = gl.toString, jl = dl.call(ll), Al = re._, kl = sl("^" + dl.call(bl).replace(St, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), Ol = ie ? x.Buffer : X, Il = x.Symbol, Rl = x.Uint8Array, zl = Ol ? Ol.allocUnsafe : X, El = F(ll.getPrototypeOf, ll), Sl = ll.create, Wl = gl.propertyIsEnumerable, Ll = _l.splice, Cl = Il ? Il.isConcatSpreadable : X, Ul = Il ? Il.iterator : X, Bl = Il ? Il.toStringTag : X, Tl = function() { - try { - var n = Ai(ll, "defineProperty"); - return n({}, "", {}), n; - } catch (n) {} - }(), $l = x.clearTimeout !== re.clearTimeout && x.clearTimeout, Dl = ol && ol.now !== re.Date.now && ol.now, Ml = x.setTimeout !== re.setTimeout && x.setTimeout, Fl = al.ceil, Nl = al.floor, Pl = ll.getOwnPropertySymbols, ql = Ol ? Ol.isBuffer : X, Zl = x.isFinite, Kl = _l.join, Vl = F(ll.keys, ll), Gl = al.max, Hl = al.min, Jl = ol.now, Yl = x.parseInt, Ql = al.random, Xl = _l.reverse, ns = Ai(x, "DataView"), ts = Ai(x, "Map"), rs = Ai(x, "Promise"), es = Ai(x, "Set"), us = Ai(x, "WeakMap"), is = Ai(ll, "create"), os = us && new us(), fs = {}, cs = to(ns), as = to(ts), ls = to(rs), ss = to(es), hs = to(us), ps = Il ? Il.prototype : X, _s = ps ? ps.valueOf : X, vs = ps ? ps.toString : X, gs = function() { - function n() {} - return function(t) { - if (!fc(t)) return {}; - if (Sl) return Sl(t); - n.prototype = t; - var r = new n(); - return n.prototype = X, r; - }; - }(); - Z.templateSettings = { - escape: kt, - evaluate: Ot, - interpolate: It, - variable: "", - imports: { - _: Z - } - }, Z.prototype = J.prototype, Z.prototype.constructor = Z, Y.prototype = gs(J.prototype), - Y.prototype.constructor = Y, Ct.prototype = gs(J.prototype), Ct.prototype.constructor = Ct, - Xt.prototype.clear = nr, Xt.prototype.delete = tr, Xt.prototype.get = rr, Xt.prototype.has = er, - Xt.prototype.set = ur, ir.prototype.clear = or, ir.prototype.delete = fr, ir.prototype.get = cr, - ir.prototype.has = ar, ir.prototype.set = lr, sr.prototype.clear = hr, sr.prototype.delete = pr, - sr.prototype.get = _r, sr.prototype.has = vr, sr.prototype.set = gr, yr.prototype.add = yr.prototype.push = dr, - yr.prototype.has = br, wr.prototype.clear = mr, wr.prototype.delete = xr, wr.prototype.get = jr, - wr.prototype.has = Ar, wr.prototype.set = kr; - var ys = Pu(ue), ds = Pu(oe, !0), bs = qu(), ws = qu(!0), ms = os ? function(n, t) { - return os.set(n, t), n; - } : La, xs = Tl ? function(n, t) { - return Tl(n, "toString", { - configurable: !0, - enumerable: !1, - value: Sa(t), - writable: !0 - }); - } : La, js = uu, As = $l || function(n) { - return re.clearTimeout(n); - }, ks = es && 1 / P(new es([ , -0 ]))[1] == Sn ? function(n) { - return new es(n); - } : Da, Os = os ? function(n) { - return os.get(n); - } : Da, Is = Pl ? function(n) { - return null == n ? [] : (n = ll(n), i(Pl(n), function(t) { - return Wl.call(n, t); - })); - } : Pa, Rs = Pl ? function(n) { - for (var t = []; n; ) a(t, Is(n)), n = El(n); - return t; - } : Pa, zs = we; - (ns && zs(new ns(new ArrayBuffer(1))) != ct || ts && zs(new ts()) != Gn || rs && zs(rs.resolve()) != Qn || es && zs(new es()) != tt || us && zs(new us()) != it) && (zs = function(n) { - var t = we(n), r = t == Yn ? n.constructor : X, e = r ? to(r) : ""; - if (e) switch (e) { - case cs: - return ct; - - case as: - return Gn; - - case ls: - return Qn; - - case ss: - return tt; - - case hs: - return it; - } - return t; - }); - var Es = yl ? uc : qa, Ss = Qi(ms), Ws = Ml || function(n, t) { - return re.setTimeout(n, t); - }, Ls = Qi(xs), Cs = Pi(function(n) { - var t = []; - return 46 === n.charCodeAt(0) && t.push(""), n.replace(Et, function(n, r, e, u) { - t.push(e ? u.replace(Mt, "$1") : r || n); - }), t; - }), Us = uu(function(n, t) { - return Jf(n) ? Hr(n, ee(t, 1, Jf, !0)) : []; - }), Bs = uu(function(n, t) { - var r = jo(t); - return Jf(r) && (r = X), Jf(n) ? Hr(n, ee(t, 1, Jf, !0), mi(r, 2)) : []; - }), Ts = uu(function(n, t) { - var r = jo(t); - return Jf(r) && (r = X), Jf(n) ? Hr(n, ee(t, 1, Jf, !0), X, r) : []; - }), $s = uu(function(n) { - var t = c(n, ju); - return t.length && t[0] === n[0] ? ke(t) : []; - }), Ds = uu(function(n) { - var t = jo(n), r = c(n, ju); - return t === jo(r) ? t = X : r.pop(), r.length && r[0] === n[0] ? ke(r, mi(t, 2)) : []; - }), Ms = uu(function(n) { - var t = jo(n), r = c(n, ju); - return t = "function" == typeof t ? t : X, t && r.pop(), r.length && r[0] === n[0] ? ke(r, X, t) : []; - }), Fs = uu(Oo), Ns = gi(function(n, t) { - var r = null == n ? 0 : n.length, e = Tr(n, t); - return nu(n, c(t, function(n) { - return Ci(n, r) ? +n : n; - }).sort(Lu)), e; - }), Ps = uu(function(n) { - return gu(ee(n, 1, Jf, !0)); - }), qs = uu(function(n) { - var t = jo(n); - return Jf(t) && (t = X), gu(ee(n, 1, Jf, !0), mi(t, 2)); - }), Zs = uu(function(n) { - var t = jo(n); - return t = "function" == typeof t ? t : X, gu(ee(n, 1, Jf, !0), X, t); - }), Ks = uu(function(n, t) { - return Jf(n) ? Hr(n, t) : []; - }), Vs = uu(function(n) { - return mu(i(n, Jf)); - }), Gs = uu(function(n) { - var t = jo(n); - return Jf(t) && (t = X), mu(i(n, Jf), mi(t, 2)); - }), Hs = uu(function(n) { - var t = jo(n); - return t = "function" == typeof t ? t : X, mu(i(n, Jf), X, t); - }), Js = uu(Go), Ys = uu(function(n) { - var t = n.length, r = t > 1 ? n[t - 1] : X; - return r = "function" == typeof r ? (n.pop(), r) : X, Ho(n, r); - }), Qs = gi(function(n) { - var t = n.length, r = t ? n[0] : 0, e = this.__wrapped__, u = function(t) { - return Tr(t, n); - }; - return !(t > 1 || this.__actions__.length) && e instanceof Ct && Ci(r) ? (e = e.slice(r, +r + (t ? 1 : 0)), - e.__actions__.push({ - func: nf, - args: [ u ], - thisArg: X - }), new Y(e, this.__chain__).thru(function(n) { - return t && !n.length && n.push(X), n; - })) : this.thru(u); - }), Xs = Fu(function(n, t, r) { - bl.call(n, r) ? ++n[r] : Br(n, r, 1); - }), nh = Ju(ho), th = Ju(po), rh = Fu(function(n, t, r) { - bl.call(n, r) ? n[r].push(t) : Br(n, r, [ t ]); - }), eh = uu(function(t, r, e) { - var u = -1, i = "function" == typeof r, o = Hf(t) ? il(t.length) : []; - return ys(t, function(t) { - o[++u] = i ? n(r, t, e) : Ie(t, r, e); - }), o; - }), uh = Fu(function(n, t, r) { - Br(n, r, t); - }), ih = Fu(function(n, t, r) { - n[r ? 0 : 1].push(t); - }, function() { - return [ [], [] ]; - }), oh = uu(function(n, t) { - if (null == n) return []; - var r = t.length; - return r > 1 && Ui(n, t[0], t[1]) ? t = [] : r > 2 && Ui(t[0], t[1], t[2]) && (t = [ t[0] ]), - He(n, ee(t, 1), []); - }), fh = Dl || function() { - return re.Date.now(); - }, ch = uu(function(n, t, r) { - var e = _n; - if (r.length) { - var u = N(r, wi(ch)); - e |= bn; - } - return ai(n, e, t, r, u); - }), ah = uu(function(n, t, r) { - var e = _n | vn; - if (r.length) { - var u = N(r, wi(ah)); - e |= bn; - } - return ai(t, e, n, r, u); - }), lh = uu(function(n, t) { - return Gr(n, 1, t); - }), sh = uu(function(n, t, r) { - return Gr(n, Ic(t) || 0, r); - }); - Cf.Cache = sr; - var hh = js(function(t, r) { - r = 1 == r.length && bh(r[0]) ? c(r[0], z(mi())) : c(ee(r, 1), z(mi())); - var e = r.length; - return uu(function(u) { - for (var i = -1, o = Hl(u.length, e); ++i < o; ) u[i] = r[i].call(this, u[i]); - return n(t, this, u); - }); - }), ph = uu(function(n, t) { - return ai(n, bn, X, t, N(t, wi(ph))); - }), _h = uu(function(n, t) { - return ai(n, wn, X, t, N(t, wi(_h))); - }), vh = gi(function(n, t) { - return ai(n, xn, X, X, X, t); - }), gh = ii(me), yh = ii(function(n, t) { - return n >= t; - }), dh = Re(function() { - return arguments; - }()) ? Re : function(n) { - return cc(n) && bl.call(n, "callee") && !Wl.call(n, "callee"); - }, bh = il.isArray, wh = ce ? z(ce) : ze, mh = ql || qa, xh = ae ? z(ae) : Ee, jh = le ? z(le) : Le, Ah = se ? z(se) : Be, kh = he ? z(he) : Te, Oh = pe ? z(pe) : $e, Ih = ii(Ne), Rh = ii(function(n, t) { - return n <= t; - }), zh = Nu(function(n, t) { - if (Mi(t) || Hf(t)) return $u(t, Pc(t), n), X; - for (var r in t) bl.call(t, r) && Sr(n, r, t[r]); - }), Eh = Nu(function(n, t) { - $u(t, qc(t), n); - }), Sh = Nu(function(n, t, r, e) { - $u(t, qc(t), n, e); - }), Wh = Nu(function(n, t, r, e) { - $u(t, Pc(t), n, e); - }), Lh = gi(Tr), Ch = uu(function(n, t) { - n = ll(n); - var r = -1, e = t.length, u = e > 2 ? t[2] : X; - for (u && Ui(t[0], t[1], u) && (e = 1); ++r < e; ) for (var i = t[r], o = qc(i), f = -1, c = o.length; ++f < c; ) { - var a = o[f], l = n[a]; - (l === X || Gf(l, gl[a]) && !bl.call(n, a)) && (n[a] = i[a]); - } - return n; - }), Uh = uu(function(t) { - return t.push(X, si), n(Mh, X, t); - }), Bh = Xu(function(n, t, r) { - null != t && "function" != typeof t.toString && (t = xl.call(t)), n[t] = r; - }, Sa(La)), Th = Xu(function(n, t, r) { - null != t && "function" != typeof t.toString && (t = xl.call(t)), bl.call(n, t) ? n[t].push(r) : n[t] = [ r ]; - }, mi), $h = uu(Ie), Dh = Nu(function(n, t, r) { - Ke(n, t, r); - }), Mh = Nu(function(n, t, r, e) { - Ke(n, t, r, e); - }), Fh = gi(function(n, t) { - var r = {}; - if (null == n) return r; - var e = !1; - t = c(t, function(t) { - return t = ku(t, n), e || (e = t.length > 1), t; - }), $u(n, di(n), r), e && (r = Fr(r, an | ln | sn, hi)); - for (var u = t.length; u--; ) yu(r, t[u]); - return r; - }), Nh = gi(function(n, t) { - return null == n ? {} : Je(n, t); - }), Ph = ci(Pc), qh = ci(qc), Zh = Vu(function(n, t, r) { - return t = t.toLowerCase(), n + (r ? fa(t) : t); - }), Kh = Vu(function(n, t, r) { - return n + (r ? "-" : "") + t.toLowerCase(); - }), Vh = Vu(function(n, t, r) { - return n + (r ? " " : "") + t.toLowerCase(); - }), Gh = Ku("toLowerCase"), Hh = Vu(function(n, t, r) { - return n + (r ? "_" : "") + t.toLowerCase(); - }), Jh = Vu(function(n, t, r) { - return n + (r ? " " : "") + Qh(t); - }), Yh = Vu(function(n, t, r) { - return n + (r ? " " : "") + t.toUpperCase(); - }), Qh = Ku("toUpperCase"), Xh = uu(function(t, r) { - try { - return n(t, X, r); - } catch (n) { - return rc(n) ? n : new fl(n); - } - }), np = gi(function(n, t) { - return r(t, function(t) { - t = no(t), Br(n, t, ch(n[t], n)); - }), n; - }), tp = Yu(), rp = Yu(!0), ep = uu(function(n, t) { - return function(r) { - return Ie(r, n, t); - }; - }), up = uu(function(n, t) { - return function(r) { - return Ie(n, r, t); - }; - }), ip = ti(c), op = ti(u), fp = ti(h), cp = ui(), ap = ui(!0), lp = ni(function(n, t) { - return n + t; - }, 0), sp = fi("ceil"), hp = ni(function(n, t) { - return n / t; - }, 1), pp = fi("floor"), _p = ni(function(n, t) { - return n * t; - }, 1), vp = fi("round"), gp = ni(function(n, t) { - return n - t; - }, 0); - return Z.after = If, Z.ary = Rf, Z.assign = zh, Z.assignIn = Eh, Z.assignInWith = Sh, - Z.assignWith = Wh, Z.at = Lh, Z.before = zf, Z.bind = ch, Z.bindAll = np, Z.bindKey = ah, - Z.castArray = Nf, Z.chain = Qo, Z.chunk = uo, Z.compact = io, Z.concat = oo, Z.cond = za, - Z.conforms = Ea, Z.constant = Sa, Z.countBy = Xs, Z.create = Sc, Z.curry = Ef, Z.curryRight = Sf, - Z.debounce = Wf, Z.defaults = Ch, Z.defaultsDeep = Uh, Z.defer = lh, Z.delay = sh, - Z.difference = Us, Z.differenceBy = Bs, Z.differenceWith = Ts, Z.drop = fo, Z.dropRight = co, - Z.dropRightWhile = ao, Z.dropWhile = lo, Z.fill = so, Z.filter = lf, Z.flatMap = sf, - Z.flatMapDeep = hf, Z.flatMapDepth = pf, Z.flatten = _o, Z.flattenDeep = vo, Z.flattenDepth = go, - Z.flip = Lf, Z.flow = tp, Z.flowRight = rp, Z.fromPairs = yo, Z.functions = $c, - Z.functionsIn = Dc, Z.groupBy = rh, Z.initial = mo, Z.intersection = $s, Z.intersectionBy = Ds, - Z.intersectionWith = Ms, Z.invert = Bh, Z.invertBy = Th, Z.invokeMap = eh, Z.iteratee = Ca, - Z.keyBy = uh, Z.keys = Pc, Z.keysIn = qc, Z.map = yf, Z.mapKeys = Zc, Z.mapValues = Kc, - Z.matches = Ua, Z.matchesProperty = Ba, Z.memoize = Cf, Z.merge = Dh, Z.mergeWith = Mh, - Z.method = ep, Z.methodOf = up, Z.mixin = Ta, Z.negate = Uf, Z.nthArg = Ma, Z.omit = Fh, - Z.omitBy = Vc, Z.once = Bf, Z.orderBy = df, Z.over = ip, Z.overArgs = hh, Z.overEvery = op, - Z.overSome = fp, Z.partial = ph, Z.partialRight = _h, Z.partition = ih, Z.pick = Nh, - Z.pickBy = Gc, Z.property = Fa, Z.propertyOf = Na, Z.pull = Fs, Z.pullAll = Oo, - Z.pullAllBy = Io, Z.pullAllWith = Ro, Z.pullAt = Ns, Z.range = cp, Z.rangeRight = ap, - Z.rearg = vh, Z.reject = mf, Z.remove = zo, Z.rest = Tf, Z.reverse = Eo, Z.sampleSize = jf, - Z.set = Jc, Z.setWith = Yc, Z.shuffle = Af, Z.slice = So, Z.sortBy = oh, Z.sortedUniq = $o, - Z.sortedUniqBy = Do, Z.split = da, Z.spread = $f, Z.tail = Mo, Z.take = Fo, Z.takeRight = No, - Z.takeRightWhile = Po, Z.takeWhile = qo, Z.tap = Xo, Z.throttle = Df, Z.thru = nf, - Z.toArray = jc, Z.toPairs = Ph, Z.toPairsIn = qh, Z.toPath = Ha, Z.toPlainObject = Rc, - Z.transform = Qc, Z.unary = Mf, Z.union = Ps, Z.unionBy = qs, Z.unionWith = Zs, - Z.uniq = Zo, Z.uniqBy = Ko, Z.uniqWith = Vo, Z.unset = Xc, Z.unzip = Go, Z.unzipWith = Ho, - Z.update = na, Z.updateWith = ta, Z.values = ra, Z.valuesIn = ea, Z.without = Ks, - Z.words = Ra, Z.wrap = Ff, Z.xor = Vs, Z.xorBy = Gs, Z.xorWith = Hs, Z.zip = Js, - Z.zipObject = Jo, Z.zipObjectDeep = Yo, Z.zipWith = Ys, Z.entries = Ph, Z.entriesIn = qh, - Z.extend = Eh, Z.extendWith = Sh, Ta(Z, Z), Z.add = lp, Z.attempt = Xh, Z.camelCase = Zh, - Z.capitalize = fa, Z.ceil = sp, Z.clamp = ua, Z.clone = Pf, Z.cloneDeep = Zf, Z.cloneDeepWith = Kf, - Z.cloneWith = qf, Z.conformsTo = Vf, Z.deburr = ca, Z.defaultTo = Wa, Z.divide = hp, - Z.endsWith = aa, Z.eq = Gf, Z.escape = la, Z.escapeRegExp = sa, Z.every = af, Z.find = nh, - Z.findIndex = ho, Z.findKey = Wc, Z.findLast = th, Z.findLastIndex = po, Z.findLastKey = Lc, - Z.floor = pp, Z.forEach = _f, Z.forEachRight = vf, Z.forIn = Cc, Z.forInRight = Uc, - Z.forOwn = Bc, Z.forOwnRight = Tc, Z.get = Mc, Z.gt = gh, Z.gte = yh, Z.has = Fc, - Z.hasIn = Nc, Z.head = bo, Z.identity = La, Z.includes = gf, Z.indexOf = wo, Z.inRange = ia, - Z.invoke = $h, Z.isArguments = dh, Z.isArray = bh, Z.isArrayBuffer = wh, Z.isArrayLike = Hf, - Z.isArrayLikeObject = Jf, Z.isBoolean = Yf, Z.isBuffer = mh, Z.isDate = xh, Z.isElement = Qf, - Z.isEmpty = Xf, Z.isEqual = nc, Z.isEqualWith = tc, Z.isError = rc, Z.isFinite = ec, - Z.isFunction = uc, Z.isInteger = ic, Z.isLength = oc, Z.isMap = jh, Z.isMatch = ac, - Z.isMatchWith = lc, Z.isNaN = sc, Z.isNative = hc, Z.isNil = _c, Z.isNull = pc, - Z.isNumber = vc, Z.isObject = fc, Z.isObjectLike = cc, Z.isPlainObject = gc, Z.isRegExp = Ah, - Z.isSafeInteger = yc, Z.isSet = kh, Z.isString = dc, Z.isSymbol = bc, Z.isTypedArray = Oh, - Z.isUndefined = wc, Z.isWeakMap = mc, Z.isWeakSet = xc, Z.join = xo, Z.kebabCase = Kh, - Z.last = jo, Z.lastIndexOf = Ao, Z.lowerCase = Vh, Z.lowerFirst = Gh, Z.lt = Ih, - Z.lte = Rh, Z.max = Ya, Z.maxBy = Qa, Z.mean = Xa, Z.meanBy = nl, Z.min = tl, Z.minBy = rl, - Z.stubArray = Pa, Z.stubFalse = qa, Z.stubObject = Za, Z.stubString = Ka, Z.stubTrue = Va, - Z.multiply = _p, Z.nth = ko, Z.noConflict = $a, Z.noop = Da, Z.now = fh, Z.pad = ha, - Z.padEnd = pa, Z.padStart = _a, Z.parseInt = va, Z.random = oa, Z.reduce = bf, Z.reduceRight = wf, - Z.repeat = ga, Z.replace = ya, Z.result = Hc, Z.round = vp, Z.runInContext = p, - Z.sample = xf, Z.size = kf, Z.snakeCase = Hh, Z.some = Of, Z.sortedIndex = Wo, Z.sortedIndexBy = Lo, - Z.sortedIndexOf = Co, Z.sortedLastIndex = Uo, Z.sortedLastIndexBy = Bo, Z.sortedLastIndexOf = To, - Z.startCase = Jh, Z.startsWith = ba, Z.subtract = gp, Z.sum = el, Z.sumBy = ul, - Z.template = wa, Z.times = Ga, Z.toFinite = Ac, Z.toInteger = kc, Z.toLength = Oc, - Z.toLower = ma, Z.toNumber = Ic, Z.toSafeInteger = zc, Z.toString = Ec, Z.toUpper = xa, - Z.trim = ja, Z.trimEnd = Aa, Z.trimStart = ka, Z.truncate = Oa, Z.unescape = Ia, - Z.uniqueId = Ja, Z.upperCase = Yh, Z.upperFirst = Qh, Z.each = _f, Z.eachRight = vf, - Z.first = bo, Ta(Z, function() { - var n = {}; - return ue(Z, function(t, r) { - bl.call(Z.prototype, r) || (n[r] = t); - }), n; - }(), { - chain: !1 - }), Z.VERSION = nn, r([ "bind", "bindKey", "curry", "curryRight", "partial", "partialRight" ], function(n) { - Z[n].placeholder = Z; - }), r([ "drop", "take" ], function(n, t) { - Ct.prototype[n] = function(r) { - r = r === X ? 1 : Gl(kc(r), 0); - var e = this.__filtered__ && !t ? new Ct(this) : this.clone(); - return e.__filtered__ ? e.__takeCount__ = Hl(r, e.__takeCount__) : e.__views__.push({ - size: Hl(r, Un), - type: n + (e.__dir__ < 0 ? "Right" : "") - }), e; - }, Ct.prototype[n + "Right"] = function(t) { - return this.reverse()[n](t).reverse(); - }; - }), r([ "filter", "map", "takeWhile" ], function(n, t) { - var r = t + 1, e = r == Rn || r == En; - Ct.prototype[n] = function(n) { - var t = this.clone(); - return t.__iteratees__.push({ - iteratee: mi(n, 3), - type: r - }), t.__filtered__ = t.__filtered__ || e, t; - }; - }), r([ "head", "last" ], function(n, t) { - var r = "take" + (t ? "Right" : ""); - Ct.prototype[n] = function() { - return this[r](1).value()[0]; - }; - }), r([ "initial", "tail" ], function(n, t) { - var r = "drop" + (t ? "" : "Right"); - Ct.prototype[n] = function() { - return this.__filtered__ ? new Ct(this) : this[r](1); - }; - }), Ct.prototype.compact = function() { - return this.filter(La); - }, Ct.prototype.find = function(n) { - return this.filter(n).head(); - }, Ct.prototype.findLast = function(n) { - return this.reverse().find(n); - }, Ct.prototype.invokeMap = uu(function(n, t) { - return "function" == typeof n ? new Ct(this) : this.map(function(r) { - return Ie(r, n, t); - }); - }), Ct.prototype.reject = function(n) { - return this.filter(Uf(mi(n))); - }, Ct.prototype.slice = function(n, t) { - n = kc(n); - var r = this; - return r.__filtered__ && (n > 0 || t < 0) ? new Ct(r) : (n < 0 ? r = r.takeRight(-n) : n && (r = r.drop(n)), - t !== X && (t = kc(t), r = t < 0 ? r.dropRight(-t) : r.take(t - n)), r); - }, Ct.prototype.takeRightWhile = function(n) { - return this.reverse().takeWhile(n).reverse(); - }, Ct.prototype.toArray = function() { - return this.take(Un); - }, ue(Ct.prototype, function(n, t) { - var r = /^(?:filter|find|map|reject)|While$/.test(t), e = /^(?:head|last)$/.test(t), u = Z[e ? "take" + ("last" == t ? "Right" : "") : t], i = e || /^find/.test(t); - u && (Z.prototype[t] = function() { - var t = this.__wrapped__, o = e ? [ 1 ] : arguments, f = t instanceof Ct, c = o[0], l = f || bh(t), s = function(n) { - var t = u.apply(Z, a([ n ], o)); - return e && h ? t[0] : t; - }; - l && r && "function" == typeof c && 1 != c.length && (f = l = !1); - var h = this.__chain__, p = !!this.__actions__.length, _ = i && !h, v = f && !p; - if (!i && l) { - t = v ? t : new Ct(this); - var g = n.apply(t, o); - return g.__actions__.push({ - func: nf, - args: [ s ], - thisArg: X - }), new Y(g, h); - } - return _ && v ? n.apply(this, o) : (g = this.thru(s), _ ? e ? g.value()[0] : g.value() : g); - }); - }), r([ "pop", "push", "shift", "sort", "splice", "unshift" ], function(n) { - var t = _l[n], r = /^(?:push|sort|unshift)$/.test(n) ? "tap" : "thru", e = /^(?:pop|shift)$/.test(n); - Z.prototype[n] = function() { - var n = arguments; - if (e && !this.__chain__) { - var u = this.value(); - return t.apply(bh(u) ? u : [], n); - } - return this[r](function(r) { - return t.apply(bh(r) ? r : [], n); - }); - }; - }), ue(Ct.prototype, function(n, t) { - var r = Z[t]; - if (r) { - var e = r.name + ""; - bl.call(fs, e) || (fs[e] = []), fs[e].push({ - name: t, - func: r - }); - } - }), fs[Qu(X, vn).name] = [ { - name: "wrapper", - func: X - } ], Ct.prototype.clone = $t, Ct.prototype.reverse = Yt, Ct.prototype.value = Qt, - Z.prototype.at = Qs, Z.prototype.chain = tf, Z.prototype.commit = rf, Z.prototype.next = ef, - Z.prototype.plant = of, Z.prototype.reverse = ff, Z.prototype.toJSON = Z.prototype.valueOf = Z.prototype.value = cf, - Z.prototype.first = Z.prototype.head, Ul && (Z.prototype[Ul] = uf), Z; - }, be = de(); - "function" == typeof define && "object" == typeof define.amd && define.amd ? (re._ = be, - define(function() { - return be; - })) : ue ? ((ue.exports = be)._ = be, ee._ = be) : re._ = be; -}).call(this); - -(function(global, factory) { - typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.moment = factory(); -})(this, function() { - "use strict"; - var hookCallback; - function hooks() { - return hookCallback.apply(null, arguments); - } - function setHookCallback(callback) { - hookCallback = callback; - } - function isArray(input) { - return input instanceof Array || Object.prototype.toString.call(input) === "[object Array]"; - } - function isObject(input) { - return input != null && Object.prototype.toString.call(input) === "[object Object]"; - } - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); - } - function isObjectEmpty(obj) { - if (Object.getOwnPropertyNames) { - return Object.getOwnPropertyNames(obj).length === 0; - } else { - var k; - for (k in obj) { - if (hasOwnProp(obj, k)) { - return false; - } - } - return true; - } - } - function isUndefined(input) { - return input === void 0; - } - function isNumber(input) { - return typeof input === "number" || Object.prototype.toString.call(input) === "[object Number]"; - } - function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === "[object Date]"; - } - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - if (hasOwnProp(b, "toString")) { - a.toString = b.toString; - } - if (hasOwnProp(b, "valueOf")) { - a.valueOf = b.valueOf; - } - return a; - } - function createUTC(input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); - } - function defaultParsingFlags() { - return { - empty: false, - unusedTokens: [], - unusedInput: [], - overflow: -2, - charsLeftOver: 0, - nullInput: false, - invalidEra: null, - invalidMonth: null, - invalidFormat: false, - userInvalidated: false, - iso: false, - parsedDateParts: [], - era: null, - meridiem: null, - rfc2822: false, - weekdayMismatch: false - }; - } - function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; - } - var some; - if (Array.prototype.some) { - some = Array.prototype.some; - } else { - some = function(fun) { - var t = Object(this), len = t.length >>> 0, i; - for (i = 0; i < len; i++) { - if (i in t && fun.call(this, t[i], i, t)) { - return true; - } - } - return false; - }; - } - function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m), parsedParts = some.call(flags.parsedDateParts, function(i) { - return i != null; - }), isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts); - if (m._strict) { - isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined; - } - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; - } else { - return isNowValid; - } - } - return m._isValid; - } - function createInvalid(flags) { - var m = createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } else { - getParsingFlags(m).userInvalidated = true; - } - return m; - } - var momentProperties = hooks.momentProperties = [], updateInProgress = false; - function copyConfig(to, from) { - var i, prop, val; - if (!isUndefined(from._isAMomentObject)) { - to._isAMomentObject = from._isAMomentObject; - } - if (!isUndefined(from._i)) { - to._i = from._i; - } - if (!isUndefined(from._f)) { - to._f = from._f; - } - if (!isUndefined(from._l)) { - to._l = from._l; - } - if (!isUndefined(from._strict)) { - to._strict = from._strict; - } - if (!isUndefined(from._tzm)) { - to._tzm = from._tzm; - } - if (!isUndefined(from._isUTC)) { - to._isUTC = from._isUTC; - } - if (!isUndefined(from._offset)) { - to._offset = from._offset; - } - if (!isUndefined(from._pf)) { - to._pf = getParsingFlags(from); - } - if (!isUndefined(from._locale)) { - to._locale = from._locale; - } - if (momentProperties.length > 0) { - for (i = 0; i < momentProperties.length; i++) { - prop = momentProperties[i]; - val = from[prop]; - if (!isUndefined(val)) { - to[prop] = val; - } - } - } - return to; - } - function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - if (!this.isValid()) { - this._d = new Date(NaN); - } - if (updateInProgress === false) { - updateInProgress = true; - hooks.updateOffset(this); - updateInProgress = false; - } - } - function isMoment(obj) { - return obj instanceof Moment || obj != null && obj._isAMomentObject != null; - } - function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && typeof console !== "undefined" && console.warn) { - console.warn("Deprecation warning: " + msg); - } - } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function() { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(null, msg); - } - if (firstTime) { - var args = [], arg, i, key; - for (i = 0; i < arguments.length; i++) { - arg = ""; - if (typeof arguments[i] === "object") { - arg += "\n[" + i + "] "; - for (key in arguments[0]) { - if (hasOwnProp(arguments[0], key)) { - arg += key + ": " + arguments[0][key] + ", "; - } - } - arg = arg.slice(0, -2); - } else { - arg = arguments[i]; - } - args.push(arg); - } - warn(msg + "\nArguments: " + Array.prototype.slice.call(args).join("") + "\n" + new Error().stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - var deprecations = {}; - function deprecateSimple(name, msg) { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(name, msg); - } - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } - } - hooks.suppressDeprecationWarnings = false; - hooks.deprecationHandler = null; - function isFunction(input) { - return typeof Function !== "undefined" && input instanceof Function || Object.prototype.toString.call(input) === "[object Function]"; - } - function set(config) { - var prop, i; - for (i in config) { - if (hasOwnProp(config, i)) { - prop = config[i]; - if (isFunction(prop)) { - this[i] = prop; - } else { - this["_" + i] = prop; - } - } - } - this._config = config; - this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source); - } - function mergeConfigs(parentConfig, childConfig) { - var res = extend({}, parentConfig), prop; - for (prop in childConfig) { - if (hasOwnProp(childConfig, prop)) { - if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { - res[prop] = {}; - extend(res[prop], parentConfig[prop]); - extend(res[prop], childConfig[prop]); - } else if (childConfig[prop] != null) { - res[prop] = childConfig[prop]; - } else { - delete res[prop]; - } - } - } - for (prop in parentConfig) { - if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) { - res[prop] = extend({}, res[prop]); - } - } - return res; - } - function Locale(config) { - if (config != null) { - this.set(config); - } - } - var keys; - if (Object.keys) { - keys = Object.keys; - } else { - keys = function(obj) { - var i, res = []; - for (i in obj) { - if (hasOwnProp(obj, i)) { - res.push(i); - } - } - return res; - }; - } - var defaultCalendar = { - sameDay: "[Today at] LT", - nextDay: "[Tomorrow at] LT", - nextWeek: "dddd [at] LT", - lastDay: "[Yesterday at] LT", - lastWeek: "[Last] dddd [at] LT", - sameElse: "L" - }; - function calendar(key, mom, now) { - var output = this._calendar[key] || this._calendar["sameElse"]; - return isFunction(output) ? output.call(mom, now) : output; - } - function zeroFill(number, targetLength, forceSign) { - var absNumber = "" + Math.abs(number), zerosToFill = targetLength - absNumber.length, sign = number >= 0; - return (sign ? forceSign ? "+" : "" : "-") + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; - } - var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, formatFunctions = {}, formatTokenFunctions = {}; - function addFormatToken(token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === "string") { - func = function() { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function() { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function() { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } - } - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ""); - } - return input.replace(/\\/g, ""); - } - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - return function(mom) { - var output = "", i; - for (i = 0; i < length; i++) { - output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); - return formatFunctions[format](m); - } - function expandFormat(format, locale) { - var i = 5; - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - return format; - } - var defaultLongDateFormat = { - LTS: "h:mm:ss A", - LT: "h:mm A", - L: "MM/DD/YYYY", - LL: "MMMM D, YYYY", - LLL: "MMMM D, YYYY h:mm A", - LLLL: "dddd, MMMM D, YYYY h:mm A" - }; - function longDateFormat(key) { - var format = this._longDateFormat[key], formatUpper = this._longDateFormat[key.toUpperCase()]; - if (format || !formatUpper) { - return format; - } - this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function(tok) { - if (tok === "MMMM" || tok === "MM" || tok === "DD" || tok === "dddd") { - return tok.slice(1); - } - return tok; - }).join(""); - return this._longDateFormat[key]; - } - var defaultInvalidDate = "Invalid date"; - function invalidDate() { - return this._invalidDate; - } - var defaultOrdinal = "%d", defaultDayOfMonthOrdinalParse = /\d{1,2}/; - function ordinal(number) { - return this._ordinal.replace("%d", number); - } - var defaultRelativeTime = { - future: "in %s", - past: "%s ago", - s: "a few seconds", - ss: "%d seconds", - m: "a minute", - mm: "%d minutes", - h: "an hour", - hh: "%d hours", - d: "a day", - dd: "%d days", - w: "a week", - ww: "%d weeks", - M: "a month", - MM: "%d months", - y: "a year", - yy: "%d years" - }; - function relativeTime(number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number); - } - function pastFuture(diff, output) { - var format = this._relativeTime[diff > 0 ? "future" : "past"]; - return isFunction(format) ? format(output) : format.replace(/%s/i, output); - } - var aliases = {}; - function addUnitAlias(unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + "s"] = aliases[shorthand] = unit; - } - function normalizeUnits(units) { - return typeof units === "string" ? aliases[units] || aliases[units.toLowerCase()] : undefined; - } - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, normalizedProp, prop; - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - return normalizedInput; - } - var priorities = {}; - function addUnitPriority(unit, priority) { - priorities[unit] = priority; - } - function getPrioritizedUnits(unitsObj) { - var units = [], u; - for (u in unitsObj) { - if (hasOwnProp(unitsObj, u)) { - units.push({ - unit: u, - priority: priorities[u] - }); - } - } - units.sort(function(a, b) { - return a.priority - b.priority; - }); - return units; - } - function isLeapYear(year) { - return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; - } - function absFloor(number) { - if (number < 0) { - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } - } - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, value = 0; - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - return value; - } - function makeGetSet(unit, keepTime) { - return function(value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); - } - }; - } - function get(mom, unit) { - return mom.isValid() ? mom._d["get" + (mom._isUTC ? "UTC" : "") + unit]() : NaN; - } - function set$1(mom, unit, value) { - if (mom.isValid() && !isNaN(value)) { - if (unit === "FullYear" && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { - value = toInt(value); - mom._d["set" + (mom._isUTC ? "UTC" : "") + unit](value, mom.month(), daysInMonth(value, mom.month())); - } else { - mom._d["set" + (mom._isUTC ? "UTC" : "") + unit](value); - } - } - } - function stringGet(units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); - } - return this; - } - function stringSet(units, value) { - if (typeof units === "object") { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units), i; - for (i = 0; i < prioritized.length; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); - } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); - } - } - return this; - } - var match1 = /\d/, match2 = /\d\d/, match3 = /\d{3}/, match4 = /\d{4}/, match6 = /[+-]?\d{6}/, match1to2 = /\d\d?/, match3to4 = /\d\d\d\d?/, match5to6 = /\d\d\d\d\d\d?/, match1to3 = /\d{1,3}/, match1to4 = /\d{1,4}/, match1to6 = /[+-]?\d{1,6}/, matchUnsigned = /\d+/, matchSigned = /[+-]?\d+/, matchOffset = /Z|[+-]\d\d:?\d\d/gi, matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, regexes; - regexes = {}; - function addRegexToken(token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function(isStrict, localeData) { - return isStrict && strictRegex ? strictRegex : regex; - }; - } - function getParseRegexForToken(token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } - return regexes[token](config._strict, config._locale); - } - function unescapeFormat(s) { - return regexEscape(s.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - })); - } - function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); - } - var tokens = {}; - function addParseToken(token, callback) { - var i, func = callback; - if (typeof token === "string") { - token = [ token ]; - } - if (isNumber(callback)) { - func = function(input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } - } - function addWeekParseToken(token, callback) { - addParseToken(token, function(input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); - } - function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } - } - var YEAR = 0, MONTH = 1, DATE = 2, HOUR = 3, MINUTE = 4, SECOND = 5, MILLISECOND = 6, WEEK = 7, WEEKDAY = 8; - function mod(n, x) { - return (n % x + x) % x; - } - var indexOf; - if (Array.prototype.indexOf) { - indexOf = Array.prototype.indexOf; - } else { - indexOf = function(o) { - var i; - for (i = 0; i < this.length; ++i) { - if (this[i] === o) { - return i; - } - } - return -1; - }; - } - function daysInMonth(year, month) { - if (isNaN(year) || isNaN(month)) { - return NaN; - } - var modMonth = mod(month, 12); - year += (month - modMonth) / 12; - return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2; - } - addFormatToken("M", [ "MM", 2 ], "Mo", function() { - return this.month() + 1; - }); - addFormatToken("MMM", 0, 0, function(format) { - return this.localeData().monthsShort(this, format); - }); - addFormatToken("MMMM", 0, 0, function(format) { - return this.localeData().months(this, format); - }); - addUnitAlias("month", "M"); - addUnitPriority("month", 8); - addRegexToken("M", match1to2); - addRegexToken("MM", match1to2, match2); - addRegexToken("MMM", function(isStrict, locale) { - return locale.monthsShortRegex(isStrict); - }); - addRegexToken("MMMM", function(isStrict, locale) { - return locale.monthsRegex(isStrict); - }); - addParseToken([ "M", "MM" ], function(input, array) { - array[MONTH] = toInt(input) - 1; - }); - addParseToken([ "MMM", "MMMM" ], function(input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } - }); - var defaultLocaleMonths = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), defaultLocaleMonthsShort = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, defaultMonthsShortRegex = matchWord, defaultMonthsRegex = matchWord; - function localeMonths(m, format) { - if (!m) { - return isArray(this._months) ? this._months : this._months["standalone"]; - } - return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? "format" : "standalone"][m.month()]; - } - function localeMonthsShort(m, format) { - if (!m) { - return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort["standalone"]; - } - return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? "format" : "standalone"][m.month()]; - } - function handleStrictParse(monthName, format, strict) { - var i, ii, mom, llc = monthName.toLocaleLowerCase(); - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - for (i = 0; i < 12; ++i) { - mom = createUTC([ 2e3, i ]); - this._shortMonthsParse[i] = this.monthsShort(mom, "").toLocaleLowerCase(); - this._longMonthsParse[i] = this.months(mom, "").toLocaleLowerCase(); - } - } - if (strict) { - if (format === "MMM") { - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === "MMM") { - ii = indexOf.call(this._shortMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } - } - function localeMonthsParse(monthName, format, strict) { - var i, mom, regex; - if (this._monthsParseExact) { - return handleStrictParse.call(this, monthName, format, strict); - } - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - for (i = 0; i < 12; i++) { - mom = createUTC([ 2e3, i ]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp("^" + this.months(mom, "").replace(".", "") + "$", "i"); - this._shortMonthsParse[i] = new RegExp("^" + this.monthsShort(mom, "").replace(".", "") + "$", "i"); - } - if (!strict && !this._monthsParse[i]) { - regex = "^" + this.months(mom, "") + "|^" + this.monthsShort(mom, ""); - this._monthsParse[i] = new RegExp(regex.replace(".", ""), "i"); - } - if (strict && format === "MMMM" && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === "MMM" && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - } - function setMonth(mom, value) { - var dayOfMonth; - if (!mom.isValid()) { - return mom; - } - if (typeof value === "string") { - if (/^\d+$/.test(value)) { - value = toInt(value); - } else { - value = mom.localeData().monthsParse(value); - if (!isNumber(value)) { - return mom; - } - } - } - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d["set" + (mom._isUTC ? "UTC" : "") + "Month"](value, dayOfMonth); - return mom; - } - function getSetMonth(value) { - if (value != null) { - setMonth(this, value); - hooks.updateOffset(this, true); - return this; - } else { - return get(this, "Month"); - } - } - function getDaysInMonth() { - return daysInMonth(this.year(), this.month()); - } - function monthsShortRegex(isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, "_monthsRegex")) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsShortStrictRegex; - } else { - return this._monthsShortRegex; - } - } else { - if (!hasOwnProp(this, "_monthsShortRegex")) { - this._monthsShortRegex = defaultMonthsShortRegex; - } - return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex; - } - } - function monthsRegex(isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, "_monthsRegex")) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsStrictRegex; - } else { - return this._monthsRegex; - } - } else { - if (!hasOwnProp(this, "_monthsRegex")) { - this._monthsRegex = defaultMonthsRegex; - } - return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex; - } - } - function computeMonthsParse() { - function cmpLenRev(a, b) { - return b.length - a.length; - } - var shortPieces = [], longPieces = [], mixedPieces = [], i, mom; - for (i = 0; i < 12; i++) { - mom = createUTC([ 2e3, i ]); - shortPieces.push(this.monthsShort(mom, "")); - longPieces.push(this.months(mom, "")); - mixedPieces.push(this.months(mom, "")); - mixedPieces.push(this.monthsShort(mom, "")); - } - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); - } - this._monthsRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"); - this._monthsShortRegex = this._monthsRegex; - this._monthsStrictRegex = new RegExp("^(" + longPieces.join("|") + ")", "i"); - this._monthsShortStrictRegex = new RegExp("^(" + shortPieces.join("|") + ")", "i"); - } - addFormatToken("Y", 0, 0, function() { - var y = this.year(); - return y <= 9999 ? zeroFill(y, 4) : "+" + y; - }); - addFormatToken(0, [ "YY", 2 ], 0, function() { - return this.year() % 100; - }); - addFormatToken(0, [ "YYYY", 4 ], 0, "year"); - addFormatToken(0, [ "YYYYY", 5 ], 0, "year"); - addFormatToken(0, [ "YYYYYY", 6, true ], 0, "year"); - addUnitAlias("year", "y"); - addUnitPriority("year", 1); - addRegexToken("Y", matchSigned); - addRegexToken("YY", match1to2, match2); - addRegexToken("YYYY", match1to4, match4); - addRegexToken("YYYYY", match1to6, match6); - addRegexToken("YYYYYY", match1to6, match6); - addParseToken([ "YYYYY", "YYYYYY" ], YEAR); - addParseToken("YYYY", function(input, array) { - array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); - }); - addParseToken("YY", function(input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); - }); - addParseToken("Y", function(input, array) { - array[YEAR] = parseInt(input, 10); - }); - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - hooks.parseTwoDigitYear = function(input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2e3); - }; - var getSetYear = makeGetSet("FullYear", true); - function getIsLeapYear() { - return isLeapYear(this.year()); - } - function createDate(y, m, d, h, M, s, ms) { - var date; - if (y < 100 && y >= 0) { - date = new Date(y + 400, m, d, h, M, s, ms); - if (isFinite(date.getFullYear())) { - date.setFullYear(y); - } - } else { - date = new Date(y, m, d, h, M, s, ms); - } - return date; - } - function createUTCDate(y) { - var date, args; - if (y < 100 && y >= 0) { - args = Array.prototype.slice.call(arguments); - args[0] = y + 400; - date = new Date(Date.UTC.apply(null, args)); - if (isFinite(date.getUTCFullYear())) { - date.setUTCFullYear(y); - } - } else { - date = new Date(Date.UTC.apply(null, arguments)); - } - return date; - } - function firstWeekOffset(year, dow, doy) { - var fwd = 7 + dow - doy, fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; - return -fwdlw + fwd - 1; - } - function dayOfYearFromWeeks(year, week, weekday, dow, doy) { - var localWeekday = (7 + weekday - dow) % 7, weekOffset = firstWeekOffset(year, dow, doy), dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, resYear, resDayOfYear; - if (dayOfYear <= 0) { - resYear = year - 1; - resDayOfYear = daysInYear(resYear) + dayOfYear; - } else if (dayOfYear > daysInYear(year)) { - resYear = year + 1; - resDayOfYear = dayOfYear - daysInYear(year); - } else { - resYear = year; - resDayOfYear = dayOfYear; - } - return { - year: resYear, - dayOfYear: resDayOfYear - }; - } - function weekOfYear(mom, dow, doy) { - var weekOffset = firstWeekOffset(mom.year(), dow, doy), week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, resWeek, resYear; - if (week < 1) { - resYear = mom.year() - 1; - resWeek = week + weeksInYear(resYear, dow, doy); - } else if (week > weeksInYear(mom.year(), dow, doy)) { - resWeek = week - weeksInYear(mom.year(), dow, doy); - resYear = mom.year() + 1; - } else { - resYear = mom.year(); - resWeek = week; - } - return { - week: resWeek, - year: resYear - }; - } - function weeksInYear(year, dow, doy) { - var weekOffset = firstWeekOffset(year, dow, doy), weekOffsetNext = firstWeekOffset(year + 1, dow, doy); - return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; - } - addFormatToken("w", [ "ww", 2 ], "wo", "week"); - addFormatToken("W", [ "WW", 2 ], "Wo", "isoWeek"); - addUnitAlias("week", "w"); - addUnitAlias("isoWeek", "W"); - addUnitPriority("week", 5); - addUnitPriority("isoWeek", 5); - addRegexToken("w", match1to2); - addRegexToken("ww", match1to2, match2); - addRegexToken("W", match1to2); - addRegexToken("WW", match1to2, match2); - addWeekParseToken([ "w", "ww", "W", "WW" ], function(input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); - }); - function localeWeek(mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - } - var defaultLocaleWeek = { - dow: 0, - doy: 6 - }; - function localeFirstDayOfWeek() { - return this._week.dow; - } - function localeFirstDayOfYear() { - return this._week.doy; - } - function getSetWeek(input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, "d"); - } - function getSetISOWeek(input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, "d"); - } - addFormatToken("d", 0, "do", "day"); - addFormatToken("dd", 0, 0, function(format) { - return this.localeData().weekdaysMin(this, format); - }); - addFormatToken("ddd", 0, 0, function(format) { - return this.localeData().weekdaysShort(this, format); - }); - addFormatToken("dddd", 0, 0, function(format) { - return this.localeData().weekdays(this, format); - }); - addFormatToken("e", 0, 0, "weekday"); - addFormatToken("E", 0, 0, "isoWeekday"); - addUnitAlias("day", "d"); - addUnitAlias("weekday", "e"); - addUnitAlias("isoWeekday", "E"); - addUnitPriority("day", 11); - addUnitPriority("weekday", 11); - addUnitPriority("isoWeekday", 11); - addRegexToken("d", match1to2); - addRegexToken("e", match1to2); - addRegexToken("E", match1to2); - addRegexToken("dd", function(isStrict, locale) { - return locale.weekdaysMinRegex(isStrict); - }); - addRegexToken("ddd", function(isStrict, locale) { - return locale.weekdaysShortRegex(isStrict); - }); - addRegexToken("dddd", function(isStrict, locale) { - return locale.weekdaysRegex(isStrict); - }); - addWeekParseToken([ "dd", "ddd", "dddd" ], function(input, week, config, token) { - var weekday = config._locale.weekdaysParse(input, token, config._strict); - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } - }); - addWeekParseToken([ "d", "e", "E" ], function(input, week, config, token) { - week[token] = toInt(input); - }); - function parseWeekday(input, locale) { - if (typeof input !== "string") { - return input; - } - if (!isNaN(input)) { - return parseInt(input, 10); - } - input = locale.weekdaysParse(input); - if (typeof input === "number") { - return input; - } - return null; - } - function parseIsoWeekday(input, locale) { - if (typeof input === "string") { - return locale.weekdaysParse(input) % 7 || 7; - } - return isNaN(input) ? null : input; - } - function shiftWeekdays(ws, n) { - return ws.slice(n, 7).concat(ws.slice(0, n)); - } - var defaultLocaleWeekdays = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), defaultLocaleWeekdaysShort = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), defaultLocaleWeekdaysMin = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), defaultWeekdaysRegex = matchWord, defaultWeekdaysShortRegex = matchWord, defaultWeekdaysMinRegex = matchWord; - function localeWeekdays(m, format) { - var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? "format" : "standalone"]; - return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays; - } - function localeWeekdaysShort(m) { - return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort; - } - function localeWeekdaysMin(m) { - return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin; - } - function handleStrictParse$1(weekdayName, format, strict) { - var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._shortWeekdaysParse = []; - this._minWeekdaysParse = []; - for (i = 0; i < 7; ++i) { - mom = createUTC([ 2e3, 1 ]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin(mom, "").toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort(mom, "").toLocaleLowerCase(); - this._weekdaysParse[i] = this.weekdays(mom, "").toLocaleLowerCase(); - } - } - if (strict) { - if (format === "dddd") { - ii = indexOf.call(this._weekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === "ddd") { - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === "dddd") { - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === "ddd") { - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } - } - function localeWeekdaysParse(weekdayName, format, strict) { - var i, mom, regex; - if (this._weekdaysParseExact) { - return handleStrictParse$1.call(this, weekdayName, format, strict); - } - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._minWeekdaysParse = []; - this._shortWeekdaysParse = []; - this._fullWeekdaysParse = []; - } - for (i = 0; i < 7; i++) { - mom = createUTC([ 2e3, 1 ]).day(i); - if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp("^" + this.weekdays(mom, "").replace(".", "\\.?") + "$", "i"); - this._shortWeekdaysParse[i] = new RegExp("^" + this.weekdaysShort(mom, "").replace(".", "\\.?") + "$", "i"); - this._minWeekdaysParse[i] = new RegExp("^" + this.weekdaysMin(mom, "").replace(".", "\\.?") + "$", "i"); - } - if (!this._weekdaysParse[i]) { - regex = "^" + this.weekdays(mom, "") + "|^" + this.weekdaysShort(mom, "") + "|^" + this.weekdaysMin(mom, ""); - this._weekdaysParse[i] = new RegExp(regex.replace(".", ""), "i"); - } - if (strict && format === "dddd" && this._fullWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === "ddd" && this._shortWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === "dd" && this._minWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - } - function getSetDayOfWeek(input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, "d"); - } else { - return day; - } - } - function getSetLocaleDayOfWeek(input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, "d"); - } - function getSetISODayOfWeek(input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - if (input != null) { - var weekday = parseIsoWeekday(input, this.localeData()); - return this.day(this.day() % 7 ? weekday : weekday - 7); - } else { - return this.day() || 7; - } - } - function weekdaysRegex(isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, "_weekdaysRegex")) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysStrictRegex; - } else { - return this._weekdaysRegex; - } - } else { - if (!hasOwnProp(this, "_weekdaysRegex")) { - this._weekdaysRegex = defaultWeekdaysRegex; - } - return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex; - } - } - function weekdaysShortRegex(isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, "_weekdaysRegex")) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysShortStrictRegex; - } else { - return this._weekdaysShortRegex; - } - } else { - if (!hasOwnProp(this, "_weekdaysShortRegex")) { - this._weekdaysShortRegex = defaultWeekdaysShortRegex; - } - return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex; - } - } - function weekdaysMinRegex(isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, "_weekdaysRegex")) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysMinStrictRegex; - } else { - return this._weekdaysMinRegex; - } - } else { - if (!hasOwnProp(this, "_weekdaysMinRegex")) { - this._weekdaysMinRegex = defaultWeekdaysMinRegex; - } - return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex; - } - } - function computeWeekdaysParse() { - function cmpLenRev(a, b) { - return b.length - a.length; - } - var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], i, mom, minp, shortp, longp; - for (i = 0; i < 7; i++) { - mom = createUTC([ 2e3, 1 ]).day(i); - minp = regexEscape(this.weekdaysMin(mom, "")); - shortp = regexEscape(this.weekdaysShort(mom, "")); - longp = regexEscape(this.weekdays(mom, "")); - minPieces.push(minp); - shortPieces.push(shortp); - longPieces.push(longp); - mixedPieces.push(minp); - mixedPieces.push(shortp); - mixedPieces.push(longp); - } - minPieces.sort(cmpLenRev); - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - this._weekdaysRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"); - this._weekdaysShortRegex = this._weekdaysRegex; - this._weekdaysMinRegex = this._weekdaysRegex; - this._weekdaysStrictRegex = new RegExp("^(" + longPieces.join("|") + ")", "i"); - this._weekdaysShortStrictRegex = new RegExp("^(" + shortPieces.join("|") + ")", "i"); - this._weekdaysMinStrictRegex = new RegExp("^(" + minPieces.join("|") + ")", "i"); - } - function hFormat() { - return this.hours() % 12 || 12; - } - function kFormat() { - return this.hours() || 24; - } - addFormatToken("H", [ "HH", 2 ], 0, "hour"); - addFormatToken("h", [ "hh", 2 ], 0, hFormat); - addFormatToken("k", [ "kk", 2 ], 0, kFormat); - addFormatToken("hmm", 0, 0, function() { - return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2); - }); - addFormatToken("hmmss", 0, 0, function() { - return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2); - }); - addFormatToken("Hmm", 0, 0, function() { - return "" + this.hours() + zeroFill(this.minutes(), 2); - }); - addFormatToken("Hmmss", 0, 0, function() { - return "" + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2); - }); - function meridiem(token, lowercase) { - addFormatToken(token, 0, 0, function() { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); - } - meridiem("a", true); - meridiem("A", false); - addUnitAlias("hour", "h"); - addUnitPriority("hour", 13); - function matchMeridiem(isStrict, locale) { - return locale._meridiemParse; - } - addRegexToken("a", matchMeridiem); - addRegexToken("A", matchMeridiem); - addRegexToken("H", match1to2); - addRegexToken("h", match1to2); - addRegexToken("k", match1to2); - addRegexToken("HH", match1to2, match2); - addRegexToken("hh", match1to2, match2); - addRegexToken("kk", match1to2, match2); - addRegexToken("hmm", match3to4); - addRegexToken("hmmss", match5to6); - addRegexToken("Hmm", match3to4); - addRegexToken("Hmmss", match5to6); - addParseToken([ "H", "HH" ], HOUR); - addParseToken([ "k", "kk" ], function(input, array, config) { - var kInput = toInt(input); - array[HOUR] = kInput === 24 ? 0 : kInput; - }); - addParseToken([ "a", "A" ], function(input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; - }); - addParseToken([ "h", "hh" ], function(input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; - }); - addParseToken("hmm", function(input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - getParsingFlags(config).bigHour = true; - }); - addParseToken("hmmss", function(input, array, config) { - var pos1 = input.length - 4, pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - getParsingFlags(config).bigHour = true; - }); - addParseToken("Hmm", function(input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - }); - addParseToken("Hmmss", function(input, array, config) { - var pos1 = input.length - 4, pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - }); - function localeIsPM(input) { - return (input + "").toLowerCase().charAt(0) === "p"; - } - var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, getSetHour = makeGetSet("Hours", true); - function localeMeridiem(hours, minutes, isLower) { - if (hours > 11) { - return isLower ? "pm" : "PM"; - } else { - return isLower ? "am" : "AM"; - } - } - var baseConfig = { - calendar: defaultCalendar, - longDateFormat: defaultLongDateFormat, - invalidDate: defaultInvalidDate, - ordinal: defaultOrdinal, - dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, - relativeTime: defaultRelativeTime, - months: defaultLocaleMonths, - monthsShort: defaultLocaleMonthsShort, - week: defaultLocaleWeek, - weekdays: defaultLocaleWeekdays, - weekdaysMin: defaultLocaleWeekdaysMin, - weekdaysShort: defaultLocaleWeekdaysShort, - meridiemParse: defaultLocaleMeridiemParse - }; - var locales = {}, localeFamilies = {}, globalLocale; - function commonPrefix(arr1, arr2) { - var i, minl = Math.min(arr1.length, arr2.length); - for (i = 0; i < minl; i += 1) { - if (arr1[i] !== arr2[i]) { - return i; - } - } - return minl; - } - function normalizeLocale(key) { - return key ? key.toLowerCase().replace("_", "-") : key; - } - function chooseLocale(names) { - var i = 0, j, next, locale, split; - while (i < names.length) { - split = normalizeLocale(names[i]).split("-"); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split("-") : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join("-")); - if (locale) { - return locale; - } - if (next && next.length >= j && commonPrefix(split, next) >= j - 1) { - break; - } - j--; - } - i++; - } - return globalLocale; - } - function loadLocale(name) { - var oldLocale = null, aliasedRequire; - if (locales[name] === undefined && typeof module !== "undefined" && module && module.exports) { - try { - oldLocale = globalLocale._abbr; - aliasedRequire = require; - aliasedRequire("./locale/" + name); - getSetGlobalLocale(oldLocale); - } catch (e) { - locales[name] = null; - } - } - return locales[name]; - } - function getSetGlobalLocale(key, values) { - var data; - if (key) { - if (isUndefined(values)) { - data = getLocale(key); - } else { - data = defineLocale(key, values); - } - if (data) { - globalLocale = data; - } else { - if (typeof console !== "undefined" && console.warn) { - console.warn("Locale " + key + " not found. Did you forget to load it?"); - } - } - } - return globalLocale._abbr; - } - function defineLocale(name, config) { - if (config !== null) { - var locale, parentConfig = baseConfig; - config.abbr = name; - if (locales[name] != null) { - deprecateSimple("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change " + "an existing locale. moment.defineLocale(localeName, " + "config) should only be used for creating a new locale " + "See http://momentjs.com/guides/#/warnings/define-locale/ for more info."); - parentConfig = locales[name]._config; - } else if (config.parentLocale != null) { - if (locales[config.parentLocale] != null) { - parentConfig = locales[config.parentLocale]._config; - } else { - locale = loadLocale(config.parentLocale); - if (locale != null) { - parentConfig = locale._config; - } else { - if (!localeFamilies[config.parentLocale]) { - localeFamilies[config.parentLocale] = []; - } - localeFamilies[config.parentLocale].push({ - name: name, - config: config - }); - return null; - } - } - } - locales[name] = new Locale(mergeConfigs(parentConfig, config)); - if (localeFamilies[name]) { - localeFamilies[name].forEach(function(x) { - defineLocale(x.name, x.config); - }); - } - getSetGlobalLocale(name); - return locales[name]; - } else { - delete locales[name]; - return null; - } - } - function updateLocale(name, config) { - if (config != null) { - var locale, tmpLocale, parentConfig = baseConfig; - if (locales[name] != null && locales[name].parentLocale != null) { - locales[name].set(mergeConfigs(locales[name]._config, config)); - } else { - tmpLocale = loadLocale(name); - if (tmpLocale != null) { - parentConfig = tmpLocale._config; - } - config = mergeConfigs(parentConfig, config); - if (tmpLocale == null) { - config.abbr = name; - } - locale = new Locale(config); - locale.parentLocale = locales[name]; - locales[name] = locale; - } - getSetGlobalLocale(name); - } else { - if (locales[name] != null) { - if (locales[name].parentLocale != null) { - locales[name] = locales[name].parentLocale; - if (name === getSetGlobalLocale()) { - getSetGlobalLocale(name); - } - } else if (locales[name] != null) { - delete locales[name]; - } - } - } - return locales[name]; - } - function getLocale(key) { - var locale; - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } - if (!key) { - return globalLocale; - } - if (!isArray(key)) { - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [ key ]; - } - return chooseLocale(key); - } - function listLocales() { - return keys(locales); - } - function checkOverflow(m) { - var overflow, a = m._a; - if (a && getParsingFlags(m).overflow === -2) { - overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1; - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - if (getParsingFlags(m)._overflowWeeks && overflow === -1) { - overflow = WEEK; - } - if (getParsingFlags(m)._overflowWeekday && overflow === -1) { - overflow = WEEKDAY; - } - getParsingFlags(m).overflow = overflow; - } - return m; - } - var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, isoDates = [ [ "YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/ ], [ "YYYY-MM-DD", /\d{4}-\d\d-\d\d/ ], [ "GGGG-[W]WW-E", /\d{4}-W\d\d-\d/ ], [ "GGGG-[W]WW", /\d{4}-W\d\d/, false ], [ "YYYY-DDD", /\d{4}-\d{3}/ ], [ "YYYY-MM", /\d{4}-\d\d/, false ], [ "YYYYYYMMDD", /[+-]\d{10}/ ], [ "YYYYMMDD", /\d{8}/ ], [ "GGGG[W]WWE", /\d{4}W\d{3}/ ], [ "GGGG[W]WW", /\d{4}W\d{2}/, false ], [ "YYYYDDD", /\d{7}/ ], [ "YYYYMM", /\d{6}/, false ], [ "YYYY", /\d{4}/, false ] ], isoTimes = [ [ "HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/ ], [ "HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/ ], [ "HH:mm:ss", /\d\d:\d\d:\d\d/ ], [ "HH:mm", /\d\d:\d\d/ ], [ "HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/ ], [ "HHmmss,SSSS", /\d\d\d\d\d\d,\d+/ ], [ "HHmmss", /\d\d\d\d\d\d/ ], [ "HHmm", /\d\d\d\d/ ], [ "HH", /\d\d/ ] ], aspNetJsonRegex = /^\/?Date\((-?\d+)/i, rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, obsOffsets = { - UT: 0, - GMT: 0, - EDT: -4 * 60, - EST: -5 * 60, - CDT: -5 * 60, - CST: -6 * 60, - MDT: -6 * 60, - MST: -7 * 60, - PDT: -7 * 60, - PST: -8 * 60 - }; - function configFromISO(config) { - var i, l, string = config._i, match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat; - if (match) { - getParsingFlags(config).iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(match[1])) { - dateFormat = isoDates[i][0]; - allowTime = isoDates[i][2] !== false; - break; - } - } - if (dateFormat == null) { - config._isValid = false; - return; - } - if (match[3]) { - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(match[3])) { - timeFormat = (match[2] || " ") + isoTimes[i][0]; - break; - } - } - if (timeFormat == null) { - config._isValid = false; - return; - } - } - if (!allowTime && timeFormat != null) { - config._isValid = false; - return; - } - if (match[4]) { - if (tzRegex.exec(match[4])) { - tzFormat = "Z"; - } else { - config._isValid = false; - return; - } - } - config._f = dateFormat + (timeFormat || "") + (tzFormat || ""); - configFromStringAndFormat(config); - } else { - config._isValid = false; - } - } - function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { - var result = [ untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10) ]; - if (secondStr) { - result.push(parseInt(secondStr, 10)); - } - return result; - } - function untruncateYear(yearStr) { - var year = parseInt(yearStr, 10); - if (year <= 49) { - return 2e3 + year; - } else if (year <= 999) { - return 1900 + year; - } - return year; - } - function preprocessRFC2822(s) { - return s.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, ""); - } - function checkWeekday(weekdayStr, parsedInput, config) { - if (weekdayStr) { - var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); - if (weekdayProvided !== weekdayActual) { - getParsingFlags(config).weekdayMismatch = true; - config._isValid = false; - return false; - } - } - return true; - } - function calculateOffset(obsOffset, militaryOffset, numOffset) { - if (obsOffset) { - return obsOffsets[obsOffset]; - } else if (militaryOffset) { - return 0; - } else { - var hm = parseInt(numOffset, 10), m = hm % 100, h = (hm - m) / 100; - return h * 60 + m; - } - } - function configFromRFC2822(config) { - var match = rfc2822.exec(preprocessRFC2822(config._i)), parsedArray; - if (match) { - parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); - if (!checkWeekday(match[1], parsedArray, config)) { - return; - } - config._a = parsedArray; - config._tzm = calculateOffset(match[8], match[9], match[10]); - config._d = createUTCDate.apply(null, config._a); - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - getParsingFlags(config).rfc2822 = true; - } else { - config._isValid = false; - } - } - function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } - configFromRFC2822(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } - if (config._strict) { - config._isValid = false; - } else { - hooks.createFromInputFallback(config); - } - } - hooks.createFromInputFallback = deprecate("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), " + "which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are " + "discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", function(config) { - config._d = new Date(config._i + (config._useUTC ? " UTC" : "")); - }); - function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; - } - function currentDateArray(config) { - var nowValue = new Date(hooks.now()); - if (config._useUTC) { - return [ nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate() ]; - } - return [ nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate() ]; - } - function configFromArray(config) { - var i, date, input = [], currentDate, expectedWeekday, yearToUse; - if (config._d) { - return; - } - currentDate = currentDateArray(config); - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - if (config._dayOfYear != null) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { - getParsingFlags(config)._overflowDayOfYear = true; - } - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - for (;i < 7; i++) { - config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i]; - } - if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - if (config._nextDay) { - config._a[HOUR] = 24; - } - if (config._w && typeof config._w.d !== "undefined" && config._w.d !== expectedWeekday) { - getParsingFlags(config).weekdayMismatch = true; - } - } - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - if (weekday < 1 || weekday > 7) { - weekdayOverflow = true; - } - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - curWeek = weekOfYear(createLocal(), dow, doy); - weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); - week = defaults(w.w, curWeek.week); - if (w.d != null) { - weekday = w.d; - if (weekday < 0 || weekday > 6) { - weekdayOverflow = true; - } - } else if (w.e != null) { - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { - weekdayOverflow = true; - } - } else { - weekday = dow; - } - } - if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { - getParsingFlags(config)._overflowWeeks = true; - } else if (weekdayOverflow != null) { - getParsingFlags(config)._overflowWeekday = true; - } else { - temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } - } - hooks.ISO_8601 = function() {}; - hooks.RFC_2822 = function() {}; - function configFromStringAndFormat(config) { - if (config._f === hooks.ISO_8601) { - configFromISO(config); - return; - } - if (config._f === hooks.RFC_2822) { - configFromRFC2822(config); - return; - } - config._a = []; - getParsingFlags(config).empty = true; - var string = "" + config._i, i, parsedInput, tokens, token, skipped, stringLength = string.length, totalParsedInputLength = 0, era; - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) { - getParsingFlags(config).bigHour = undefined; - } - getParsingFlags(config).parsedDateParts = config._a.slice(0); - getParsingFlags(config).meridiem = config._meridiem; - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); - era = getParsingFlags(config).era; - if (era !== null) { - config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); - } - configFromArray(config); - checkOverflow(config); - } - function meridiemFixWrap(locale, hour, meridiem) { - var isPm; - if (meridiem == null) { - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - return hour; - } - } - function configFromStringAndArray(config) { - var tempConfig, bestMoment, scoreToBeat, i, currentScore, validFormatFound, bestFormatIsValid = false; - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - validFormatFound = false; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); - if (isValid(tempConfig)) { - validFormatFound = true; - } - currentScore += getParsingFlags(tempConfig).charsLeftOver; - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - getParsingFlags(tempConfig).score = currentScore; - if (!bestFormatIsValid) { - if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - if (validFormatFound) { - bestFormatIsValid = true; - } - } - } else { - if (currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } - } - extend(config, bestMoment || tempConfig); - } - function configFromObject(config) { - if (config._d) { - return; - } - var i = normalizeObjectUnits(config._i), dayOrDate = i.day === undefined ? i.date : i.day; - config._a = map([ i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond ], function(obj) { - return obj && parseInt(obj, 10); - }); - configFromArray(config); - } - function createFromConfig(config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - res.add(1, "d"); - res._nextDay = undefined; - } - return res; - } - function prepareConfig(config) { - var input = config._i, format = config._f; - config._locale = config._locale || getLocale(config._l); - if (input === null || format === undefined && input === "") { - return createInvalid({ - nullInput: true - }); - } - if (typeof input === "string") { - config._i = input = config._locale.preparse(input); - } - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isDate(input)) { - config._d = input; - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else { - configFromInput(config); - } - if (!isValid(config)) { - config._d = null; - } - return config; - } - function configFromInput(config) { - var input = config._i; - if (isUndefined(input)) { - config._d = new Date(hooks.now()); - } else if (isDate(input)) { - config._d = new Date(input.valueOf()); - } else if (typeof input === "string") { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function(obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (isObject(input)) { - configFromObject(config); - } else if (isNumber(input)) { - config._d = new Date(input); - } else { - hooks.createFromInputFallback(config); - } - } - function createLocalOrUTC(input, format, locale, strict, isUTC) { - var c = {}; - if (format === true || format === false) { - strict = format; - format = undefined; - } - if (locale === true || locale === false) { - strict = locale; - locale = undefined; - } - if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) { - input = undefined; - } - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - return createFromConfig(c); - } - function createLocal(input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); - } - var prototypeMin = deprecate("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other < this ? this : other; - } else { - return createInvalid(); - } - }), prototypeMax = deprecate("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other > this ? this : other; - } else { - return createInvalid(); - } - }); - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } - function min() { - var args = [].slice.call(arguments, 0); - return pickBy("isBefore", args); - } - function max() { - var args = [].slice.call(arguments, 0); - return pickBy("isAfter", args); - } - var now = function() { - return Date.now ? Date.now() : +new Date(); - }; - var ordering = [ "year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond" ]; - function isDurationValid(m) { - var key, unitHasDecimal = false, i; - for (key in m) { - if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { - return false; - } - } - for (i = 0; i < ordering.length; ++i) { - if (m[ordering[i]]) { - if (unitHasDecimal) { - return false; - } - if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { - unitHasDecimal = true; - } - } - } - return true; - } - function isValid$1() { - return this._isValid; - } - function createInvalid$1() { - return createDuration(NaN); - } - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), years = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, months = normalizedInput.month || 0, weeks = normalizedInput.week || normalizedInput.isoWeek || 0, days = normalizedInput.day || 0, hours = normalizedInput.hour || 0, minutes = normalizedInput.minute || 0, seconds = normalizedInput.second || 0, milliseconds = normalizedInput.millisecond || 0; - this._isValid = isDurationValid(normalizedInput); - this._milliseconds = +milliseconds + seconds * 1e3 + minutes * 6e4 + hours * 1e3 * 60 * 60; - this._days = +days + weeks * 7; - this._months = +months + quarters * 3 + years * 12; - this._data = {}; - this._locale = getLocale(); - this._bubble(); - } - function isDuration(obj) { - return obj instanceof Duration; - } - function absRound(number) { - if (number < 0) { - return Math.round(-1 * number) * -1; - } else { - return Math.round(number); - } - } - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i; - for (i = 0; i < len; i++) { - if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) { - diffs++; - } - } - return diffs + lengthDiff; - } - function offset(token, separator) { - addFormatToken(token, 0, 0, function() { - var offset = this.utcOffset(), sign = "+"; - if (offset < 0) { - offset = -offset; - sign = "-"; - } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2); - }); - } - offset("Z", ":"); - offset("ZZ", ""); - addRegexToken("Z", matchShortOffset); - addRegexToken("ZZ", matchShortOffset); - addParseToken([ "Z", "ZZ" ], function(input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(matchShortOffset, input); - }); - var chunkOffset = /([\+\-]|\d\d)/gi; - function offsetFromString(matcher, string) { - var matches = (string || "").match(matcher), chunk, parts, minutes; - if (matches === null) { - return null; - } - chunk = matches[matches.length - 1] || []; - parts = (chunk + "").match(chunkOffset) || [ "-", 0, 0 ]; - minutes = +(parts[1] * 60) + toInt(parts[2]); - return minutes === 0 ? 0 : parts[0] === "+" ? minutes : -minutes; - } - function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); - res._d.setTime(res._d.valueOf() + diff); - hooks.updateOffset(res, false); - return res; - } else { - return createLocal(input).local(); - } - } - function getDateOffset(m) { - return -Math.round(m._d.getTimezoneOffset()); - } - hooks.updateOffset = function() {}; - function getSetOffset(input, keepLocalTime, keepMinutes) { - var offset = this._offset || 0, localAdjust; - if (!this.isValid()) { - return input != null ? this : NaN; - } - if (input != null) { - if (typeof input === "string") { - input = offsetFromString(matchShortOffset, input); - if (input === null) { - return this; - } - } else if (Math.abs(input) < 16 && !keepMinutes) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, "m"); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addSubtract(this, createDuration(input - offset, "m"), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - hooks.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); - } - } - function getSetZone(input, keepLocalTime) { - if (input != null) { - if (typeof input !== "string") { - input = -input; - } - this.utcOffset(input, keepLocalTime); - return this; - } else { - return -this.utcOffset(); - } - } - function setOffsetToUTC(keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - } - function setOffsetToLocal(keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - if (keepLocalTime) { - this.subtract(getDateOffset(this), "m"); - } - } - return this; - } - function setOffsetToParsedOffset() { - if (this._tzm != null) { - this.utcOffset(this._tzm, false, true); - } else if (typeof this._i === "string") { - var tZone = offsetFromString(matchOffset, this._i); - if (tZone != null) { - this.utcOffset(tZone); - } else { - this.utcOffset(0, true); - } - } - return this; - } - function hasAlignedHourOffset(input) { - if (!this.isValid()) { - return false; - } - input = input ? createLocal(input).utcOffset() : 0; - return (this.utcOffset() - input) % 60 === 0; - } - function isDaylightSavingTime() { - return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset(); - } - function isDaylightSavingTimeShifted() { - if (!isUndefined(this._isDSTShifted)) { - return this._isDSTShifted; - } - var c = {}, other; - copyConfig(c, this); - c = prepareConfig(c); - if (c._a) { - other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0; - } else { - this._isDSTShifted = false; - } - return this._isDSTShifted; - } - function isLocal() { - return this.isValid() ? !this._isUTC : false; - } - function isUtcOffset() { - return this.isValid() ? this._isUTC : false; - } - function isUtc() { - return this.isValid() ? this._isUTC && this._offset === 0 : false; - } - var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; - function createDuration(input, key) { - var duration = input, match = null, sign, ret, diffRes; - if (isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (isNumber(input) || !isNaN(+input)) { - duration = {}; - if (key) { - duration[key] = +input; - } else { - duration.milliseconds = +input; - } - } else if (match = aspNetRegex.exec(input)) { - sign = match[1] === "-" ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(absRound(match[MILLISECOND] * 1e3)) * sign - }; - } else if (match = isoRegex.exec(input)) { - sign = match[1] === "-" ? -1 : 1; - duration = { - y: parseIso(match[2], sign), - M: parseIso(match[3], sign), - w: parseIso(match[4], sign), - d: parseIso(match[5], sign), - h: parseIso(match[6], sign), - m: parseIso(match[7], sign), - s: parseIso(match[8], sign) - }; - } else if (duration == null) { - duration = {}; - } else if (typeof duration === "object" && ("from" in duration || "to" in duration)) { - diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - ret = new Duration(duration); - if (isDuration(input) && hasOwnProp(input, "_locale")) { - ret._locale = input._locale; - } - if (isDuration(input) && hasOwnProp(input, "_isValid")) { - ret._isValid = input._isValid; - } - return ret; - } - createDuration.fn = Duration.prototype; - createDuration.invalid = createInvalid$1; - function parseIso(inp, sign) { - var res = inp && parseFloat(inp.replace(",", ".")); - return (isNaN(res) ? 0 : res) * sign; - } - function positiveMomentsDifference(base, other) { - var res = {}; - res.months = other.month() - base.month() + (other.year() - base.year()) * 12; - if (base.clone().add(res.months, "M").isAfter(other)) { - --res.months; - } - res.milliseconds = +other - +base.clone().add(res.months, "M"); - return res; - } - function momentsDifference(base, other) { - var res; - if (!(base.isValid() && other.isValid())) { - return { - milliseconds: 0, - months: 0 - }; - } - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - return res; - } - function createAdder(direction, name) { - return function(val, period) { - var dur, tmp; - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, "moment()." + name + "(period, number) is deprecated. Please use moment()." + name + "(number, period). " + "See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."); - tmp = val; - val = period; - period = tmp; - } - dur = createDuration(val, period); - addSubtract(this, dur, direction); - return this; - }; - } - function addSubtract(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, days = absRound(duration._days), months = absRound(duration._months); - if (!mom.isValid()) { - return; - } - updateOffset = updateOffset == null ? true : updateOffset; - if (months) { - setMonth(mom, get(mom, "Month") + months * isAdding); - } - if (days) { - set$1(mom, "Date", get(mom, "Date") + days * isAdding); - } - if (milliseconds) { - mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); - } - if (updateOffset) { - hooks.updateOffset(mom, days || months); - } - } - var add = createAdder(1, "add"), subtract = createAdder(-1, "subtract"); - function isString(input) { - return typeof input === "string" || input instanceof String; - } - function isMomentInput(input) { - return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined; - } - function isMomentInputObject(input) { - var objectTest = isObject(input) && !isObjectEmpty(input), propertyTest = false, properties = [ "years", "year", "y", "months", "month", "M", "days", "day", "d", "dates", "date", "D", "hours", "hour", "h", "minutes", "minute", "m", "seconds", "second", "s", "milliseconds", "millisecond", "ms" ], i, property; - for (i = 0; i < properties.length; i += 1) { - property = properties[i]; - propertyTest = propertyTest || hasOwnProp(input, property); - } - return objectTest && propertyTest; - } - function isNumberOrStringArray(input) { - var arrayTest = isArray(input), dataTypeTest = false; - if (arrayTest) { - dataTypeTest = input.filter(function(item) { - return !isNumber(item) && isString(input); - }).length === 0; - } - return arrayTest && dataTypeTest; - } - function isCalendarSpec(input) { - var objectTest = isObject(input) && !isObjectEmpty(input), propertyTest = false, properties = [ "sameDay", "nextDay", "lastDay", "nextWeek", "lastWeek", "sameElse" ], i, property; - for (i = 0; i < properties.length; i += 1) { - property = properties[i]; - propertyTest = propertyTest || hasOwnProp(input, property); - } - return objectTest && propertyTest; - } - function getCalendarFormat(myMoment, now) { - var diff = myMoment.diff(now, "days", true); - return diff < -6 ? "sameElse" : diff < -1 ? "lastWeek" : diff < 0 ? "lastDay" : diff < 1 ? "sameDay" : diff < 2 ? "nextDay" : diff < 7 ? "nextWeek" : "sameElse"; - } - function calendar$1(time, formats) { - if (arguments.length === 1) { - if (!arguments[0]) { - time = undefined; - formats = undefined; - } else if (isMomentInput(arguments[0])) { - time = arguments[0]; - formats = undefined; - } else if (isCalendarSpec(arguments[0])) { - formats = arguments[0]; - time = undefined; - } - } - var now = time || createLocal(), sod = cloneWithOffset(now, this).startOf("day"), format = hooks.calendarFormat(this, sod) || "sameElse", output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); - return this.format(output || this.localeData().calendar(format, this, createLocal(now))); - } - function clone() { - return new Moment(this); - } - function isAfter(input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || "millisecond"; - if (units === "millisecond") { - return this.valueOf() > localInput.valueOf(); - } else { - return localInput.valueOf() < this.clone().startOf(units).valueOf(); - } - } - function isBefore(input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || "millisecond"; - if (units === "millisecond") { - return this.valueOf() < localInput.valueOf(); - } else { - return this.clone().endOf(units).valueOf() < localInput.valueOf(); - } - } - function isBetween(from, to, units, inclusivity) { - var localFrom = isMoment(from) ? from : createLocal(from), localTo = isMoment(to) ? to : createLocal(to); - if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { - return false; - } - inclusivity = inclusivity || "()"; - return (inclusivity[0] === "(" ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ")" ? this.isBefore(localTo, units) : !this.isAfter(localTo, units)); - } - function isSame(input, units) { - var localInput = isMoment(input) ? input : createLocal(input), inputMs; - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units) || "millisecond"; - if (units === "millisecond") { - return this.valueOf() === localInput.valueOf(); - } else { - inputMs = localInput.valueOf(); - return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); - } - } - function isSameOrAfter(input, units) { - return this.isSame(input, units) || this.isAfter(input, units); - } - function isSameOrBefore(input, units) { - return this.isSame(input, units) || this.isBefore(input, units); - } - function diff(input, units, asFloat) { - var that, zoneDelta, output; - if (!this.isValid()) { - return NaN; - } - that = cloneWithOffset(input, this); - if (!that.isValid()) { - return NaN; - } - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; - units = normalizeUnits(units); - switch (units) { - case "year": - output = monthDiff(this, that) / 12; - break; - - case "month": - output = monthDiff(this, that); - break; - - case "quarter": - output = monthDiff(this, that) / 3; - break; - - case "second": - output = (this - that) / 1e3; - break; - - case "minute": - output = (this - that) / 6e4; - break; - - case "hour": - output = (this - that) / 36e5; - break; - - case "day": - output = (this - that - zoneDelta) / 864e5; - break; - - case "week": - output = (this - that - zoneDelta) / 6048e5; - break; - - default: - output = this - that; - } - return asFloat ? output : absFloor(output); - } - function monthDiff(a, b) { - if (a.date() < b.date()) { - return -monthDiff(b, a); - } - var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), anchor = a.clone().add(wholeMonthDiff, "months"), anchor2, adjust; - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, "months"); - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, "months"); - adjust = (b - anchor) / (anchor2 - anchor); - } - return -(wholeMonthDiff + adjust) || 0; - } - hooks.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ"; - hooks.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]"; - function toString() { - return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); - } - function toISOString(keepOffset) { - if (!this.isValid()) { - return null; - } - var utc = keepOffset !== true, m = utc ? this.clone().utc() : this; - if (m.year() < 0 || m.year() > 9999) { - return formatMoment(m, utc ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"); - } - if (isFunction(Date.prototype.toISOString)) { - if (utc) { - return this.toDate().toISOString(); - } else { - return new Date(this.valueOf() + this.utcOffset() * 60 * 1e3).toISOString().replace("Z", formatMoment(m, "Z")); - } - } - return formatMoment(m, utc ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ"); - } - function inspect() { - if (!this.isValid()) { - return "moment.invalid(/* " + this._i + " */)"; - } - var func = "moment", zone = "", prefix, year, datetime, suffix; - if (!this.isLocal()) { - func = this.utcOffset() === 0 ? "moment.utc" : "moment.parseZone"; - zone = "Z"; - } - prefix = "[" + func + '("]'; - year = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY"; - datetime = "-MM-DD[T]HH:mm:ss.SSS"; - suffix = zone + '[")]'; - return this.format(prefix + year + datetime + suffix); - } - function format(inputString) { - if (!inputString) { - inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; - } - var output = formatMoment(this, inputString); - return this.localeData().postformat(output); - } - function from(time, withoutSuffix) { - if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) { - return createDuration({ - to: this, - from: time - }).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } - } - function fromNow(withoutSuffix) { - return this.from(createLocal(), withoutSuffix); - } - function to(time, withoutSuffix) { - if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) { - return createDuration({ - from: this, - to: time - }).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } - } - function toNow(withoutSuffix) { - return this.to(createLocal(), withoutSuffix); - } - function locale(key) { - var newLocaleData; - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - } - var lang = deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - }); - function localeData() { - return this._locale; - } - var MS_PER_SECOND = 1e3, MS_PER_MINUTE = 60 * MS_PER_SECOND, MS_PER_HOUR = 60 * MS_PER_MINUTE, MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; - function mod$1(dividend, divisor) { - return (dividend % divisor + divisor) % divisor; - } - function localStartOfDate(y, m, d) { - if (y < 100 && y >= 0) { - return new Date(y + 400, m, d) - MS_PER_400_YEARS; - } else { - return new Date(y, m, d).valueOf(); - } - } - function utcStartOfDate(y, m, d) { - if (y < 100 && y >= 0) { - return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; - } else { - return Date.UTC(y, m, d); - } - } - function startOf(units) { - var time, startOfDate; - units = normalizeUnits(units); - if (units === undefined || units === "millisecond" || !this.isValid()) { - return this; - } - startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - switch (units) { - case "year": - time = startOfDate(this.year(), 0, 1); - break; - - case "quarter": - time = startOfDate(this.year(), this.month() - this.month() % 3, 1); - break; - - case "month": - time = startOfDate(this.year(), this.month(), 1); - break; - - case "week": - time = startOfDate(this.year(), this.month(), this.date() - this.weekday()); - break; - - case "isoWeek": - time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); - break; - - case "day": - case "date": - time = startOfDate(this.year(), this.month(), this.date()); - break; - - case "hour": - time = this._d.valueOf(); - time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR); - break; - - case "minute": - time = this._d.valueOf(); - time -= mod$1(time, MS_PER_MINUTE); - break; - - case "second": - time = this._d.valueOf(); - time -= mod$1(time, MS_PER_SECOND); - break; - } - this._d.setTime(time); - hooks.updateOffset(this, true); - return this; - } - function endOf(units) { - var time, startOfDate; - units = normalizeUnits(units); - if (units === undefined || units === "millisecond" || !this.isValid()) { - return this; - } - startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; - switch (units) { - case "year": - time = startOfDate(this.year() + 1, 0, 1) - 1; - break; - - case "quarter": - time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; - break; - - case "month": - time = startOfDate(this.year(), this.month() + 1, 1) - 1; - break; - - case "week": - time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; - break; - - case "isoWeek": - time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; - break; - - case "day": - case "date": - time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; - break; - - case "hour": - time = this._d.valueOf(); - time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1; - break; - - case "minute": - time = this._d.valueOf(); - time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1; - break; - - case "second": - time = this._d.valueOf(); - time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1; - break; - } - this._d.setTime(time); - hooks.updateOffset(this, true); - return this; - } - function valueOf() { - return this._d.valueOf() - (this._offset || 0) * 6e4; - } - function unix() { - return Math.floor(this.valueOf() / 1e3); - } - function toDate() { - return new Date(this.valueOf()); - } - function toArray() { - var m = this; - return [ m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond() ]; - } - function toObject() { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds() - }; - } - function toJSON() { - return this.isValid() ? this.toISOString() : null; - } - function isValid$2() { - return isValid(this); - } - function parsingFlags() { - return extend({}, getParsingFlags(this)); - } - function invalidAt() { - return getParsingFlags(this).overflow; - } - function creationData() { - return { - input: this._i, - format: this._f, - locale: this._locale, - isUTC: this._isUTC, - strict: this._strict - }; - } - addFormatToken("N", 0, 0, "eraAbbr"); - addFormatToken("NN", 0, 0, "eraAbbr"); - addFormatToken("NNN", 0, 0, "eraAbbr"); - addFormatToken("NNNN", 0, 0, "eraName"); - addFormatToken("NNNNN", 0, 0, "eraNarrow"); - addFormatToken("y", [ "y", 1 ], "yo", "eraYear"); - addFormatToken("y", [ "yy", 2 ], 0, "eraYear"); - addFormatToken("y", [ "yyy", 3 ], 0, "eraYear"); - addFormatToken("y", [ "yyyy", 4 ], 0, "eraYear"); - addRegexToken("N", matchEraAbbr); - addRegexToken("NN", matchEraAbbr); - addRegexToken("NNN", matchEraAbbr); - addRegexToken("NNNN", matchEraName); - addRegexToken("NNNNN", matchEraNarrow); - addParseToken([ "N", "NN", "NNN", "NNNN", "NNNNN" ], function(input, array, config, token) { - var era = config._locale.erasParse(input, token, config._strict); - if (era) { - getParsingFlags(config).era = era; - } else { - getParsingFlags(config).invalidEra = input; - } - }); - addRegexToken("y", matchUnsigned); - addRegexToken("yy", matchUnsigned); - addRegexToken("yyy", matchUnsigned); - addRegexToken("yyyy", matchUnsigned); - addRegexToken("yo", matchEraYearOrdinal); - addParseToken([ "y", "yy", "yyy", "yyyy" ], YEAR); - addParseToken([ "yo" ], function(input, array, config, token) { - var match; - if (config._locale._eraYearOrdinalRegex) { - match = input.match(config._locale._eraYearOrdinalRegex); - } - if (config._locale.eraYearOrdinalParse) { - array[YEAR] = config._locale.eraYearOrdinalParse(input, match); - } else { - array[YEAR] = parseInt(input, 10); - } - }); - function localeEras(m, format) { - var i, l, date, eras = this._eras || getLocale("en")._eras; - for (i = 0, l = eras.length; i < l; ++i) { - switch (typeof eras[i].since) { - case "string": - date = hooks(eras[i].since).startOf("day"); - eras[i].since = date.valueOf(); - break; - } - switch (typeof eras[i].until) { - case "undefined": - eras[i].until = +Infinity; - break; - - case "string": - date = hooks(eras[i].until).startOf("day").valueOf(); - eras[i].until = date.valueOf(); - break; - } - } - return eras; - } - function localeErasParse(eraName, format, strict) { - var i, l, eras = this.eras(), name, abbr, narrow; - eraName = eraName.toUpperCase(); - for (i = 0, l = eras.length; i < l; ++i) { - name = eras[i].name.toUpperCase(); - abbr = eras[i].abbr.toUpperCase(); - narrow = eras[i].narrow.toUpperCase(); - if (strict) { - switch (format) { - case "N": - case "NN": - case "NNN": - if (abbr === eraName) { - return eras[i]; - } - break; - - case "NNNN": - if (name === eraName) { - return eras[i]; - } - break; - - case "NNNNN": - if (narrow === eraName) { - return eras[i]; - } - break; - } - } else if ([ name, abbr, narrow ].indexOf(eraName) >= 0) { - return eras[i]; - } - } - } - function localeErasConvertYear(era, year) { - var dir = era.since <= era.until ? +1 : -1; - if (year === undefined) { - return hooks(era.since).year(); - } else { - return hooks(era.since).year() + (year - era.offset) * dir; - } - } - function getEraName() { - var i, l, val, eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - val = this.clone().startOf("day").valueOf(); - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].name; - } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].name; - } - } - return ""; - } - function getEraNarrow() { - var i, l, val, eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - val = this.clone().startOf("day").valueOf(); - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].narrow; - } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].narrow; - } - } - return ""; - } - function getEraAbbr() { - var i, l, val, eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - val = this.clone().startOf("day").valueOf(); - if (eras[i].since <= val && val <= eras[i].until) { - return eras[i].abbr; - } - if (eras[i].until <= val && val <= eras[i].since) { - return eras[i].abbr; - } - } - return ""; - } - function getEraYear() { - var i, l, dir, val, eras = this.localeData().eras(); - for (i = 0, l = eras.length; i < l; ++i) { - dir = eras[i].since <= eras[i].until ? +1 : -1; - val = this.clone().startOf("day").valueOf(); - if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) { - return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset; - } - } - return this.year(); - } - function erasNameRegex(isStrict) { - if (!hasOwnProp(this, "_erasNameRegex")) { - computeErasParse.call(this); - } - return isStrict ? this._erasNameRegex : this._erasRegex; - } - function erasAbbrRegex(isStrict) { - if (!hasOwnProp(this, "_erasAbbrRegex")) { - computeErasParse.call(this); - } - return isStrict ? this._erasAbbrRegex : this._erasRegex; - } - function erasNarrowRegex(isStrict) { - if (!hasOwnProp(this, "_erasNarrowRegex")) { - computeErasParse.call(this); - } - return isStrict ? this._erasNarrowRegex : this._erasRegex; - } - function matchEraAbbr(isStrict, locale) { - return locale.erasAbbrRegex(isStrict); - } - function matchEraName(isStrict, locale) { - return locale.erasNameRegex(isStrict); - } - function matchEraNarrow(isStrict, locale) { - return locale.erasNarrowRegex(isStrict); - } - function matchEraYearOrdinal(isStrict, locale) { - return locale._eraYearOrdinalRegex || matchUnsigned; - } - function computeErasParse() { - var abbrPieces = [], namePieces = [], narrowPieces = [], mixedPieces = [], i, l, eras = this.eras(); - for (i = 0, l = eras.length; i < l; ++i) { - namePieces.push(regexEscape(eras[i].name)); - abbrPieces.push(regexEscape(eras[i].abbr)); - narrowPieces.push(regexEscape(eras[i].narrow)); - mixedPieces.push(regexEscape(eras[i].name)); - mixedPieces.push(regexEscape(eras[i].abbr)); - mixedPieces.push(regexEscape(eras[i].narrow)); - } - this._erasRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"); - this._erasNameRegex = new RegExp("^(" + namePieces.join("|") + ")", "i"); - this._erasAbbrRegex = new RegExp("^(" + abbrPieces.join("|") + ")", "i"); - this._erasNarrowRegex = new RegExp("^(" + narrowPieces.join("|") + ")", "i"); - } - addFormatToken(0, [ "gg", 2 ], 0, function() { - return this.weekYear() % 100; - }); - addFormatToken(0, [ "GG", 2 ], 0, function() { - return this.isoWeekYear() % 100; - }); - function addWeekYearFormatToken(token, getter) { - addFormatToken(0, [ token, token.length ], 0, getter); - } - addWeekYearFormatToken("gggg", "weekYear"); - addWeekYearFormatToken("ggggg", "weekYear"); - addWeekYearFormatToken("GGGG", "isoWeekYear"); - addWeekYearFormatToken("GGGGG", "isoWeekYear"); - addUnitAlias("weekYear", "gg"); - addUnitAlias("isoWeekYear", "GG"); - addUnitPriority("weekYear", 1); - addUnitPriority("isoWeekYear", 1); - addRegexToken("G", matchSigned); - addRegexToken("g", matchSigned); - addRegexToken("GG", match1to2, match2); - addRegexToken("gg", match1to2, match2); - addRegexToken("GGGG", match1to4, match4); - addRegexToken("gggg", match1to4, match4); - addRegexToken("GGGGG", match1to6, match6); - addRegexToken("ggggg", match1to6, match6); - addWeekParseToken([ "gggg", "ggggg", "GGGG", "GGGGG" ], function(input, week, config, token) { - week[token.substr(0, 2)] = toInt(input); - }); - addWeekParseToken([ "gg", "GG" ], function(input, week, config, token) { - week[token] = hooks.parseTwoDigitYear(input); - }); - function getSetWeekYear(input) { - return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy); - } - function getSetISOWeekYear(input) { - return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4); - } - function getISOWeeksInYear() { - return weeksInYear(this.year(), 1, 4); - } - function getISOWeeksInISOWeekYear() { - return weeksInYear(this.isoWeekYear(), 1, 4); - } - function getWeeksInYear() { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - } - function getWeeksInWeekYear() { - var weekInfo = this.localeData()._week; - return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); - } - function getSetWeekYearHelper(input, week, weekday, dow, doy) { - var weeksTarget; - if (input == null) { - return weekOfYear(this, dow, doy).year; - } else { - weeksTarget = weeksInYear(input, dow, doy); - if (week > weeksTarget) { - week = weeksTarget; - } - return setWeekAll.call(this, input, week, weekday, dow, doy); - } - } - function setWeekAll(weekYear, week, weekday, dow, doy) { - var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); - this.year(date.getUTCFullYear()); - this.month(date.getUTCMonth()); - this.date(date.getUTCDate()); - return this; - } - addFormatToken("Q", 0, "Qo", "quarter"); - addUnitAlias("quarter", "Q"); - addUnitPriority("quarter", 7); - addRegexToken("Q", match1); - addParseToken("Q", function(input, array) { - array[MONTH] = (toInt(input) - 1) * 3; - }); - function getSetQuarter(input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - } - addFormatToken("D", [ "DD", 2 ], "Do", "date"); - addUnitAlias("date", "D"); - addUnitPriority("date", 9); - addRegexToken("D", match1to2); - addRegexToken("DD", match1to2, match2); - addRegexToken("Do", function(isStrict, locale) { - return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient; - }); - addParseToken([ "D", "DD" ], DATE); - addParseToken("Do", function(input, array) { - array[DATE] = toInt(input.match(match1to2)[0]); - }); - var getSetDayOfMonth = makeGetSet("Date", true); - addFormatToken("DDD", [ "DDDD", 3 ], "DDDo", "dayOfYear"); - addUnitAlias("dayOfYear", "DDD"); - addUnitPriority("dayOfYear", 4); - addRegexToken("DDD", match1to3); - addRegexToken("DDDD", match3); - addParseToken([ "DDD", "DDDD" ], function(input, array, config) { - config._dayOfYear = toInt(input); - }); - function getSetDayOfYear(input) { - var dayOfYear = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1; - return input == null ? dayOfYear : this.add(input - dayOfYear, "d"); - } - addFormatToken("m", [ "mm", 2 ], 0, "minute"); - addUnitAlias("minute", "m"); - addUnitPriority("minute", 14); - addRegexToken("m", match1to2); - addRegexToken("mm", match1to2, match2); - addParseToken([ "m", "mm" ], MINUTE); - var getSetMinute = makeGetSet("Minutes", false); - addFormatToken("s", [ "ss", 2 ], 0, "second"); - addUnitAlias("second", "s"); - addUnitPriority("second", 15); - addRegexToken("s", match1to2); - addRegexToken("ss", match1to2, match2); - addParseToken([ "s", "ss" ], SECOND); - var getSetSecond = makeGetSet("Seconds", false); - addFormatToken("S", 0, 0, function() { - return ~~(this.millisecond() / 100); - }); - addFormatToken(0, [ "SS", 2 ], 0, function() { - return ~~(this.millisecond() / 10); - }); - addFormatToken(0, [ "SSS", 3 ], 0, "millisecond"); - addFormatToken(0, [ "SSSS", 4 ], 0, function() { - return this.millisecond() * 10; - }); - addFormatToken(0, [ "SSSSS", 5 ], 0, function() { - return this.millisecond() * 100; - }); - addFormatToken(0, [ "SSSSSS", 6 ], 0, function() { - return this.millisecond() * 1e3; - }); - addFormatToken(0, [ "SSSSSSS", 7 ], 0, function() { - return this.millisecond() * 1e4; - }); - addFormatToken(0, [ "SSSSSSSS", 8 ], 0, function() { - return this.millisecond() * 1e5; - }); - addFormatToken(0, [ "SSSSSSSSS", 9 ], 0, function() { - return this.millisecond() * 1e6; - }); - addUnitAlias("millisecond", "ms"); - addUnitPriority("millisecond", 16); - addRegexToken("S", match1to3, match1); - addRegexToken("SS", match1to3, match2); - addRegexToken("SSS", match1to3, match3); - var token, getSetMillisecond; - for (token = "SSSS"; token.length <= 9; token += "S") { - addRegexToken(token, matchUnsigned); - } - function parseMs(input, array) { - array[MILLISECOND] = toInt(("0." + input) * 1e3); - } - for (token = "S"; token.length <= 9; token += "S") { - addParseToken(token, parseMs); - } - getSetMillisecond = makeGetSet("Milliseconds", false); - addFormatToken("z", 0, 0, "zoneAbbr"); - addFormatToken("zz", 0, 0, "zoneName"); - function getZoneAbbr() { - return this._isUTC ? "UTC" : ""; - } - function getZoneName() { - return this._isUTC ? "Coordinated Universal Time" : ""; - } - var proto = Moment.prototype; - proto.add = add; - proto.calendar = calendar$1; - proto.clone = clone; - proto.diff = diff; - proto.endOf = endOf; - proto.format = format; - proto.from = from; - proto.fromNow = fromNow; - proto.to = to; - proto.toNow = toNow; - proto.get = stringGet; - proto.invalidAt = invalidAt; - proto.isAfter = isAfter; - proto.isBefore = isBefore; - proto.isBetween = isBetween; - proto.isSame = isSame; - proto.isSameOrAfter = isSameOrAfter; - proto.isSameOrBefore = isSameOrBefore; - proto.isValid = isValid$2; - proto.lang = lang; - proto.locale = locale; - proto.localeData = localeData; - proto.max = prototypeMax; - proto.min = prototypeMin; - proto.parsingFlags = parsingFlags; - proto.set = stringSet; - proto.startOf = startOf; - proto.subtract = subtract; - proto.toArray = toArray; - proto.toObject = toObject; - proto.toDate = toDate; - proto.toISOString = toISOString; - proto.inspect = inspect; - if (typeof Symbol !== "undefined" && Symbol.for != null) { - proto[Symbol.for("nodejs.util.inspect.custom")] = function() { - return "Moment<" + this.format() + ">"; - }; - } - proto.toJSON = toJSON; - proto.toString = toString; - proto.unix = unix; - proto.valueOf = valueOf; - proto.creationData = creationData; - proto.eraName = getEraName; - proto.eraNarrow = getEraNarrow; - proto.eraAbbr = getEraAbbr; - proto.eraYear = getEraYear; - proto.year = getSetYear; - proto.isLeapYear = getIsLeapYear; - proto.weekYear = getSetWeekYear; - proto.isoWeekYear = getSetISOWeekYear; - proto.quarter = proto.quarters = getSetQuarter; - proto.month = getSetMonth; - proto.daysInMonth = getDaysInMonth; - proto.week = proto.weeks = getSetWeek; - proto.isoWeek = proto.isoWeeks = getSetISOWeek; - proto.weeksInYear = getWeeksInYear; - proto.weeksInWeekYear = getWeeksInWeekYear; - proto.isoWeeksInYear = getISOWeeksInYear; - proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; - proto.date = getSetDayOfMonth; - proto.day = proto.days = getSetDayOfWeek; - proto.weekday = getSetLocaleDayOfWeek; - proto.isoWeekday = getSetISODayOfWeek; - proto.dayOfYear = getSetDayOfYear; - proto.hour = proto.hours = getSetHour; - proto.minute = proto.minutes = getSetMinute; - proto.second = proto.seconds = getSetSecond; - proto.millisecond = proto.milliseconds = getSetMillisecond; - proto.utcOffset = getSetOffset; - proto.utc = setOffsetToUTC; - proto.local = setOffsetToLocal; - proto.parseZone = setOffsetToParsedOffset; - proto.hasAlignedHourOffset = hasAlignedHourOffset; - proto.isDST = isDaylightSavingTime; - proto.isLocal = isLocal; - proto.isUtcOffset = isUtcOffset; - proto.isUtc = isUtc; - proto.isUTC = isUtc; - proto.zoneAbbr = getZoneAbbr; - proto.zoneName = getZoneName; - proto.dates = deprecate("dates accessor is deprecated. Use date instead.", getSetDayOfMonth); - proto.months = deprecate("months accessor is deprecated. Use month instead", getSetMonth); - proto.years = deprecate("years accessor is deprecated. Use year instead", getSetYear); - proto.zone = deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", getSetZone); - proto.isDSTShifted = deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", isDaylightSavingTimeShifted); - function createUnix(input) { - return createLocal(input * 1e3); - } - function createInZone() { - return createLocal.apply(null, arguments).parseZone(); - } - function preParsePostFormat(string) { - return string; - } - var proto$1 = Locale.prototype; - proto$1.calendar = calendar; - proto$1.longDateFormat = longDateFormat; - proto$1.invalidDate = invalidDate; - proto$1.ordinal = ordinal; - proto$1.preparse = preParsePostFormat; - proto$1.postformat = preParsePostFormat; - proto$1.relativeTime = relativeTime; - proto$1.pastFuture = pastFuture; - proto$1.set = set; - proto$1.eras = localeEras; - proto$1.erasParse = localeErasParse; - proto$1.erasConvertYear = localeErasConvertYear; - proto$1.erasAbbrRegex = erasAbbrRegex; - proto$1.erasNameRegex = erasNameRegex; - proto$1.erasNarrowRegex = erasNarrowRegex; - proto$1.months = localeMonths; - proto$1.monthsShort = localeMonthsShort; - proto$1.monthsParse = localeMonthsParse; - proto$1.monthsRegex = monthsRegex; - proto$1.monthsShortRegex = monthsShortRegex; - proto$1.week = localeWeek; - proto$1.firstDayOfYear = localeFirstDayOfYear; - proto$1.firstDayOfWeek = localeFirstDayOfWeek; - proto$1.weekdays = localeWeekdays; - proto$1.weekdaysMin = localeWeekdaysMin; - proto$1.weekdaysShort = localeWeekdaysShort; - proto$1.weekdaysParse = localeWeekdaysParse; - proto$1.weekdaysRegex = weekdaysRegex; - proto$1.weekdaysShortRegex = weekdaysShortRegex; - proto$1.weekdaysMinRegex = weekdaysMinRegex; - proto$1.isPM = localeIsPM; - proto$1.meridiem = localeMeridiem; - function get$1(format, index, field, setter) { - var locale = getLocale(), utc = createUTC().set(setter, index); - return locale[field](utc, format); - } - function listMonthsImpl(format, index, field) { - if (isNumber(format)) { - index = format; - format = undefined; - } - format = format || ""; - if (index != null) { - return get$1(format, index, field, "month"); - } - var i, out = []; - for (i = 0; i < 12; i++) { - out[i] = get$1(format, i, field, "month"); - } - return out; - } - function listWeekdaysImpl(localeSorted, format, index, field) { - if (typeof localeSorted === "boolean") { - if (isNumber(format)) { - index = format; - format = undefined; - } - format = format || ""; - } else { - format = localeSorted; - index = format; - localeSorted = false; - if (isNumber(format)) { - index = format; - format = undefined; - } - format = format || ""; - } - var locale = getLocale(), shift = localeSorted ? locale._week.dow : 0, i, out = []; - if (index != null) { - return get$1(format, (index + shift) % 7, field, "day"); - } - for (i = 0; i < 7; i++) { - out[i] = get$1(format, (i + shift) % 7, field, "day"); - } - return out; - } - function listMonths(format, index) { - return listMonthsImpl(format, index, "months"); - } - function listMonthsShort(format, index) { - return listMonthsImpl(format, index, "monthsShort"); - } - function listWeekdays(localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, "weekdays"); - } - function listWeekdaysShort(localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, "weekdaysShort"); - } - function listWeekdaysMin(localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, "weekdaysMin"); - } - getSetGlobalLocale("en", { - eras: [ { - since: "0001-01-01", - until: +Infinity, - offset: 1, - name: "Anno Domini", - narrow: "AD", - abbr: "AD" - }, { - since: "0000-12-31", - until: -Infinity, - offset: 1, - name: "Before Christ", - narrow: "BC", - abbr: "BC" - } ], - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal: function(number) { - var b = number % 10, output = toInt(number % 100 / 10) === 1 ? "th" : b === 1 ? "st" : b === 2 ? "nd" : b === 3 ? "rd" : "th"; - return number + output; - } - }); - hooks.lang = deprecate("moment.lang is deprecated. Use moment.locale instead.", getSetGlobalLocale); - hooks.langData = deprecate("moment.langData is deprecated. Use moment.localeData instead.", getLocale); - var mathAbs = Math.abs; - function abs() { - var data = this._data; - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); - return this; - } - function addSubtract$1(duration, input, value, direction) { - var other = createDuration(input, value); - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; - return duration._bubble(); - } - function add$1(input, value) { - return addSubtract$1(this, input, value, 1); - } - function subtract$1(input, value) { - return addSubtract$1(this, input, value, -1); - } - function absCeil(number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } - } - function bubble() { - var milliseconds = this._milliseconds, days = this._days, months = this._months, data = this._data, seconds, minutes, hours, years, monthsFromDays; - if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } - data.milliseconds = milliseconds % 1e3; - seconds = absFloor(milliseconds / 1e3); - data.seconds = seconds % 60; - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; - hours = absFloor(minutes / 60); - data.hours = hours % 24; - days += absFloor(hours / 24); - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); - years = absFloor(months / 12); - months %= 12; - data.days = days; - data.months = months; - data.years = years; - return this; - } - function daysToMonths(days) { - return days * 4800 / 146097; - } - function monthsToDays(months) { - return months * 146097 / 4800; - } - function as(units) { - if (!this.isValid()) { - return NaN; - } - var days, months, milliseconds = this._milliseconds; - units = normalizeUnits(units); - if (units === "month" || units === "quarter" || units === "year") { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - switch (units) { - case "month": - return months; - - case "quarter": - return months / 3; - - case "year": - return months / 12; - } - } else { - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case "week": - return days / 7 + milliseconds / 6048e5; - - case "day": - return days + milliseconds / 864e5; - - case "hour": - return days * 24 + milliseconds / 36e5; - - case "minute": - return days * 1440 + milliseconds / 6e4; - - case "second": - return days * 86400 + milliseconds / 1e3; - - case "millisecond": - return Math.floor(days * 864e5) + milliseconds; - - default: - throw new Error("Unknown unit " + units); - } - } - } - function valueOf$1() { - if (!this.isValid()) { - return NaN; - } - return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6; - } - function makeAs(alias) { - return function() { - return this.as(alias); - }; - } - var asMilliseconds = makeAs("ms"), asSeconds = makeAs("s"), asMinutes = makeAs("m"), asHours = makeAs("h"), asDays = makeAs("d"), asWeeks = makeAs("w"), asMonths = makeAs("M"), asQuarters = makeAs("Q"), asYears = makeAs("y"); - function clone$1() { - return createDuration(this); - } - function get$2(units) { - units = normalizeUnits(units); - return this.isValid() ? this[units + "s"]() : NaN; - } - function makeGetter(name) { - return function() { - return this.isValid() ? this._data[name] : NaN; - }; - } - var milliseconds = makeGetter("milliseconds"), seconds = makeGetter("seconds"), minutes = makeGetter("minutes"), hours = makeGetter("hours"), days = makeGetter("days"), months = makeGetter("months"), years = makeGetter("years"); - function weeks() { - return absFloor(this.days() / 7); - } - var round = Math.round, thresholds = { - ss: 44, - s: 45, - m: 45, - h: 22, - d: 26, - w: null, - M: 11 - }; - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } - function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) { - var duration = createDuration(posNegDuration).abs(), seconds = round(duration.as("s")), minutes = round(duration.as("m")), hours = round(duration.as("h")), days = round(duration.as("d")), months = round(duration.as("M")), weeks = round(duration.as("w")), years = round(duration.as("y")), a = seconds <= thresholds.ss && [ "s", seconds ] || seconds < thresholds.s && [ "ss", seconds ] || minutes <= 1 && [ "m" ] || minutes < thresholds.m && [ "mm", minutes ] || hours <= 1 && [ "h" ] || hours < thresholds.h && [ "hh", hours ] || days <= 1 && [ "d" ] || days < thresholds.d && [ "dd", days ]; - if (thresholds.w != null) { - a = a || weeks <= 1 && [ "w" ] || weeks < thresholds.w && [ "ww", weeks ]; - } - a = a || months <= 1 && [ "M" ] || months < thresholds.M && [ "MM", months ] || years <= 1 && [ "y" ] || [ "yy", years ]; - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); - } - function getSetRelativeTimeRounding(roundingFunction) { - if (roundingFunction === undefined) { - return round; - } - if (typeof roundingFunction === "function") { - round = roundingFunction; - return true; - } - return false; - } - function getSetRelativeTimeThreshold(threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - if (threshold === "s") { - thresholds.ss = limit - 1; - } - return true; - } - function humanize(argWithSuffix, argThresholds) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - var withSuffix = false, th = thresholds, locale, output; - if (typeof argWithSuffix === "object") { - argThresholds = argWithSuffix; - argWithSuffix = false; - } - if (typeof argWithSuffix === "boolean") { - withSuffix = argWithSuffix; - } - if (typeof argThresholds === "object") { - th = Object.assign({}, thresholds, argThresholds); - if (argThresholds.s != null && argThresholds.ss == null) { - th.ss = argThresholds.s - 1; - } - } - locale = this.localeData(); - output = relativeTime$1(this, !withSuffix, th, locale); - if (withSuffix) { - output = locale.pastFuture(+this, output); - } - return locale.postformat(output); - } - var abs$1 = Math.abs; - function sign(x) { - return (x > 0) - (x < 0) || +x; - } - function toISOString$1() { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - var seconds = abs$1(this._milliseconds) / 1e3, days = abs$1(this._days), months = abs$1(this._months), minutes, hours, years, s, total = this.asSeconds(), totalSign, ymSign, daysSign, hmsSign; - if (!total) { - return "P0D"; - } - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; - years = absFloor(months / 12); - months %= 12; - s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, "") : ""; - totalSign = total < 0 ? "-" : ""; - ymSign = sign(this._months) !== sign(total) ? "-" : ""; - daysSign = sign(this._days) !== sign(total) ? "-" : ""; - hmsSign = sign(this._milliseconds) !== sign(total) ? "-" : ""; - return totalSign + "P" + (years ? ymSign + years + "Y" : "") + (months ? ymSign + months + "M" : "") + (days ? daysSign + days + "D" : "") + (hours || minutes || seconds ? "T" : "") + (hours ? hmsSign + hours + "H" : "") + (minutes ? hmsSign + minutes + "M" : "") + (seconds ? hmsSign + s + "S" : ""); - } - var proto$2 = Duration.prototype; - proto$2.isValid = isValid$1; - proto$2.abs = abs; - proto$2.add = add$1; - proto$2.subtract = subtract$1; - proto$2.as = as; - proto$2.asMilliseconds = asMilliseconds; - proto$2.asSeconds = asSeconds; - proto$2.asMinutes = asMinutes; - proto$2.asHours = asHours; - proto$2.asDays = asDays; - proto$2.asWeeks = asWeeks; - proto$2.asMonths = asMonths; - proto$2.asQuarters = asQuarters; - proto$2.asYears = asYears; - proto$2.valueOf = valueOf$1; - proto$2._bubble = bubble; - proto$2.clone = clone$1; - proto$2.get = get$2; - proto$2.milliseconds = milliseconds; - proto$2.seconds = seconds; - proto$2.minutes = minutes; - proto$2.hours = hours; - proto$2.days = days; - proto$2.weeks = weeks; - proto$2.months = months; - proto$2.years = years; - proto$2.humanize = humanize; - proto$2.toISOString = toISOString$1; - proto$2.toString = toISOString$1; - proto$2.toJSON = toISOString$1; - proto$2.locale = locale; - proto$2.localeData = localeData; - proto$2.toIsoString = deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", toISOString$1); - proto$2.lang = lang; - addFormatToken("X", 0, 0, "unix"); - addFormatToken("x", 0, 0, "valueOf"); - addRegexToken("x", matchSigned); - addRegexToken("X", matchTimestamp); - addParseToken("X", function(input, array, config) { - config._d = new Date(parseFloat(input) * 1e3); - }); - addParseToken("x", function(input, array, config) { - config._d = new Date(toInt(input)); - }); - hooks.version = "2.29.1"; - setHookCallback(createLocal); - hooks.fn = proto; - hooks.min = min; - hooks.max = max; - hooks.now = now; - hooks.utc = createUTC; - hooks.unix = createUnix; - hooks.months = listMonths; - hooks.isDate = isDate; - hooks.locale = getSetGlobalLocale; - hooks.invalid = createInvalid; - hooks.duration = createDuration; - hooks.isMoment = isMoment; - hooks.weekdays = listWeekdays; - hooks.parseZone = createInZone; - hooks.localeData = getLocale; - hooks.isDuration = isDuration; - hooks.monthsShort = listMonthsShort; - hooks.weekdaysMin = listWeekdaysMin; - hooks.defineLocale = defineLocale; - hooks.updateLocale = updateLocale; - hooks.locales = listLocales; - hooks.weekdaysShort = listWeekdaysShort; - hooks.normalizeUnits = normalizeUnits; - hooks.relativeTimeRounding = getSetRelativeTimeRounding; - hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; - hooks.calendarFormat = getCalendarFormat; - hooks.prototype = proto; - hooks.HTML5_FMT = { - DATETIME_LOCAL: "YYYY-MM-DDTHH:mm", - DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss", - DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS", - DATE: "YYYY-MM-DD", - TIME: "HH:mm", - TIME_SECONDS: "HH:mm:ss", - TIME_MS: "HH:mm:ss.SSS", - WEEK: "GGGG-[W]WW", - MONTH: "YYYY-MM" - }; - return hooks; -}); \ No newline at end of file diff --git a/www/min/doi.min.js b/www/min/doi.min.js deleted file mode 100644 index 99d2726..0000000 --- a/www/min/doi.min.js +++ /dev/null @@ -1,1123 +0,0 @@ -function Author() {} - -Author.prototype.setFirstName = function(firstName) { - this.firstName = firstName; -}; - -Author.prototype.setFamilyName = function(familyName) { - this.familyName = familyName; -}; - -Author.prototype.setSingleName = function(singleName) { - this.singleName = singleName; -}; - -Author.prototype.getRawFamilyName = function() { - if (this.familyName) { - return this.familyName; - } else { - if (this.singleName) { - var findWordsRegExp = new RegExp(/(\S+)/g); - var wordTable = this.singleName.match(findWordsRegExp); - if (wordTable.length === 2) { - this.familyName = wordTable[1]; - return this.familyName; - } - var familyRegExp = new RegExp(/\s([^a-z]+$)/); - var result = familyRegExp.exec(this.singleName); - if (result) { - this.familyName = result[1]; - } - return this.familyName; - } - } -}; - -Author.prototype.getRawFirstName = function() { - if (this.firstName) { - return this.firstName; - } else { - if (this.singleName) { - var findWordsRegExp = new RegExp(/(\S+)/g); - var wordTable = this.singleName.match(findWordsRegExp); - if (wordTable.length === 2) { - this.firstName = wordTable[0]; - return this.firstName; - } - var firstNameRegExp = new RegExp(/^(.[^A-Z]+)+\b/); - var result = firstNameRegExp.exec(this.singleName); - if (result) { - this.firstName = result[0]; - } - return result; - } - } -}; - -Author.prototype.getTitleCaseFamilyName = function() { - if (this.familyName) { - allLowerCase = this.familyName.toLowerCase(); - var findFirstLetter = new RegExp(/^./); - return allLowerCase.replace(findFirstLetter, function(foundCharacter) { - return foundCharacter.toUpperCase(); - }); - } else { - console.log("family name is undefined"); - return null; - } -}; - -Author.prototype.getFirstNameInitials = function() { - var firstNameInitialsRegExp = new RegExp(/(\S+)/g); - if (this.firstName) { - return this.firstName.replace(firstNameInitialsRegExp, function(foundString) { - return foundString.charAt(0) + "."; - }); - } else { - console.log("first name is undefined"); - return null; - } -}; - -var BEAMLINEURL = [ { - name: "BM05", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.fr/UsersAndScience/Experiments/XNP/BM05" -}, { - name: "BM29", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/BM29" -}, { - name: "CM01", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/home/UsersAndScience/Experiments/MX/About_our_beamlines/CM01.html" -}, { - name: "ID01", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID01" -}, { - name: "ID06", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/home/UsersAndScience/Experiments/MEx/id06-large-volume-press.html" -}, { - name: "ID11", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11" -}, { - name: "ID16A", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.fr/UsersAndScience/Experiments/XNP/ID16A" -}, { - name: "ID16B", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.fr/UsersAndScience/Experiments/XNP/ID16B" -}, { - name: "ID17", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.fr/UsersAndScience/Experiments/CBS/ID17" -}, { - name: "ID19", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.fr/home/UsersAndScience/Experiments/StructMaterials/ID19.html" -}, { - name: "ID21", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21" -}, { - name: "ID22", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/id22" -}, { - name: "ID23-1", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/ID23-1" -}, { - name: "ID23-2", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/ID23-2" -}, { - name: "ID29", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/home/UsersAndScience/Experiments/Beamlines/content/content/id29.html" -}, { - name: "ID30A1", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/MASSIF1" -}, { - name: "ID30A3", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/home/UsersAndScience/Experiments/MX/About_our_beamlines/id30a-3--massif-3.html" -}, { - name: "ID30B", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/id30b" -}, { - name: "ID32", - startDate: "2000-01-01T00:00+00:00", - endDate: "2100-12-31T00:00+00:00", - url: "http://www.esrf.eu/ID32" -} ]; - -function Citation(doiData) { - function isBuildable() { - if (doiData && doiData.creators && doiData.creators.length !== 0 && doiData.title && doiData.publisher && doiData.doi) { - if (doiData.resourceType === CONSTANTS.ES_RESOURCE_TYPE && doiData.sessionDate) { - return true; - } - if (doiData.resourceType === CONSTANTS.DC_RESOURCE_TYPE && doiData.publiclyAccessibleYear) { - return true; - } - } - return false; - } - this.isBuildable = isBuildable(); -} - -Citation.prototype.getAuthorsForCitation = function(creator) { - if (this.isBuildable) { - var authorList = _.transform(creator, function(result, val, key, obj) { - if (!(obj instanceof Array)) { - val = obj; - } - var author = null; - if (val.givenName) { - author = new Author(); - author.setFamilyName(val.familyName); - author.setFirstName(val.givenName); - result.push(author.getTitleCaseFamilyName() + " " + author.getFirstNameInitials()); - } else { - author = new Author(); - author.setSingleName(val.name); - if (!author.getRawFamilyName() || !author.getRawFirstName()) { - result.push(val.name); - } else { - result.push(author.getTitleCaseFamilyName() + " " + author.getFirstNameInitials()); - } - } - if (!(obj instanceof Array)) { - return false; - } - }, []); - return _.join(authorList, ", "); - } else { - console.log("[CITATION GENERATION] Author list for the citation could not be generated."); - return ""; - } -}; - -Citation.prototype.getDOIRegistrationYear = function(doiData) { - if (doiData.resourceType === CONSTANTS.ES_RESOURCE_TYPE) { - return moment(doiData.sessionDate).year(); - } - if (doiData.resourceType === CONSTANTS.DC_RESOURCE_TYPE) { - return doiData.publiclyAccessibleYear; - } - console.log("[CITATION GENERATION] Could not get the year to generate the citation."); - return ""; -}; - -var CONSTANTS = { - ES_RESOURCE_TYPE: "experimental session resource type", - DC_RESOURCE_TYPE: "dataset collection resource type" -}; - -function DOIController(view) { - var _this = this; - this.doiServer = "https://api.datacite.org/dois/"; - this.icatPlusServer = "https://icatplus.esrf.fr/doi/"; - this.contentNegociationServer = "https://data.crosscite.org/"; - this.acceptedPrefix = [ "10.5072", "10.15151" ]; - this.view = view; - this.experimentalReportController = new ExperimentalReportController(); - this.experimentalReportController.onSuccess.attach(function(sender, data) { - _this.view.renderExperimentalReportData(data); - }); - this.experimentalReportController.onError.attach(function(sender, data) { - console.log("Error when retrieving fileList from SMIS."); - _this.view.renderErrorForExperimentalReport(); - }); -} - -DOIController.prototype.isValidDOIData = function(doiData) { - return true; -}; - -DOIController.prototype.render = function(doi, data) { - var _this = this; - if (!_this.isValidDOIData(data)) { - _this.view.renderError("Not Found", _this.origin); - } else { - var doiData = new DoiData(); - var jsonExtractor = new JsonExtractor(); - doiData.title = jsonExtractor.getTitle(data); - doiData.doi = jsonExtractor.getDOI(data); - doiData.dataciteLink = _this.doiServer + doi; - doiData.publisher = jsonExtractor.getPublisher(data); - doiData.creators = jsonExtractor.getCreators(data); - doiData.contributors = jsonExtractor.getContributors(data); - doiData.publiclyAccessibleYear = jsonExtractor.getPubliclyAccessibleYear(data); - doiData.abstract = jsonExtractor.getAbstract(data); - doiData.investigationId = jsonExtractor.getInvestigationId(data); - doiData.resourceType = jsonExtractor.getResourceType(data); - doiData.proposalType = jsonExtractor.getFieldFromSubject(data.subjects, "Proposal Type Description"); - doiData.resourceTypeGeneral = jsonExtractor.getResourceTypeGeneral(data); - doiData.sessionDate = jsonExtractor.getSessionDate(data); - var proposalNames = jsonExtractor.getFieldFromSubject(data.subjects, "Proposal"); - var beamlines = jsonExtractor.getFieldFromSubject(data.subjects, "Instrument"); - _this.experimentalReportController.requestFilenameList(proposalNames[0]); - doiData.accessibility = doiData.getAccessibilityStatus(doiData.resourceType, doiData.sessionDate, doiData.publiclyAccessibleYear); - doiData.accessMessage = _this.view.setDataAccessMessage(doiData); - doiData.citation = _this.createCitation(doiData); - if (doiData.resourceType === CONSTANTS.ES_RESOURCE_TYPE) { - doiData.beamlineUrls = _this.getBeamlineUrl(beamlines, doiData.sessionDate, doiData.resourceType); - doiData.mintingYear = moment(doiData.sessionDate).year(); - } - if (doiData.resourceType === CONSTANTS.DC_RESOURCE_TYPE) { - doiData.beamlineUrls = _this.getBeamlineUrl(beamlines, doiData.publiclyAccessibleYear, doiData.resourceType); - doiData.mintingYear = doiData.publiclyAccessibleYear; - } - doiData.mergedProposalBeamlines = jsonExtractor.getMergedProposalAndBeamline(proposalNames, beamlines, doiData.beamlineUrls); - _this.view.addCanonicalURLToHead("https://doi.esrf.fr/" + doiData.doi); - _this.view.renderDOIData(doiData); - } -}; - -DOIController.prototype.getData = function(doi) { - var _this = this; - this.view.setDOIInTopBanner(doi); - if (doi.toUpperCase() == "10.15151/ESRF-DC-142893590") { - this.render(doi, ESRF_DC_142893590); - return; - } - if (doi.toUpperCase() == "10.15151/ESRF-DC-142915526") { - this.render(doi, ESRF_DC_142915526); - return; - } - if (this.hasAcceptedPrefix(doi)) { - $.ajax({ - type: "GET", - timeout: 15e3, - url: _this.icatPlusServer + doi + "/json-datacite", - beforeSend: function() { - try { - $("logo").fadeIn().fadeOut().fadeIn().fadeOut().fadeIn().fadeOut(); - } catch (e) {} - _this.view.setLoading("Retrieving data from Server"); - }, - complete: function() { - _this.view.setLoading(false); - } - }).done(function(data) { - if (data) { - _this.render(doi, data); - } - }).fail(function(jqXHR, textStatus, errorThrown) { - $.ajax({ - headers: { - Accept: "application/vnd.datacite.datacite+json" - }, - type: "GET", - timeout: 15e3, - url: _this.doiServer + doi, - beforeSend: function() { - _this.view.setLoading("Retrieving data from Server"); - }, - complete: function() { - _this.view.setLoading(false); - } - }).done(function(data) { - if (data) { - _this.render(doi, data); - } - }).fail(function(jqXHR, textStatus, errorThrown) { - _this.view.renderError(jqXHR, errorThrown, _this.origin); - _this.view.setLoading(false); - }); - }); - this.getDataForGoogleSearch(doi); - } else { - _this.view.renderError("Bad Prefix", _this.origin); - } -}; - -DOIController.prototype.getDataForGoogleSearch = function(doi) { - var _this = this; - if (doi) { - $.ajax({ - headers: { - Accept: "application/vnd.schemaorg.ld+json" - }, - type: "GET", - timeout: 15e3, - url: this.contentNegociationServer + doi, - success: function(data) { - if (data) { - googleMetadataObject = new GoogleMetadataObject(data); - googleMetadataObject.setDescription(); - googleMetadataObject.setLicense(); - googleMetadataObject.setPublisherLogo(); - _this.view.addDOIMetadataToHead(JSON.stringify(googleMetadataObject.getMetadata())); - } else { - console.log("[GOOGLE SEARCH INDEXING] - No metadata recieved from datacite."); - } - }, - error: function(error) { - console.log("[GOOGLE SEARCH INDEXING] - Failed getting metadata from datacite."); - console.log(error.responseJSON); - } - }); - } -}; - -DOIController.prototype.hasAcceptedPrefix = function(doi) { - var prefix = doi.split("/")[0]; - return _.findIndex(this.acceptedPrefix, function(o) { - return prefix == o; - }) != -1; -}; - -DOIController.prototype.displayMainContent = function(doi) { - var isDOIProvided = false; - if (this.origin === "welcome-page") { - dust.render("welcome_tpl", {}, function(err, out) { - $("#main").html(out); - }); - } - if (this.origin === "index") { - this.getData(doi); - } -}; - -DOIController.prototype.setOrigin = function(origin) { - this.origin = origin; -}; - -DOIController.prototype.getBeamlineUrl = function(beamlines, date, resourceType) { - var result = []; - beamlines.forEach(function(beamline) { - if (date) { - if (resourceType === CONSTANTS.ES_RESOURCE_TYPE) { - date = moment(date); - } - if (resourceType === CONSTANTS.DC_RESOURCE_TYPE) { - date = moment(date, "YYYY"); - } - var foundUrl = ""; - for (var i = 0; i < BEAMLINEURL.length; i++) { - var startDate = moment(BEAMLINEURL[i].startDate); - var endDate = moment(BEAMLINEURL[i].endDate); - if (BEAMLINEURL[i].name.toLowerCase() === beamline.toLowerCase() && date >= startDate && date <= endDate) { - foundUrl = BEAMLINEURL[i].url; - break; - } - } - if (foundUrl === "") { - result.push("noLink"); - } else { - result.push(foundUrl); - } - } else { - result.push("noLink"); - } - }); - return result; -}; - -DOIController.prototype.createCitation = function(doiData) { - var citation = new Citation(doiData); - if (!citation.isBuildable) { - return "The reference could not be generated."; - } else { - var authorInCitation = citation.getAuthorsForCitation(doiData.creators); - var doiRegistrationYear = citation.getDOIRegistrationYear(doiData); - var fullCitation = authorInCitation + " (" + doiRegistrationYear + "). " + doiData.title + ". " + doiData.publisher + " (ESRF). " + " <a href='https://doi.esrf.fr/" + doiData.doi + "'> doi:" + doiData.doi.toUpperCase() + "</a>"; - return fullCitation; - } -}; - -function DoiData() {} - -DoiData.prototype.getAccessibilityStatus = function(resourceType, sessionDate, publiclyAccessibleYear) { - if (resourceType) { - if (resourceType === CONSTANTS.ES_RESOURCE_TYPE) { - if (publiclyAccessibleYear && sessionDate) { - var publiclyAvailableDate = moment(sessionDate).year(parseInt(publiclyAccessibleYear)); - var now = moment(); - if (now > publiclyAvailableDate) { - return "Open access"; - } else if (now <= publiclyAvailableDate) { - return "Restricted access"; - } - } - } else if (resourceType === CONSTANTS.DC_RESOURCE_TYPE) { - return "Open access"; - } - } - console.log("Failed to determine whether the accessibility of the DOI."); - return "Accessibility status could not be determined"; -}; - -function DOIView() { - this.mainPanelId = "main"; - this.reportPanelId = "expReport"; - this.badgePanelId = "badges"; - this.metadataDivId = "metadata"; - this.reportExperimentFileNames = null; - this.failedRecievingExpReport = false; - this.isDOIAlreadyRendered = false; - this.onDOIRendered = new Event(this); -} - -DOIView.prototype.setLoading = function(message) { - if (message == false) { - $("body").removeClass("loading"); - return; - } - $("body").addClass("loading"); -}; - -DOIView.prototype.setDOIInTopBanner = function(doiCode) { - $("#doiValue").text("DOI > " + doiCode.toUpperCase()); -}; - -DOIView.prototype.renderExperimentalReportData = function(data) { - if (data) { - var _this = this; - if (this.isDOIAlreadyRendered) { - dust.render("experimentalreport_tpl", { - data: data - }, function(err, out) { - $("#" + _this.reportPanelId).html(out); - }); - } else { - this.reportExperimentFileNames = data; - } - } else {} -}; - -DOIView.prototype.renderDOIData = function(doiData) { - var _this = this; - dust.render("landingpage_tpl", { - data: doiData, - constants: CONSTANTS - }, function(err, out) { - $("#" + _this.mainPanelId).html(out); - _this.isDOIAlreadyRendered = true; - _this.renderBadges(doiData); - _this.renderMetadata(doiData); - if (_this.failedRecievingExpReport) { - _this.renderErrorForExperimentalReport(); - } else if (_this.reportExperimentFileNames) { - _this.renderExperimentalReportData(_this.reportExperimentFileNames); - } - }); -}; - -DOIView.prototype.renderError = function(jqXHR, errorThrown, origin) { - var template = origin === "welcome-page" ? "doinotfound2_tpl" : "doinotfound_tpl"; - var message = ""; - if (errorThrown === "Bad Prefix") { - if (origin === "welcome-page") { - message = '<h3> Not found ! </h3> <p> The DOI was not found at ESRF because its prefix is not ESRF specific. Please use the DOI search engine at <a href="https://www.doi.org"> doi.org</a>. </p>'; - } else { - message = '<h2> Not found ! </h2> <p> The DOI was not found at ESRF because its prefix is not ESRF specific. </br> Please use the DOI search engine at <a href="https://www.doi.org"> doi.org</a>. </p>'; - } - } else if (errorThrown === "Not Found") { - if (origin === "welcome-page") { - message = "<h3> Not found ! </h3> <p> Sorry, the requested DOI was not found. </p>"; - } else { - message = "<h2> Not found ! </h2> <p> Sorry, the requested DOI was not found. </p>"; - } - } else if (errorThrown === "timeout") { - if (origin === "welcome-page") { - message = "<h3> Not found ! </h3> <p> Sorry, the server took too long to reply. Try again later. </p>"; - } else { - message = "<h2> Not found ! </h2> <p> Sorry, the server took too long to reply. Try again later. </p>"; - } - } else if (errorThrown === "" && jqXHR.responseText === "The resource you are looking for doesn't exist.") { - if (origin === "welcome-page") { - message = "<h3> Not found ! </h3> <p>It may take up to 24 hours for a newly generated DOI to become available. Please try again later.</p>"; - } else { - message = "<h2> Not found ! </h2> <p>It may take up to 24 hours for a newly generated DOI to become available. Please try again later.</p>"; - } - } else { - if (origin === "welcome-page") { - message = "<h3> Not found ! </h3> <p> Connexion problem to the datacite server. Please try again later.</p>"; - } else { - message = "<h2> Not found ! </h2> <p> Connexion problem to the datacite server. Please try again later.</p>"; - } - } - dust.render(template, { - message: message - }, function(err, out) { - $("#error").html(out); - }); -}; - -DOIView.prototype.renderErrorForExperimentalReport = function() { - this.failedRecievingExpReport = true; - var out = '<div class="card-header text-center"> <label>Experimental report </label> </div> <div class="card-body padding10"> <p> The filename list is not available. </p> </div>'; - $("#" + this.reportPanelId).html(out); -}; - -DOIView.prototype.renderBadges = function(data) { - if (data) { - var _this = this; - dust.render("badges_tpl", { - data: data, - constants: CONSTANTS - }, function(err, out) { - $("#" + _this.badgePanelId).html(out); - }); - } -}; - -DOIView.prototype.renderMetadata = function(data) { - if (data) { - var _this = this; - data.sessionDate = moment(data.sessionDate).format("YYYY-M-D"); - dust.render("metadata_tpl", { - data: data, - constants: CONSTANTS - }, function(err, out) { - $("#" + _this.metadataDivId).html(out); - }); - } -}; - -DOIView.prototype.setDataAccessMessage = function(doiData) { - if (doiData.accessibility === "Open access") { - return "The data can be accessed by clicking on the link below"; - } else if (doiData.accessibility === "Restricted access") { - return "The data are under embargo until <b>" + doiData.publiclyAccessibleYear + "</b> but could be released earlier." + " Currently, they are only accessible to proposal team members."; - } -}; - -DOIView.prototype.addDOIMetadataToHead = function(data) { - $("<script>").attr("type", "application/ld+json").text(data).appendTo("head"); -}; - -DOIView.prototype.addCanonicalURLToHead = function(doiURL) { - $("<link>").attr("rel", "canonical").attr("href", doiURL).appendTo("head"); -}; - -var ESRF_DC_142893590 = { - id: "https://doi.org/10.15151/esrf-dc-142893590", - doi: "10.15151/ESRF-DC-142893590", - url: "https://doi.esrf.fr/10.15151/ESRF-DC-142893590", - types: { - ris: "DATA", - bibtex: "misc", - citeproc: "dataset", - schemaOrg: "Dataset", - resourceType: "Datacollection", - resourceTypeGeneral: "Dataset" - }, - creators: [ { - name: "Naschberger, Andreas", - nameType: "Personal", - givenName: "Andreas", - familyName: "Naschberger" - }, { - name: "Rupp, Bernhard", - nameType: "Personal", - givenName: "Bernhard", - familyName: "Rupp" - } ], - titles: [ { - title: "Structural Evidence for a Role of the Multi-functional Human Glycoprotein Afamin in Wnt Transport" - } ], - publisher: "European Synchrotron Radiation Facility", - container: {}, - subjects: [ { - subject: "OPID-1", - subjectScheme: "Proposal" - }, { - subject: "ID30A1", - subjectScheme: "Instrument" - } ], - contributors: [ { - name: "Bowler, Matthew W.", - nameType: "Personal", - givenName: "Matthew W.", - familyName: "Bowler" - } ], - dates: [ { - date: "2018", - dateType: "Issued" - } ], - publicationYear: 2018, - language: "en", - identifiers: [ { - identifier: "https://doi.org/10.15151/esrf-dc-142893590", - identifierType: "DOI" - } ], - sizes: [], - formats: [], - rightsList: [], - descriptions: [ { - description: "Afamin, a human plasma glycoprotein and putative transporter of hydrophobic molecules, has been shown to act as extracellular chaperone for poorly soluble, acylated Wnt proteins, forming a stable, soluble complex with functioning Wnt proteins. The 2.1-Å crystal structure of glycosylated human afamin reveals an almost exclusively hydrophobic binding cleft capable of harboring large hydrophobic moieties. Lipid analysis confirms the presence of lipids, and density in the primary binding pocket of afamin was modeled as palmitoleic acid, presenting the native O-acylation on serine 209 in human Wnt3a. The modeled complex between the experimental afamin structure and a Wnt3a homology model based on the XWnt8-Fz8-CRD fragment complex crystal structure is compelling, with favorable interactions comparable with the crystal structure complex. Afamin readily accommodates the conserved palmitoylated serine 209 of Wnt3a, providing a structural basis how afamin solubilizes hydrophobic and poorly soluble Wnt proteins.", - descriptionType: "Abstract" - } ], - geoLocations: [], - fundingReferences: [], - relatedIdentifiers: [], - schemaVersion: "http://datacite.org/schema/kernel-3", - providerId: "inist", - clientId: "inist.esrf", - state: "findable" -}; - -var ESRF_DC_142915526 = { - id: "https://doi.org/10.15151/esrf-dc-142915526", - doi: "10.15151/ESRF-DC-142915526", - url: "https://doi.esrf.fr/10.15151/ESRF-DC-142915526", - types: { - ris: "DATA", - bibtex: "misc", - citeproc: "dataset", - schemaOrg: "Dataset", - resourceType: "Datacollection", - resourceTypeGeneral: "Dataset" - }, - creators: [ { - name: "Naschberger, Andreas", - nameType: "Personal", - givenName: "Andreas", - familyName: "Naschberger" - }, { - name: "Bowler, Matthew W.", - nameType: "Personal", - givenName: "Matthew W.", - familyName: "Bowler" - }, { - name: "Rupp, Bernhard", - nameType: "Personal", - givenName: "Bernhard", - familyName: "Rupp" - } ], - titles: [ { - title: "Controlled dehydration, structural flexibility, and Gadolinium MRI contrast compound binding in human plasma glycoprotein afamin" - } ], - publisher: "European Synchrotron Radiation Facility", - container: {}, - subjects: [ { - subject: "OPID-1", - subjectScheme: "Proposal" - }, { - subject: "ID30A1", - subjectScheme: "Instrument" - } ], - contributors: [], - dates: [ { - date: "2018", - dateType: "Issued" - } ], - publicationYear: 2018, - language: "en", - identifiers: [ { - identifier: "https://doi.org/10.15151/esrf-dc-142915526", - identifierType: "DOI" - } ], - sizes: [], - formats: [], - rightsList: [], - descriptions: [ { - description: "Afamin, a human blood plasma glycoprotein, a putative multi-functional transporter of hydrophobic molecules and a marker for metabolic syndrome, poses multiple challenges for crystallographic structure determination, both practically and in analysis of the models. Several hundred crystals were analysed, and unusual variability in cell volume and difficulty solving the structure despite a ~34% sequence identity with non-glycosylated human serum albumin indicated that the molecule exhibits variable and context-sensitive packing, despite greatly simplified glycosylation in insect cell expressed recombinant afamin. Controlled dehydration of the crystals was able to stabilise the orthorhombic crystal form reducing the number of molecules in the asymmetric unit from the monoclinic form and changing the conformational states of the protein. An iterative strategy using fully automatic experiments available on MASSIF-1 was used to quickly determine the optimal protocol to achieve the phase transition that should be readily applicable to many types of sample. The study also highlights the drawback of using a single crystallographic structure model for computation modelling purposes given that conformational state of the binding sites and electron density in the binding site, likely resulting from PEGs, greatly varies between models. This also holds for the analysis of unspecific low-affinity ligands, where often a variety fragments with similar uncertainty can be modelled, inviting interpretative bias. As a promiscuous transporter, afamin can also bind Gadoteridol, a magnetic resonance imaging contrast compound in two sites, one near the human albumin Sudlow-site and a second hitherto unknown binding site.", - descriptionType: "Abstract" - } ], - geoLocations: [], - fundingReferences: [], - relatedIdentifiers: [], - schemaVersion: "http://datacite.org/schema/kernel-3", - providerId: "inist", - clientId: "inist.esrf", - state: "findable" -}; - -function Event(sender) { - this._sender = sender; - this._listeners = []; -} - -Event.prototype = { - attach: function(listener) { - this._listeners.push(listener); - }, - notify: function(args) { - for (var i = 0; i < this._listeners.length; i++) { - this._listeners[i](this._sender, args); - } - } -}; - -function ExperimentalReportController() { - this.server = "https://smis.esrf.fr/misapps/SMISServer/rest/reports/fileNames"; - this.timeout = 5e3; - this.onSuccess = new Event(this); - this.onError = new Event(this); -} - -ExperimentalReportController.prototype.normalizeProposalName = function(proposalName) { - var aroundHyphenRegExp; - try { - aroundHyphenRegExp = new RegExp(/^(.*)-(.*)/); - return { - categoryCode: aroundHyphenRegExp.exec(proposalName)[1], - categoryCounter: aroundHyphenRegExp.exec(proposalName)[2] - }; - } catch (e) { - aroundHyphenRegExp = new RegExp(/\d+$/); - try { - return { - categoryCode: proposalName.substring(0, proposalName.length - aroundHyphenRegExp.exec(proposalName)[0].length), - categoryCounter: aroundHyphenRegExp.exec(proposalName)[0] - }; - } catch (e) { - console.log(e); - return null; - } - } -}; - -ExperimentalReportController.prototype.requestFilenameList = function(proposal) { - var _this = this; - if (proposal) { - var data = this.normalizeProposalName(proposal); - if (data) { - $.ajax({ - type: "GET", - timeout: this.timeout, - url: this.server, - data: data, - dataType: "json", - success: function(data) { - _this.onSuccess.notify(data); - }, - error: function(message) { - _this.onError.notify(message); - } - }); - } else { - _this.onError.notify("Proposal could not be normalized: " + proposal); - } - } else { - _this.onError.notify("Proposal is null"); - } -}; - -ExperimentalReportController.prototype.openFileInNewTab = function(filename) { - if (filename) { - try { - window.open("http://ftp.esrf.fr/pub/UserReports/" + filename, "_blank"); - } catch (err) { - alert("The requested file " + filename + " could not be downloaded."); - } - } -}; - -function GoogleMetadataObject(data) { - this.data = JSON.parse(JSON.stringify(data)); -} - -GoogleMetadataObject.prototype.getMetadata = function() { - return this.data; -}; - -GoogleMetadataObject.prototype.setLicense = function() { - if (!this.data.license) { - this.data.license = "https://creativecommons.org/licenses/by/4.0"; - } -}; - -GoogleMetadataObject.prototype.setDescription = function() { - if (this.data.name) { - if (!this.data.description) { - if (this.data.author) { - var authors = ""; - if (this.data.author instanceof Array) { - authors = this.data.author.map(function(author) { - return author.name; - }).join(); - } else { - authors = this.data.author.name; - } - var trailingMessage = "There is currently no additional information regarding the description of this DOI."; - this.data.description = this.data.name + "; " + authors + "; " + trailingMessage; - } - } - } else { - console.log("[GoogleMetadataObject] - The data required by Google is missing the 'name' field. This is required by Google for indexing."); - } -}; - -GoogleMetadataObject.prototype.setPublisherLogo = function() { - if (this.data.publisher) { - this.data.publisher.logo = "https://doi.esrf.fr/src/images/esrfLogoBlue.png"; - } -}; - -function JsonExtractor() {} - -JsonExtractor.prototype.getTitle = function(data) { - if (data) { - if (data.titles) { - if (data.titles.length > 0) { - if (data.titles[0].title) { - return data.titles[0].title; - } - } - } - } - console.log("[JSON EXTRACTOR ERROR] title extraction failed."); - return null; -}; - -JsonExtractor.prototype.getDOI = function(data) { - if (data) { - if (data.doi) { - return data.doi.toUpperCase(); - } - } - console.log("[JSON EXTRACTOR ERROR] doi extraction failed."); - return null; -}; - -JsonExtractor.prototype.getPublisher = function(data) { - if (data) { - if (data.publisher) { - return data.publisher; - } - } - console.log("[JSON EXTRACTOR ERROR] publisher extraction failed."); - return null; -}; - -JsonExtractor.prototype.getCreators = function(data) { - if (data) { - if (data.creators) { - return _.map(data.creators, function(item) { - if (item.givenName && item.familyName || item.name) { - return item; - } else { - console.log("[JSON EXTRACTOR ERROR] one of the creator could not be properly extracted."); - return {}; - } - }); - } - } - console.log("[JSON EXTRACTOR ERROR] Extraction of the creators failed."); - return null; -}; - -JsonExtractor.prototype.getContributors = function(data) { - if (data && data.contributors) { - return _.map(data.contributors, function(item) { - if (item.givenName && item.familyName || item.name) { - return item; - } else { - console.log("[JSON EXTRACTOR ERROR] one of the contributors could not be properly extracted."); - return {}; - } - }); - } - return null; -}; - -JsonExtractor.prototype.getPubliclyAccessibleYear = function(data) { - if (data && data.publicationYear) { - return data.publicationYear; - } - console.log("[JSON EXTRACTOR ERROR] Extraction of the publication year failed."); - return null; -}; - -JsonExtractor.prototype.getInvestigationId = function(data) { - var regExp = RegExp(/\/\w*-*[Ee][Ss][Rr][Ff]-[Ee][Ss]-(\d+)$/); - if (regExp.exec(data.doi)) { - return regExp.exec(data.doi)[1]; - } - console.log("[JSON EXTRACTOR ERROR] investigationId extraction failed."); - return null; -}; - -JsonExtractor.prototype.getFieldFromSubject = function(subjects, field) { - if (subjects) { - var regExp = new RegExp("^" + field + "$", "i"); - for (var i = 0; i < subjects.length; i++) { - if (regExp.test(subjects[i].subjectScheme)) { - if (subjects[i].subject) { - return _.split(subjects[i].subject, ","); - } - } - } - } - return null; -}; - -JsonExtractor.prototype.getMintingYear = function(data) {}; - -JsonExtractor.prototype.getSessionDate = function(data) { - if (data) { - if (data.dates && data.dates instanceof Array) { - var sessionDate = _.find(data.dates, function(item) { - if (item.dateType) { - return item.dateType.toLowerCase() === "collected"; - } - }); - if (sessionDate && sessionDate.date) { - return moment(sessionDate.date).format("YYYY-MM-DD"); - } - } - } - console.log("[JSON EXTRACTOR ERROR] Extraction of session date failed."); - return null; -}; - -JsonExtractor.prototype.getResourceTypeGeneral = function(data) { - if (data && data.types) { - for (var key in data.types) { - if (key === "resourceTypeGeneral") { - return data.types[key]; - } - } - } - console.log("[JSON EXTRACTOR ERROR] Extraction of resource type general failed."); - return null; -}; - -JsonExtractor.prototype.getResourceType = function(data) { - if (data && data.types) { - for (var key in data.types) { - if (key === "resourceType") { - if (data.types[key] === "Experiment Session") { - return CONSTANTS.ES_RESOURCE_TYPE; - } - if (data.types[key] === "Datacollection") { - return CONSTANTS.DC_RESOURCE_TYPE; - } - } - } - } - console.log("[JSON EXTRACTOR ERROR] Extraction of resource type failed."); - return null; -}; - -JsonExtractor.prototype.getAbstract = function(data) { - if (data && data.descriptions) { - var abstractObject = _.find(data.descriptions, function(item) { - return item.descriptionType.toLowerCase() === "abstract"; - }); - if (abstractObject) { - return abstractObject.description; - } - } - console.log("[JSON EXTRACTOR ERROR] Extraction of the abstract failed."); - return null; -}; - -JsonExtractor.prototype.getMergedProposalAndBeamline = function(proposals, beamlines, beamlineUrls) { - if (proposals && beamlines && beamlineUrls) { - var result = []; - var index = 0; - if (proposals.length === beamlines.length && proposals.length === beamlineUrls.length) { - for (index; index < proposals.length; index++) { - result.push({ - proposal: proposals[index], - beamline: beamlines[index], - beamlineUrl: beamlineUrls[index] - }); - } - return _.uniqBy(result, function(value) { - return JSON.stringify(value); - }); - } - if (proposals.length >= 1 && beamlines.length === 1 && beamlineUrls.length === 1) { - for (index = 0; index < proposals.length; index++) { - result.push({ - proposal: proposals[index], - beamline: beamlines[0], - beamlineUrl: beamlineUrls[0] - }); - } - return _.uniqBy(result, function(value) { - return JSON.stringify(value); - }); - } - } - return null; -}; - -function proposalBeamlineTable(chunk, context, bodies, params) { - var proposalAndBeamlines = params.mergedProposalBeamlines; - chunk.write('<table class="table table-striped">'); - chunk.write("<thead>"); - chunk.write("<tr>"); - chunk.write('<th scope="col">Proposals</th>'); - chunk.write('<th scope="col">Beamlines</th>'); - chunk.write("</tr>"); - chunk.write("</thead>"); - chunk.write("<tbody>"); - if (proposalAndBeamlines) { - for (var index = 0; index < proposalAndBeamlines.length; index++) { - if (proposalAndBeamlines[index]) { - var proposal = proposalAndBeamlines[index].proposal || "unknown"; - var beamline = proposalAndBeamlines[index].beamline || "unknown"; - var beamlineUrl = proposalAndBeamlines[index].beamlineUrl; - chunk.write("<tr>"); - chunk.write("<td>" + proposal + "</td>"); - if (beamlineUrl === "noLink") { - chunk.write("<td>" + beamline + "</td>"); - } else { - chunk.write('<td> <a href="' + beamlineUrl + '" target="_blank">' + beamline + " </a> </td>"); - } - chunk.write("</tr>"); - } else { - chunk.write("<tr>"); - chunck.write("<td> unknown </td>"); - chunck.write("<td> unknown </td>"); - chunk.write("</tr>"); - } - } - chunk.write("</tbody>"); - chunk.write("</table>"); - return chunk.render(bodies.block, context); - } -} - -function abstract(chunk, context, bodies, params) { - var abstract = params.abstract; - chunk.write('<div class="myBorder-left">'); - chunk.write("<label> Abstract </label>"); - chunk.write('<div class="padding-left-15">'); - if (abstract) { - chunk.write(abstract); - } else { - chunk.write("There is no abstract for this session."); - } - chunk.write("</div >"); - chunk.write("</div >"); - return chunk.render(bodies.block, context); -} - -dust.helpers.proposalBeamlineTable = proposalBeamlineTable; - -dust.helpers.abstract = abstract; \ No newline at end of file diff --git a/www/min/output.min.css b/www/min/output.min.css deleted file mode 100644 index be85ec2..0000000 --- a/www/min/output.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v4.6.0 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}html{position:relative;min-height:100%;font-size:10px}body{margin-bottom:60px;font-size:1.6rem}hr{margin-top:15px;margin-bottom:15px}label{margin-bottom:0;font-weight:700}@media only screen and (max-width:768px){#footerLeft{text-align:center}#footerRight{text-align:center}#licenceImage{display:block;margin:auto}.footer{position:absolute;background-color:#f4f4f4}}@media only screen and (min-width:769px){#footerLeft{text-align:left}#footerRight{display:block;float:right}.footer{position:absolute;bottom:0;height:60px;width:100%;line-height:60px;background-color:#f4f4f4}}@media only screen and (max-width:1200px){.searchButtonDiv{padding-left:15px}}@media only screen and (min-width:1201px){.searchButtonDiv{padding-left:0}}.card-header{background-color:#cfd1d2}.card-footer{background-color:#fff;border:0}.container{width:auto;max-width:680px;padding:0 15px}.blueBackground{background-color:#132577!important}.lightRedBackground{background-color:#ffcaca!important}.grayBackground{background-color:#dcdee2}.whiteBackground{background-color:#fff}.font-3p2rem{font-size:3.2rem}.font-1p4rem{font-size:1.4rem}.whiteFont{color:#fff}.fontSize-20{font-size:20px}.whiteVCenteredFont{color:#fff;margin-top:auto;margin-bottom:auto}.padding-top-15{padding-top:15px}.padding-top-5{padding-top:5px}.padding-bottom-15{padding-bottom:15px}.padding-left-15{padding-left:15px}.padding-bottom-10{padding-bottom:10px}.padding10{padding:10px}.padding-left-0{padding-left:0}.padding-right-0{padding-right:0}.padding-right-2{padding-right:2px}.padding-left-2{padding-left:2px}.marging-right-10{marging-right:10px}.margin-left-0{margin-left:0}.margin-right-0{margin-right:0}.borderRadius-5{border-radius:5px}span.doiBadge{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#fff;background:#000;text-decoration:none;padding:2px 0 2px 4px;border-color:#000}span.doiBadge::before{content:"DOI"}span.doiBadge a{color:#fff;background:#09c;text-decoration:none;margin-left:4px;padding:2px 5px 2px 4px;border-radius:0 5px 5px 0}.myBorder-left{border-left-color:#cfd1d2;border-left-width:4px;border-left-style:solid;padding-left:15px;margin-bottom:10px}.scroll-box{overflow-y:auto;overflow-x:hidden;height:130px}.welcomeBanner{heigth:100px}.flexCentered{display:flex;justify-content:center;align-items:center}.height100p{height:100%}.form-control{font-size:1.6rem}.btn{white-space:normal;font-size:1.6rem}.btn-primary{border-color:#132577;background-color:#132577}.btn-primary.disabled{background-color:#132577;border-color:#132577;cursor:not-allowed}.btn.disabled{opacity:.5}#logo{height:50px}.modal{display:none;position:absolute;z-index:1000;top:82px;bottom:60px;background:rgba(0,0,0,.05) url(../src/images/ajaxloader.gif) 50% 50% no-repeat}body.loading{overflow:hidden}body.loading .modal{display:block}.flex{display:flex} \ No newline at end of file diff --git a/www/min/precompiled.templates.min.js b/www/min/precompiled.templates.min.js deleted file mode 100644 index 1cf072a..0000000 --- a/www/min/precompiled.templates.min.js +++ /dev/null @@ -1,7 +0,0 @@ -(function(dust){dust.register("badges_tpl",body_0);function body_0(chk,ctx){return chk.w("<div class=\"row margin-left-0 margin-right-0\">").h("eq",ctx,{"block":body_1},{"key":ctx.getPath(false, ["data","resourceType"]),"value":ctx.getPath(false, ["constants","ES_RESOURCE_TYPE"])},"h").w(" ").h("eq",ctx,{"block":body_2},{"key":ctx.getPath(false, ["data","resourceType"]),"value":ctx.getPath(false, ["constants","DC_RESOURCE_TYPE"])},"h").w(" <div class=\"col\"> </div>").h("eq",ctx,{"block":body_3},{"key":ctx.getPath(false, ["data","resourceTypeGeneral"]),"value":"Dataset"},"h").h("eq",ctx,{"block":body_4},{"key":ctx.getPath(false, ["data","accessibility"]),"value":"Open access"},"h").h("eq",ctx,{"block":body_5},{"key":ctx.getPath(false, ["data","accessibility"]),"value":"Restricted access"},"h").w("</div>");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("<div class=\"col-auto padding-right-2 padding-left-2\"><span class=\"badge badge-secondary font-1p4rem \" > Session </span></div>");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.w("<div class=\"col-auto padding-right-2 padding-left-2\"><span class=\"badge badge-secondary font-1p4rem \" > Data collection </span></div>");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("<div class=\"col-auto padding-right-2 padding-left-2\"><span class=\"badge badge-secondary font-1p4rem\"> Dataset </span></div>");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("<div class=\"col-auto padding-right-2 padding-left-2\"><span class=\"badge badge-success font-1p4rem \"> Open access </span></div>");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("<div class=\"col-auto padding-right-2 padding-left-2\"><span class=\"badge badge-warning font-1p4rem \"> Restricted access </span></div>");}body_5.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("doinotfound_tpl",body_0);function body_0(chk,ctx){return chk.w("<div class=\"container-fluid \" style=\"color:black;\"><div class=\"row\"><div class=\"col-3\"> </div><div class=\"col-6 lightRedBackground text-center rounded\"> <p> ").f(ctx.get(["message"], false),ctx,"h",["s"]).w(" </p> </div></div><div class=\"col-3\"> </div></div> ");}body_0.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("doinotfound2_tpl",body_0);function body_0(chk,ctx){return chk.f(ctx.get(["message"], false),ctx,"h",["s"]);}body_0.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("experimentalreport_tpl",body_0);function body_0(chk,ctx){return chk.w("<div class=\"card-header text-center\"><label>Experimental report </label></div><div class=\"card-body padding10\">").x(ctx.get(["data"], false),ctx,{"else":body_1,"block":body_2},{});}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("<p class=\"card-text\"> There is currently no experimental report. </p></div>");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.h("eq",ctx,{"block":body_3},{"key":ctx.getPath(false, ["data","length"]),"value":1},"h").h("gt",ctx,{"block":body_4},{"key":ctx.getPath(false, ["data","length"]),"value":1},"h").w(" ");}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("<p class=\"card-text\"> <b> One </b> report has been found for this proposal. </p></div><div class=\"card-body\"> <button type=\"button\" class=\"btn btn-primary btn-lg btn-block\" onclick=\"javascript:(function(){ var expRep = new ExperimentalReportController(); expRep.openFileInNewTab('").f(ctx.getPath(false, ["data","0"]),ctx,"h").w("'); })()\" > <span class=\"fa fa-download whiteFont\"></span> ").f(ctx.getPath(false, ["data","0"]),ctx,"h").w(" </button></div>");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("<p class=\"card-text\"> In total, <b> ").f(ctx.getPath(false, ["data","length"]),ctx,"h").w(" </b> reports have been found for this proposal: </p></div> <div class=\"card-body\"><div class=\"scroll-box\">").s(ctx.get(["data"], false),ctx,{"block":body_5},{}).w("</div> </div>");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w(" ").h("sep",ctx,{"block":body_6},{},"h").h("last",ctx,{"block":body_7},{},"h");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w("<div class=\"row\"> <div class=\"col-1\"> </div><div class=\"col-10 padding-bottom-10\"><button type=\"button\" class=\"btn btn-primary btn-lg btn-block\" onclick=\"javascript:(function(){ var expRep = new ExperimentalReportController(); expRep.openFileInNewTab('").f(ctx.getPath(true, []),ctx,"h").w("'); })()\" > <span class=\"fa fa-download whiteFont\"></span> <span class=\"whitefont\"> ").f(ctx.getPath(true, []),ctx,"h").w("</span> </button></div><div class=\"col-1\"> </div> </div>");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w("<div class=\"row\"> <div class=\"col-1\"> </div><div class=\"col-10\"><button type=\"button\" class=\"btn btn-primary btn-lg btn-block\" onclick=\"javascript:(function(){ var expRep = new ExperimentalReportController(); expRep.openFileInNewTab('").f(ctx.getPath(true, []),ctx,"h").w("'); })()\" > <span class=\"fa fa-download whiteFont\"></span> <span class=\"whitefont\"> ").f(ctx.getPath(true, []),ctx,"h").w("</span> </button></div><div class=\"col-1\"> </div> </div>");}body_7.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("landingpage_tpl",body_0);function body_0(chk,ctx){return chk.w("<div class=\"container-fluid\"><div class=\"row padding-top-15\"><div class=\"col-12 col-md-9\"><div class=\"row\"><div class=\"col-12\"><div id=\"badges\"> </div> </div></div><div class=\"row\"><div class=\"col-12 fontSize-20 text-center text-uppercase font-weight-bold py-3\">").f(ctx.getPath(false, ["data","title"]),ctx,"h").w("</div></div><div class=\"row\"><div class=\"col-12\"><div class=\"myBorder-left\"><div><cite>").s(ctx.getPath(false, ["data","creators"]),ctx,{"block":body_1},{}).w("</cite></div></div></div></div><div class=\"padding-top-15\"></div></div><div class=\"col-12 col-md-3\"><div class=\"card\"><div class=\"card-body\"><div class=\"card-text\"><label> DOI </label><div class=\"padding-left-15\"> <span class=\"doiBadge borderRadius-5 font-1p4rem\"> <a id=\"doiLink\" href=").f(ctx.getPath(false, ["data","dataciteLink"]),ctx,"h").w("> ").f(ctx.getPath(false, ["data","doi"]),ctx,"h").w(" </a></span> </div><label class=\"padding-top-5\"> Licence (for files) </label><div class=\"padding-left-15\"><p> <a href=\"https://creativecommons.org/licenses/by/4.0/\"> Creative Commons Attribution 4.0 </a> </p></div> </div></div></div></div></div><hr> ").x(ctx.getPath(false, ["data","contributors"]),ctx,{"block":body_8},{}).w("<div id=\"metadata\"> </div><hr><div class=\"row\"><div class=\"col-12\"> <div class=\"card\" id=\"expReport\"><div class=\"card-header text-center\"><label>Experimental report </label></div></div></div></div><br><div class=\"row\"><div class=\"col-12\"><div class=\"card\"><div class=\"card-header text-center\"><label>Experimental data </label></div><div class=\"card-body padding10\"><p class=\"card-text\" >").f(ctx.getPath(false, ["data","accessMessage"]),ctx,"h",["s"]).w("</p></div><div class=\"card-body\"><div class=\"row\"><div class=\"col-1\"> </div><div class=\"col-10\">").h("eq",ctx,{"else":body_16,"block":body_17},{"key":ctx.getPath(false, ["data","resourceType"]),"value":ctx.getPath(false, ["constants","ES_RESOURCE_TYPE"])},"h").w(" <button type=\"submit\" class=\"btn btn-primary btn-lg btn-block\"> Access data </button></form></div><div class=\"col-1\"> </div></div></div></div> </div></div><hr><div class=\"row\"><div class=\"col-12\"><div class=\"myBorder-left\"><label class=\"greyGradientToRight padding-left-10 padding-right-20\"> Reference </label><div class=\"padding-left-25\"><p> Below is the recommended format for citing this work in a research publication.</p><div class=\"padding-left-25\"><cite> ").f(ctx.getPath(false, ["data","citation"]),ctx,"h",["s"]).w(" </cite></div></div></div> </div></div></div>");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.h("sep",ctx,{"block":body_2},{},"h").h("last",ctx,{"block":body_5},{},"h");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.x(ctx.getPath(true, ["givenName"]),ctx,{"else":body_3,"block":body_4},{});}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["name"]),ctx,"h").w(" ; ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["givenName"]),ctx,"h").w(" ").f(ctx.getPath(true, ["familyName"]),ctx,"h").w(" ; ");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.x(ctx.getPath(true, ["givenName"]),ctx,{"else":body_6,"block":body_7},{});}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["name"]),ctx,"h").w(". ");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["givenName"]),ctx,"h").w(" ").f(ctx.getPath(true, ["familyName"]),ctx,"h").w(". ");}body_7.__dustBody=!0;function body_8(chk,ctx){return chk.w("<div class=\"row\"><div class=\"col-12\"><div class=\"myBorder-left\"><label class=\"greyGradientToRight padding-left-10 padding-right-20\"> Contributors </label><div class=\"padding-left-25\"><cite>").s(ctx.getPath(false, ["data","contributors"]),ctx,{"block":body_9},{}).w("</cite></div></div></div></div><hr>");}body_8.__dustBody=!0;function body_9(chk,ctx){return chk.h("sep",ctx,{"block":body_10},{},"h").h("last",ctx,{"block":body_13},{},"h");}body_9.__dustBody=!0;function body_10(chk,ctx){return chk.x(ctx.getPath(true, ["givenName"]),ctx,{"else":body_11,"block":body_12},{});}body_10.__dustBody=!0;function body_11(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["name"]),ctx,"h").w(" ; ");}body_11.__dustBody=!0;function body_12(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["givenName"]),ctx,"h").w(" ").f(ctx.getPath(true, ["familyName"]),ctx,"h").w(" ; ");}body_12.__dustBody=!0;function body_13(chk,ctx){return chk.x(ctx.getPath(true, ["givenName"]),ctx,{"else":body_14,"block":body_15},{});}body_13.__dustBody=!0;function body_14(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["name"]),ctx,"h").w(". ");}body_14.__dustBody=!0;function body_15(chk,ctx){return chk.w(" ").f(ctx.getPath(true, ["givenName"]),ctx,"h").w(" ").f(ctx.getPath(true, ["familyName"]),ctx,"h").w(". ");}body_15.__dustBody=!0;function body_16(chk,ctx){return chk.w("<form action=\"https://data.esrf.fr/public/").f(ctx.getPath(false, ["data","doi"]),ctx,"h").w("\" target=\"_blank\" method=\"get\">");}body_16.__dustBody=!0;function body_17(chk,ctx){return chk.w("<form action=\"https://data.esrf.fr/investigation/").f(ctx.getPath(false, ["data","investigationId"]),ctx,"h").w("/datasets\" target=\"_blank\">");}body_17.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("metadata_tpl",body_0);function body_0(chk,ctx){return chk.h("eq",ctx,{"block":body_1},{"key":ctx.getPath(false, ["data","resourceType"]),"value":ctx.getPath(false, ["constants","ES_RESOURCE_TYPE"])},"h").h("eq",ctx,{"block":body_17},{"key":ctx.getPath(false, ["data","resourceType"]),"value":ctx.getPath(false, ["constants","DC_RESOURCE_TYPE"])},"h").w(" ");}body_0.__dustBody=!0;function body_1(chk,ctx){return chk.w("<div class=\"row\">").x(ctx.getPath(false, ["data","mergedProposalBeamlines"]),ctx,{"block":body_2},{}).w("</div><hr> <div class=\"row\"><div class=\"col-12\">").h("abstract",ctx,{"block":body_16},{"abstract":ctx.getPath(false, ["data","abstract"])},"h").w("</div></div>");}body_1.__dustBody=!0;function body_2(chk,ctx){return chk.x(ctx.getPath(false, ["data","mergedProposalBeamlines","0"]),ctx,{"block":body_3},{});}body_2.__dustBody=!0;function body_3(chk,ctx){return chk.w("<div class=\"col-6 col-md\"><div class=\"myBorder-left\"><label> Proposal </label>").x(ctx.getPath(false, ["data","mergedProposalBeamlines","0","proposal"]),ctx,{"else":body_4,"block":body_5},{}).w("</div></div><div class=\"col-6 col-md\"><div class=\"myBorder-left\"><label> Publication year </label>").x(ctx.getPath(false, ["data","publiclyAccessibleYear"]),ctx,{"else":body_6,"block":body_7},{}).w("</div></div><div class=\"col-6 col-md\"><div class=\"myBorder-left\"><label> Beamline </label> ").x(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamline"]),ctx,{"else":body_8,"block":body_9},{}).w("</div></div><div class=\"col-6 col-md\"><div class=\"myBorder-left\"><label> Session date </label>").x(ctx.getPath(false, ["data","sessionDate"]),ctx,{"else":body_12,"block":body_13},{}).w("</div></div> <div class=\"col-12 col-md-4\"><div class=\"myBorder-left\"><label>Category </label>").x(ctx.getPath(false, ["data","proposalType"]),ctx,{"else":body_14,"block":body_15},{}).w("</div></div> ");}body_3.__dustBody=!0;function body_4(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_4.__dustBody=!0;function body_5(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","proposal"]),ctx,"h").w("</div>");}body_5.__dustBody=!0;function body_6(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_6.__dustBody=!0;function body_7(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","publiclyAccessibleYear"]),ctx,"h").w("</div>");}body_7.__dustBody=!0;function body_8(chk,ctx){return chk.w("<div class=\"padding-left-15\">Not available</div>");}body_8.__dustBody=!0;function body_9(chk,ctx){return chk.h("eq",ctx,{"else":body_10,"block":body_11},{"key":ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamlineUrl"]),"value":"noLink"},"h");}body_9.__dustBody=!0;function body_10(chk,ctx){return chk.w("<div class=\"padding-left-15\"><a href=\"").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamlineUrl"]),ctx,"h").w("\" target=\"_blank\"> ").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamline"]),ctx,"h").w(" </a></div>");}body_10.__dustBody=!0;function body_11(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mergedProposalBeamlines","0","beamline"]),ctx,"h").w("</div>");}body_11.__dustBody=!0;function body_12(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_12.__dustBody=!0;function body_13(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","sessionDate"]),ctx,"h").w("</div>");}body_13.__dustBody=!0;function body_14(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_14.__dustBody=!0;function body_15(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","proposalType"]),ctx,"h").w("</div>");}body_15.__dustBody=!0;function body_16(chk,ctx){return chk.w(" ");}body_16.__dustBody=!0;function body_17(chk,ctx){return chk.w("<div class=\"row\"><div class=\"col-md-12 col-xl-8\">").h("abstract",ctx,{"block":body_18},{"abstract":ctx.getPath(false, ["data","abstract"])},"h").w("</br></div><div class=\"col-sm-6 col-xl-2\"><div class=\"myBorder-left\" style=\"margin-right:-15px\">").h("proposalBeamlineTable",ctx,{"block":body_19},{"mergedProposalBeamlines":ctx.getPath(false, ["data","mergedProposalBeamlines"])},"h").w("</div></div><div class=\"col-sm-6 col-xl-2\" ><div class=\"myBorder-left\"><label> Publication year </label>").x(ctx.getPath(false, ["data","mintingYear"]),ctx,{"else":body_20,"block":body_21},{}).w("</div></div></div>");}body_17.__dustBody=!0;function body_18(chk,ctx){return chk.w(" ");}body_18.__dustBody=!0;function body_19(chk,ctx){return chk.w(" ");}body_19.__dustBody=!0;function body_20(chk,ctx){return chk.w("<div class=\"padding-left-15\"> Not available</div>");}body_20.__dustBody=!0;function body_21(chk,ctx){return chk.w("<div class=\"padding-left-15\">").f(ctx.getPath(false, ["data","mintingYear"]),ctx,"h").w("</div>");}body_21.__dustBody=!0;return body_0}(dust)); -(function(dust){dust.register("welcome_tpl",body_0);function body_0(chk,ctx){return chk.w(" <div class=\"container-fluid\"><div class=\"row\"><div class=\"col-12 flexCentered whiteFont\" style=\"color:#132577; font-size: 6.4rem; height: 200px; margin-top: 10px; margin-bottom: 10px; text-align: center;\">ESRF DOI Portal</div></div></div><div class=\"container-fluid\"><div class=\"row\"><div class=\"col-12 col-md-4\"><div class=\"padding10\"><div class=\"card-header text-center\"><h1 class=\"font-3p2rem\">About the portal</h1></div><div class=\"card-body padding10\">This page centralizes the <a href=\"http://www.esrf.eu/home/UsersAndScience/UserGuide/esrf-data-policy/doi.html\" target=\"_blank\"> DOI</a> services offered by the ESRF to access data stored at the facility as part of its data policy. Data referred to by ESRF DOIs are accessed via the ESRF data catalogue <a href=\"https://data.esrf.fr\" target=\"_blank\"> data.esrf.fr</a>.<p> In case you require a DOI for a subset of data please send an email with the following high level metadata - \"proposal\", \"title\", \"authors\", \"abstract\", \"datasets\" to datapolicy@esrf.fr </p></div></div></div><div class=\"col-12 col-md-4\"><div class=\"padding10\"><div class=\"card-header text-center \"><h1 class=\"font-3p2rem\">DOI resolver</h1></div><div class=\"card-body padding10\"><p>The search engine below only searches DOIs which have been minted at the ESRF. <br/> Use <a href=\"https://doi.org\">doi.org </a> search engine for other DOIs.</p><div class=\"row\"><div class=\"col-xl-9 padding-right-0\"><p> <input id=\"doiSearchBox\" class=\"form-control\" placeholder=\"10.15151/ESRF-ES-90632078\" type=\"text\" required/> </p><div class=\"text-danger\" id=\"error\"> </div> </div><div class=\"col searchButtonDiv\"> <input class=\"btn btn-primary\" type=\"submit\" value=\"Search\" onclick=\"searchDOI()\" /> </div></div><div class=\"row\"><div class=\"col\"><p> <a href=\"https://search.datacite.org/works?query=10.15151%2F*\"> List all ESRF DOIs </a> </p></div></div></div> </div></div><div class=\"col-12 col-md-4\"><div class=\"padding10\"><div class=\"card-header text-center\"><h1 class=\"font-3p2rem\">About DOI </h1></div><div class=\"card-body padding10\">The Digital Object Identifier (<a href=\"http://www.esrf.eu/home/UsersAndScience/UserGuide/esrf-data-policy/doi.html\">DOI</a>) is a code composed of digits and characters. It identifies data in a unique and permanent way thereby allowing data to be referenced worldwide. The DOI has two parts, namely the DOI prefix and the DOI suffix separated by a slash (\"/\"). The ESRF prefix is 10.15151 followed by a slash and the ESRF suffix. Currently the following suffix(es) are defined:</p><pre>ESRF-ES - for a session at the ESRF </pre>Refer to the <a href=\"http://www.esrf.eu/home/UsersAndScience/UserGuide/esrf-data-policy/doi/doi---concepts.html\">DOI concepts</a> page to find out what a session is.</div></div></div></div></div>");}body_0.__dustBody=!0;return body_0}(dust)); \ No newline at end of file diff --git a/www/package.json b/www/package.json deleted file mode 100644 index 96229ed..0000000 --- a/www/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "doi-landing-page", - "version": "0.0.0", - "description": "", - "main": "Gruntfile.js", - "dependencies": { - "grunt-contrib-uglify": "^3.4.0", - "grunt-contrib-watch": "^1.1.0", - "grunt-dust": "^0.9.4", - "grunt-dustjs": "^1.4.0", - "grunt-wiredep": "^3.0.1" - }, - "devDependencies": { - "browserify": "^16.2.3", - "grunt": "^1.3.0", - "grunt-contrib-cssmin": "^2.2.1", - "grunt-contrib-jshint": "^1.1.0", - "grunt-include-source": "^1.1.0", - "grunt-plato": "^1.4.0", - "it-each": "^0.4.0", - "jasmine-core": "^3.2.1", - "karma": "^3.0.0", - "karma-browserify": "^5.3.0", - "karma-chrome-launcher": "^2.2.0", - "karma-firefox-launcher": "^1.1.0", - "karma-jasmine": "^1.1.2", - "watchify": "^3.11.0" - }, - "scripts": { - "test": "karma start" - }, - "repository": { - "type": "git", - "url": "git@gitlab.esrf.fr:icat/doi-landing-page.git" - }, - "author": "", - "license": "ISC" -} diff --git a/www/sitemap.txt b/www/sitemap.txt deleted file mode 100644 index 1a4d267..0000000 --- a/www/sitemap.txt +++ /dev/null @@ -1,522 +0,0 @@ -https://doi.esrf.fr/10.15151/ESRF-ES-184452790 -https://doi.esrf.fr/10.15151/ESRF-ES-181929278 -https://doi.esrf.fr/10.15151/ESRF-ES-180010675 -https://doi.esrf.fr/10.15151/ESRF-ES-174878751 -https://doi.esrf.fr/10.15151/ESRF-ES-171497103 -https://doi.esrf.fr/10.15151/ESRF-ES-171413692 -https://doi.esrf.fr/10.15151/ESRF-ES-170538899 -https://doi.esrf.fr/10.15151/ESRF-ES-168122548 -https://doi.esrf.fr/10.15151/ESRF-ES-166784171 -https://doi.esrf.fr/10.15151/ESRF-ES-164574982 -https://doi.esrf.fr/10.15151/ESRF-ES-164574620 -https://doi.esrf.fr/10.15151/ESRF-ES-163990087 -https://doi.esrf.fr/10.15151/ESRF-ES-163256950 -https://doi.esrf.fr/10.15151/ESRF-ES-163247412 -https://doi.esrf.fr/10.15151/ESRF-ES-163225824 -https://doi.esrf.fr/10.15151/ESRF-ES-162707306 -https://doi.esrf.fr/10.15151/ESRF-ES-162687854 -https://doi.esrf.fr/10.15151/ESRF-ES-162251846 -https://doi.esrf.fr/10.15151/ESRF-ES-162248078 -https://doi.esrf.fr/10.15151/ESRF-ES-162248067 -https://doi.esrf.fr/10.15151/ESRF-ES-161963533 -https://doi.esrf.fr/10.15151/ESRF-ES-161931585 -https://doi.esrf.fr/10.15151/ESRF-ES-160644008 -https://doi.esrf.fr/10.15151/ESRF-ES-159994365 -https://doi.esrf.fr/10.15151/ESRF-ES-159961245 -https://doi.esrf.fr/10.15151/ESRF-ES-159956084 -https://doi.esrf.fr/10.15151/ESRF-ES-159445033 -https://doi.esrf.fr/10.15151/ESRF-ES-159410662 -https://doi.esrf.fr/10.15151/ESRF-ES-158876748 -https://doi.esrf.fr/10.15151/ESRF-ES-158859464 -https://doi.esrf.fr/10.15151/ESRF-ES-158859089 -https://doi.esrf.fr/10.15151/ESRF-ES-158573495 -https://doi.esrf.fr/10.15151/ESRF-ES-158308267 -https://doi.esrf.fr/10.15151/ESRF-ES-158028007 -https://doi.esrf.fr/10.15151/ESRF-ES-157970994 -https://doi.esrf.fr/10.15151/ESRF-ES-157904329 -https://doi.esrf.fr/10.15151/ESRF-ES-157726885 -https://doi.esrf.fr/10.15151/ESRF-ES-157726842 -https://doi.esrf.fr/10.15151/ESRF-ES-157689375 -https://doi.esrf.fr/10.15151/ESRF-ES-157299629 -https://doi.esrf.fr/10.15151/ESRF-ES-155404944 -https://doi.esrf.fr/10.15151/ESRF-ES-155242587 -https://doi.esrf.fr/10.15151/ESRF-ES-155240127 -https://doi.esrf.fr/10.15151/ESRF-ES-155216741 -https://doi.esrf.fr/10.15151/ESRF-ES-155205493 -https://doi.esrf.fr/10.15151/ESRF-ES-155205381 -https://doi.esrf.fr/10.15151/ESRF-ES-155204753 -https://doi.esrf.fr/10.15151/ESRF-ES-154202231 -https://doi.esrf.fr/10.15151/ESRF-ES-154128138 -https://doi.esrf.fr/10.15151/ESRF-ES-152611353 -https://doi.esrf.fr/10.15151/ESRF-ES-151565774 -https://doi.esrf.fr/10.15151/ESRF-ES-151542137 -https://doi.esrf.fr/10.15151/ESRF-ES-150860761 -https://doi.esrf.fr/10.15151/ESRF-ES-150325184 -https://doi.esrf.fr/10.15151/ESRF-ES-150291534 -https://doi.esrf.fr/10.15151/ESRF-ES-150269629 -https://doi.esrf.fr/10.15151/ESRF-ES-149283553 -https://doi.esrf.fr/10.15151/ESRF-ES-147900374 -https://doi.esrf.fr/10.15151/ESRF-ES-147124103 -https://doi.esrf.fr/10.15151/ESRF-ES-147122999 -https://doi.esrf.fr/10.15151/ESRF-ES-147110748 -https://doi.esrf.fr/10.15151/ESRF-ES-147110737 -https://doi.esrf.fr/10.15151/ESRF-ES-146788748 -https://doi.esrf.fr/10.15151/ESRF-ES-146304266 -https://doi.esrf.fr/10.15151/ESRF-ES-146284282 -https://doi.esrf.fr/10.15151/ESRF-ES-146282714 -https://doi.esrf.fr/10.15151/ESRF-ES-146277404 -https://doi.esrf.fr/10.15151/ESRF-ES-145450145 -https://doi.esrf.fr/10.15151/ESRF-ES-145267148 -https://doi.esrf.fr/10.15151/ESRF-ES-145194304 -https://doi.esrf.fr/10.15151/ESRF-ES-145107284 -https://doi.esrf.fr/10.15151/ESRF-ES-145088681 -https://doi.esrf.fr/10.15151/ESRF-ES-145085249 -https://doi.esrf.fr/10.15151/ESRF-ES-145085063 -https://doi.esrf.fr/10.15151/ESRF-ES-144796048 -https://doi.esrf.fr/10.15151/ESRF-ES-144580587 -https://doi.esrf.fr/10.15151/ESRF-ES-144554304 -https://doi.esrf.fr/10.15151/ESRF-ES-144479045 -https://doi.esrf.fr/10.15151/ESRF-ES-144367705 -https://doi.esrf.fr/10.15151/ESRF-ES-143436284 -https://doi.esrf.fr/10.15151/ESRF-ES-143373441 -https://doi.esrf.fr/10.15151/ESRF-ES-143360964 -https://doi.esrf.fr/10.15151/ESRF-ES-143094721 -https://doi.esrf.fr/10.15151/ESRF-ES-142866117 -https://doi.esrf.fr/10.15151/ESRF-ES-142846529 -https://doi.esrf.fr/10.15151/ESRF-ES-142840456 -https://doi.esrf.fr/10.15151/ESRF-ES-142840375 -https://doi.esrf.fr/10.15151/ESRF-ES-142757577 -https://doi.esrf.fr/10.15151/ESRF-ES-142673807 -https://doi.esrf.fr/10.15151/ESRF-ES-142481073 -https://doi.esrf.fr/10.15151/ESRF-ES-141972475 -https://doi.esrf.fr/10.15151/ESRF-ES-141963373 -https://doi.esrf.fr/10.15151/ESRF-ES-140506618 -https://doi.esrf.fr/10.15151/ESRF-ES-140436170 -https://doi.esrf.fr/10.15151/ESRF-ES-140360388 -https://doi.esrf.fr/10.15151/ESRF-ES-140296588 -https://doi.esrf.fr/10.15151/ESRF-ES-139035493 -https://doi.esrf.fr/10.15151/ESRF-ES-138779835 -https://doi.esrf.fr/10.15151/ESRF-ES-138040476 -https://doi.esrf.fr/10.15151/ESRF-ES-137827701 -https://doi.esrf.fr/10.15151/ESRF-ES-137317923 -https://doi.esrf.fr/10.15151/ESRF-ES-137293723 -https://doi.esrf.fr/10.15151/ESRF-ES-137205237 -https://doi.esrf.fr/10.15151/ESRF-ES-135816585 -https://doi.esrf.fr/10.15151/ESRF-ES-135806642 -https://doi.esrf.fr/10.15151/ESRF-ES-135806187 -https://doi.esrf.fr/10.15151/ESRF-ES-135760149 -https://doi.esrf.fr/10.15151/ESRF-ES-135588622 -https://doi.esrf.fr/10.15151/ESRF-ES-135588471 -https://doi.esrf.fr/10.15151/ESRF-ES-135135830 -https://doi.esrf.fr/10.15151/ESRF-ES-134958966 -https://doi.esrf.fr/10.15151/ESRF-ES-134751624 -https://doi.esrf.fr/10.15151/ESRF-ES-134500785 -https://doi.esrf.fr/10.15151/ESRF-ES-134461532 -https://doi.esrf.fr/10.15151/ESRF-ES-133989980 -https://doi.esrf.fr/10.15151/ESRF-ES-133628388 -https://doi.esrf.fr/10.15151/ESRF-ES-133436389 -https://doi.esrf.fr/10.15151/ESRF-ES-133424186 -https://doi.esrf.fr/10.15151/ESRF-ES-133418463 -https://doi.esrf.fr/10.15151/ESRF-ES-133418343 -https://doi.esrf.fr/10.15151/ESRF-ES-133417381 -https://doi.esrf.fr/10.15151/ESRF-ES-133417050 -https://doi.esrf.fr/10.15151/ESRF-ES-133065895 -https://doi.esrf.fr/10.15151/ESRF-ES-133044090 -https://doi.esrf.fr/10.15151/ESRF-ES-132948299 -https://doi.esrf.fr/10.15151/ESRF-ES-132939048 -https://doi.esrf.fr/10.15151/ESRF-ES-132862896 -https://doi.esrf.fr/10.15151/ESRF-ES-132630521 -https://doi.esrf.fr/10.15151/ESRF-ES-132528770 -https://doi.esrf.fr/10.15151/ESRF-ES-132528576 -https://doi.esrf.fr/10.15151/ESRF-ES-132283130 -https://doi.esrf.fr/10.15151/ESRF-ES-132279991 -https://doi.esrf.fr/10.15151/ESRF-ES-132183231 -https://doi.esrf.fr/10.15151/ESRF-ES-131846968 -https://doi.esrf.fr/10.15151/ESRF-ES-131150513 -https://doi.esrf.fr/10.15151/ESRF-ES-131022975 -https://doi.esrf.fr/10.15151/ESRF-ES-131009905 -https://doi.esrf.fr/10.15151/ESRF-ES-130997639 -https://doi.esrf.fr/10.15151/ESRF-ES-130884741 -https://doi.esrf.fr/10.15151/ESRF-ES-130874985 -https://doi.esrf.fr/10.15151/ESRF-ES-130874981 -https://doi.esrf.fr/10.15151/ESRF-ES-130874477 -https://doi.esrf.fr/10.15151/ESRF-ES-130838861 -https://doi.esrf.fr/10.15151/ESRF-ES-130415014 -https://doi.esrf.fr/10.15151/ESRF-ES-130412444 -https://doi.esrf.fr/10.15151/ESRF-ES-130033368 -https://doi.esrf.fr/10.15151/ESRF-ES-130026137 -https://doi.esrf.fr/10.15151/ESRF-ES-129233760 -https://doi.esrf.fr/10.15151/ESRF-ES-129117363 -https://doi.esrf.fr/10.15151/ESRF-ES-128998416 -https://doi.esrf.fr/10.15151/ESRF-ES-128944986 -https://doi.esrf.fr/10.15151/ESRF-ES-128504822 -https://doi.esrf.fr/10.15151/ESRF-ES-127995557 -https://doi.esrf.fr/10.15151/ESRF-ES-127993606 -https://doi.esrf.fr/10.15151/ESRF-ES-127993035 -https://doi.esrf.fr/10.15151/ESRF-ES-127992737 -https://doi.esrf.fr/10.15151/ESRF-ES-127835087 -https://doi.esrf.fr/10.15151/ESRF-ES-127754215 -https://doi.esrf.fr/10.15151/ESRF-ES-127495001 -https://doi.esrf.fr/10.15151/ESRF-ES-127328736 -https://doi.esrf.fr/10.15151/ESRF-ES-127319578 -https://doi.esrf.fr/10.15151/ESRF-ES-127315716 -https://doi.esrf.fr/10.15151/ESRF-ES-127019713 -https://doi.esrf.fr/10.15151/ESRF-ES-126886707 -https://doi.esrf.fr/10.15151/ESRF-ES-126885646 -https://doi.esrf.fr/10.15151/ESRF-ES-126868849 -https://doi.esrf.fr/10.15151/ESRF-ES-126791309 -https://doi.esrf.fr/10.15151/ESRF-ES-126693670 -https://doi.esrf.fr/10.15151/ESRF-ES-126600748 -https://doi.esrf.fr/10.15151/ESRF-ES-126193516 -https://doi.esrf.fr/10.15151/ESRF-ES-124358337 -https://doi.esrf.fr/10.15151/ESRF-ES-124265259 -https://doi.esrf.fr/10.15151/ESRF-ES-124227492 -https://doi.esrf.fr/10.15151/ESRF-ES-124222055 -https://doi.esrf.fr/10.15151/ESRF-ES-122496872 -https://doi.esrf.fr/10.15151/ESRF-ES-122471822 -https://doi.esrf.fr/10.15151/ESRF-ES-122481661 -https://doi.esrf.fr/10.15151/ESRF-ES-122238319 -https://doi.esrf.fr/10.15151/ESRF-ES-122136876 -https://doi.esrf.fr/10.15151/ESRF-ES-122135087 -https://doi.esrf.fr/10.15151/ESRF-ES-121810241 -https://doi.esrf.fr/10.15151/ESRF-ES-121797240 -https://doi.esrf.fr/10.15151/ESRF-ES-121587363 -https://doi.esrf.fr/10.15151/ESRF-ES-120961707 -https://doi.esrf.fr/10.15151/ESRF-ES-120878197 -https://doi.esrf.fr/10.15151/ESRF-ES-120403650 -https://doi.esrf.fr/10.15151/ESRF-ES-120126396 -https://doi.esrf.fr/10.15151/ESRF-ES-120120588 -https://doi.esrf.fr/10.15151/ESRF-ES-120104269 -https://doi.esrf.fr/10.15151/ESRF-ES-119994641 -https://doi.esrf.fr/10.15151/ESRF-ES-119895319 -https://doi.esrf.fr/10.15151/ESRF-ES-119805810 -https://doi.esrf.fr/10.15151/ESRF-ES-119805491 -https://doi.esrf.fr/10.15151/ESRF-ES-119804980 -https://doi.esrf.fr/10.15151/ESRF-ES-119568907 -https://doi.esrf.fr/10.15151/ESRF-ES-119499096 -https://doi.esrf.fr/10.15151/ESRF-ES-119464359 -https://doi.esrf.fr/10.15151/ESRF-ES-119464351 -https://doi.esrf.fr/10.15151/ESRF-ES-119463983 -https://doi.esrf.fr/10.15151/ESRF-ES-119235097 -https://doi.esrf.fr/10.15151/ESRF-ES-118934380 -https://doi.esrf.fr/10.15151/ESRF-ES-118923391 -https://doi.esrf.fr/10.15151/ESRF-ES-118729694 -https://doi.esrf.fr/10.15151/ESRF-ES-118686985 -https://doi.esrf.fr/10.15151/ESRF-ES-118629616 -https://doi.esrf.fr/10.15151/ESRF-ES-118498674 -https://doi.esrf.fr/10.15151/ESRF-ES-118447194 -https://doi.esrf.fr/10.15151/ESRF-ES-118447013 -https://doi.esrf.fr/10.15151/ESRF-ES-118368616 -https://doi.esrf.fr/10.15151/ESRF-ES-118346851 -https://doi.esrf.fr/10.15151/ESRF-ES-118179781 -https://doi.esrf.fr/10.15151/ESRF-ES-118170174 -https://doi.esrf.fr/10.15151/ESRF-ES-118167609 -https://doi.esrf.fr/10.15151/ESRF-ES-117605227 -https://doi.esrf.fr/10.15151/ESRF-ES-117586989 -https://doi.esrf.fr/10.15151/ESRF-ES-117583838 -https://doi.esrf.fr/10.15151/ESRF-ES-117364477 -https://doi.esrf.fr/10.15151/ESRF-ES-117235103 -https://doi.esrf.fr/10.15151/ESRF-ES-116939075 -https://doi.esrf.fr/10.15151/ESRF-ES-116937630 -https://doi.esrf.fr/10.15151/ESRF-ES-116934142 -https://doi.esrf.fr/10.15151/ESRF-ES-116548212 -https://doi.esrf.fr/10.15151/ESRF-ES-116530300 -https://doi.esrf.fr/10.15151/ESRF-ES-116519894 -https://doi.esrf.fr/10.15151/ESRF-ES-116065101 -https://doi.esrf.fr/10.15151/ESRF-ES-116040417 -https://doi.esrf.fr/10.15151/ESRF-ES-115705525 -https://doi.esrf.fr/10.15151/ESRF-ES-115658541 -https://doi.esrf.fr/10.15151/ESRF-ES-115548504 -https://doi.esrf.fr/10.15151/ESRF-ES-115539115 -https://doi.esrf.fr/10.15151/ESRF-ES-115451959 -https://doi.esrf.fr/10.15151/ESRF-ES-115354787 -https://doi.esrf.fr/10.15151/ESRF-ES-115334770 -https://doi.esrf.fr/10.15151/ESRF-ES-115305167 -https://doi.esrf.fr/10.15151/ESRF-ES-114980029 -https://doi.esrf.fr/10.15151/ESRF-ES-118169986 -https://doi.esrf.fr/10.15151/ESRF-ES-114573812 -https://doi.esrf.fr/10.15151/ESRF-ES-114565706 -https://doi.esrf.fr/10.15151/ESRF-ES-118169992 -https://doi.esrf.fr/10.15151/ESRF-ES-118169962 -https://doi.esrf.fr/10.15151/ESRF-ES-114199993 -https://doi.esrf.fr/10.15151/ESRF-ES-113999726 -https://doi.esrf.fr/10.15151/ESRF-ES-113895337 -https://doi.esrf.fr/10.15151/ESRF-ES-113585769 -https://doi.esrf.fr/10.15151/ESRF-ES-118169965 -https://doi.esrf.fr/10.15151/ESRF-ES-112688911 -https://doi.esrf.fr/10.15151/ESRF-ES-112668425 -https://doi.esrf.fr/10.15151/ESRF-ES-112668423 -https://doi.esrf.fr/10.15151/ESRF-ES-112482147 -https://doi.esrf.fr/10.15151/ESRF-ES-118169900 -https://doi.esrf.fr/10.15151/ESRF-ES-112053688 -https://doi.esrf.fr/10.15151/ESRF-ES-111584835 -https://doi.esrf.fr/10.15151/ESRF-ES-111578542 -https://doi.esrf.fr/10.15151/ESRF-ES-111168787 -https://doi.esrf.fr/10.15151/ESRF-ES-111133234 -https://doi.esrf.fr/10.15151/ESRF-ES-118169891 -https://doi.esrf.fr/10.15151/ESRF-ES-110859523 -https://doi.esrf.fr/10.15151/ESRF-ES-110423041 -https://doi.esrf.fr/10.15151/ESRF-ES-109967489 -https://doi.esrf.fr/10.15151/ESRF-ES-118169953 -https://doi.esrf.fr/10.15151/ESRF-ES-109431849 -https://doi.esrf.fr/10.15151/ESRF-ES-109206218 -https://doi.esrf.fr/10.15151/ESRF-ES-108936441 -https://doi.esrf.fr/10.15151/ESRF-ES-118169937 -https://doi.esrf.fr/10.15151/ESRF-ES-108737545 -https://doi.esrf.fr/10.15151/ESRF-ES-108718973 -https://doi.esrf.fr/10.15151/ESRF-ES-108715776 -https://doi.esrf.fr/10.15151/ESRF-ES-108404596 -https://doi.esrf.fr/10.15151/ESRF-ES-108294796 -https://doi.esrf.fr/10.15151/ESRF-ES-108154290 -https://doi.esrf.fr/10.15151/ESRF-ES-118169974 -https://doi.esrf.fr/10.15151/ESRF-ES-108012307 -https://doi.esrf.fr/10.15151/ESRF-ES-108012210 -https://doi.esrf.fr/10.15151/ESRF-ES-107950358 -https://doi.esrf.fr/10.15151/ESRF-ES-118169925 -https://doi.esrf.fr/10.15151/ESRF-ES-106333436 -https://doi.esrf.fr/10.15151/ESRF-ES-106107338 -https://doi.esrf.fr/10.15151/ESRF-ES-106105591 -https://doi.esrf.fr/10.15151/ESRF-ES-118169928 -https://doi.esrf.fr/10.15151/ESRF-ES-105805374 -https://doi.esrf.fr/10.15151/ESRF-ES-105804379 -https://doi.esrf.fr/10.15151/ESRF-ES-118169907 -https://doi.esrf.fr/10.15151/ESRF-ES-118169916 -https://doi.esrf.fr/10.15151/ESRF-ES-105710016 -https://doi.esrf.fr/10.15151/ESRF-ES-105709996 -https://doi.esrf.fr/10.15151/ESRF-ES-105564349 -https://doi.esrf.fr/10.15151/ESRF-ES-118169949 -https://doi.esrf.fr/10.15151/ESRF-ES-105493981 -https://doi.esrf.fr/10.15151/ESRF-ES-105362144 -https://doi.esrf.fr/10.15151/ESRF-ES-105261774 -https://doi.esrf.fr/10.15151/ESRF-ES-105142453 -https://doi.esrf.fr/10.15151/ESRF-ES-104972481 -https://doi.esrf.fr/10.15151/ESRF-ES-104970528 -https://doi.esrf.fr/10.15151/ESRF-ES-104774431 -https://doi.esrf.fr/10.15151/ESRF-ES-104655614 -https://doi.esrf.fr/10.15151/ESRF-ES-104410395 -https://doi.esrf.fr/10.15151/ESRF-ES-104404318 -https://doi.esrf.fr/10.15151/ESRF-ES-118169885 -https://doi.esrf.fr/10.15151/ESRF-ES-103850884 -https://doi.esrf.fr/10.15151/ESRF-ES-103822339 -https://doi.esrf.fr/10.15151/ESRF-ES-103670673 -https://doi.esrf.fr/10.15151/ESRF-ES-103510629 -https://doi.esrf.fr/10.15151/ESRF-ES-103510614 -https://doi.esrf.fr/10.15151/ESRF-ES-103333830 -https://doi.esrf.fr/10.15151/ESRF-ES-103183778 -https://doi.esrf.fr/10.15151/ESRF-ES-103116186 -https://doi.esrf.fr/10.15151/ESRF-ES-103115350 -https://doi.esrf.fr/10.15151/ESRF-ES-118169999 -https://doi.esrf.fr/10.15151/ESRF-ES-102584455 -https://doi.esrf.fr/10.15151/ESRF-ES-102576891 -https://doi.esrf.fr/10.15151/ESRF-ES-102440920 -https://doi.esrf.fr/10.15151/ESRF-ES-102373644 -https://doi.esrf.fr/10.15151/ESRF-ES-118169876 -https://doi.esrf.fr/10.15151/ESRF-ES-101905463 -https://doi.esrf.fr/10.15151/ESRF-ES-101872286 -https://doi.esrf.fr/10.15151/ESRF-ES-101843223 -https://doi.esrf.fr/10.15151/ESRF-ES-101823522 -https://doi.esrf.fr/10.15151/ESRF-ES-118169971 -https://doi.esrf.fr/10.15151/ESRF-ES-101569525 -https://doi.esrf.fr/10.15151/ESRF-ES-101127303 -https://doi.esrf.fr/10.15151/ESRF-ES-101113846 -https://doi.esrf.fr/10.15151/ESRF-ES-100748218 -https://doi.esrf.fr/10.15151/ESRF-ES-100483209 -https://doi.esrf.fr/10.15151/ESRF-ES-100444815 -https://doi.esrf.fr/10.15151/ESRF-ES-100389184 -https://doi.esrf.fr/10.15151/ESRF-ES-100329643 -https://doi.esrf.fr/10.15151/ESRF-ES-100129017 -https://doi.esrf.fr/10.15151/ESRF-ES-99268493 -https://doi.esrf.fr/10.15151/ESRF-ES-99054302 -https://doi.esrf.fr/10.15151/ESRF-ES-99051610 -https://doi.esrf.fr/10.15151/ESRF-ES-99036937 -https://doi.esrf.fr/10.15151/ESRF-ES-118169867 -https://doi.esrf.fr/10.15151/ESRF-ES-98516694 -https://doi.esrf.fr/10.15151/ESRF-ES-98484251 -https://doi.esrf.fr/10.15151/ESRF-ES-97799000 -https://doi.esrf.fr/10.15151/ESRF-ES-97692825 -https://doi.esrf.fr/10.15151/ESRF-ES-97579051 -https://doi.esrf.fr/10.15151/ESRF-ES-97560425 -https://doi.esrf.fr/10.15151/ESRF-ES-97543424 -https://doi.esrf.fr/10.15151/ESRF-ES-97349939 -https://doi.esrf.fr/10.15151/ESRF-ES-97308600 -https://doi.esrf.fr/10.15151/ESRF-ES-97284682 -https://doi.esrf.fr/10.15151/ESRF-ES-97062972 -https://doi.esrf.fr/10.15151/ESRF-ES-97059468 -https://doi.esrf.fr/10.15151/ESRF-ES-96823860 -https://doi.esrf.fr/10.15151/ESRF-ES-96823783 -https://doi.esrf.fr/10.15151/ESRF-ES-96822926 -https://doi.esrf.fr/10.15151/ESRF-ES-96822720 -https://doi.esrf.fr/10.15151/ESRF-ES-96822620 -https://doi.esrf.fr/10.15151/ESRF-ES-96614964 -https://doi.esrf.fr/10.15151/ESRF-ES-96614611 -https://doi.esrf.fr/10.15151/ESRF-ES-96499898 -https://doi.esrf.fr/10.15151/ESRF-ES-96318785 -https://doi.esrf.fr/10.15151/ESRF-ES-95948696 -https://doi.esrf.fr/10.15151/ESRF-ES-95945234 -https://doi.esrf.fr/10.15151/ESRF-ES-95941505 -https://doi.esrf.fr/10.15151/ESRF-ES-95938495 -https://doi.esrf.fr/10.15151/ESRF-ES-95902814 -https://doi.esrf.fr/10.15151/ESRF-ES-95608574 -https://doi.esrf.fr/10.15151/ESRF-ES-95608373 -https://doi.esrf.fr/10.15151/ESRF-ES-95601432 -https://doi.esrf.fr/10.15151/ESRF-ES-95600596 -https://doi.esrf.fr/10.15151/ESRF-ES-95455645 -https://doi.esrf.fr/10.15151/ESRF-ES-95282956 -https://doi.esrf.fr/10.15151/ESRF-ES-95217558 -https://doi.esrf.fr/10.15151/ESRF-ES-95212808 -https://doi.esrf.fr/10.15151/ESRF-ES-95212225 -https://doi.esrf.fr/10.15151/ESRF-ES-94944488 -https://doi.esrf.fr/10.15151/ESRF-ES-94929323 -https://doi.esrf.fr/10.15151/ESRF-ES-94920677 -https://doi.esrf.fr/10.15151/ESRF-ES-94756894 -https://doi.esrf.fr/10.15151/ESRF-ES-94638761 -https://doi.esrf.fr/10.15151/ESRF-ES-94636543 -https://doi.esrf.fr/10.15151/ESRF-ES-94535688 -https://doi.esrf.fr/10.15151/ESRF-ES-94529374 -https://doi.esrf.fr/10.15151/ESRF-ES-94520246 -https://doi.esrf.fr/10.15151/ESRF-ES-94374108 -https://doi.esrf.fr/10.15151/ESRF-ES-94212235 -https://doi.esrf.fr/10.15151/ESRF-ES-94201225 -https://doi.esrf.fr/10.15151/ESRF-ES-94190939 -https://doi.esrf.fr/10.15151/ESRF-ES-93862624 -https://doi.esrf.fr/10.15151/ESRF-ES-93841705 -https://doi.esrf.fr/10.15151/ESRF-ES-93644946 -https://doi.esrf.fr/10.15151/ESRF-ES-93598391 -https://doi.esrf.fr/10.15151/ESRF-ES-93597902 -https://doi.esrf.fr/10.15151/ESRF-ES-93592827 -https://doi.esrf.fr/10.15151/ESRF-ES-93253723 -https://doi.esrf.fr/10.15151/ESRF-ES-92352178 -https://doi.esrf.fr/10.15151/ESRF-ES-92349871 -https://doi.esrf.fr/10.15151/ESRF-ES-92219443 -https://doi.esrf.fr/10.15151/ESRF-ES-92202780 -https://doi.esrf.fr/10.15151/ESRF-ES-92177754 -https://doi.esrf.fr/10.15151/ESRF-ES-123016643 -https://doi.esrf.fr/10.15151/ESRF-ES-92162619 -https://doi.esrf.fr/10.15151/ESRF-ES-92162610 -https://doi.esrf.fr/10.15151/ESRF-ES-92161916 -https://doi.esrf.fr/10.15151/ESRF-ES-92161891 -https://doi.esrf.fr/10.15151/ESRF-ES-92150081 -https://doi.esrf.fr/10.15151/ESRF-ES-91877587 -https://doi.esrf.fr/10.15151/ESRF-ES-91846670 -https://doi.esrf.fr/10.15151/ESRF-ES-91846265 -https://doi.esrf.fr/10.15151/ESRF-ES-91836717 -https://doi.esrf.fr/10.15151/ESRF-ES-91822219 -https://doi.esrf.fr/10.15151/ESRF-ES-91732296 -https://doi.esrf.fr/10.15151/ESRF-ES-91732236 -https://doi.esrf.fr/10.15151/ESRF-ES-91656957 -https://doi.esrf.fr/10.15151/ESRF-ES-91586611 -https://doi.esrf.fr/10.15151/ESRF-ES-91586319 -https://doi.esrf.fr/10.15151/ESRF-ES-91585925 -https://doi.esrf.fr/10.15151/ESRF-ES-91421585 -https://doi.esrf.fr/10.15151/ESRF-ES-91076856 -https://doi.esrf.fr/10.15151/ESRF-ES-91076597 -https://doi.esrf.fr/10.15151/ESRF-ES-90633392 -https://doi.esrf.fr/10.15151/ESRF-ES-90633157 -https://doi.esrf.fr/10.15151/ESRF-ES-90632739 -https://doi.esrf.fr/10.15151/ESRF-ES-90632248 -https://doi.esrf.fr/10.15151/ESRF-ES-90632078 -https://doi.esrf.fr/10.15151/ESRF-ES-90610071 -https://doi.esrf.fr/10.15151/ESRF-ES-90531358 -https://doi.esrf.fr/10.15151/ESRF-ES-90378880 -https://doi.esrf.fr/10.15151/ESRF-ES-90375370 -https://doi.esrf.fr/10.15151/ESRF-ES-90375186 -https://doi.esrf.fr/10.15151/ESRF-ES-89193924 -https://doi.esrf.fr/10.15151/ESRF-ES-88836881 -https://doi.esrf.fr/10.15151/ESRF-ES-87561975 -https://doi.esrf.fr/10.15151/ESRF-ES-87416237 -https://doi.esrf.fr/10.15151/ESRF-ES-87410954 -https://doi.esrf.fr/10.15151/ESRF-ES-86896510 -https://doi.esrf.fr/10.15151/ESRF-ES-86533633 -https://doi.esrf.fr/10.15151/ESRF-ES-86410123 -https://doi.esrf.fr/10.15151/ESRF-ES-86039273 -https://doi.esrf.fr/10.15151/ESRF-ES-85858239 -https://doi.esrf.fr/10.15151/ESRF-ES-85392633 -https://doi.esrf.fr/10.15151/ESRF-ES-84149394 -https://doi.esrf.fr/10.15151/ESRF-ES-84145492 -https://doi.esrf.fr/10.15151/ESRF-ES-84010164 -https://doi.esrf.fr/10.15151/ESRF-ES-83826208 -https://doi.esrf.fr/10.15151/ESRF-ES-82159689 -https://doi.esrf.fr/10.15151/ESRF-ES-81910232 -https://doi.esrf.fr/10.15151/ESRF-ES-79263824 -https://doi.esrf.fr/10.15151/ESRF-ES-77484279 -https://doi.esrf.fr/10.15151/ESRF-ES-76990955 -https://doi.esrf.fr/10.15151/ESRF-ES-76355704 -https://doi.esrf.fr/10.15151/ESRF-ES-74854051 -https://doi.esrf.fr/10.15151/ESRF-ES-74836812 -https://doi.esrf.fr/10.15151/ESRF-ES-74746123 -https://doi.esrf.fr/10.15151/ESRF-ES-74255164 -https://doi.esrf.fr/10.15151/ESRF-ES-73115504 -https://doi.esrf.fr/10.15151/ESRF-ES-72804369 -https://doi.esrf.fr/10.15151/ESRF-ES-71559333 -https://doi.esrf.fr/10.15151/ESRF-ES-71391221 -https://doi.esrf.fr/10.15151/ESRF-ES-71096239 -https://doi.esrf.fr/10.15151/ESRF-ES-70356463 -https://doi.esrf.fr/10.15151/ESRF-ES-69596120 -https://doi.esrf.fr/10.15151/ESRF-ES-69376545 -https://doi.esrf.fr/10.15151/ESRF-ES-68688215 -https://doi.esrf.fr/10.15151/ESRF-ES-68682878 -https://doi.esrf.fr/10.15151/ESRF-ES-68260307 -https://doi.esrf.fr/10.15151/ESRF-ES-67542531 -https://doi.esrf.fr/10.15151/ESRF-ES-67159411 -https://doi.esrf.fr/10.15151/ESRF-ES-67090769 -https://doi.esrf.fr/10.15151/ESRF-ES-66943547 -https://doi.esrf.fr/10.15151/ESRF-ES-66521977 -https://doi.esrf.fr/10.15151/ESRF-ES-62119779 -https://doi.esrf.fr/10.15151/ESRF-ES-62119185 -https://doi.esrf.fr/10.15151/ESRF-ES-62054746 -https://doi.esrf.fr/10.15151/ESRF-ES-61877104 -https://doi.esrf.fr/10.15151/ESRF-ES-61873366 -https://doi.esrf.fr/10.15151/ESRF-ES-61783686 -https://doi.esrf.fr/10.15151/ESRF-ES-61665128 -https://doi.esrf.fr/10.15151/ESRF-ES-60977488 -https://doi.esrf.fr/10.15151/ESRF-ES-60682942 -https://doi.esrf.fr/10.15151/ESRF-ES-60226184 -https://doi.esrf.fr/10.15151/ESRF-ES-60225627 -https://doi.esrf.fr/10.15151/ESRF-ES-59883644 -https://doi.esrf.fr/10.15151/ESRF-ES-59848051 -https://doi.esrf.fr/10.15151/ESRF-ES-59508766 -https://doi.esrf.fr/10.15151/ESRF-ES-59321374 -https://doi.esrf.fr/10.15151/ESRF-ES-59284909 -https://doi.esrf.fr/10.15151/ESRF-ES-58957084 -https://doi.esrf.fr/10.15151/ESRF-ES-58831478 -https://doi.esrf.fr/10.15151/ESRF-ES-58784441 -https://doi.esrf.fr/10.15151/ESRF-ES-58581398 -https://doi.esrf.fr/10.15151/ESRF-ES-58494317 -https://doi.esrf.fr/10.15151/ESRF-ES-58077227 -https://doi.esrf.fr/10.15151/ESRF-ES-57726980 -https://doi.esrf.fr/10.15151/ESRF-ES-57504067 -https://doi.esrf.fr/10.15151/ESRF-ES-57502481 -https://doi.esrf.fr/10.15151/ESRF-ES-57176032 -https://doi.esrf.fr/10.15151/ESRF-ES-56717247 -https://doi.esrf.fr/10.15151/ESRF-ES-56717200 -https://doi.esrf.fr/10.15151/ESRF-ES-55833529 -https://doi.esrf.fr/10.15151/ESRF-ES-55558035 -https://doi.esrf.fr/10.15151/ESRF-ES-55416273 -https://doi.esrf.fr/10.15151/ESRF-ES-55384807 -https://doi.esrf.fr/10.15151/ESRF-ES-55108289 -https://doi.esrf.fr/10.15151/ESRF-ES-54672194 -https://doi.esrf.fr/10.15151/ESRF-ES-54642592 -https://doi.esrf.fr/10.15151/ESRF-ES-54639288 -https://doi.esrf.fr/10.15151/ESRF-ES-54384876 -https://doi.esrf.fr/10.15151/ESRF-ES-54308426 -https://doi.esrf.fr/10.15151/ESRF-ES-53832340 -https://doi.esrf.fr/10.15151/ESRF-ES-53827377 -https://doi.esrf.fr/10.15151/ESRF-ES-52898290 -https://doi.esrf.fr/10.15151/ESRF-ES-52776499 -https://doi.esrf.fr/10.15151/ESRF-ES-52749136 -https://doi.esrf.fr/10.15151/ESRF-ES-39438105 -https://doi.esrf.fr/10.15151/ESRF-ES-39148064 -https://doi.esrf.fr/10.15151/ESRF-ES-38942075 -https://doi.esrf.fr/10.15151/ESRF-ES-34876560 -https://doi.esrf.fr/10.15151/ESRF-ES-34497655 -https://doi.esrf.fr/10.15151/ESRF-ES-30150919 -https://doi.esrf.fr/10.15151/ESRF-ES-27341687 -https://doi.esrf.fr/10.15151/ESRF-ES-25934013 -https://doi.esrf.fr/10.15151/ESRF-ES-24212102 -https://doi.esrf.fr/10.15151/ESRF-ES-21481600 -https://doi.esrf.fr/10.15151/ESRF-ES-47877949 -https://doi.esrf.fr/10.15151/ESRF-ES-20306689 -https://doi.esrf.fr/10.15151/ESRF-ES-18443302 -https://doi.esrf.fr/10.15151/ESRF-ES-15527191 -https://doi.esrf.fr/10.15151/ESRF-ES-13178078 -https://doi.esrf.fr/10.15151/ESRF-ES-13171260 diff --git a/www/src/ESRF-DC-142893590.js b/www/src/ESRF-DC-142893590.js deleted file mode 100644 index 44c0ba9..0000000 --- a/www/src/ESRF-DC-142893590.js +++ /dev/null @@ -1,137 +0,0 @@ -var ESRF_DC_142893590 = { - "id": "https://doi.org/10.15151/esrf-dc-142893590", - "doi": "10.15151/ESRF-DC-142893590", - "url": "https://doi.esrf.fr/10.15151/ESRF-DC-142893590", - "types": { - "ris": "DATA", - "bibtex": "misc", - "citeproc": "dataset", - "schemaOrg": "Dataset", - "resourceType": "Datacollection", - "resourceTypeGeneral": "Dataset" - }, - "creators": [ - { - "name": "Naschberger, Andreas", - "nameType": "Personal", - "givenName": "Andreas", - "familyName": "Naschberger" - }, - { - "name": "Rupp, Bernhard", - "nameType": "Personal", - "givenName": "Bernhard", - "familyName": "Rupp" - } - ], - "titles": [ - { - "title": "Structural Evidence for a Role of the Multi-functional Human Glycoprotein Afamin in Wnt Transport" - } - ], - "publisher": "European Synchrotron Radiation Facility", - "container": {}, - "subjects": [ - { - "subject": "OPID-1", - "subjectScheme": "Proposal" - }, - { - "subject": "ID30A1", - "subjectScheme": "Instrument" - } - ], - "contributors": [ - { - "name": "Bowler, Matthew W.", - "nameType": "Personal", - "givenName": "Matthew W.", - "familyName": "Bowler" - } - ], - "dates": [ - { - "date": "2018", - "dateType": "Issued" - } - ], - "publicationYear": 2018, - "language": "en", - "identifiers": [ - { - "identifier": "https://doi.org/10.15151/esrf-dc-142893590", - "identifierType": "DOI" - } - ], - "sizes": [], - "formats": [], - "rightsList": [], - "descriptions": [ - { - "description": "Afamin, a human plasma glycoprotein and putative transporter of hydrophobic molecules, has been shown to act as extracellular chaperone for poorly soluble, acylated Wnt proteins, forming a stable, soluble complex with functioning Wnt proteins. The 2.1-Å crystal structure of glycosylated human afamin reveals an almost exclusively hydrophobic binding cleft capable of harboring large hydrophobic moieties. Lipid analysis confirms the presence of lipids, and density in the primary binding pocket of afamin was modeled as palmitoleic acid, presenting the native O-acylation on serine 209 in human Wnt3a. The modeled complex between the experimental afamin structure and a Wnt3a homology model based on the XWnt8-Fz8-CRD fragment complex crystal structure is compelling, with favorable interactions comparable with the crystal structure complex. Afamin readily accommodates the conserved palmitoylated serine 209 of Wnt3a, providing a structural basis how afamin solubilizes hydrophobic and poorly soluble Wnt proteins.", - "descriptionType": "Abstract" - } - ], - "geoLocations": [], - "fundingReferences": [], - "relatedIdentifiers": [], - "schemaVersion": "http://datacite.org/schema/kernel-3", - "providerId": "inist", - "clientId": "inist.esrf", - "state": "findable" -}; - - -// { -// "id": "https://doi.org/10.15151/ESRF-DC-142893590", -// "doi": "10.15151/ESRF-DC-142893590", -// "creator": [ -// { -// "type": "Person", -// "name": "Naschberger, Andreas", -// "givenName": "Andreas", -// "familyName": "Naschberger" -// }, -// { -// "type": "Person", -// "name": "Bowler, Matthew W.", -// "givenName": "Matthew W.", -// "familyName": "Bowler" -// }, -// { -// "type": "Person", -// "name": "Rupp, Bernhard", -// "givenName": "Bernhard", -// "familyName": "Rupp" -// } -// ], -// "title": "Structural Evidence for a Role of the Multi-functional Human Glycoprotein Afamin in Wnt Transport", -// "publisher": "European Synchrotron Radiation Facility", -// "resource_type_general": "Dataset", -// "resource_type": "Datacollection", -// "subject": [ -// [ -// { -// "subject_scheme": "Proposal", -// "text": "OPID-30A1" -// }, -// { -// "subject_scheme": "instrument", -// "text": "ID30A1" -// } -// ] -// ], -// "description": { -// "type": "Abstract", -// "text": "Afamin, a human plasma glycoprotein and putative transporter of hydrophobic molecules, has been shown to act as extracellular chaperone for poorly soluble, acylated Wnt proteins, forming a stable, soluble complex with functioning Wnt proteins. The 2.1-Å crystal structure of glycosylated human afamin reveals an almost exclusively hydrophobic binding cleft capable of harboring large hydrophobic moieties. Lipid analysis confirms the presence of lipids, and density in the primary binding pocket of afamin was modeled as palmitoleic acid, presenting the native O-acylation on serine 209 in human Wnt3a. The modeled complex between the experimental afamin structure and a Wnt3a homology model based on the XWnt8-Fz8-CRD fragment complex crystal structure is compelling, with favorable interactions comparable with the crystal structure complex. Afamin readily accommodates the conserved palmitoylated serine 209 of Wnt3a, providing a structural basis how afamin solubilizes hydrophobic and poorly soluble Wnt proteins." -// }, -// "date_collected": "2018-03-07", -// "date_published": "2018", -// "date_registered": "2018-03-07T14:37:09Z", -// "date_updated": "2018-03-08T16:30:22Z", -// "publication_year": 2018, -// "language": "eng", -// "schemaVersion": "http://datacite.org/schema/kernel-3", -// "provider_id": "INIST", -// "client_id": "INIST.ESRF" -// }; \ No newline at end of file diff --git a/www/src/ESRF-DC-142915526.js b/www/src/ESRF-DC-142915526.js deleted file mode 100644 index 305ff48..0000000 --- a/www/src/ESRF-DC-142915526.js +++ /dev/null @@ -1,81 +0,0 @@ -var ESRF_DC_142915526 = { - "id": "https://doi.org/10.15151/esrf-dc-142915526", - "doi": "10.15151/ESRF-DC-142915526", - "url": "https://doi.esrf.fr/10.15151/ESRF-DC-142915526", - "types": { - "ris": "DATA", - "bibtex": "misc", - "citeproc": "dataset", - "schemaOrg": "Dataset", - "resourceType": "Datacollection", - "resourceTypeGeneral": "Dataset" - }, - "creators": [ - { - "name": "Naschberger, Andreas", - "nameType": "Personal", - "givenName": "Andreas", - "familyName": "Naschberger" - }, - { - "name": "Bowler, Matthew W.", - "nameType": "Personal", - "givenName": "Matthew W.", - "familyName": "Bowler" - }, - { - "name": "Rupp, Bernhard", - "nameType": "Personal", - "givenName": "Bernhard", - "familyName": "Rupp" - } - ], - "titles": [ - { - "title": "Controlled dehydration, structural flexibility, and Gadolinium MRI contrast compound binding in human plasma glycoprotein afamin" - } - ], - "publisher": "European Synchrotron Radiation Facility", - "container": {}, - "subjects": [ - { - "subject": "OPID-1", - "subjectScheme": "Proposal" - }, - { - "subject": "ID30A1", - "subjectScheme": "Instrument" - } - ], - "contributors": [], - "dates": [ - { - "date": "2018", - "dateType": "Issued" - } - ], - "publicationYear": 2018, - "language": "en", - "identifiers": [ - { - "identifier": "https://doi.org/10.15151/esrf-dc-142915526", - "identifierType": "DOI" - } - ], - "sizes": [], - "formats": [], - "rightsList": [], - "descriptions": [ - { - "description": "Afamin, a human blood plasma glycoprotein, a putative multi-functional transporter of hydrophobic molecules and a marker for metabolic syndrome, poses multiple challenges for crystallographic structure determination, both practically and in analysis of the models. Several hundred crystals were analysed, and unusual variability in cell volume and difficulty solving the structure despite a ~34% sequence identity with non-glycosylated human serum albumin indicated that the molecule exhibits variable and context-sensitive packing, despite greatly simplified glycosylation in insect cell expressed recombinant afamin. Controlled dehydration of the crystals was able to stabilise the orthorhombic crystal form reducing the number of molecules in the asymmetric unit from the monoclinic form and changing the conformational states of the protein. An iterative strategy using fully automatic experiments available on MASSIF-1 was used to quickly determine the optimal protocol to achieve the phase transition that should be readily applicable to many types of sample. The study also highlights the drawback of using a single crystallographic structure model for computation modelling purposes given that conformational state of the binding sites and electron density in the binding site, likely resulting from PEGs, greatly varies between models. This also holds for the analysis of unspecific low-affinity ligands, where often a variety fragments with similar uncertainty can be modelled, inviting interpretative bias. As a promiscuous transporter, afamin can also bind Gadoteridol, a magnetic resonance imaging contrast compound in two sites, one near the human albumin Sudlow-site and a second hitherto unknown binding site.", - "descriptionType": "Abstract" - } - ], - "geoLocations": [], - "fundingReferences": [], - "relatedIdentifiers": [], - "schemaVersion": "http://datacite.org/schema/kernel-3", - "providerId": "inist", - "clientId": "inist.esrf", - "state": "findable" - }; \ No newline at end of file diff --git a/www/src/author.js b/www/src/author.js deleted file mode 100644 index 9539be8..0000000 --- a/www/src/author.js +++ /dev/null @@ -1,120 +0,0 @@ -function Author() { -} - -/** - * Set the first name as received from Json - */ -Author.prototype.setFirstName = function(firstName) { - this.firstName = firstName; -}; - -/** - * Set the family name as received from Json - */ -Author.prototype.setFamilyName = function(familyName) { - this.familyName = familyName; -}; - -/** - * Set the single name which contains the first name and the family name - */ -Author.prototype.setSingleName = function(singleName) { - this.singleName = singleName; -}; - -/** - * Return the raw family name. - * @return {string} the family name if it was found. Null if not. - */ -Author.prototype.getRawFamilyName = function(){ - if (this.familyName){ - return this.familyName; - } else { - if (this.singleName){ - // Check whether the family name can be extracted from the singleChain. - // 1 - play first Card : there are only 2 words in the chain. => second word is the familyName - - var findWordsRegExp = new RegExp(/(\S+)/g); - var wordTable = this.singleName.match(findWordsRegExp); - - if (wordTable.length === 2){ - // there are 2 words - this.familyName = wordTable[1]; - return this.familyName; - } - // 2 - play second card : Assumes all family names are FULLY UPPSERCASE in the single string - var familyRegExp = new RegExp(/\s([^a-z]+$)/); - var result = familyRegExp.exec(this.singleName); // null if not found - if (result){ - this.familyName = result[1]; - } - return this.familyName; //returns null if it not found - } - } -}; - - -/** - * Return the raw first name. - * @return {string} the first name if it was found. Null if not. - */ -Author.prototype.getRawFirstName = function(){ - if (this.firstName){ - return this.firstName; - } else { - if (this.singleName){ - // Check whether the family name can be extracted from the singleChain. - - // 1 - play first Card : there are only 2 words in the chain. => first word is the firstName - var findWordsRegExp = new RegExp(/(\S+)/g); - var wordTable = this.singleName.match(findWordsRegExp); - - if (wordTable.length === 2){ - // there are 2 words - this.firstName = wordTable[0]; - return this.firstName; - } - - // 2 - play second card : Assumes all first name are lowercase except first letter which can optionally be uppercase - var firstNameRegExp = new RegExp(/^(.[^A-Z]+)+\b/); - var result = firstNameRegExp.exec(this.singleName); // null if not found - if (result){ - this.firstName = result[0]; - } - return result; //returns null if it not found - } - } -}; - - -/** - * Returns the family name as title name. Only the first letter of each words is - * uppercase. - */ -Author.prototype.getTitleCaseFamilyName = function() { - if (this.familyName) { - allLowerCase = this.familyName.toLowerCase(); - var findFirstLetter = new RegExp(/^./); - return allLowerCase.replace(findFirstLetter, function(foundCharacter){return foundCharacter.toUpperCase();}); - } else { - - - console.log ("family name is undefined"); - return null; - } -}; - -/** - * Returns the initials of the first name. - */ -Author.prototype.getFirstNameInitials = function(){ - var firstNameInitialsRegExp = new RegExp(/(\S+)/g); - - if (this.firstName) { - return this.firstName.replace(firstNameInitialsRegExp, function(foundString){return foundString.charAt(0) + ".";}); - } - else { - console.log ("first name is undefined"); - return null; - } -}; diff --git a/www/src/beamlineurl.js b/www/src/beamlineurl.js deleted file mode 100644 index 491a3d6..0000000 --- a/www/src/beamlineurl.js +++ /dev/null @@ -1,116 +0,0 @@ -var BEAMLINEURL = [ - { - "name" : "BM05", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.fr/UsersAndScience/Experiments/XNP/BM05" - }, - { - "name" : "BM29", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/BM29" - }, - { - "name" : "CM01", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/home/UsersAndScience/Experiments/MX/About_our_beamlines/CM01.html" - }, - { - "name" : "ID01", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID01" - }, - { - "name" : "ID06", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/home/UsersAndScience/Experiments/MEx/id06-large-volume-press.html" - }, - { - "name" : "ID11", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11" - }, - { - "name" : "ID16A", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.fr/UsersAndScience/Experiments/XNP/ID16A" - }, - { - "name" : "ID16B", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.fr/UsersAndScience/Experiments/XNP/ID16B" - }, - { - "name" : "ID17", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.fr/UsersAndScience/Experiments/CBS/ID17" - }, - { - "name" : "ID19", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.fr/home/UsersAndScience/Experiments/StructMaterials/ID19.html" - }, - { - "name" : "ID21", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21" - }, - { - "name" : "ID22", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/id22" - }, - { - "name" : "ID23-1", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/ID23-1" - }, - { - "name" : "ID23-2", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/UsersAndScience/Experiments/MX/About_our_beamlines/ID23-2" - }, - { - "name" : "ID29", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/home/UsersAndScience/Experiments/Beamlines/content/content/id29.html" - }, - { - "name" : "ID30A1", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/MASSIF1" - }, - { - "name" : "ID30A3", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/home/UsersAndScience/Experiments/MX/About_our_beamlines/id30a-3--massif-3.html" - }, - { - "name" : "ID30B", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/id30b" - }, - { - "name" : "ID32", - "startDate" : "2000-01-01T00:00+00:00", - "endDate" : "2100-12-31T00:00+00:00", - "url" : "http://www.esrf.eu/ID32" - } - ]; \ No newline at end of file diff --git a/www/src/citation.js b/www/src/citation.js deleted file mode 100644 index ded59dc..0000000 --- a/www/src/citation.js +++ /dev/null @@ -1,80 +0,0 @@ -function Citation(doiData) { - function isBuildable() { - if (doiData && doiData.creators && doiData.creators.length !== 0 && - doiData.title && doiData.publisher && doiData.doi) { - - if (doiData.resourceType === CONSTANTS.ES_RESOURCE_TYPE && doiData.sessionDate) { - return true; - } - if (doiData.resourceType === CONSTANTS.DC_RESOURCE_TYPE && doiData.publiclyAccessibleYear) { - return true; - } - } - return false; - } - - this.isBuildable = isBuildable(); -} - -/** - * Construct the author list for the citation. Authors name are composed of the familyName in titleCase followed by the first letter of the first name - * @param {arrayOrObj} theCreator(s). When there is a single author, it is an object. When there are several authors, it is an array. - * @return {string} The formated list of authors to be used for the citation. An empty string when the list could not be generated. - */ -Citation.prototype.getAuthorsForCitation = function (creator) { - if (this.isBuildable) { - var authorList = _.transform(creator, function (result, val, key, obj) { - if (!(obj instanceof Array)) { - val = obj; - } - var author = null; - - if (val.givenName) { - author = new Author(); - author.setFamilyName(val.familyName); - author.setFirstName(val.givenName); - - result.push(author.getTitleCaseFamilyName() + ' ' + - author.getFirstNameInitials()); - } else { - // Here first name and last name are in a single string field - // creator.name - author = new Author(); - author.setSingleName(val.name); - - if (!author.getRawFamilyName() || !author.getRawFirstName()) { - result.push(val.name); - } else { - // FirstName and family name are not in a single string - result.push(author.getTitleCaseFamilyName() + " " + - author.getFirstNameInitials()); - } - } - if (!(obj instanceof Array)) { - return false; - } - }, []); - - return _.join(authorList, ', '); - } else { - console.log("[CITATION GENERATION] Author list for the citation could not be generated."); - return ""; - } -}; - -/** - * Get the DOI registration year - * @param doiData doimetadata as constructed by the json exctrator - * @returns registration year. Empty string when t is not available. - */ -Citation.prototype.getDOIRegistrationYear = function (doiData) { - if (doiData.resourceType === CONSTANTS.ES_RESOURCE_TYPE) { - return moment(doiData.sessionDate).year(); - } - if (doiData.resourceType === CONSTANTS.DC_RESOURCE_TYPE) { - return doiData.publiclyAccessibleYear; - } - - console.log("[CITATION GENERATION] Could not get the year to generate the citation."); - return ""; -}; \ No newline at end of file diff --git a/www/src/constants.js b/www/src/constants.js deleted file mode 100644 index 2f38c32..0000000 --- a/www/src/constants.js +++ /dev/null @@ -1,4 +0,0 @@ -var CONSTANTS = { - ES_RESOURCE_TYPE : "experimental session resource type", - DC_RESOURCE_TYPE : "dataset collection resource type" -}; \ No newline at end of file diff --git a/www/src/doiData.js b/www/src/doiData.js deleted file mode 100644 index 5cfabd5..0000000 --- a/www/src/doiData.js +++ /dev/null @@ -1,35 +0,0 @@ -function DoiData() { -} - -/** - * Get the accessibility status - * @param {string} resourceType the resource type for this DOI - * @param {string} sessionDate The timeStamp the experiment was started - * @param {string} publiclyAccessibleYear The year the data will be publicly accesssible. - * @return {string} - * "Open access" : the data is publicly accessible - * "Restricted access" : the data is still under embargo. Only accessible to experimental team members - * - * */ -DoiData.prototype.getAccessibilityStatus = function (resourceType, sessionDate, publiclyAccessibleYear) { - if (resourceType) { - if (resourceType === CONSTANTS.ES_RESOURCE_TYPE) { - if (publiclyAccessibleYear && sessionDate) { - // take day and month of sessionDate and year of publiclyAccessibleYear - var publiclyAvailableDate = moment(sessionDate).year(parseInt(publiclyAccessibleYear)); - var now = moment(); - - if (now > publiclyAvailableDate) { - return "Open access"; - } else if (now <= publiclyAvailableDate) { - return "Restricted access"; - } - } - } else if (resourceType === CONSTANTS.DC_RESOURCE_TYPE) { - return "Open access"; - } - } - console.log("Failed to determine whether the accessibility of the DOI."); - return "Accessibility status could not be determined"; -}; - diff --git a/www/src/doicontroller.js b/www/src/doicontroller.js deleted file mode 100644 index abf73eb..0000000 --- a/www/src/doicontroller.js +++ /dev/null @@ -1,308 +0,0 @@ -function DOIController(view) { - var _this = this; - // doiServer = the server which provides doi details from a given doi name. - this.doiServer = "https://api.datacite.org/dois/"; - this.icatPlusServer = "https://icatplus.esrf.fr/doi/"; - // contentNegicationServer retrieves the DOI metadata in another format required by google search engine - this.contentNegociationServer = "https://data.crosscite.org/"; - - // 10.5072 is the test esrf doi prefix; - // 10.15151 is the production esrf doi prefix; - this.acceptedPrefix = ["10.5072", "10.15151"]; - this.view = view; - - this.experimentalReportController = new ExperimentalReportController(); - - this.experimentalReportController.onSuccess.attach(function (sender, data) { - _this.view.renderExperimentalReportData(data); - }); - - this.experimentalReportController.onError.attach(function (sender, data) { - console.log("Error when retrieving fileList from SMIS."); - _this.view.renderErrorForExperimentalReport(); - }); -} - -/** - * For unknown reason, datacite can send an incomplete JSON object containing 3 - * fields when the doi does not exist. In this case the following code is - * executed. Reloading the page is treated by .fail as it should be. - */ -DOIController.prototype.isValidDOIData = function (doiData) { - return true; -}; - -DOIController.prototype.render = function (doi, data) { - var _this = this; - // Test abnormal length of the json object - if (!_this.isValidDOIData(data)) { - _this.view.renderError("Not Found", _this.origin); - } else { - // Extract data and fill doiData with it - - var doiData = new DoiData(); - var jsonExtractor = new JsonExtractor(); - - doiData.title = jsonExtractor.getTitle(data); - doiData.doi = jsonExtractor.getDOI(data); - doiData.dataciteLink = _this.doiServer + doi; - doiData.publisher = jsonExtractor.getPublisher(data); - doiData.creators = jsonExtractor.getCreators(data); - doiData.contributors = jsonExtractor.getContributors(data); - doiData.publiclyAccessibleYear = jsonExtractor.getPubliclyAccessibleYear(data); - - doiData.abstract = jsonExtractor.getAbstract(data); - doiData.investigationId = jsonExtractor.getInvestigationId(data); - doiData.resourceType = jsonExtractor.getResourceType(data); - - doiData.proposalType = jsonExtractor.getFieldFromSubject(data.subjects, "Proposal Type Description"); - - doiData.resourceTypeGeneral = jsonExtractor.getResourceTypeGeneral(data); - doiData.sessionDate = jsonExtractor.getSessionDate(data); - - var proposalNames = jsonExtractor.getFieldFromSubject(data.subjects, "Proposal"); - var beamlines = jsonExtractor.getFieldFromSubject(data.subjects, "Instrument"); - - _this.experimentalReportController.requestFilenameList(proposalNames[0]); - doiData.accessibility = doiData.getAccessibilityStatus(doiData.resourceType, doiData.sessionDate, doiData.publiclyAccessibleYear); - doiData.accessMessage = _this.view.setDataAccessMessage(doiData); - - doiData.citation = _this.createCitation(doiData); - - if (doiData.resourceType === CONSTANTS.ES_RESOURCE_TYPE) { - doiData.beamlineUrls = _this.getBeamlineUrl(beamlines, doiData.sessionDate, doiData.resourceType); - doiData.mintingYear = moment(doiData.sessionDate).year(); - } - - if (doiData.resourceType === CONSTANTS.DC_RESOURCE_TYPE) { - doiData.beamlineUrls = _this.getBeamlineUrl(beamlines, doiData.publiclyAccessibleYear, doiData.resourceType); - doiData.mintingYear = doiData.publiclyAccessibleYear; - } - - // Create a table containing unique tuples [proposal, beamline, beamlineUrl] - doiData.mergedProposalBeamlines = jsonExtractor.getMergedProposalAndBeamline(proposalNames, beamlines, doiData.beamlineUrls); - - // Set user specific canonical URL for this page. - _this.view.addCanonicalURLToHead("https://doi.esrf.fr/" + doiData.doi); - - // send to dust render - _this.view.renderDOIData(doiData); - } -}; - -DOIController.prototype.getData = function (doi) { - var _this = this; - - this.view.setDOIInTopBanner(doi); - - if (doi.toUpperCase() == "10.15151/ESRF-DC-142893590") { - this.render(doi, ESRF_DC_142893590); - return; - } - - if (doi.toUpperCase() == "10.15151/ESRF-DC-142915526") { - this.render(doi, ESRF_DC_142915526); - return; - } - - if (this.hasAcceptedPrefix(doi)) { - $.ajax({ - type: "GET", - timeout: 15000, // triggers timeout when request pends longer than - // 5000ms - url: _this.icatPlusServer + doi + "/json-datacite", - beforeSend: function () { - try { - $("logo").fadeIn().fadeOut().fadeIn().fadeOut().fadeIn().fadeOut(); - } catch (e) {} - _this.view.setLoading("Retrieving data from Server"); - }, - complete: function () { - _this.view.setLoading(false); - }, - }) - .done(function (data) { - if (data) { - _this.render(doi, data); - } - }) - .fail(function (jqXHR, textStatus, errorThrown) { - $.ajax({ - headers: { - Accept: "application/vnd.datacite.datacite+json", - }, - type: "GET", - timeout: 15000, // triggers timeout when request pends longer than - // 5000ms - url: _this.doiServer + doi, - beforeSend: function () { - _this.view.setLoading("Retrieving data from Server"); - }, - complete: function () { - _this.view.setLoading(false); - }, - }) - .done(function (data) { - if (data) { - _this.render(doi, data); - } - }) - .fail(function (jqXHR, textStatus, errorThrown) { - _this.view.renderError(jqXHR, errorThrown, _this.origin); - _this.view.setLoading(false); - }); - }); - - this.getDataForGoogleSearch(doi); - } else { - _this.view.renderError("Bad Prefix", _this.origin); - } -}; - -/** - * Get the DOI metadata in the ld+Json format as requested by google search engine for datasets. - * @param {string} doi in the format prefix/suffix - */ -DOIController.prototype.getDataForGoogleSearch = function (doi) { - var _this = this; - if (doi) { - $.ajax({ - headers: { - Accept: "application/vnd.schemaorg.ld+json", - }, - type: "GET", - timeout: 15000, - url: this.contentNegociationServer + doi, - //dataType: 'text', // don't convert JSON to Javascript object - success: function (data) { - if (data) { - googleMetadataObject = new GoogleMetadataObject(data); - googleMetadataObject.setDescription(); - googleMetadataObject.setLicense(); - googleMetadataObject.setPublisherLogo(); - - _this.view.addDOIMetadataToHead(JSON.stringify(googleMetadataObject.getMetadata())); - } else { - console.log("[GOOGLE SEARCH INDEXING] - No metadata recieved from datacite."); - } - }, - error: function (error) { - console.log("[GOOGLE SEARCH INDEXING] - Failed getting metadata from datacite."); - console.log(error.responseJSON); - }, - }); - } -}; - -/** - * Checks whether the requested doi prefix is an esrf prefix - * @param{string} doi The DOI number - * @return true if the prefix is an esrf prefix, false otherwise - */ -DOIController.prototype.hasAcceptedPrefix = function (doi) { - var prefix = doi.split("/")[0]; - return ( - _.findIndex(this.acceptedPrefix, function (o) { - return prefix == o; - }) != -1 - ); -}; - -// Selects what will be displayed in the main id div -DOIController.prototype.displayMainContent = function (doi) { - var isDOIProvided = false; - - if (this.origin === "welcome-page") { - dust.render("welcome_tpl", {}, function (err, out) { - $("#main").html(out); - }); - } - if (this.origin === "index") { - this.getData(doi); - } -}; - -/** - * Set the origin from where the DOI controller is created. This affects the - * content of error messages for example depending on whether they are displayed - * in the "welcome-page" content or the "doi landing page" content. - * - * @param {string} - * origin The origin page this call is made from - */ -DOIController.prototype.setOrigin = function (origin) { - this.origin = origin; -}; - -/** - * Get the corresponding url for a given beamline name - * @param {array} beamlines The beamlines - * @param {momentJS} date The date the experiment was performed. - * @param {String} resourceType the data resource type - * @return {array} an array containing urls of the beamLine(s). - */ -DOIController.prototype.getBeamlineUrl = function (beamlines, date, resourceType) { - var result = []; - beamlines.forEach(function (beamline) { - if (date) { - if (resourceType === CONSTANTS.ES_RESOURCE_TYPE) { - date = moment(date); - } - if (resourceType === CONSTANTS.DC_RESOURCE_TYPE) { - date = moment(date, "YYYY"); - } - - var foundUrl = ""; - for (var i = 0; i < BEAMLINEURL.length; i++) { - var startDate = moment(BEAMLINEURL[i].startDate); - var endDate = moment(BEAMLINEURL[i].endDate); - if (BEAMLINEURL[i].name.toLowerCase() === beamline.toLowerCase() && date >= startDate && date <= endDate) { - foundUrl = BEAMLINEURL[i].url; - break; - } - } - if (foundUrl === "") { - result.push("noLink"); - } else { - result.push(foundUrl); - } - } else { - result.push("noLink"); - } - }); - return result; -}; - -/** - * Create the citation for the current work. Citation proposes a recommendation - * to the reader on how to cite this work. - * @param {object} doiData the doiData object we have constructed from JSON datacite - * @return {string} the citation to be displayed - */ -DOIController.prototype.createCitation = function (doiData) { - // Authors sent in json can be in several format. The following call find - // first name and last name when possible. - var citation = new Citation(doiData); - - if (!citation.isBuildable) { - return "The reference could not be generated."; - } else { - var authorInCitation = citation.getAuthorsForCitation(doiData.creators); - var doiRegistrationYear = citation.getDOIRegistrationYear(doiData); - var fullCitation = - authorInCitation + - " (" + - doiRegistrationYear + - "). " + - doiData.title + - ". " + - doiData.publisher + - " (ESRF). " + - " <a href='https://doi.esrf.fr/" + - doiData.doi + - "'> doi:" + - doiData.doi.toUpperCase() + - "</a>"; - return fullCitation; - } -}; diff --git a/www/src/doiview.js b/www/src/doiview.js deleted file mode 100644 index 9ebb0e2..0000000 --- a/www/src/doiview.js +++ /dev/null @@ -1,215 +0,0 @@ -function DOIView() { - this.mainPanelId = "main"; - this.reportPanelId = "expReport"; - this.badgePanelId = "badges"; - this.metadataDivId = "metadata"; - - this.reportExperimentFileNames = null; - this.failedRecievingExpReport = false; - this.isDOIAlreadyRendered = false; - this.onDOIRendered = new Event(this); -} - -DOIView.prototype.setLoading = function (message) { - if (message == false) { - $("body").removeClass("loading"); - return; - } - $("body").addClass("loading"); -}; - -/** - * Set the doi prefix/suffix text in the top banner of the doi landing page. This is done before the template is rendered. - */ -DOIView.prototype.setDOIInTopBanner = function (doiCode) { - $("#doiValue").text("DOI > " + doiCode.toUpperCase()); -}; - -/** - * Render experimental Report data - * @param {array} data The filename list to be displayed - */ -DOIView.prototype.renderExperimentalReportData = function (data) { - if (data) { - var _this = this; - /** Only render the list of files if DOI has already been rendered * */ - if (this.isDOIAlreadyRendered) { - dust.render( - "experimentalreport_tpl", - { - data: data, - }, - function (err, out) { - $("#" + _this.reportPanelId).html(out); - } - ); - } else { - this.reportExperimentFileNames = data; - } - } else { - } -}; - -DOIView.prototype.renderDOIData = function (doiData) { - var _this = this; - dust.render( - "landingpage_tpl", - { - data: doiData, - constants: CONSTANTS, - }, - function (err, out) { - $("#" + _this.mainPanelId).html(out); - _this.isDOIAlreadyRendered = true; - _this.renderBadges(doiData); - _this.renderMetadata(doiData); - /** - * If there are experimental reports already retrieved then render them after - * the rendering of the DOI - */ - if (_this.failedRecievingExpReport) { - _this.renderErrorForExperimentalReport(); - } else if (_this.reportExperimentFileNames) { - _this.renderExperimentalReportData(_this.reportExperimentFileNames); - } - } - ); -}; -/** - * Render the error message - * - * @param {string} errorThrown The error which was thrown - * @param {string} origin The page which caused this rendering. This directly influences the element id - */ -DOIView.prototype.renderError = function (jqXHR, errorThrown, origin) { - var template = origin === "welcome-page" ? "doinotfound2_tpl" : "doinotfound_tpl"; - var message = ""; - - if (errorThrown === "Bad Prefix") { - if (origin === "welcome-page") { - message = - '<h3> Not found ! </h3> <p> The DOI was not found at ESRF because its prefix is not ESRF specific. Please use the DOI search engine at <a href="https://www.doi.org"> doi.org</a>. </p>'; - } else { - message = - '<h2> Not found ! </h2> <p> The DOI was not found at ESRF because its prefix is not ESRF specific. </br> Please use the DOI search engine at <a href="https://www.doi.org"> doi.org</a>. </p>'; - } - } else if (errorThrown === "Not Found") { - if (origin === "welcome-page") { - message = "<h3> Not found ! </h3> <p> Sorry, the requested DOI was not found. </p>"; - } else { - message = "<h2> Not found ! </h2> <p> Sorry, the requested DOI was not found. </p>"; - } - } else if (errorThrown === "timeout") { - if (origin === "welcome-page") { - message = "<h3> Not found ! </h3> <p> Sorry, the server took too long to reply. Try again later. </p>"; - } else { - message = "<h2> Not found ! </h2> <p> Sorry, the server took too long to reply. Try again later. </p>"; - } - } else if (errorThrown === "" && jqXHR.responseText === "The resource you are looking for doesn't exist.") { - if (origin === "welcome-page") { - message = - "<h3> Not found ! </h3> <p>It may take up to 24 hours for a newly generated DOI to become available. Please try again later.</p>"; - } else { - message = - "<h2> Not found ! </h2> <p>It may take up to 24 hours for a newly generated DOI to become available. Please try again later.</p>"; - } - } else { - if (origin === "welcome-page") { - message = "<h3> Not found ! </h3> <p> Connexion problem to the datacite server. Please try again later.</p>"; - } else { - message = "<h2> Not found ! </h2> <p> Connexion problem to the datacite server. Please try again later.</p>"; - } - } - dust.render( - template, - { - message: message, - }, - function (err, out) { - $("#error").html(out); - } - ); -}; - -DOIView.prototype.renderErrorForExperimentalReport = function () { - this.failedRecievingExpReport = true; - var out = - '<div class="card-header text-center"> <label>Experimental report </label> </div> <div class="card-body padding10"> <p> The filename list is not available. </p> </div>'; - $("#" + this.reportPanelId).html(out); -}; - -/** - * Render the badge template in the corresponding div - * @param {object} data : the doiData object as constructed by the doiController - */ -DOIView.prototype.renderBadges = function (data) { - if (data) { - var _this = this; - - dust.render( - "badges_tpl", - { - data: data, - constants: CONSTANTS, - }, - function (err, out) { - $("#" + _this.badgePanelId).html(out); - } - ); - } -}; - -/** - * Render the badge template in the corresponding div - */ -DOIView.prototype.renderMetadata = function (data) { - if (data) { - var _this = this; - data.sessionDate = moment(data.sessionDate).format("YYYY-M-D"); - - dust.render( - "metadata_tpl", - { - data: data, - constants: CONSTANTS, - }, - function (err, out) { - $("#" + _this.metadataDivId).html(out); - } - ); - } -}; - -/** - * Set the message which is displayed just above the "Access data button" in experimental data box. - * @param {object} doiData json object reference. - * @return {string} message to display - */ -DOIView.prototype.setDataAccessMessage = function (doiData) { - if (doiData.accessibility === "Open access") { - return "The data can be accessed by clicking on the link below"; - } else if (doiData.accessibility === "Restricted access") { - return ( - "The data are under embargo until <b>" + - doiData.publiclyAccessibleYear + - "</b> but could be released earlier." + - " Currently, they are only accessible to proposal team members." - ); - } -}; - -/** - * Add JSON LD metadata to the head of the page such that google search engine can index this page. - * @param {string} data doi metadata in Json+LD format as provided by datacite. - */ -DOIView.prototype.addDOIMetadataToHead = function (data) { - $("<script>").attr("type", "application/ld+json").text(data).appendTo("head"); -}; - -/** - * Add a link html element to specify the user-selected canonical URL for this page. - * @param {String} doiURL URL to the DOI - */ -DOIView.prototype.addCanonicalURLToHead = function (doiURL) { - $("<link>").attr("rel", "canonical").attr("href", doiURL).appendTo("head"); -}; diff --git a/www/src/event.js b/www/src/event.js deleted file mode 100644 index fccdc92..0000000 --- a/www/src/event.js +++ /dev/null @@ -1,31 +0,0 @@ -/** -* This class is in charge of the Event management. An object can create an event and other objects can subscribe to such event by using the function attach. -* @class Event -* @constructor -*/ -function Event(sender) { - this._sender = sender; - this._listeners = []; -} - -Event.prototype = { - /** - * It attaches a function to an event. This function will be executed once the event is fired - * @method attach - * @param {String} listener It is a callback function - */ - attach : function(listener) { - this._listeners.push(listener); - }, - /** - * It is called when the event is produced and will executed all the functions attached to such event - * @method notify - * @param {Object} args It is an object that the sender will send when the event is notified - */ - notify : function(args) { - for (var i = 0; i < this._listeners.length; i++) { - this._listeners[i](this._sender, args); - } - } - -}; \ No newline at end of file diff --git a/www/src/experimentalreportcontroller.js b/www/src/experimentalreportcontroller.js deleted file mode 100644 index 890a073..0000000 --- a/www/src/experimentalreportcontroller.js +++ /dev/null @@ -1,84 +0,0 @@ -function ExperimentalReportController() { - this.server = "https://smis.esrf.fr/misapps/SMISServer/rest/reports/fileNames"; - this.timeout = 5000; - - this.onSuccess = new Event(this); - this.onError = new Event(this); -} - - -ExperimentalReportController.prototype.normalizeProposalName = function (proposalName) { - var aroundHyphenRegExp; - try { - // extract the proposal LetterCode (before the hyphen) and the digits (after the hyphen) - aroundHyphenRegExp = new RegExp(/^(.*)-(.*)/); - return { - categoryCode: aroundHyphenRegExp.exec(proposalName)[1], - categoryCounter: aroundHyphenRegExp.exec(proposalName)[2] - }; - - } catch (e) { - /** It is most likely that symbol '-' is not present in the proposal name then we use /\d+$/ */ - aroundHyphenRegExp = new RegExp( /\d+$/); - /** This will get all numbers at the end of the string - * Example: input=mx3030 then output[0]=3030 - */ - try{ - return { - categoryCode: proposalName.substring(0, proposalName.length - aroundHyphenRegExp.exec(proposalName)[0].length), - categoryCounter: aroundHyphenRegExp.exec(proposalName)[0] - }; - } - catch(e){ - console.log(e); - return null; - } - } - -}; - -/** - * Request the experimental report filename list for the given proposal - * @param {string} proposal The proposal code - */ -ExperimentalReportController.prototype.requestFilenameList = function (proposal) { - var _this = this; - - if (proposal) { - var data = this.normalizeProposalName(proposal); - if (data) { - $.ajax({ - type: "GET", - timeout: this.timeout, - url: this.server, - data: data, - dataType: "json", - success: function (data) { - _this.onSuccess.notify(data); - }, - error: function (message) { - _this.onError.notify(message); - } - }); - } - else{ - _this.onError.notify("Proposal could not be normalized: " + proposal); - } - } else { - _this.onError.notify("Proposal is null"); - } -}; - -/** - * Opens the file in a new tab if it exists. Display an alert message if it - * fails loading the file - */ -ExperimentalReportController.prototype.openFileInNewTab = function (filename) { - if (filename) { - try { - window.open('http://ftp.esrf.fr/pub/UserReports/' + filename, '_blank'); - } catch (err) { - alert("The requested file " + filename + " could not be downloaded."); - } - } -}; \ No newline at end of file diff --git a/www/src/googleMetadataObject.js b/www/src/googleMetadataObject.js deleted file mode 100644 index 7c0e2db..0000000 --- a/www/src/googleMetadataObject.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * This class corresponds to a Google metadata object - * @param {*} data - */ -function GoogleMetadataObject(data) { - this.data = JSON.parse(JSON.stringify(data)); //creates a copy of the data object -} - -/** - * Get metadata - */ -GoogleMetadataObject.prototype.getMetadata = function () { - return this.data; -}; - -/** - * Set a license - */ -GoogleMetadataObject.prototype.setLicense = function () { - if (!this.data.license) { - this.data.license = "https://creativecommons.org/licenses/by/4.0"; - } -}; - -/** - * Set a description. - */ -GoogleMetadataObject.prototype.setDescription = function () { - if (this.data.name) { - if (!this.data.description) { - if (this.data.author) { - var authors = ""; - if (this.data.author instanceof Array) { - authors = this.data.author.map(function (author) { return author.name; }).join(); - } else { - authors = this.data.author.name; - } - - var trailingMessage = 'There is currently no additional information regarding the description of this DOI.'; - this.data.description = this.data.name + '; ' + authors + '; ' + trailingMessage; - } - } - } else { - console.log("[GoogleMetadataObject] - The data required by Google is missing the 'name' field. This is required by Google for indexing."); - } -}; - -/** - * Set the ESRF logo in the publisher's section - */ -GoogleMetadataObject.prototype.setPublisherLogo = function () { - if (this.data.publisher) { - this.data.publisher.logo = 'https://doi.esrf.fr/src/images/esrfLogoBlue.png'; - } -}; diff --git a/www/src/images/88x31.png b/www/src/images/88x31.png deleted file mode 100644 index 44671b21b30cfd36384918279174ea35d21deba5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1468 zcmV;t1w;CYP)<h;3K|Lk000e1NJLTq003A30018d1^@s6W5^2N00004XF*Lt006O% z3;baP00001b5ch_0olnce*gdgAY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBU%I!Q!9RA}DqT1`(IM;P`wQY`LVIEEW-l^#>1^aqe1kcfX!)LSH~ zpomn8R0&zGqUO+0skbJu#^%Fccnxb~d)M}QA>_(W;3vG*^RC}zc3JQT&KeU&8nND) zogJQi=6OG6Vnh^=#bR_{M_-BXr~6|kzfF6^UCNcRR6Hn9$tcl5wM<6cpd+(N^=6G4 ztp-_blbW_g%}&#;wndh0lG$o-AM~x%4SrTPN<3Dsl;g4Sj!ZU9TYD)=?P#>Qy+Iq9 zPh3BxKhnpo|L#mxfW81Xujgq0ut?>KPDbsJ!D_VX3}D-7QRl=a=W~aSPmk&3i(7H+ ze0I1EeJtDJXYee>C|7kJ6JrNK)^;{MkOA-=1v%yiw_0Wf)~p({6`%ps)i<m3^yjDa zF#hn;Qoud5t^U5secQ)v{wQE{rBPuv?;q~_Ku%}3D7CA(AZIp4#^RUDFKKpm_R<`2 z4{c)s7_y*(3t*ZZi&>dSCTMzkx^LY<-^8B@eijk}Hdj56i=JF;=Q5Pub3q;ji<5sP z>Cx;XZyxjW^R%?I#1+?aAAQg_Qh=e8kcA6yo6N+8XA3^?rlzK7adDAWR#r&Yb*{L^ zJ+!HP@oc4LP|I;a29qHdt|n(`x3J@viW{(a{ofB1kH_8jE-cX5*%<{3?x78R&^HQ@ zJ%C}*pqG#ZFgFM;zypxy=jU`?SzllG0S&eQWPC7uIJ^UfuTaiYc7M;6iVzkL`i}^6 z@uAhCSaaVTWp0rHjO7cX1kJ_LR>7T{n+s*cRRtdb&!|ksn9yXr<3cJF7VoA=+uj^X zCZMar+%Ko6Jpo1$CVy>B_5e0m8tQD&pt&lzy;$21$k1dMK9-8QL3+hyF>7(&)nbu} zK>-$nHV6sOR}5by05f}Slchln8kV|k+caze$RZaQ6Jx`L6BZW_To$Vy#V|4<1}#`1 z7xICF(t#p|FA{*Ek1eOgu9!>;ntRhCdWQ-Z4l6{oxYTvqRGAnSV0a3_5)xJU3Z97! zU_@y4iOs&Ouve7^cni=ie05Y6{9xPK+M4el5f)=?XfYzbOEQtmxZZ@K!*>c`7&k0o z2_n=b1pveRU4W@+T4<a4yew6Wjff9YRPDNKg>r$t3Fxr6Yj;v2kWV;1b-W3wEEHok zGc&`+0f6Hg%U{~W(*WSo7A6x2tD8O@F8JKFVF13)$X&(W$c-F)U*r{JLI5#1$uLds zN3YctfOo(rJ~EF+2C(X;^$T$1ZrUURJZPXH+8b%0(XT|n@WFM%H9%D*BG?v{L`+1e ze4UZI&XDzE<b*M<k?ZigMrq_!kkw=lK04-s_p3qASdu;Brb&nl*DAQouX57>vfK~0 zp@7k<o7Pa=w7h<EH*F%)l@e&EVRF!)9c7?#*bOw0x|BfUrU{>0op7%<!b9aj;`?!h z$`b*wn(X=T&)=g@_9PQLHj+Jfm!vG!#QU(xo{0b$b@|n@m#%#N;<*pxL6SaTeQ3I} zZPM#EufN6J<%=Inzy88*RA-2UJKE4kO}Ib)@i9vS{A_%{Z*=?Kf8)1T%Nz^<WR=Oo zY#9OER;Nkt-oK0L971T25$rQofIX0HcheJ^Jn*JxQZ_xU$iNMP7j``caKix>xlp(5 z0a~wZd+c2Bwmr^Aw9Uw6p;x-{R!D?ezyIMo($X5caPX6D@8F4}96WLOo_g>kmC@+Q zPfx~iROvQJLvMhk0<5=xyrp8fs2rW@Rvevbo7{#z;{bMI8GK(yP>JZlJrG~-bmjlX WBQ!IAXsN6K0000<MNUMnLSTaN(W_km diff --git a/www/src/images/ajaxloader.gif b/www/src/images/ajaxloader.gif deleted file mode 100644 index f649c88b8cb481761e3292f906709c56ede96773..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7364 zcmeI1SyU6*x`208WhMz>9#l-iAhQ7h#Q`f25F8^S&7c?%5a&p%jYHcZ2^!`Z5fw{h zZd4i(gJO3;TGI*`5D{$D2!fy}gGi(8(Hp(qJ}-CObzja}=d9KHp&oX2{n@qheY^hu z&oV!s1@7S-zyVVLw6wH*`t+%-t*yPi{r>&?zyJPwXJ@Bo^6uTc4<A0fckf<rZ|{Q# z4^%2ucXxMdYin0m*Q+l>v%asd?~gzJc>n&rCc^mmxaQO6&!0bi`t;44H^alj0|Nt^ zfFC}57#tkb1Q{6_dHeRQX7P&`FFHCpUcP+!?AbHT8ch&Q<kzoX_w@Aq_vE{G?<OZF z)oS(V=%{87j~_pN^5lso&h+&3#Kgqd*qG+3+1R5;kEW)k`uqDe-=*1xX3fyhkmg3s zf<OQK6a0q^)<;vX*r@QmQIX8=w(gB#hHndx+p#-5(sApq=-q(z4hJZjCt-ckTJ0UM z&Wp?Uc6Q_-kY>vM^8<eV5dra&2#6)pgrmn~iAl*RscETt_PE*UxyJ}>{T$$ES16fn zkL0D#GB>vsYw1);^b6U=i6oNP%tC(I&Y(fesM2w*IY!pkHvzMa?${7*?ih)!8Vr<x zOuYeqsWKH?-Z2EWDlzkpv6!l*MJL|S?VJIuR0Pujw#p75BY1l4s%k)MBF8wqa6lAL z$Wh`aT~c+VqLBx*u=oYwRa0`Ts@XD#k14FV1T&5)-?`C`s^VaxE@2NfhDH5g&LnZ; z_osAau0+)eN!s1KM%h}f4=(1T?^OhQ^Tf}4{fZEK)gHW-7h{2HI@n(!!MS~Oin~<~ z^}ys$`kl`zWWWzk>CUvr1UlkmV76fT8xfaOmuwoa(#}9wgzF}h7r(!YT0&9>Ez|1N z^H_O8);wdOVkhiRQKxNV=4@1W+LOJk4&KiaL;K&>trSgv`!a8@A4{-7_X2{?)}tA> zT&OGQBd0Ce)m%T{n@A|#ZtlwDj*spklbPtxhY#GXq4oydE&RvJ)+haEy7Cqt*)s`K z8LGQy79aG7)s||}Wot3&J^EW8Kxi9EMaZQSE>xad@vj)0Xstk{OC83Zm{$z1KYQ%q zT70nIh(*R}2p{NQ06pF(M-$$B-xUt^Kq4S*2<|We?|xOT7D@&8Fec@cZ1W3C%z?Rf z4aZQ$W^3;-Hb+dY%1B|1to5OZXU2m%0NmnM!Xj3!LvuZ&?~ziR7GfPoEr0R}VQKdc zK7xBJ>YryP@2xLRT>5n2(N>N#qvVKn8e4?nIc%`OXy5aVZj1>sfGoX#JBiGy+zX(` zZ|`?8#j_~S3Td&nQKhiU*mEXw*f=2NGS6hV)DlvaM6EsOyD6n0YWeXWrENspMO!>N zW}!=71v6{X(*jnUSXys$=Un#iLQ)M-`F)dBN6)U<qPFV!kr}efsJq5N9Qq0tT>V}9 zpxQt8-1RgPN0Iq~U_Yiv!ogpSfc`)DBRDci{1^UOT6n@g@rSj=R5vZM*v{bkSN;ij zx)_$@&)FE=6<b|5FagAQZue`DGI9kd#p8hOT_Z8`uJN_1xq8j?M>IgVLo^)(>_I#A zy_rPW5^Le@MkK0?kgvSexZx-?=!k0Yj|bddiiH4(1Q22F#EDCQdCZ+ArXN<7#-LE@ zIlvhz#U5Aa3`XZ`#lJD}14{zqf^_)pExT~=!Idgtgb<u;l`_FDZnGW;9O|yTK`=+2 zrjb!0WxXUMfhojv_T0dk=zRL&aA>FE+|2?lWBpaq{@|1uI&*p5he(ayT<yNxC`R^L znbt!1PeG2LAJhugwC=>Q*lGDl^sbxJH8lgszJ0+D$EkP`Vc9B{-81K^t#GQ{EH$ew z=M_#$Oqkku@RU7HetX+q4D2j|l8m0!O~%%XZ=`z?F9x)O{Sj)SMfqxvc-Rvrm2djx zh|8}t#`<raSygcOz!=c)p7Tqv2!cQ1%L@<Xk}yR)i7iiLlLB~W?CBiNU30=hf$2Qh zK_FSD$Bq@j)D6BW80S`WX7`M&=|@aLz*Lsa<LN8dE?Vt$k<E-sAK#q?8>ONIMKIeG zd`z8Rv?pOl=h+e1vB*Dh1<q0!B<XLJDG`?GZ$Q>&6N@F74b&B}RIctKP#U~d3C%MQ zm1G`p?<mS7{1$1k1Ht_vg8Ouub+Y>hoJ(1Pg??)=Vp`dXWNP>HljL(GehidC!rH_8 zQg3A@?9m;|N>#XXA{>a3{)z)Bd-L;)c!Y)NW%v*I3K(`_l&2v%F*%thyM1jyH4LI{ z-Lgn#*=HzC6?+=Rl_Rok(eoegAmOeGs<Yazk_(QA=h#I1&~>X$_mP^4FBA(GK9DOv zQqbem*X>@w^U_W_oFDhN(j%XYJ3co7**iU|z!{zLWquU^{yzmE(Fus={Qn{VVLl!w zAy7}|rF}NwR3RoVt0+nQ%KwjN#K;wV@lOd~=>IwA^fgc?7i-8jX++A&mEa<F`~1aj zI~|?5dX4lh4fQ`0d%^W`xX0klOk$%pzMQUos~maN8cUO-V=!(7VP^BUTT&s>VZ3qe z8v=6~mv+}<WvB~=#^ZAGgV$kngDc<RaShfnTz<NNSz!0NX7zd)o?=?X2$Q)8LOJp{ zmXE0uKI0zr1^0_GGAgoNkAx)Ptc`<&8r*$;5QKJuzGYcj#w{zQ5<$ugpHFjnK^ojW zfp*LKC`Q(2-22`Oa+uJjD*mcKu|S_#g3tpQ!GiMsTTO?xb6TUe61n<dTLUBFtjn?6 z?<x&{?zz$dnV})g4!##+Tg&H5>ho7I5UsR>Mz#BAJ!oQFO(B%i2$&!vwMBAT@U-aa z+ZUT55>s*g&>tfui!+SZ6duNT<}IoGL+PH6dyEUE>k35ZKmP1(4E2XT!AHGG76H_6 z>C*v;f%K|Cg)n__wTQOlY_<}ja4^BP_wGgLHtoj|ij7iZe*Utu4PLW3=`mL9#4@z| zF>}@dy)_mItXsaTDpkip@_GG;d?~Qzu<g@>j^6QvUd#H_EbSoqW}ZRBWf@GdAg$fb z49ikyBc$qwSqU@w>!4L0C-ThM9`)Mu*0^N^v$S_y?myw#b^^^i7UcIVNsC{<*^#}x zcJucZ{%ld9=G0d#)1q;TyvT)qqGfhgAb4Bt%nUz>;sQs8{jhERoQ2sRbt?d^o4omG za?nt_m7Ns@tpGt4lrvRsY>N^x?;+)U?o@$ke%gZNDNIs}ALaZpt7?T+*kC`ObBsOp zj9FV#pOR6Zr#l?f^V-%fti92%^HTT0$d-x$s|jsZPwAWRYw08o$e0}barEcJzfOJR zUkJT~Ol<`JWc~rQj81H%-~WRA@ArO&?_K=$FWz6a)@xrRzqU0IGBQG-7%*fYsJ<{m zge#};`*_>iMKE#BkwxWTR^`s?d@?6v6$3svuK)dyKIo|?9Br3Vi~xmNL+K2K-m;1N zJntn=x}Aybs3b{>vz8n02^5Ex8_PC#qO4_E{zf`z3EEg8qZqPCBsEkoqaJZA8V0sb zHHn{e(HVTFA=hPaSR*V{G*Z}F)QyX+=f8@tthcvOlCYavEJOCUjFoeXdU3eUz>wZP z@$<Wdb2fx*tzU0rgmE_u!pBG8)^vJt9VfE#926}1o}R@m7}c}iK$`9N!4W{XEW2-Z zHRKR=Rp*waqcNPDFOBtx*%_v_3B?4GboQBsdP{>xOE)tXaiZ)E?FDxJFVr>70zKK# z0~8V$Ary{aQ`De4>=j80VM+-fO(H}aj88|j`YIMr0Gv+ocU*eTzW&t~u|0!Is#&*C zr0reo)5KEco6BIv>j4>QVW%}$`|x>@WXnAJ36Y2_Xhuc8Hbn{=7GK@;fN9dpEE2rM z+hl^{>tmGA4EKxz>UF0HEN6;i9)%n=m{9n09Tg~HX>lN8{?_1Ezk-eU6L%z3yh)fe zN19P^*l$(<L)zY1W(9EiQCl|Uw!@8EEM58{g7*x1S}qy1c%OV0cFBm2Am#|U$J0r& zb}Q`&3t1^>u2^2Fr9VVUiLIlowW}&E$VYO6-zfq2rUWf0uC^7OJ-Ojv4Chvt<p8rP zsh*lrb2DOSV|z!4g6aL<$7YFwcgUV6JP<1Lkn#?tK?4Pgo`CGDcB2iGR=T9G2R!a? z*8g|b``*5KjU^KYN|*3mk6YqRAeSI=8{?iVR*%6C-8$TL(Rg6BgNta-U|<PD-a3Lp z{ye135!*oSZ|o4x*!OtDHY~ooV>!)Nef2wWwFJj7UVTdb<l%e`>xHo)qtA~@SVvwz z9QB0>)!T0shHiZ@`Xrv^$*DeIV`v|wL7e#oaphOUjpb!m)YIn1hB#}CVcNY#2E~T& zO>#9)e6B<oJYl0$e|5fO^M{hY)fNT8&Jv>AOtqJeK^XcKbMhC=n>Cn&nbj~|udP~% zydSUQA1SjGuTEfAaeN8$Rf9p}hdk&^G?H#OA)?vw)o7w~q>3c=cz7cvJ(-3@5@vTY z8c*0pj(H`zayr7+o*Jt|ziAi{GZC+<YEPPRfVzwZr2L|T8sPcj_S!3`3r<knbYj*d z|0x-uXgE2wJgDnr{bIj#_f$i*<ct9dkOU`EEJ`+t2~Ip>yi?5d5lai81Z$9iT<EAK z%>hYuy0*Y#H3`55btZRqHRoH*vAN-oo+SY)mqqU&sR!IW=*}aEejy2vjhY$7E=iAF z?SUbGL2gYwEy8e#qUsu);L&_iBSF<6h1Ax%;-Wngvv91DH0Pgb4*qWo{@pAf&a<=G z#|SQJz`I2jtk{b}lBr3<nLkLUw;%q8{It1|Pg&5sthh8rG}!&Faf{d99|n#mEy|3E z_S*zfn$<R#4%~WJlfJ0K(!kLb=(F*on5GQ9#YCn~=lQN0u_+D|NsHb30L-gnv$VUb zVLYjKnZPC0UWrXFY2hpYS_EZ&Bhi&7D50?Eacpzf*O!?~Wal}Nnbc~IG~ZRgZ!B<& z?2gi;?m|8n@p;pf>nL-V5CZqBZs0{>LKtZBcOcxZVQ_c-g6e2Io7!Hco$d*|FsBcf zXPf(cgcVxxW>{0fqDY1{1w0d0y08r`eKBVsfU%{3&%*$dF@$%;U7Fz}o@NYD0T0BG z0iRK>VPD5u!@j}-ER|A3I&u$&HCdb?<Wijp-=dfjRzMd(kiY?4AM{ZY<NcYwmqnBs zPs~HU$c$pN(t8vyPB|1$sU1EkL#%y)q>(y*gkv7BY5#m_0}=j~;XhCY34rG0c;-V5 z1H?15_J8DVvVA>SEheI}2fi93I=>o0<YPAy7fShLfgHy(+ihyvfe?*4<Kn4!suS0I z<4<LpL{qm$oa#y#=i+oyK>SBGamS?Mdz{Y=CFIRG5RaHB`Hgw5)dI!VD2HEvhuf_= zg5>1IXe8MLppsN;{pu!)K2re@`^YQ`gwtgD>BdfdUYTNQ@HsrOK~zj}Y;i{<#93<e zNbO8)jxbrFN`iRw+9-`6@sY$#)B;5|`;?_y5*a2qFt<BSL<xNjMCp}i<rx<rhK(#$ zBZz0}Qc_$7GrLgtocZo9`EQtO8$fZcc`DW+tsQJdzW+_<8+Z@Wgro{ghHQ3dxEwKf zq_H;SJkzC6OLQWh0!Qzf-R&DMcQcjj%&6D2yEIz3UTApUYdB_3$CwaRYnlCcbM9Xi z0r77o{)I{$?KJ6bJ@f~8>pfk$Ss`<TX=w4eBEZF!%}|~5T0>UcOnBLS30b!Iu>6Uc zb5pX>6IkAHVW=Hhv==l{*gR+7Z#kE;By>;vfNDW_g655(j9ksu!+_`h?pF+I#3sC4 zvGZ7lNWIUS%2n*nV?>LDlc#jCa4E=~MYo%&x<N4mKZTip4{>ylm5JPx&;vZH4bmUN z&e2%`u(2b=s(v~*c~ZgM@2t;h9>%5a9S{lMSzK09NdM!>XH5XY`JxGP2qicNV5M4; z&$R*H=bUK6B&by)J-N);wC=N<=iKM$ykZC^s4YldbM>Z7+m+%uu+MPj*fY3YzaU9S z_I=3u-2D;l`65S;i3sEj2APt1unVx1y^qY_$cWbz2qnOx@^*&y^3Bry^`4!S3tpy! z=rKEwrsw-ko?5PLBd2hNt>9*xR;tmof_zM(zMUdG-!g0@Y@9my<9YBQSivmI+}?HR zQIVa)kI$@hw>P|ug~PAM(KyUs0MWjh{nrbD^lwIgBBqjjb2(;`!U=jnL*W3t^`4^3 zN_=Yaylv~(iRkz1!pd>RN-Gj{JuWG1X7B;tEfGT2bCLgw#Y1?v-R>w@)2sYOS8o=& z=WI+nYq3`GHZ(H>;1ONJ{9Lu6EuqgikrSeSV}4aK3G>I)`aFCx0h|;`UM674pLQ&) zUT%-^X*`#1xmEmjOX#9t{Qdq^KBOgc2*^0wr0CMpv$wI%5cx}XN3W$9JnbsS(}c6R z2HOL-igCf@S#oaCn*;%As9-;a4WA{NJv1y~t+I)FxPL|zXAdNHL9)cN{kLHCZwBWS zuUetLb`Y+W1Z8x$oxY|se0rB`_S~>bv<E&VYc7Oc=ZMUl`|ccn;`x4E&Ga}DN)N~D zuuXjX(N(z%RPl@?R-JgURyUgMp14v3lP<hsv_wX`%SF&_a!1G(?`Z*$=FSx8?VCK+ zCvZ#vjRqPS7{6_;aQ8F@?6Yyp?J5lnc!88tr8$REc;4Emr3w0|@5mJ=X0fNH=niE^ zx}zICR+mIsCLttYfmPDXu~m@vf{ISK-KEGPX^JE1i<)aN0Rq19(R-Hb>liVRacYB~ z;l6t7dd5BiLuh3Qk5uTJ!+b*(@buYiSpbX+C>U`;2KzJpVE-Q4grcxMPE#%9waG<* zrgoQkl;pp=<8DofumOiEi!7G#0(C9U$UQo5pTAa9K5Vnn1GaIp+~{}ve4<BfVnq%i z+uHk@AxC+Bm!n?fMc5<2_{uNa?36hjsmrxFy*}3}_a-T>zA8E;B#mxDGU7&m{xJ2s OruVt%^M77n#(x1GJ947{ diff --git a/www/src/images/esrfLogoBlue.png b/www/src/images/esrfLogoBlue.png deleted file mode 100644 index d3c34c0adba394833a37f61678af6463e5a8a711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28059 zcmbSS1ydVsxDD>^ZYd7MrML%o_u@`*w+1OzpoId(p}0H6f)t9oLvbk-cfb4HnfnKB zG8u-=&Ti(F=bY!9v!6876tK|A(Lo>(mLfz}3j~5=2R;g@$iNW_wGaP*KZtfxs!||O z-Div^OC%5oUBp2~Mnl8i&CAWx-p!p>QAUQ=-NVh+!Py1`f_%zO^VQK_B95Nu6ztSU z!HxYo>13}355ek$By+NIqv0ySl0ftVvO4avn#skeJj@$mg)+%?^s$j}nsrBrWU{j# z+zBbt6s@bs);s)9$G)%A+=e*ic22C>od(bU1SLIvMCw&BKnugnHz3^H{}q!EXJ>%| zhj|7<a0YF-H#A5S-^s&gzy~eHJ7*Bwk#zpVroDe;oso#|0lnsaZ8N0j25F?n?_b<4 znUIkT35n@vy=hS&N^j;<9p_RSr#Fn?(fi_g!EPLMlVO7+e8~e9B^&V^-?BN|S!LQz z5XSF{PqrW<*+;!=<LP3w`sk$?B{|@>Q%4r0CIDhiS>@dG)V6l!uu5U(iQw4w2W>!x z%+IFZ8jMa5jNtqlA2s5{2baW<F`8&cC43=>+nktC-H-b<%7rbMz_7)=m_cSpx#<D2 zop>@N^mievrx#fi5*Ffe;c)3<o((m9`kr#@lV%1DJt32&x$C>p56Qp+)fU?{Ej>iL zI1qtMkKi=gpQFbt-hyK5yS%Z3KT!V+GSlkcVz*<fSY0(yhRbzgd3$jBkc%BEV;(f2 z)wOoIYw36SMJUCKTgFV#)i$75w*U9|mis;CUT*Xq4a$o*H8I{3xGU!ES2@{{Vij7I zv?k-<1Tjb%(ovFkxtVu3eJ@2zZE2sD@9-wm4B&szkxPb9gP2+IXwd?#*(OheF$NS6 z?#JS$GSagjCn8>g^;=b5eiMU36Ri|vd0O!`$NyzM8Nu_>g5)F-4kalL5C~w1%`m)H z5Y7eyycBZ`;s*=vjR?XdI9XZ}!my@1(ytL!7EGnc-g$U@9|hb=y~3?F_=He6!$&L- zSK+j{uyev#&d^6CaiNjFaf!5|y=Y~AQ`ScsBvI@jAj#lqP<};yBO?ugCz3qM(<-Gb zk2=h^Jup6C_9FiY!jfsp)3nEbAPPWX;6f|zF{;ILMryE77eY;hlJpFn@d(jyMzp|E z-4TLtPoV03-!||J&?Ul4@WOEM-W9}g;Su-BODFq*(eUUhlJJY*9VC~NsEcUYVj;;T zzl{lz<>a_ERK8*i(-1{&6{O|s<qH&+Yocgmmx|Bo&N4fqU*oCDI~9ygjURx#*x!+5 z$8pN*=Y5}~I%qh+yApaJLjIU<70;bW8mdCcNYnt|K-NGplPDZXHV|)FTxU@EZl3Ze z7VDQs?R#hLX7oVZK>R=?k;LGS3|n6A%|hlTqG~a0{kj`Q?o96b?gXu59r%B6PvdcZ zU7n4c+uX?q;e?<{B<9jF6U3ucLm|?vmK^yhlk!5!t;&8<VEpSCwSM=4u+}I8MNwH% zb;>tgZ!{scU;&nJFr5qCF;h1E8ht12mmzs;91l@Ll|Rz1jJb5{Ox>D!tOl%z%x8pp zY_rT>tR|X%#WDJPI#)U-mFYDG`F^q=Am?THW<!uqRsEVqKXeMcbpA$7H}dE%$qVZU z%lJ2V#9bimDiE^&irJFc)Qn|*WVU0r(t(z%+i17Vde6!q8XgK^$?z5<O=>y(Xmqpx z*vLW@8=I}vsFb6WF#Lgtg({z73gO`I70-j^gZG1oE{CqVZr35>oWLAgdClBjsekGD zoYL&_oc!#cGTzzX*_qjvGT*ZG8A*q92dLAI<G(4PigPb)m&6guldKfs=>64sDE}BA z1E0SA$qeOW*8KGR#mw+@`SiQOYn|`a$NAaioidNmn<8x8K~;sk2ATb$ajPiwzAwq+ zrPf#6#a{g0&)#o-UjO{~lQ&=>Kr<jR;5gv+3hjaY8T?H3(D|T^{0^B8840-xxdrPy zioK7p&ot^eswN>m;eEUSsW+Jzj~*{J*SMf7f0vWAzz0D?+i44rF+!_h9#!5omw+Wq zfd)Zk?h0-Sp6D^EQKY^0v1pD-Vl`svIOI4A75tem8GX(+iAK{LA2~2M+Szjr$qarO zyEGiOJlMOqWxKA~2M<QQC$QJHpRu~EsLJ42Xdbv(Hn}iaZ>!k%nFw~Za~*71vGSeC zain?Q-P5)3^6_Kg$KUy5meW%(?y0)@bL6-IbSoFzY+q>+f8i>hcY9a!OFf4Ff)?*d zNQ#v+mE%SV{Rb}ZF3I;3+78=1OpZ){xMH@*wsg8``I`DB27Y`*zzN35QTQ?lEh)1r z-<O)OGn+S~ufeWaaJIWqx?yqaUzup{51fqNBG}bF_FUJW5L{}R^Btb};}*Hj651G= z^eXU50cQla8nzc!COHU84G)$o%0rTxlfsD@i;(LPqjQH?{Ju$Qzr@<d*!PW$m<*dd z&cE%A?@Nmerb$G@!KgtCCAB2b#GUF6`)M&0k%m-5-$_40e=3_Ht5^_FNK{Br@V(G{ z&~NbTAjGQbz5ak%>`V+nzxSZkcH#E-trC(4_SH6b(H`-9q0I;SZ8`rqPWE|&tggE| z{9kXf-YDQted7Ma@#$1JKMQ&MYC7yklX6L`^9kn(K@N%=id)L*@Y{WLa2sPPlbDi^ z>Yp6ZjIA84<O>}bu?|K~$wSHfk1jO~)s@^E7BR+7F@$f)=^u0;c*SUsJWafpJkbrK z4Y3VHBU#^$O$6Sc<MZ3dEXCEg|KeMkm<{WftvBPz+)mT}a>*$8?iP~ck;CO?(YAD< zI>K}jeA#UlZq#EsWt?YR+ic<WV}JNTce4CPMS%WM4X2S<*MQqtcoVeA!6}rvk(2#x zP#dSMsd}>BRAxclb;yx%98s*?FF}D;=hBs!W#&bpR)>?~a#b2-zc(bxRmyBi>u!6l zU3aNt`l;r@%PEaEwWImY6MCb1oAXC2t1VQ_`kWJQX;!G~J3UdX6owMNiG2Ilp<$`7 z*%DW)T(4|IX0l{zqtVoK80@Wd4N1^f4Xm;~E?!<}_iwNHcfL5ISE8$Lbn9AUaXJ>z z{V<MP7!@0w9xVJwEg&y=6FT<rvrVzEtnqJO$Y#jj@EC;PvBa@4j!X`lD))*a?+c6G zo{@FG(3!OX=L)xymT%PX(coz6(C>H0*L_mafuCy=8-wlcOkGf#3X2F1P5ubarB1&& zPCTL(C--Y?8T?VQ9XN7&OEV*;=V`L*w}jUFsem9?Z7(-VJk|T~@86vnt4`&B)2vTo zo>gx<+|HaQmoE2%CbIwD{*&<kbNy6@F;0?bW^MZK=Z<@sCoCjy8|9Ja9WoWNNHk^i z&$l9`CuBK-L0hqpsWbYWH976X?#I)=pOQC^G#A|dKw9ZKhuZHC^d74ATRdGSRt-H# zf?IZSraNOFGjAzE_@3)b4{62355?Y{S@e7qv0ANTlCXKb3h6kYySMxW9hbdiSWy^c z3}$*OVRq;Dq&WX2qvV$a+pEdr=+2UFx8D;F7m*16i^<i~OwD)m((c9A=@Xk%uf?lp zeX<%`vu_=mp`IHYM=r1J>AnQKZKrjoY!c}q2lu2`=O-oc>bW5Zx6sSS4W0700Ij68 zf@rCNKmm*(P#6>hdH@cE9e_aITp-Y)1qk#m9RwnA&-$q;3Veb5URgmF^!ndBue0O} za0JaAV(1A1aWee(f%E$z;R75*@lsTkL)k`0MWuST<4H0L+yta3E2ZPN{4d)#oyz8V zP@?^>U^pT&D*r5;bTT$NNf8>os;s1(EG&YSl@^=!Nh4N>H7}1|OGi>8iBT>ok-hVa z1`i^H4)?dS^fF`n(%L%BK4ylB?cVsRi0{bS?W5?Ub%XE8sEC{Jsqntoejx1s^U7<n zSi(*_?tfW><uPLlm|AGiW^$~MAvj~PBbp)XWx8@RJ4a-2axqJ{!$-jn!qb3o;ML&? z!k-hGZ7dMeq^K>Y2^fvYTJcHoA6AxOyJ^S&P&WcyP1naz<rr!)AL{bzo%adoESJ=@ z4eVzvEnjIjPme&k&CYfjQxU8urm@7a$N*1^o`ao<k&O5VAT}e+*E*LF`AyxfqCFTU zV+0+4otOtjAz;Mf>d{Fxk=OEajn`-2!w}a!bGaGZ_}D*&6q}YwE~DQuoT+cLz?xwE zX~#ib*vr3_S#mqE8i}3~w?QPWNOx53{O*M|BIdlsmfHnGUQ#j`)hJ<|@5KY)?_y8e zX3+VjnvqUW^b&)fz-L(Np6jeig$>Sjq-RzePwAiS5R8egU6JMccn-)c`KcGhH?1fZ zn;<hYx2q&!H3+_NrwH2N-SF!uj3iG1PM|=>pk}RzBmsL6DUIItd#_<TnJ}#>oGY<g ziL~Pm%t~}GxYPTb6><S>j9v{3>&y;;J~v=6UwbcM1&BTT7-)y=O5ZV@jCjMyrY10M zz6C@3{f@t$-CNn-Q4oAoA>m_OHZuOHq~}k3_UpHTDQvE5|K$hFZfbrx<-xz_w7Jwe zbsr%YK`$ogNq=Lwc|MJk7lRxJ809cj2hmWZ8-yHbEo(F6uH(S!8PMrX68g4Cm@rHP zrXEHRG;z#T0!2oC_WCgR-1!^H^skv5#%HBt!QS!@mc8VdvBZphcqJi%lP7_$fwH_j z+13^+y)V_zSNc`7_ANFdG8`*Q*g`n1WUY8YbM@I{z+#%sMM|AojE9k*MX+)X*4S%v z#3fZ;`!AnJ!CJ!XlEcP>!x6&FLAUTIh|(2l``2Feo<`#Zc<%?ml(@aDeD^KL;z;pu z#c&h%IU-fqbfAo0^m2b!W+Z!wjhwH_B?u^YIgcLdS1wcoj@n?F8R-MhoNKY$?11>x za6E%xO?N8zECgqwhs!G1->&_DYa`UOW9KL^0J2{2Zg4pFIggtBapK_G90e`UX?J4x z<kPmeaw2NrBv4S=k5BV%2slpvNWAfH0%=(!MWSDVB;4yy+XxaSdEhIiBIlxDF0eFi zn%9xr)xN`ge}iUEQg`x{YJ&Jjc+()e#~hJ-rF?$rQ*8&%XB467+tnrA=GRMD2CGoS zU5^~B4>l1z5&Y9W-)3q29qQmh7dMT>PGGen+@U3~bSA85EKGXsay5w~dh_CfQJ_th z(J>ZepZa-BZI{Lu$pt#uDb{Np1t2c3wlE^di<Qu#zYxCN4a$hmd_|vuOGU8-rMT15 z_)pt+6yb9R2H`tjOBwr1bklu)2+<h4*_~bse`a4H%hDG)7xSgt`d9%)gKe>{gzCj6 zDMSv_r5$6kEs9c9OL)_;Au!ZFu$nQparFgl%tbU+;KBZoajs*KYW|SCSB)BZ-3>g6 z=s4D=Os{(`M5nG`K|PY4Hc;i7SwgLhiaKq(g?ml7w@2GjKIFVhF62$Tble%`z(V`V zhMNKd3qgL%oVbHVd|0`85e-r!zT5+2f_|spJ1B7`)-p3{&rpjDp9rT0#|U?c>k}Rv zG|^d>DQ9Xq6`a@06(>*!K7F1W>Le8+7eYg`L_K45M|D@^FZsCq;sgC!gI^4P>`hvc z%P<#aHdhxwd<WnA$8oDJfOPL`ZFF*4fmV$H{fJMs%<t>zT8Xn<N4^gG_Efw^5y(i{ z^&0z1n@*%9c_Q+QS<(E=7b_bJzRE5~d`7h^b|ROHe+T*dLJ*i0el=3gg;+~Fc>>+C z>$)ciNtTQs@tN!JzAxPEW6p|U<WPpO0nwQ_P(K_gvDm>NWQNf^Rhaa;r^v<02_1)% zs5_SQXHh~$H8ad73iqIi>&Jq5T*p@-qRQ_KbogtI@ZyMBhk++ojtJ&5Mw{-?x6YP% zWn`+usO%qy;~K~oL1==D$d(f6peGzZmPu&2Aq1$y81ed+*Rn~RGvAg7=_72^!3REQ zDfE{r{Kq)g*BTa1$43cC7PI?d3IGXkgr?ycAg4yo<v>bdddVZUAiIa0$CeHwz2*0u zwVA53-{u%FI-|Z8^gxp1FAZP77ib$yUHi@HOAbKYx_G~gDXc`3>pp~U;kNEcbF3~B zYVPO+v7m~ET7x4!Md2v715dz(HrH6`^n}4qnm97{h6DPf4H#h_H2e$VSe1!jeRTwC zpg!($HL1A04RRUb+E6GO%sGzF%2DI#Eq8-u;oopnN;U_Cix4J9Y5nEn!MLvDd?Dgk zx#vw`4id+YIAhq5-asDlQJYx)LtSM2hZrrb3VNP)Txn5UJXMRCHb`6l;~S>DS|hRk zWfJN8pQhnd$pk~U;R?YM*Q^;HbQfLUW9;}y(VdaAFfd!3_kr0V8C>HnR$YP1l@cly zm+s{>L*;9N=gZL~Go@!p(jM}+4ImG<sbwdIqxN{88l|`HDZvSYu8`&P{m~+^<(-5Z zZF1fh2R|2aD8dfbU*1X?L~<i;z6MOzXAgdf(AFh&iRDTSF^U|f?ROKLsL!?wr+LT` zX#(Y6M|C;9=|H)&btL~%Yo5nc(NK!}lcDd&H~q(_q}pYiP1ALPp+1Tq<n#6xR2$!6 z&uPc;v4sNj-B@sHzt8Uobd42xID8SSWv2b-H3-@eD^V+vC^1(pm&S{mra6F;gyo0- zsa>g80dk<=t3Fy1Fv<e#u=LvL$hvMDk++7;Gp<YH)+0V$`iKht@YD#LYWGhpbFt+G zeDk4#a3M<XY(^~RJUG?;^)iAm(Q@Nv4x4BO>4VNzN`ku4K4ttYB4^Da%|8<ZNAqB> z!E_-OE_B<Jnd*fcE5Zx)*%@ia>;Nf%`!QOq<~fX784k)8HJ8znXx5ssMSx<St~x^H zqtL`~geZh`eeXE=KM}))f^JHiHS9~PY%IQEnv)^^b6grPArLqJ5|q!)R$^jqd(S$j zxJWEiK+K{2_`m>FK4JtrhJ1SIK*>4?Jjp<M7!}9UgPnTC>uV=?zTLnZ@o8oWP$LWH zKXZ5JUB_u~E}5K+nA|b|PX5J;+bowgVHGs-+ywxEqYAkBHwk_n`jB|jk}yrTB>y-2 z?@>?zD7%5`W6@y<>h-nry60!ftjBhE<Hwx#=F_%s(M<*LV?AR@vd7Hw2uy~}yu<8m zUQO$?{t+&v1j5)y<uxVlRh*3)X|&MLkqjdKy#8r=Y(p;k-3Pm{W}$8!c%!7dN@jUD zf0j&rme!j6indM_36jcVOu7sYGH7oAsWi4dP={92b8BIfkv~h#aH?^Yk_OcY<e2Vz z>E72YAc<kLz8UPS2In+5qTRPuzH|J$?*7_;?VUYZ&q;gi<;(du8U%0|(<IUS;E8O9 zrE!FQniUC(xsZTbQ_D+Nh8@Bxf^+}QzW~I?p6*&%(Bt=H>)Ll`*5`$m@2%btop@5Y z`%1zQxPCiryJTPSXDg}Aq%8R$|6nHv&3^x5Lo;kY@Z^a;SX)>iUv0!EXZC{;|6Ypm ztg`?Yx!&9z-I=8Iejxf?!fBhE-K0HFuvuj71J9OuyBX8N7|cA(+@Sfg4D6!fKS!g9 z#f?!6@-0F0hDu#GBPPr!sF8>M3v@MB>K09yB^zBX7AeToC<+z-oYia=y<__a^9k#& z$wp*%@{{S9Rf^3&nFSR%wZx7ic<8(Rck7-jV=R_DDi@x}aQP-GfegYP4dH_T*zk93 zNMqOpUdvS$Estt<?Ted3Us+~za_LKA*xr~tpySgtsbFdfr6T9QJZnZOaDo8pbdsRx zg0tpn1IF>707sQ8lk985g5l&mhJ%rhL`)?ELd=<Z4bCgRHV09l*{fc3b|z@(tOG-; zkEJ7K$=iv>a`6*u>-G^uN0dc8)5W+mX`ukN+N3%z6qXw$V5p6sEElr8e%%K})92&7 znS1{S*%cH53~R3uu|g^B;WcDgnVb<mund{dH+L?%w}^?+ewjBs7qqa)oqN^qW<z8E ztY6a)!KstQQ>ber8Ox!X?6UNGucXH#lVU#FE^fQ%s=+v$Q=wI1SpCyj8yJwVBMl4e zl%_L^bx${RCohL*d#LU^<P1)Tg0T}u+VSN4a{XwLqmxU1Ra0b&E_SsrNm*q_v)Ur# zj*dM)INn0a*hyLWPTYS5PNRO<7knpCV1SiwSU;@Z($pMOV1sn*;^dNH4*U=L%;4`~ z8Z+Yy->VWJa3-l&57Wr?YHDg`w|8<eBo!6B3z=?53H}#&vX!D6LT!ncodA^_RfzRo zMa+VG65%vuo|RZY_-=iWOB8+soY7d-WTS}H>-g0%lBs-vqOxq0wd01<aJK}QSwU8d zFMD6Zr)m$YA`?(f-iUbw(Yu>yXmt+n|HBkjy6H<H37de%NrCO7*ys^`K2DnS!q#WM zfP<0+5~O>nkQqv1F8Qx$$0}DP*ZsW)2D?z4@zUSxHv8LwO&GA=KIF7lP31U73%_AU zezfM25>QBq&#m4R{=VB05|q_O!e0oWt8!7Rle(w=uSN%P?sEtc@w2?}{*@7bb-1N9 zn^t>*jmS3qunj=40!)X7?agkz2t9p?>5^|7a&S$8t4z`CtMhcD>o|vWi?BSrTBVND zWjw+hNSg*0JB$=j<+#G%A=29l55JvO84VX4(#LEr->ReYs&n34<Wu1t>9;osM!Kb= zgLfdGJ&K{JAU@u981eZ7Coq1OO2Lahy*tXm5yh>-KggKIX!$m=Oa_uVVLxq$nJ8Mg zcDs5~nvuTQr44LxvPBLnPuJpR=g42M(Bv;8vk8ocUV^3A1AooJi1SM1I6c5LzLe{5 zS-=wYM-tt)Ad+QZ4YHxHtvGFK@I+7Egmf$k{5)G&@O7LE6pzSS4o;6|V#ROZBUSuI z{TZz17U6Cl9FKb>R<t~gV#p?}Ak_3CW0Sk(W#PN-$+RFu%?3{bx31LMh$S?6yNWXA z$jxY(8-Ch`E&aMx_IIJ|wF~PBpJgR=X;hJRwC{FR1lRF<29Zin;cr+mE}q^Io#vuC zd`tPfA6KuHH&pzV8|?9v6m}%)^tHRIj~w;^_WXP3@Gq+6`X319ih4MT?g1r0$;%CM z@D6kBlFm~2LZ?KQqgu94sBSAu$tVN<n1EgX)u47>(a+&a=;c4U0KA89>PWut(9<aG zr3;~V%K@$dH{_~hTjhKDD-O!LUL!d^AErhFY<aEs0vg9f%1wE8;c>tUtw<3jlKB>d zC%ycQ=o_f}Ow3m=ZQr1|0SUjsOC!<F1m$V<c6CTtMTULlo*n<V8x4PNGU1Ng965w$ zOgx6yO_zXj2iPf4JLq5`+Gf)-5*l7cY=1nNLOam?7~9+6VsC!xD$bPqe%Om%u>A_m z&(VkVgjG8cFr*Q|kI8w<+U1LlNIPv$0fqkgVJMPXY5#LId&vU*UuORg67F9a3+;%F z9v(|(pZ>uYBL!#9ODGw%65u0>A}Z>IAfXkxRM`B(iiaJ3?yXW}_<bv%QgIu99xR4s zg1kz|6>sY;y+12EkNBdt+e_jgv~auXsf7sR+MuzvBTSfU1YlNPOyC=2>0u_U<_H;o zAo};_@Y3O`pmZsTg_dW4BEd{niv)f0^aqviP8GC)CDy6t7+Ti#MQ+xLr>H;bv*0NW zw@ntStyA5!Ln>|l=+1mgl)0OUo<EB}e^c?KW$ZLkWN)NwCfiL>#Fkol;SV$HUtpvB zG<o1`TtD1`GPH^;7Pl7;W}bdo*G8SYc$6FEr2a*^VTW3xE%sn7*1sfHG+>+{ok8=S za;6W@E}%-PA^b+W)s|pcQf-8`)mP?%J<tUk%Nix552Nzn!%rKLipZCB<By@JOEb;_ z$TyA7b`UC+B&yPJH=^i|1kj;GSQL_&Rfmnp(Y%97h~!OcKf%WfyH5UZ*RK^=d{Xn1 z@N8L{ZcF2-koqGEKrH~!SwC<JrLG~9)Ub{LsrVYocq4DkwvdCw=7@jiAsuCH_S8Wt zZ(}>-Sm!qG^KV+&(?7;Wq{OiKl9OwwKASA<ILnf+5?S)#;NBco_ftq;t7^+*#3%9O z$2<3meZIa6GxIugLN=m1HPwESU4x7}i)BY##H@J)e?h2jKmaG(ILHJn_<>J4?G9ta zhm#bQ9}6V{=g8^zROpqd0)tda=ZED>y8Bq>oz5=7f$mQ^!u@3nLpQxy3oSPhziO*~ z5^O!d>YVK&<t5rEQQ@6tzOH%7CEzIWe&=}>W6EJPr@!(fG{~a8!uCY}x6jGnR+z5P z#VY1-ptEU;Bbweo#etM4GcVkXJoIB1d2Y%?0KNi+J9;Pn37h^eTR4OG&LX>m!}+Eq zZ-ab~H%3yE(x}cxe&ZIRgUhE!_C^eKx=`*}a3dXyl%|R_x+Y<`&&IEaNXfAEUHd^m zHyN+;!R{BDPzD+W(rhcV;H<_E-V2)PK)d|$4(H6Z*X}bQ5Lm880E$(mjmTs9#Kt#R znURalFL-ptMh1oLQ)^s!2?hKJ0ul@REu5(#3BJ9C)<=o&GVXe_8W9oLc%p?7b*L)m zVz*=Q!Q3W~?=>1}wxmt?gztG+XU;pIJJ|F6V>R8zK*RQVNBad|$Z+3)Mao`PW$Itf zm6-4Q!nb=-*pyhY!D*EjqWy|(_*<>dsI3_8fB>|I5+0NPB^?WQusE)N&G|Fp2Wlit zR>NJAk2+sF;Nl;$82^*840nNEe7BtaNaqyU3}IX*R?-XnA>FvSL2HQB4M5{uq#GIh zRA1n{Yh^wE-4tE3)%j%}iNx<+0IKQ@v3^##Kyf<9@&*k8Fs}0X;w!*%0ewkd!SC29 zpZ5@c+}X*+Us%-aO$8+}hywVPYHun!NVIU@<5+wLF4k_Hs_?b)f)eO;3xe^`3p#Uu zq}C0}=13Ti4OjuyuV#5;ZnCus<w*%?&Mq1EOJ@?#%^0wARRGM}+lxri&8fECbo}kG zYqCa|=;q{dUpk+++?7}?Phvoq;NWDTe{I)^unMRTPf)}i3fz6$l*8cs(>4i?Qd1`e zZWUwNNIYUXIq6ei0)C{M3On-z;h_z$DnC<bj!G{Qxgxlt?LW$SJh{pqSeO4I>e{Ey zO}VJY?|rEa#G1H!Tk9q*zGnpc)=1+kg)Z5jQT&SZvKi>A+-T0Q-B9AHaa5XgJ@@(U zEzm2@^PDXI;fB>H78k+YNvwNLC_@^lODJXx_z_M=GwmD@^(63(91i^t+!Sb8cpZY2 zYT(vUd0w2dVfnA$!sMhJDhVxhr6JpibjC>8kr0R4OMp30Gc;nuR}cHu2uWS=uX{eD z4^8CCr;`YjZ;{o2q5(aOB_Df7eJH2oPC)wFQ`f*#)xwDs5i@~NltjbaL%%2;vi$HJ z$C=c}a3_0Y0Q@f+GSV6M7&ycls?T4?_xgux;|HJ)#$s=@YN;ts0K@wi_1i#fvzYZy zlLU<tYb<f92&m5@FddQ_GjC@l+<@r?gY&$-5>GnGgx+u^ZxO2uv7*?nTmdXhbEPgI z(M~kBR!Rjm2amO?S*%y8SwHcyswnf%6YxE!354Ie8tHkO>MICibmAaghkQF-m|J#i z?wPI8lle>ssMSYv<Gb=ux-(;H242()OC8%M6IVEeu^*!ASk*vJ4uAba_anlb8@^64 z+Uc?{ZR+=$QTN>2q}3i8ovkwTSAek$hQF;4)?t~o#MbJ(H(2*HN9_!qJn>HY7)Mn> zxs4Gn#=hd9Mp1IMp7N688IMx-*Bot)kYdqEr5Bl>ZUQa~9sV!E#$(t1pOmc<Qsk^6 z>G!Ipc?5Iomm2(zK+!g)k5t#M+$6GtV|vU93^w6^U)3e5#vit3VDxKQp_lkXZg@id zTC9aZVWp5CWkFA3GzWF)52Qc*sW>y^Gu-JwYO8*I2SM2Sg3xLWy*CBPP8NgZ>o!Zw zOpqLS@1G)+_Usz5p<D4eQP9qBR&6-X(E?F#%X*bkSjyz>ZhdrEA0Sr{FkY14D)?$3 zy_00}SoVJ7ZZtoAo&Wekb>|4T?L*@3o>HUoDxtGN&4F9T{0Wc0MnZF}u$7(=U>m0R zmoGit6!4*i=|Nq6NeG`#vU(4lSh*DH{-K@XgY^!*z-AQ;#cqN~FRJe_29LV-U2XM> z@C*zYcX4K|V@ATi!vziAuC^0&wI`merUprMBdARbS6DBNqk?lB=HSiFRg2KQl`|Q? z>ROc-ggOO8<!lk@&Te9FOtSytq>q$z9ox{lXLa{<Kb^e&p7gb@8=vNI3hv)V;K@i7 z^W<G^y~?n1GC`}a_XWFDL1pgzP_S<-&LL~PaCIoEbHx`y3?ChrBGk%6or3CvFGGh` zBOi@&@<os29I4xFO;PCdrYm?t_Hj0`7>nNcFtFD|({B>5v5yV-p)U@jR`{j=gbqm` zF>WyOpR!y0JZ&?J%nn5;at_u5CYno`rQ(|9M8}s9zi)<yJ8LKCr(<n>rkCOKhryIJ zvMwI?FdLBt#691ByF0gybwD33{{Gu~-Lqu2yoWrTKMXg)|3d6Gm2z+N<S=@uye;i| znH|2OO_HE1<Aq{+S|y5LIg2?tyDC4+lhQ|briRTXu`{awX3p7_;){D2Ms?QS=t0)! zA(<_~&s)ReE!wn?GB||@!hhNEY4%%veq_NrsZ3w%j&lRH3VPpF)|Y#kYjf+KksW3c zbGRxn6ZF=*QPZSX08*;xi@g`=AUwdHPOxU{KpH+ra?W)hvvD%~E(7THWdr!PMbpE< zqc?0&l^^shPA^zqyOWMD*`8~w#vAfhh-rT#q)BGj!8qI%WEbDqzX&%zzLtd*`@nOA zd$#1h=fU6CWBZvTdn;Oe)2YLFiXo6+5;oW{;711BiJ}#^wX>IB88={Wq5j{$e5Y!- zoSM2|H@Xh>=fqc$1C(`7JA_xnKQ$M6;h;8BKVJ2XikzEZoHH#>7wMEr^&bX$`V6%y zB!n&LUeXiDT{v0l9afM28}1tqc|wkfzv@wi5`)yXxQOBH0MTDh7WaltRqq_v9c{?D z-l4Z#aqM>FqKG7N;7%7Db@%{Pc2kI*5znxT|Bs(?<X=;3F?)*;soBvE^#;<mMf&a- zGA9Ri$M4+lUT-!c4Bq7g8i&qSzkkTbXw~6g7L~3*8`2gXx?L@syNN`vqM@D3`z&Js z>Hdg#M~xv$gv#c5s86ZlsP@bsAq5%L7OVxI*%f`D(4DN0m`%j;>ItFi(>Is>y=CSM zl_R8UaFV`&dn@fB$hL_Cdkf42^~p@f#OEDk?D?^7Hcpgj7;0rmU1>_pyd(D@J=C+$ zOW~DH%R`(JWxhDGe;2kUX~%GU$Ng!Rt(44%Px_v6K&9wxFcp>Q(Sx0+NnB!Nk%Baw zC|h#V{;az8mG-p%uuAcpT;3Z~E1-{oy!&keumKuo4Ce4&8!B+bb1)!RCf=B)iJw%7 zSJ;}#H;ykhO`>|{mq{@?6KIWYLZIJ+$a@7FF$=AS5ouy~zIY=Xha2VU`VrDyz2`$V zNc)3yJ=dtfWWEfhwigM;SM|(F(((*ORi63!Gd!_2v<`i|K66h7ddrsn?V#1SsM88! zP!);$CPcnzgu<JH{qO1a%IrE*$$L@vZfu>fU%$^U&A)6}eEsa;33a&Cc9a*3&64ai z9&(ORskZ!Ch$B6%u!n?Jlgj9bDZIvtdh2hvBB&HOXN(%YE^A@is+Z3#^_u}zo?h3^ zXExW{i(^!Z2b~(B`0pn-U5anw49rn=%(Q5u1?LsCYq*<b>&Tz71Cd)%{D5LMPT13d z=b=PqvwfFX9hvyjk<8EE3vL7?$}RuSbx>jqBUiLf&2~}*qUN6pG?;HV6Dt~9ReeL* zLsGMRI+I<gg#*AYvMJk-n4!m;D5!BZ_>2tLx5iE%sB!o#e_#Yy?GT=}vzrgI#fQ>| z|5OJw1EC71p8D+6<a+mZ29<JJZetwK+eg5NdIMLw6Q*Aq^y|Vmd1g<9fIZq0vT;$z zj<tR#+lJ_KE9NU5N<9){3YEsd!<2z%-L6G<*Ee>GBgw!WW3_O#Hf;V4swjiCHUS2p z9NLQvhJ{@AUFiJUnf5!y7KLH8;9~34l4gL%C01aNt}073;9_5{r;Pi=K9t=cGy@zE z&83Rtlxb}pwL*QM+)(f%TQX_+CQ;YV$i%<@X)(WUS8wuA<zj1>L1l0JxqGL%%tD7@ zf?;(4MaVpD3%N4O_pcR^#wG=fESMUM7r5F?feVY_E*@*G`~Wk<n~fLXDh(17$?`FM z<yY7rjCOFLy#iPibc4I9Xc!i#y>`3h7V&+FFkOHUYg=-sUWu3N1l@LqIkB%SjmH$n z+Ai<wINj?c8plhaXTSWe&)#HtvjcP&SVgS^bu71!$nI@6B36aB=uMX<(+;`wDA?%3 z%lnO)nH0fwx6x=z#o{GGD$@14g`_4uJLt9M!-$IrLdnBf?~iD0PV`l|mqH5m9QYT} z?+o2T33RDM)CKf<8eCKLerLc!q$0CR^QMF<-&W|EqO~9S4c_O;m&xm)855|(7U5Pi z&a#(aMK3uEi#14k_7_j-yDSQy67}W&FAK0&F@Ir%^_lsNXhX)1<H(0a<T7jm-x}4A zXeJ0ZQ)?@Cbz4mfg<i?}ad?ns=@iCJ#wCn40fa|D3kXQNPYbg|JIV3^hu!=jmGWtR zn0~k}o<G%<wQ&y8^c6(0lx)QnLT#lJBKnlaCUqIRWwZ6yd?3Z_92~1_co_DE$3d;w z2YD<X)@20hvoNfTx+8P?g$?8U;Ejow`<^<yHN|mYs_ltR>#!34&zlr=@~zn17{YEL zvh(8?az&K(cS52E6W@*cG{C?*Ew>T*;&t8vbOKy9f`28o_&BZaXTEY(E8-gTdH#!n zlb1)T+8ROf?n(P;Ura{U6wlbf@k@tXn&c&zeZpTLeOLX8wW^(Hn@_qZXlX*bYXwP^ zl!KcDt;fHwK6?ldY76Lyp2@K2YNb~f<Ir>o)s|I*CQRQijn6^yC!e*RlnC&B3hxgI ze#f4)9sv%sx{I7<pMlufR61_74d28uM#p+$z(gs`D1K6)CgWT@F8njTxCjl}-BVES zzJA`7+|&nb3=S-wY;6Y)(l52&d}c&L7be8vyAo?zM{$C$1bS=T%TC*lS=Pr0CU}Va z-t3)jqo2g4vUc8r`e@Uz7^{h#nC=p7>E=GyzbBSHAz^a<nIyT_KySN_0tx!V0<@KH zJvab73~j6jY@yItO7j|&%9Fs8D1cZ}ViU)QsGmzl;KugNI4a3<L*IY&#WJ0&w=Y;U z=#xV0-3SIx@?j8z1n+a&ncsCwM?<o^_RRo>L^_u_2pj|K)Nhg9g1Caka3VbnKhoX- zSh5v(GFq#l#KrV6G*|w~BGs=f2W1>%nuR`HstyTV+?CK=PU=7wJ(w^O=hGxh^uq%+ z_&^Zr7#12d;XSjb-#_{t@E04EE~il|;TT&lN+<F^UD`pHcXfBX>^`CA!4y8wxPJv) zZ~P$C8r+MvxtJwb-~iYJnTkEM-yFk?Udx@|dU#Am8ii9*Esvz!{Yb0oP;5hK-4mz6 zN1J=w@vhd9hed|KhX{;qCz7^@FAn_RwE!1wK8v@6OkODX5t?i{pu|hDTP)spBUhKj ztoBhv?(N%QPTK}J^epebAEhJbvwsO|Pvw}Wj0Fa^J)(lx?9GUeIEJW}q;|;Pz!NfC z*|Zg0c?PtT_44zynJ~bk*RJ?+$<3I}jrLfim~riyz3~}-VSX{*F4^N?Ae88@@0-*1 z%tN++h^@8LV)dg)43+UPN5rheGk4vO88O<gsttjIPJA#=*hEat`>#j~Ai*17PQWR{ zbexCxg6sI4g!RWXGULK@-Sd=hS=aHEQ;Pn#I+Ho<ZFzR~ZeVrU+eH+v-(FIu^c#$T zYM!B6Kl~~af!>nu5wh6?y9Ih*c5Aat?1aDTv|c{|Sxfr;mY&SP$LX_X^j77@f|kEl z47KEa{~!#qBhuw0CNn@+-eR4aD}}nsNULx#_E3Y<k(b%a;#i=<k5R^>q?Z9`^3Zt^ zSZLTQd=(&^r5vACzpTk!+*9N17ullumhq8nK|ombeOdVP2Q-=uRvge?Ym&KmTl&F8 z!JUkM+)XD@1m@6!_gzI&0W@sBFI-?juEo}NFHZx&aIy2s@>~s6*l<E^(dCt%3oblu zQ%~pSg|BE~dQn7esv~NvB=DmWn!jD$uUDHcsNpTGKD~g_LZzAY<kbkehw5in*51*) zU{Nli^1YR}xUT#3{muM9efA8l(h6V5+0Z-1T!ERY{Qc=+oni>GFxDU5>KIv$|6PyZ zQhIMR-V6ltGk>Dg>=s&o+i0Yhq#XQe<R$)Mqes9_-S!gK>3zQ;*tMUNDiugmz<9)S zjgNBShvS9i#8peyE7nL<i~8wZC}Fx$KICs3<ivou<8#)*n$Z#c469Ul+Z5iloejSg zay@Ys5+yum>kU_e27fQCKD#M-Sn<*3X&BMMZcHMcmji|F9~}y9kXbgn%~N`c&Np{j z3->~`VN9bT+ztB;{4|?5QDQ$lApqM;@J~e2oPWW?S0-OR9H<#fw>Hcx467&1jqL@G z_?YQ8c*YX%aFLVLr8X)!zAix$*UQV>I_#Fl5iQWQiW&>id%Ag26f%jd!qgdlg-S>r z_?t^R(pOVH+}VR?w-nNj0nNkJ*9hrAey*27+Cq+Tw;VEOBVn=$F8IO6pzBtx(z+`E zDIdv6J06W8JHW4%9=EMF_))uzd512|+N#*AFS;Q=;^TS&XiPt1=Ma#RwcGo`8F2Bt zggP)+EtbZQyY|(F+kQtE?0h2QhC=Wbl6;yd+^NoomMIR9AMws~GHbOsJlJaiHU4wT zd<33BXG>uSoR9&3vfhXfHKHp(iMG>G&*&gTU-_I1MAm2w05=kDDHaLJE%>>1+UoXW zl3!jGYtWdy8Y>Rq2it*lkg4r^l?I=`zniDfzZ=$j@XWIj*?-6h48`tQPn4akNvrdx zVo!jJLr=bh*rhGv3N6-We*=Jlkk?JJv>QhsP7tt{6_RUXg`dSJ3fkZhiHu6G$Tvg| zKR=MW3!hPq_$YA`xN>RHRO4gQ4osBHshUkpjov0ZGWx5myrtI-Y8gJys=DsPiLJ;N zoE(+f@Y|@z>}8GTIb&J_HM}QI3CkgBNPZfyZ&$GOqH>lg;<U8?vO<Q&DXtmpsBlmm z7;7WKc6BQ}g&L_N<+n6AQ2LjNPVL%}o7IMUb?~AI_sf~ethwf9XR{1?Xtkl-_XSW0 ziu3aN+^f+Z^gjt6@2If6bqpEuVVQ%M^Nb9}L3Y}S*lK79-r6%x`&he)Hb2F+!Pjp| zBTt~EV^jDd&P1M{bjX}Sm2*TpXI*eWPqFqJ5uZ7p-|@ah(l|1(11akW$mKMCqA{|! z3bXQXMAD2$2q_qUfcx8`m2avnS3nhJ^)-llq}ZQgsh9jj{;n-%(<^tV9!WEWD-vSb zo3xvxGZjQ?QSmyDT4~l_fS&8ic!wKO(_QkR+??!Lw0_$xyjFve$flD<s2|9}d2~!f z9r~6LDIgqSYJ72*xX509V@Xrgs4vH%yhN#{z?>q2&-sYu9)H^A!d(~EQxiHeS&i}$ z`Y-FqQXEe$0Pw*6=-0{mwg`!S1~<wxE#R+V(Wq$lOn}T(w}Nn{(pHPaBWudLcidvO zy#%jiRAbK7->iAYJkZJ$&&r{2a}lg|Yfc6WEYzuT<PyCLzD$-$;lQnat-uY){Nl~< zZUx9+5kc4eVSOyQ=6IvG>5q+HOgimYx!SthQOP55jvjwcz3_OVwZd*!7YG=aqhn+) zwqgtgv4rsRi5zNZEh1t?8oUa!D#;g^GG2sbFy)Dh$PgD3;QIZEjbQC0e#XYUbgV7{ zJ*QNt(T}HiC9l5W%Hb_DN?wtqS|Z`W$r0t2y*-Ag%7a5wVKb9r%Xr;u1l&do4$IXc z$6juZc|%6hqy){{6tD6?x2Bd!o1C6%33+Zof(0hyTZr9bTZL1EiDCTQb%Hf-+TX#^ zHfGL(*_0YO)FPqlGRL2Jl$=X#S4E`gz7&N`C7n^i1(6A#KY{K7iRx_RE#^G+Rbx+7 zwfAR`y9JSfblzO}ckcqC@Rsl~<a8K$CApj?{Lv}wvsRG2*t><xX~JDY40#JI3mx7M zjV6n_5RfyTy;M5fGK#_a+aew-Cp{CiEb?!+-<mZugT@~$YX3$&&=$?(NN+i%-Q~2? zI=c?2+zEhbo0!9|>7So;N{3aqbg#T>Kq`t#TG-E_r1%tbK#I`Vt&I>FK0ZpfL=Naw zm0)&Z9N|r~D(ASF+awV?bET6&aR6<MM`T_iZTzvvTY%$2E`jT2-O#H7_Q^_L*;~5s zMr!<;CSmD~yE<1Pb%39y;TZu&+}mD9UKkv99JeYXT^Y@{X!Qj8Who5l7849cdbIjA z1b60YnbJ_b(sOZjkorJI$bS+%lrxBPoDh&2-*4Q6=gb)Lso=$KMb2f$6#9gw{TO=Q z(aPS5Q`WoxB$<a8i3TJvIq{8sBonqT5jK7SO6m!m5cVY?qbo*m4HcR`^NbQwkZ*S; zt<F^ubctXuVx$|?4}U>9DAptal&D{Qa;=H1*N?)m`2a5}Gu$<Z#Rd_7<EGX|b=ZLm zEnU&j6IyHC@QT;r?JH5dvb)>0zNyl#=!9-qoI%>mFd!FnHE00wz3BdK>mJ;Vl}&Ec zd&nN0$+^DX)K>{QxCV@ZOodFn=>;U?oSW!}Gp6$6y<c*$w?M_jw;HEX^5Gd!4eNXi ze96HxNQg7VON*&ojD~*10fYf*`u*-W+-BWgm7;(vb-vip3^~dV|J(pr*aM6bf*@kC z&VNo3tkW;ojn78|O%jCs;#7Bd?yOvI`?ibeM78!2hYq>BN;)AE5(({pDjOm!)X?Hg zO_&(astuX!*=hqcOlS|;rq)pyLTY62m|hZ5w^@D<ZSz9Jw_RYPMeyWl$CQba5^jUj zM$v09>HeY6jMKK)IPvb5NZrzB6#5`Lkuo3hMu~%u>wpX!szj5BfITIS`2d0%oTF{f zK**}wEVbVaEQOGGJY;$wucA?sQ(65NVeEx}e3$Z+rEAfNv6v~FU2a%vI8|vSpc86d z6xWP#5bGiM_q7GNTA#O=#d5U$`qY=s8NMOF*gleSm7>hBB{=FvqVhNwe<n0s4)1Cc za@;+hhZ8(;Tn?@Ul4uwyCfVNcHOPsdDgL`z?4P;sG6cNovkvzrP7Hs!WIR;%PLYi? ziH<A2GWa99yQuMAGgt@$8~p&wg>Cv}qT(i<Nz_stf9=(IKz#TbSdf&FS-7@XXz%dv z6lgISdWG0!zhzi4687HJUT~%nc`<bYhVM`0MRWB}1sw)Gz9k4P`+hq#Lu8+*bNUr$ z1($OWlBCIHJbn7gA(T_Ce@H)SJo?J0-Cqo7CBRe97_^o@)WW~0@w^%mYA3_iz?Mxs z()-Ui8*tfHfkw@|9(mKo6ydtr8_OU+)VsI`F(3U+Z>BTB5ueJha_;bFwvh^6a1t_i z%|9`mea}vfP`CHaSlycH(c`EWs;|~llPANub^kaDoxL6Li6UGIArde}jnr_893eR{ zN&mv7E+EJJsaodgOYWTT4d@IAt?KbfkDyk@wzq3}KFI|$eh`AEGgRi`x24;8#i7eG zv1FH0D;Sqa921GnO3J^<`XrR$)T0K(y?NOo0ZQ%C^uGnm&V9D8#Up_g>2rbGi~h(n zqD|gH*C@V@c!Ea1#sKe61m$%(g(^^G^9{!1jL@=rB}ze_r+sb}VRb;B5uA~lc@+ef zCTd{qo#G>F<^N~S5};L1b1Z>+WW#YFuNCOSY4ovN@|G8QQ|#?lo7-KENEfyzm~>kg z54+iAme4e&NN){@k$o-wPIvVz<|U&n!&D1|!f4WU+XxxIx%>Y^jjwhe%Y^Xfq=7l4 zsQxY-s&5t5Ao%FQ8TQ*YCj+)HP`}iE_)f+=yCe^@SJ2AgEaNi0eDB)t$~+I2NC3x? zg!2O#>j405kMhwRD_4J|A{y_w$%L!h_>I!?6TCX4?SOdEwpAj&9-PpT@lEtt3!$k5 zxFT~D67$*?k_SnAIK3~!>^;1M<>GPHu;B%4#3ji@vV~W0thCM6XHOJeC%i|9RkkCO z_2@FEyL|J|Qe?6AJ9A{q_@Avq2UY5WOWxg2WE_y?93i^gB00<RRoZDAFTPKYVoV=j z6>dNKwVciMQ2z@@l)eKYm&9=<CaLPnm!3wXZbzhsTloH(7PDTl0a`+K5zwPivuD$3 zTes5YPxE}(jiB9R+P4)5y@{<%AEo{jx8jzqdJjD-%`hVQNdwFG{wUZo%nL|^>{n6& zu88?uC13F`WKP-EvM6{@AgK$8Q<qlAcewzUmS<@R$+#M3G$dBgE_E4Xz+3GL_W@!r z@Gn5$*{7@0|K>M~HJ%FP8f**Eat=zVMwu)FbH>a900{7m)Ky!H<ATcGrY`5Q3~<mV zVb9!>qwpCw^HTUB4k4!-$7xJ<1rpKeuQKjV1M$&p+?i8it*O5lsNPfb9CD%WbNs}u z@Nc9JK%aGHb~H@6j><CJ0m-Cfp!8fjsb~oat>rrG^-|0?1WOeII`;t*zi^B9QgMts z-OUjG9SBJd)@S1he{PYG%<7iQW03puq^f2~l!usQzcj9hc6x28w7xILv}9EbJSYJe zFA~XNe`IvoR<VW09$C(yj(>GCEa*5~dCo#1Lk~hKGSW;1DtIzsGz@LY+uodR<rM#R z5qkJ2QN=5PJcD~y*##D`JAZ*+{zM7YxM3XMT;ei9gClxN=hTdd^vtD7?dKB=uf`xR z8xvs!0NP~A*mo-JlIB+$VD_I&9c%xnMdwoCuWEYVnEDAq?~7+3J=z0_4Lx*wXTBAo zt3W$iaBJAyV9Rf$XN`F(owEM=;}~(sse^LSFw#h;;SaG8mnBuGHa{TyKM2n=w9)pU z!ycy4etdjMQTwxbcw4VS5YVEuu60LNh%3&{)~7$Nr7gflEl*z=H>pMqIBgsQ&JWm4 zxjP9{zHyGN6L4-s*4W|%T>92rDBTbN$Go{PWydL7Y0rKC4K@g*pZS_3htNKf`_`Pu zK<rm%gB)P6htt*?DRNSE8K{=-29b5``#AMFwtKL7+fV7d_vz}mL$8%jjO<h}AgHXx z{h7pk{n_bXOJq5md~O~8(tX}E7pf4@gYJ=H-JUv<&qw(5yJZkbj21Ql9=k^qg`Qs` z9H8HD&cnYset0bs7Eo`h1;dHWp;o?pUJ3Wbht53%a*^T+3kJT1rnB;BvUlW>f~_Iu z!|5)njZ)M2k=h12U}Jvz`@Kqcgc<$~e`g_(0aDZ~oBy<mwF;<0g~E+_9h494#8Ys> z>SX59S+5`bW^YX<?rI;nb+*$Z2%&ytA3Vmjs}2Q<u6*4rFz?mudCh4uYX{4RG!trn z0?)9_;1f?8IntAa_dsm6TW@kfqI!{&$MbT}Raq2cNm&zQa~PiYRy(!ZCzB?wa_BZe z-XLZggsrc&fH(3OCN_(5t-ayYwI9MC4&TDWrK*}%nXU%z$m<m;WTA?NzfFFgttC<% zc-D&jY>W6SvX4)Je^BF5LOv*_<wv@d=BOO2-6_rZ=E(Vp|6py&J`Ygqinl!pwa5-g z*FAl2#C(fC^*LhZ6S-rIA-l#bH3bwJ;xH&o_3@ak_g*MA8#3PN*c^%ymGw4opF4=0 z(p_Iw--_M35k1&;p|5NrUCHQYaiKSb61$h$h%l9%twH@tE>$+LpuUIdx{1eBFmAG% z?2ols)5_8nrcISyT;Bo-8SmSCRpuC><+iVw-y~2d0qssiH)$-Ap>RRg-a|ma<2kBy z{zm)^{Y(<qSTFp;B?KH=jVdwkY|-t`QuX!57?$%}anS%=RA3r8hv@S9k9@$It^f4f zuNFVRcC4mb;w7J##MKL*_s!&dpwi;ZEq8ovpF8=TzitQRR}srT0whi}KV;z^Hff7{ zhfF0X(X77bsqOPhUhD4@M`%pQz75qEWyt5Z?QnN8jiFfaI2GpTg-W3~W!E(fiRUAq zY7RV5dds{*zw)%CxG`FZ{7hNamqHDIBpT}{tj%Gq5_T99_fR<4+3_FOOor;yf&<jS zca`JFYQU2qAzxj5@|fOGe5nm}RO>knU%CK-b_9I{f|SRV-Jhi{h+V(}M^<3C6^z!T z6rta#o*}+qp=K&S7S7ko17E;6(MH{$&*WcqeODU^K;J?|_QNA*%xN`7dTDrB*)vdN z1Kv?n(1i??LAZ_pWaCux*W<;Hs4qxd=WE~rthz7a|5Mmm#YOc+dmM)D?rxC~q@@HT z1OcVHk?!sxC8U*-mTr;G0Yo~ao1vvq8XUO$|8QUK%bm|WotblH=A5(lUhB8Mzcrk* zq~3B1ICHuTzld{w@BJ6#8L_2f=FJeYy4DGp%S529x+&@XthnoRCNp>jNjPn-osqMR zT=Ig*_8C<hZg>EO_pM@qKVk1dE4m7S$dZ?UC`kSkndhIC7TEdKz4vk-kYu@Orh2XY z!dP{OomFDn?!U7CINt*=n2A2UFD`Y{t$0snqxNs%dgV*K+De1{v$SKQupgXkw+8Q7 zj4l$%hNu`=UQQ@H)!OUdfQ`v(7Dn9dk-`I0H0#MLT7y&wACe-cIMk+RBeuWJW;-VE z2b3b^{dY6#^8o#etUw!L!kF{n-#fTCP+BV7`03>#adxPuD9dx<79#bo1o9P~R#@yg zQCcy6%xZ5*S*xy4Pm0|ce?!blVOF&ptxX9*28{cv09i3_s9NF&O5^bp{T-I%ABznO zMYExMfDkgN-lYO1n4a$^Y=--lWY9zvoz~*&#^Sd;T(&B%z5vq=nHh7DW94RqHyliL zcLRh{bP2$QG67-tq>Cjf+FevkO_dP^uzXOpsRKJ!Fqc*s2ce0!^cH_fuln2nZhDGQ z`i-6({{nPai>t4kpY&yrmEX-00Y<RurI=qiW~QeHkw&WkDBhrMw3{MhfzsCXiceqG z+ZkQ0{M}}z+lph_!ei%3bA)5=pCz6oQtJOWSUQ=Z8|B|+f5iM$Or4B|j%u~2#40DT zgTbg)wRi#z570U69$DZOFa2WKNL~HWxjq$dTx8@2NQlBXywcU;Qi4rYzZ%pPl^uSC z`~W4Q7YyW_)oSmZp2QIjvy{m?QCDO+v;%$rb*Z1w1;LEMz)I*3M{VW8yvUiSf_#w5 z>kSYkq#a9?vFj0^uuC!W6XZ^m%XGYY1GV{K*TpG|(!swenhVH0R5%*QmN3JZ50AMM z8thO21EFcgX4YgaPLeG8-AALLdfq*&JGGM3z2{u~vpOQAXnHKWbe_62Af7Mz1dUs; zKQT1q2X}@V;$B`R$qFy*4;h)P{-62ZVYoRZc;6lO4l#MoE-?pgI5F+konUMr)@470 zsKi~26K68~5YTV(K+<@A^uFls59i%!^?&xuKqmXxs5_e|?8K^;gad@G`SHFY)<jPH zwy{aB_K2VoAeF0RfQPvW;M{*>wpy(|Gsr_oN}2kf(kpIyJW#Selk+OI>^WD~xmBIr zeoD72T_%3tOWDImS-^2iM<i7-*|7jw=mJ7C4uoNPiSC6Mtx^5(7RZFPhMrCU0Y6m= zlo1yKBGhj1r}{g!do6__-dy@S&C3RcYq;wGBC2H^#s7R$VS+rar4YS>887}{$r0R4 zEK1{hf)Qey!9_Pirzq54l@V{t6Y<{A>d*^Vs~WGIg1A^`bZ=u_kx@e32}~M;TLi;p zF@a>Sr|7=8?uTd#WKvQPf@{*G^e6mMK;p_7p5O9ne^62vLk+b_(H_~m{0fi)s>CF( ze%}jgM0+*kI{8D)>wKRT@Z8%yveIctR3fH{$EK^S6MjGHzGObMQB3`AS+hzkrW&Me z*TVn)E0LZ&W;9Nc-WOuop}&l-U{XBgz^ZPDF?bp9wtLzfwwHY8r;-#aCW7Jv&@4&w zWL){1k&w@Sz6lVev^*9y><Ls*#oOGTC7{{!1_2Vb{51l2a(>zOzV9)D<F0!=X4Km` zCPeViQcf|izk2fB1uQez3}3iIbQxA%k~W#clg<+3pdnYx<$%b+W3CF0`f>1zV)K;9 zqzJ9^7cU}+RW?t8RP5Lu<=+{n>8OQ1UdzV|lrTPW<ZeKwWJg?8RhGCEn~mLvf?~6{ zh(dH)Qb#w#-tXATpb3Od<O5ZL=y5o7O?Wnt{JKGyBuky^u%zDRjWh$Mgr4UMZI+&F zVs^$)9NyS}WC}3$)evUS8n{FsOkc{<z8$upRqKLJ7yLl&h&l<OT4WxP#s~!T>7j*h zRa9~wN3fN~V??lNL`3S0>fxA}^BCsiVlLL!UpiKE|6KjhKfrUkua~}UFXWJ7#8Oj| zBg!SM^?9CKA^N<&Fr2c>!x-wo&fUct$R%^roZ7u~UTA=(G`VhP`Hl}gnf_lp+bl(? z5Oo?LuJ_!s&GO`~HZf<pi^iZ^p`D)Dxw_H=DndUmMrEGZc4cqf6&;9+Z)eMWn+NsF zms?f!7E+tFl?IyF80GeChg;faql(x*M(>z*E2%w`O<dg2y_CN`r`8FV<JhN#r$wk3 zcy3T!Ng$eEk1R+>Y9X)TVjcW@+It$T(Q;!;cG^J68J7IH-<-HNIBSu+(#(Y2j(;Ml zvrY~!QTtlY&eXI9azM!HXyH)Ay|SfDMM`t7y(1u=j1s+%m2RB)dV?QQNv?`f?tGq< zC4Ww&F!_jF1Ki1R&uL^Qmg#SJhCbq^Bi+y1)=Pw=M(YeaW#j%c&HvR8U(KFCK$V`p zDf2z3#MJdKb~ijl2|1IzKDJ+%o|(5nT36-2eOBja^Chfw4mU#Dq2B)Yc@omJ3SmMW zTa=F2YKgGYI@vN9qcuGGJM+mFRU(YYnJ%0vw&p#-)ZJd(pDXtr7w4AT{nqxP!syz8 z0wy0Z=qyK;urcO9Py8;V?Rl|qzuj}TN(nkQ(!}wF2pVWRI9ghq`V`|zx{A)C;=(fp z#nAy_*2~>=P|eg-A#^UQt(8$DO64QZm;!T=Z?z>YmS7M7ydOigSY3XNon`?+&6{K@ z37=#x=~v+3-8FSyBXtUIy*j$-ppqn7<$exWR_J4J*Y#AJT9wRpF2VAxQLvKJ8+;eE zUBnl+ZbtyWZLz#p`tp-Ss);9gp&6}B{~z$_zD7gaIEh7_&?)?Pi=*Ldp(eSf*}3}( zI3O=c6D+lH%02(i;eEs}{2FH<`fJKmpF9b>K^kdYrIi~#a_3=SW(BFe%WuIJYvgqt z@xFpM7r93dG{S~}evn0FAE<{uVu8Gv@}+c!xym9!_N=)^LY9f|Su&J8yolm|S%3)! zmJbkfPewO;4kTTj*v*8uBd8&VADhY<dA6<VBNg88_YT|Yq3?@7t`?<#lU}=C;kpaM zBGO!QWP!;h>`9}V;7}?a4hb7rFNY*<OS79ll|B3y%|CyK4kpZXBCVb<Us_R|0^x+d zyqPyc#!XTu;*GpNl&o%1iyQ+t9x|Di8ScjQmFRav`O_PjILZ?<7Z-hiNOzAZTdI@; zXbuVD4~@)q*eMJDXf>`+{^tL6%}uR@Vk=S{9e|760@&bppK^<J3TQeNGong$%<1h9 z7gDt8=jN8CbX4!<f;s^sd@8qDs3V8tgLI9=f#Q>4Wo1cBZ8ga(cv|&i%4~!U7S{3Z zWP|ZFneV`NK^K?jX9DmO13Ml6GWB36pQ_$qPoE&1Lg}BzNif!`PxO^nUFb7~ve34> zEGh?JI?XfAM_a3<iqVl~+^F9o8m~y`VsDUzT%Rhb_K9X=8G%H<u;W<799_YTO6!}_ z0qHy$_tmu0UiSf#H!zwO8|0Pte$yAqch2XM`xC8vERBx!_f20eh#OZ(EUhO4_@t^# zNOgb(8Z2i$Y?Ui?+y|_8EB1ti^j)7lhv72N|C~&_JWr_$ALu^vWjwqL>59IIl)@}a zIqxzoLx?bUb<B)_aq<n^#aI4`+R4Gv;elY9>$F_Ml@%=-R)TLH0=yq2aEkJK$(-gZ z3%Kdd@i!yxWY(CS6S~P|XJ_obqOMQRoIp9P;-`8E;+tKRN;9g$Tf%g$7C!Vk^g4k$ z^0N|P*aU=nSLQEC0us@sa7><=36>3<d6w6;*ANlCCV?8v_fX9GdR<;7oA|D`;yyC6 zJez`7m&vlUTjyC3OwICXkOpHf>PlnJK<BA%Z5S<M^>pp{!0C*tlQ&&IC+AyT$ej~_ zlCINQHch_f2(QLXmx|0z&<<C|TO+&)vlj2Gm~?L&QrJ2ty?u?uB^km4r!5M5ODT@5 zOChNP&i<u*V5n8e6dlj9eyI|P)}M3ibTy0<+?H{VtZ+FmWZmAABHf>A)9$=wu6A6m z4s<t{K8&r~3pK#hD)66uTwy>dg+RP5xsX`?i;xI}f;~g$6o91bA2D02D3zP0cQqQ% z$F5gGScazEw!Ik`{XRa^T6_@1wXs8vYxzd)RN^twE4ms$KXKR_C*F8Zxe@qustQZF zA}?<8=MmZhX5w93wEFI%y<NJ{!9&mw{+y`!N`5gpr#m5yf1V5x6rF~Tj|}jb7yU`9 z3V*Rg;%*(&x>98bdLx7`_&#+w8GWRh4P_PTHraObbIk)6n+?P>E}yF0ab&RqInGRh zybFA9`!&KG>XkeM3W2VxoJ(_=Fq+0Bd;ntkE<M~gBCdhiS_io2bgLtRzdbF`&Mh#Q z$>l%2qyve+Z~-2$jq623^ipAV4karM_MjGxZ;)L2JDV|s-M-noyB$}|ZT}0$hRYH2 zO6oQ;R?KYn%CqbeVHuZsOdhjU*aeZ47j82}M6z?XQJ68W2E4Yl%iqDgJmf|uznTr~ z`gkfpy`d=mxtKdQ6?#ti;ilIgE8QQ*FJ6GAfF>|$deNy69uK3o&C)69zW#b`j~>N{ zfwNkH<rNu&eE)?n!8Qd?KnIMn3;lw!u%Z|xXVcEnGH#qMn2&>n-HAmy5%Yg9ntmrS zvxch-zMgMalI*ra%ofFT7{UqH(c=3dYtLzQ;&HY-T^t>wB6zB3?v^u^IKKtlZH3`C z`WbKMGr!67KtA&V<!VNotYl#3!}T|%@uOc5-u;>m4F?L`lKQ&C6Iqu)@6mx(m_Ooj z6?e*<d6h<2&nba4BD!x0W)mkkJ;gkFn8cVp_rTupya}|1xXg`4kx9Ck`8xIY3jNzB z|5ic)o^90imHM1#K$m=(<e-b86Rv#Bux4gyx7%&u%0nQeHg-VnLvXpy1ykhSaUs}Z z5xlN}58cqg4Ka&HiOmYF#k<i@2yTAi`0r&dJ*aa8KIo~(7t45^cQ19(7;S~?%EUq( zWqJZ%;Z=-v;TQqtM*MOm$4i#G$#KsU?n30`faMBO=4a%$659<Y7Od!8umk%pI`j?$ zcu^i`<j{zT@=9>xR9A^yM%@<M0ZCdu8Zr8>_M>iSC2$LvR8LYH?L+|jfC%OmeLl_j zK@8;DV#Au+E-SHhRDoy<NWKg$c)m|q7h?VAd{}y)!q{OpJj;H7n`e{9#CAIWjybZw z0TYH9v38%;gf+Gbe!q}~+X@s5Y^l6>oH%jAQ$e6EXYdckI}u@LwqaEzEv=$S0JAuk z65BpLeCtKOnN!l=MT5J4Y-rufTwr=D4yz~0AbB-=4Q-t(GANdja;!KHQB%jMx`na8 zh~DG6Z@69dTx8UOdTT3|fpT&Nu4CTWBB{H3|DJDiB&?U-xBE$(Ryd*{bE=gO^n?+c z4Q?$F<pz~}*dAfngW8)q69Z`x6p~r1%vGglr4QM3P#X)WV7i+Ma27?D@+%CtEA6j% z`KKkk9(-83`a}M6uQaolhwit-b3msXF_0eWryYA5G)+5!bZ*4kTfov5_;fRse8Oef z&7R;p)MZ8CK(Ru*x%qZ*!Q(DsGIm)kp54Oi|9wo(CyCUQmmR7~e3mhV#(17$^m0-& zfwQG#CTXTx<UY!WC?hG*&kWT{%*@*f=AWQL{)al0_yuPL;7slBU*S?Km_;7+;gK>? z&h#Ae))Dk^^4f+7qZmT&A?-|d&nn+{>?mTo%sfKx3CT4IkMSMUha+5{oIOKK<HBu$ zA90Y;2;=hCpHqCqa`owA&fKHdT11!|9p+6@k~7hh`q6oESR#@C$~ZbhL=P0>AGJBl zlUHveBWB;4(aLsQJ0Uu$tFQxQLU>=<Iypm}H4>`&VVg>Srr*QwH?S0i$rB1-6QRaL zYt>y)dCbdEN7(#z2!ZcNea`g-Lj0msQZ0I31{(iT>9Ol|=qK?Y(j3gKW3QlhX4OTh zUI^rRkE&S0<k^o&`P30_Khxr5=ckHed3f<R9saPjuyczdf?@M7jqAZ#5q=mgL@huQ z-?x7dV#+>h*Zo5su64g$%n-jJ81Z*oACAR_lKmlxmbW~0R|u2o+p-<BD)o`9nv*oL zRjISxyVK=0#YHqaT{J#6{13kNb9$6O{l-s1nz>?B8$W}!D3%2ys0#EWXO>{Qn2L+O zMes5*kJ`)R!U`J*1M|huA>-%5N)3eeGHq#?3+kq+VF5wn#)~@=QcDD-FH#FYPHdon z_zR{Lp2i_G%E2tyFuc3REP6Ybfo{a265G@iOR85}aa*6ln<V75ag;B9n&tI7Df3Q1 zq-Y7l%6#lDI9&UXvPRZZKFv$(np(Ek-Wcu)zxg!6!GfDU4={IyULl49uS7`53^Nl3 z1fz2IyK?Wf&UBtZ9VO@BnW1r@1EUvFGs>{nREIQr$-&LDseVw?6jyG93u#pjh5dpR z+?^A-ezz9CM&bb>GH2Q5FJ?G4ocy@-8!QTQ^#*_DgLhzov*UNK>?OH8q5V6`Dum9I zYKgkDa5#>UZ_WY7nb$Q^i)zlF4;3MmPlQ@<TIf0ZPWEMui=;zg*rQ*~nMmv!ct?e_ zNc1S`v`MH|RC?`E;Lk4w*f#j#dmy6v)c*#Hr$QfQ+R!_id?2#;)#S8rccvp_!Ut_! zH(iEE?N$xW3Af*7+>i@8A*Q=dZnLXN)S6v<o#(V8c&m=og}eefKCFW*)rE&T?Mky5 zJE{B*#kD)Qi|UMJ^(GGVO=?uqZ=kA(fA$fxDy1eh`ROa&UqbZ>HK}+F47vwSp|dk2 zaT+1(SYmz#?NGx<JW-%r`w2C<u#xE*9z;m-eRwU1d;{uO>hp|MI>^p1ZA+#Dk=8+t z#zN@*Yb)G2InhCN#sH?-eV7OU_v(KBSto7L6^Sw6rz$WG79J2i#S2t?tVY-LT0;N< z%}@TWkr^R~D@G|+1~m+L;X_|l;M6AzaR}IMcu`5-@=9dsJkAqo4iAJ1dQEb`UJqhw z&DqNdGS@>Au$&paye9_|O~*XQi!6qoN<$jT2-lzX%}b*`tb$D@LI?=Z?sUsr(;}!~ zcHji-R}-*Fpo61%0NsW^U%N4Z`=P%Tb_}+hYKcFvRRZAVJJ4vVq?+gat}{+sDKLVF zFKn_IC$CLrz!9?&{yc4y*;%bpJS=IF2cJleSzTnKE5HCz`43IBT1;KC|HH8E@vLG- zo$RjW`+wHJ|Lj^IQQ$i(GI&d4bJp&KoCpFMQk{jSlW&YYkZH|yMI6`Ov8g=S!dkiA zY1-A8U?keFIE}mpr4RRV@FeW?M-<;W19LL^@X3ItaxDKBUfe?DbRqrg<&xXxL}vzR zQZYXofD$J-%XeC3-bstP0tny**KYC-oi!`FQ6ruVljD^bEFDk^<>g^_$0Bz32vGkL zAxYdpPCc_&Q8IV%@+jeO#(@2`o@@ERV`L$P=OC#Ofhds}rc&=4_&Z=pjP;#2bBknO z%L_Gq^^fXut%1FapqRX&()&xRIx{3d*cDv`Q8f#njt=pD`%9L~vvv>rcj>Ksf_WK1 z`wZD%$x9aDG#IvO)zwS!1BYl@V;|7&r*PLmQaLFvwrH-%ocQehyDY10S9D&D4WsM7 zjs-SqJaBJgA>NkxS#>QH_^ui(@32MZJ*jJZukcmG7y<<*QxPMQ0E>Oo&_#@vV{P$B zAlAtFca4UT!%Oa|(L?A1DYX+_S9-2qPRz}TKQ_Zf<TrU)ocFUW-d&E1<7@H``sU`- z1ar{@|Ed^CnkKNSf<vR5y!3l;?&7Re8ui~oZ$IrIc9Hg&LcdBDSWleb#DUnkeDF0G zSQpqZeR-Fs2-o<Iun4u$+G~$^*l<)TcE`N470zH~0JER%p9hMTaAb{6QC6c9%SFcF z4qM1ihwMdY5ghAsC+`VkEx^PqwAOXY9<26BKo<|r`T?fT7p0}H<o*?c&@-!e2oCGY zMt*3An&-43^ahP$=3HOF%z9a-4Z2R@+CDazTiAfD%%VAwBVJ^E3)>NtnpU8!r8w*A zo5W2BHCTLcu{N){C)bF~QCCr}RyDqFQ}#E4%k%N__4r;~uY&uizk9E-0)MF{!n$Bg zZnMq4Um5T!vq}y{)FlRzLV?M5*;NE@LW`;8f#p37(0ZV#`*dr3LGANEbHROW?$?QV zi1#<g(pI(7w{9dg@$?Cm`zSQJL?4h?JUghJa;nN4tllKt`p~49Iic!=>Jf;|wq$um zMer>V9wggSD1E;Z{|kTe$+TikmTObOc;+_=<3*Q8nPh|+We_8O3x3df2uw)HDnRq+ z>52*+feU&CY>7C=>XBJCD8-tvJ^A<VCTjM}$?SD~f);?EUIxh8mZu4kSQAh(>S;~B zpk7kS0b^hZmYxLPmmBi609{Bvz?K!v$l}IWN=$Ul&FN*cbn&vvc;A@o!Wn=??H7rx z%Aa&(L5f&Clpra_HtdfCSQ~HHO>9l16mlS@7~u1}l*#;<WSt<gs0*632I9=z8S7Q0 zlh~bmA#x$~sstX9mwXE3u8H^upSag?vb4_*$zKdqW=bO;4w+4zTZ3Cfl(JpNFHS6a z!oe$o<aZ|Rx>IRWMqVRS8pzX$pt*&`Ur3xF4h16<nPqb7*asS4-l~_!$Zbv+7Q^py zgsZE|bKNe4)9M!<3J0%*{*F_LQ-Uupd-YuZSL8~35yNQWKgp5r=^&M@1wEtC1L=KN z>vL3y+#BTmmXg2LzVGh{ksCwne~Px^3_6~;h$ydvw`L6w-P#=%(G_Iy2A<$j;&C;6 zr8n3@ow&G;u$kb7YeSTmr$hIFHQshnjdLec@+ueMs`jzK`+1L=nT2G-s)-ScIOD}& z<Y*rA-Z+#<uRu+_o+1z7?YqZmk-$WBQ;RZSKRTL!CZHN~t3}$gBTaF6d+Ad^Z~s`M zWs38?hLRA%_2X}=cnbZrp>NFH_F=r7#jpXC1th`Z+$|p`m1kL_W_;VP_tAF8UeqKD zCBMy+3Hp{ZhGOm><(-gs`4?X}`R;v#ODy5vRV-Q%#s5q@7Nm0GdY8Hox3pRM0@@7- zyE5r(C#!f`B?jKVOQ3ClM*Oy3#8Ppy&!u>o^x?rA?6Z>f9!W315sI;Eq+m=V)XBjJ zrIztF9Wh6XJAnqeEke4~_zUO(7|2*P3~QaqG<~{N6HKE)-N{kMv$@p<@a()Nonufk zBO=w!fEjPu-zdQK+TPNAWjV=kAgqUcgGD7E{So%mm5{mD{uw;+B6M5JNf+bHA?Hjo zk`A<890o@K)&JX<B;XJh;zb84jWY3Zp_-uWgJ}rfb#ztoFIc2fW0_QZPrM*i_^Rw< z6Z4rd>!e3`*EZ-$cWpl6{QzZ6zhd=%S@@3tBuU7Z-5ulw?M|Lf0kp2jx8(tC+H$6t zw5I_lUU>CtSFd6Vk5m}E8m@gpXH{97IXeb{L`ZE8U7_HNeo>#un`_GWdf~%`D@hh1 z!#w%ZmJ^u@s%{GAbB8A~WCq#GNZpXDs`~XcBsGPy&-ZesUO%cyR!6Uq@fB&0w(dqU zt`tMHry_+(C?h|mnbIv_GIi2?l`igDxJi1e2WH=9LiDK|f4d{6B1eP_C>8>3XBJ^> z8@WtxkY8DrFNUr6<sdLq7l{I>@8x-zmG8|QM!fN51HH&)CpsgqdMJ&>RS|Z9_g`TK zXgAhM@-B0EJr^W-MoLc_Ktjsc%hcfXOvnZ^<=G9#f6j+MAZ1=jbuo%_Wv*t0HPXnk zG<<P(o{iv>C@Hz0mZ8?tsyyv;xF4~1LUphrY#hj;3e}FZHz}0)PjdpWBl1e@546i& zBT?*f$hp|M$KJ)e0wK}`FuMAc+)th$<~39UB*|cMvN%Gu<iBEE!w}dv40T0$cehbf zW)jAT+5I&tBG3p-^|B(3%mB#)P)Q6oJd0Fs4<nC5$w$104dyy)d8RgC=69M6-8Ro% z>0CSKc#KX^8}l-Ujk$M<57G~dh*0OaS-H(}PpT@*oVqwu>cmht7U*XfOxQQ4Um*L+ z_+0UKE>w*{KY$B4d%bciDAfj?0D_n8*@v>eE(Qy%l;@rtbzqt9Fl45+>Eq0(1TDpU zxse_~4)y6b1`v@@r9NZ_A610U?5*>&HnfFufrOXn2JbA>L~Fkp{Q)#mEC?DUT1N}~ z$Vw-27$sErGe8)H!=ULLgh{J-?ix#I5&)uZ<Uh2sjG+IA$=YG*8RA#|Kq<OJYW$<% zCIt<6dH^0U5A95rCGogREh+An#yCp+l$19UH}--sCip}J$CoJu|2qkBuB)ZYwIny+ z0L>HgK-b<EnV@k?ZQ#TzeoT))07B?Zj`+j>mYlW@?1z2%mAA%Xh5$-sAS?6z(~7DX zJ(eh>_4$RSuKMV9D1Z)gz%MjZLJfIWu0{bYVsc-XI<XG7?N>9L4+%~uSIWYPsgt<0 zZO8W2PeCuiIFO;x#4L4Z<v!!+7Isx;n6A%~3kxDnd3NiDd~J-?0<3hOsdLgeo)46i zdHcnI-Z7Rh9};GC4o}pN6EW8Uk|S1Kkh@VzF7vS-^v8ydQseXxg3X$5`Zp$!Y=koG zGOXhRqbHwr0^N{-l8|-bqWGbT|1NhK1aLu6lt4W5eBWk_EPi~qsVhz!PpiO*_jdAM z4fw!mtj}SgM2g0&#;WLVzMQ=hCisN>&f?!WP0!4wq|dk0)<l-uXj3g@;o@=C1)yy_ zx||wW9#vEz{Zq9m!L<xcTlF6P-r%Z4Q-G;}C5nufmd{Lt%FJIxE%>*N5KTfTg3$7f zXcToJk*tN*3?-=`JL=na;hT(@7cw|gMo9;rPZ@2X7E}fXKN%d1+XHe2B=?R2cBSUh z-<0G8On97jUM)G)4*X?zUN?uMmz;%7KvBB33w`}KtQ@QTewrdDX2I;kdUADAOw)>z zKMAp%D02-d{Mfh%ht1*{J>`{C{vvdYq{cP03Y&oBoM^$RDf)wQm>Vvxz2QvMdd_R8 zI+B{ZUHCrpxW*#WHkbB>caN)fY>U_{HL^R{y{8}P!$_TMUoaF?hq|+wSCAlAO%?kX zmaJwLN<Xxs#;=0i!)aRr(9x&4Df(56N%J-eZ{AS!<H(9~s4=!&6@6xve~!bARwKs@ zk^S~V{!a({JfR7O6v^*~AedLyS*>LQchSqUruQ8K30&HFIw@Yhk#A{=C1?3)-0*I` zRxIannCbmM4RbL{k8>bujyNTH52nvvQhKMdw0!XjX>8Bo9hf~u|G7AmTxD1HBO}}X z8#AGp;d`b0sD633+Bl27Lf?Y8&09^+_aP&QPFsr}1<!{inEmC}9pRbmuYr=GK2eE{ zATOBppQrFZihd_k&eebrb&R=jRWmZ%k4atZ4D*){Dlp8;e%{=uB6+(qrytVI=vTS; z{|aE7dv7J2YpY`Ry=JZC{;0Bc)w3MwD|yeB-~^twuoZ01qaO_mFm|W~5ZzDlN$c%R z9rBrdi`%Rr#^AGK^CQCYMR<*CUQRLhY%fU>Fw+n*W#FtF75d7wKg0Rl&Eoc@^=C9z zRh`5hBA^4xs8_zE@tNa!_UYG8pJEDrl5LW~{o$FkrT!oI*0!y&YMO~YY}laW{N-kC zsweq5sH5IzpCx>%721e)Lrol(%(=Aw-FQr4YJq#4vrY<&_HD`ByRBb=hWO?P_A?zW z!8#7DsASTCc1X^h0^E|0ut^{)0=gQlMP(mb*VH7!tj6rB(NTYCFfQp3o{g7nc-~z4 zT=2+EDH-~~!>B!Ja%yKPPYd>bNR2OcyTCpY`MR6dk~fy&rMGe|w(9{eT%0#nq~x=e zp?I3YIeQa>;Bu!|p<&;v5SrR%CND-@#xAM2j>Kk^TI-_@T`iKIW3cnb_@i&1mpPk} z9FuHjo$kajn-}X*hX{YAAy18E+cj#YNB9W|%)AYja+Mj=olBKWIA*5kR~&n_r^Gcx zUmqaQo&OF|UB=@mi+fh!-8Js@jyAv`-5gTM=|^C3UvXS?I7lBd8&3&S$tmu1=u}2D z<>VZ7w=X?k3cK!*mZ>0#%%{1jkK3Fco=Z_Rqq?-$Jx?||RD5&Rh&Q9PRGm6vOv>=C zByGpo!6zypSf_C?%@E?J($@@iLH>f0<Im*kP>QPb1!iBZfA`YL#;yMOo_gtL)`=^Z zXDLQ?4fv<V9C0ka{l{>Br6|02v1=i^VcO_uQAeL^ItbtoomDW<ZcMGj>1$MChsIFO zv1ytVc!b7nejka|K1ZKJy8J9hgM32Z>0&JK%f+GNVV=3Yi0L;PujjkKKd2;O;8%9A z<=g87Db0n~s=E!c3#wR->o?Kd)WmIuk4y;~k%|}n(3F%&VD-i+kSDEfUO=HWy0{Ik zCFYGBmSwH%Bc5(pQZe(=Ec|XoWM2GOvsBf^KW47}Zl%DT)3yCB;xoU>GYqwgt$;q5 zlRVzY+BX~&Tfy^l`{%hKbL>Bam_D%_-9v>c;y>7S=OPVUH-7mkQpwGfKZ-wTPEf|n zB`X|ZvjvlPOWb|g_TerYPefCK;EEeGP>oW+s;1@`AV3;W_ZXyy?}1@bSGEhM3-Ck= zZEP7t_$u5OCRuqEw4k=kP<%xDIs6OxF4aLKzLqp}r<3o4uP=o;66ZV97N$V)&!yUQ zI7Z>9n0fkp<+&4fuC>;}8YxH06#bI3Y7DZjv$hFblW(%7&jR2jg{k4qxW+n8?P0V# zg}&y=_kR-%Ra<b2F_`Q=s}FHCbVwl{kgmTk$p2aKo~ozjt?L+H8hiXuzr90y+7XFb zE)u<dT<9xQAMS~B$x*Q!JNE-;h7(^l*4pT>&^N(G1&6I_Ez*&`Dr2{fBeZf_x&FJ- z&Fism=|t@C04x)-yfBqMn@U+RLJs@oF)ltGHH<=}Yj<U@DJP2NxDy5Jif_M|eky!G z`t1`=!QzY@6#An7Y~lCh?!m3c+SXLCNK5@Xo=J(ovGozds1ZRT<oaVg{&B{U$=#|M zK^-xt<6DBDHY@R}bv!8n;TIS7mn*Z^S!kyVCai?Mmx8IYsW6Hu<$AHiI`?;Px@lHw z5yqq;dT4Uds89@u;#GUkrR7&SmWTVnzrh_{t@z*ecyOLHJj|Y=GgM;74xJ1=Iy!n{ zQuGfnx+N;2X8l9ITZMlGdz7z#s5qXs_lzV~OZBqnK?Eh&oF?M>p0dDPLf4rViJF<d z1qL|ONE^~Phw^ezR37j8!k^?+V_>fgRKrxk62#wszb{7&s~&fI;7BrXTc6jkp5c0B zFIXu*xZ6{j>A$rVY^G}PT6m{*95pWo8u7fk@WFV<-w*wU)72Dgw`#3jIxXXb6U8p; zReprb&(gd+D!g%JrP?ljp&z;JW-PW+xijhBXuXWd9W)uPjV7sP^PzZ2rc$=BS!Uww zxkgkl$7XA1>F%xn#Zu4<feD$Wez~2(Hi>FhpEu{uv6$Q!x48<~wky@e83#`3a-kCk zFGby`#}3|GDY~}IHR%p`y=O94;jp`Bs7&o)c6#hWZ+!gn!mslqsYW$pc|L;**N}%k zyAefy9<yazft@efYi3_*&_&+-ICX%jJvI(%>3QozX<?hUoPT|hrFOug<lbe@n$-Ei z+XPj3M(t)yVesPlh$p&fkJNSK^N)8pDC4pER2-&sFgKU_g#=QcjM&x}hcz#;1D%nh zlHO)k!@866*A`(Cv$Q1+`t3+akkJ4BBS2m2zJKU0c=wIl11Ph>Hz2~56&}YN9o9}% z$LqByQnD$WUBx8x2K5x<odhkKjXi{;iqAW8!;hGCIZjjvrR$o#vM<uka(53Vu>4mK zw!3uiH(C5mT|8r92bxay_&I&i;~M(f`@B{dCvk)L+KJvpILSYPQ8X7=@uxCx-W>Y| zET&^Ms6@VM&h=<}ZTUs*c{h?tdC4MY9jjhG#Hu8tc>Z*vu-w-f-=*bAmp<C)OIScw zsr2mQ#B5V0XWoxBtcYzS9=H;{h8Y6I?T6v34EK%dvy<HUysGd(3|DP~*G;}7DIb!a zo6WNrE>%L$p>iBVzJB8WM9(PT%N6gAUJZwlHJTsE)H7At>{g=t?6;3vOqEGpdsL9+ zC@vgTY`rKyQgEydz)DAJe6rg1ac%Y}yk<k;TFtC&PnSj~>{BjeXrzI?npNB$ck4b! z@mRJL!hk&f(lH`v$=O)5VWZ_bz{rVH4(0;Im{NXDTz{O^i1@yyTY9~v<BO5zTa~Rg z8GeM6Q~Z4~2WDF8E}T=f)$*j~#GSs{{vVUQbj4Etnile9%6OI`*xepwn(t%V`znb% zvRmgtOT0cl-2d~mWN13KqEw)7efP@SbEmUx?`YuzYFn4(m^tN7){iL5v-)i~&)Nz% zAR{D3rN}-^ZW;mAs<?d_5zeevS6p^%ts=GO?#`h*g*Sw(0(*N^Jh**jsSGH(MW3x~ za>J`f)6FTt|L0)g_1T`X6;Q3>^$jW!ehnZx9?pXCeH?Y~v-)688TJ1^KaGbVcaKXY V50<8ZCKX6XujSQV)ySHK{SUFmcg+9* diff --git a/www/src/images/favicon.ico b/www/src/images/favicon.ico deleted file mode 100644 index d3a0a00f51ebe0129dc008b1e091c26443ba1e5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmds-2auK36@cH;iwdF?QQ2Lk2~t!L1$B{XLlgyUh@yajAR>vVC~Kk!b{Q2-Bw5pJ zh>0;FMdOaq6fp_W^ccmA8cj92QG&9(eBZzKzWLdGZ;LF9lQ;8m`#I;Hdv1A;&18x) zEi*%hW=Kmi5BAAq4$ovVB_*NUIg@#Xy3VAwU(_m-xt<RF>BErBd0>6=>0Oijzy7<V z&t64P3Wt77(YB&O{->=4oCphHK|NfY>SO+sFhAfp$BS*X<;1bI+iI8NxF~B8vb3#5 zA^WYTy)Enu`#=xq3Hzn6yeG5-{m}`Az!*3hY)^bd+7Z&S%<moav?AXP)FXR??dlZs z-JxZD_SSBrzj7{t7vL3m5-x(da3}m49tP*|Wq1az1ATK2tb<t)V{rxfKY+3xgR#N> zvr_dpl0OpefIq>@PyrL6ZEYJHDl^78ya-viH})sr9?pji&=($uTcJ&=k8}My9Bm!x zVE6|pYe}ec>~BKdM$!XA{W$WQp&F)J_fbBK?F>H$b>6KE(hjhH$QzSmVHNaC>!55L zJFYzR?MMEtP-jdVcV7tQw@D|(@#K$z_hBoX8paz(9b=!yr1Z~c{~^?07-ZURjE;oF z_oV8%6kZ4Izbf=i+wVS~2JgW(SPr@PCZErK$0Y017~50!MgJS)1K>WmvbGHB+z0NL zUx9wp_P@Z0JoZ;m|I5(lS<>!ld6d)k&!K!0R6=RGUqgBNr~U8#yakNurRlMhyTZc| z?KW=RH~Ki9L23WrOTByBee)_TgT10m^4jm(C`W&-hgYB^_GwH?|Fr!v{^wHvX~&aB z+l=*X5bbsyjH9GI^iA7;ai}Y%&mY0Hy4E^B<h4J>|0(1>M_jYGzjJbHM&$pO{`u_h zMg8%x2aFH;?jo-Zt6|?Ljr>G7AoR&+zh}YI;Mk|2edwFEKki@8W$%aK(5QVtKV$kA zp#126&vVhX<w4(N<o^XjQntIVzX^whJ_nKiD<~`azZ>~@K39-$8TyuykN%JLx1g>a z+y*}V>ivYi`uPn|=M$h`lsy-I3wJ4mv=sE;V$er};Pc=aG!#05W3)+GYhV=I0DlAb z!GIuZFY;G_dubb74@ZFhcb&CoSiQ#A*rXg|Z)RWy=~S2&$`_C(XG_pqOxZoDo!(vQ zI}P>=#Bs_y2b3klVYg@xdGE9{A?iJw{ORC5t$fqmUXSByr}SxXkJtxX*IeIpKFXx7 zHSnS@{Bay?C#z6z`xa`mKFHBG<#2Ta*k?jo9%bXHIM$Ir7tTzTU6bwhAms_rSbf^o z(EGC+eYB%7bcwc^GA4<SSQliZ=QD}A<PJ~u>C#AD+S4tLYmO9oM?%`aT`9Zwlei|m z92TpK)N|Li<oz7#obT}Fu;ru3K)3G--*Fv+JtN5f6b?$+cSgt$4sC~qvUh;7v)%j8 zww?JwUmIu_b&%KQZ$K|-1)iIIz`Z*KCWH0;U`WV&zdQixw`Y6Gxp#P!-`puWJX_~Q zx#SOkMWD^vxeR^}hrtiQ`@^%+_k!`{yxhn0!JinC5BZDX#8}>0DLRbtf#8{u#4f46 zeIDk4d(^wqe%d_@dcZ0${x5;&AiinbL!NcUVs3BjEc=y<9?y(>VImv|2g6#J9`%yf z$6tbVFfdi`o_z?k*RdzUJ<uuk*%>MFM}o0Zl;UXee}TE+9b{~2+f?xWtcEOn8pgqc zFbj;K1@Jl?0cn}Nt!wT%AXB~L;butUlvG`}f-%q$ehk|C0vroJ0^ez_)Azx)m!Kz% zf?J?eTS?vLH-LR-Hn;sjhiBe3;F+oa?gP(~-9ek~geov@?Cbm8*lz_l!n^P=6hkNQ zPWU`r2FHQ>Aa}Oyj5&mPxZc;n6X5x|9)1a)m!9)`*49nkZlP@)sq5t0jDc@~>rn5z zptiimmXX^M{2p2Y6QDonZ_gIrs<v$bW8?aU<kII8p|AbjH=W^da6JZqF}g3D46PfI z*HAk$T>A^*P*@l8^GM$UeQ%6Zz?0D6zN1e+cnlte1Hkoq9o*yd!TmoFoLjTrXUOXc z?LoV*1!G=coeqtD2hi6woCf=VGTl?2WgRRx<kOGZj_fwj0`>>vraOEcjD<%ac?Z=e zpFX?6H^DLPWn<7g!1z>lbNgJG$AD|?S#bs|f_GpNJPX=lx<`Gs+eRPHtLMNmmEbx1 zFSrW)zOWj+`$j{(-+da=74)@6&O$f@=78t6b2%Hd#dTi+)1ed!o+Gq*7C81yaLh>9 z1I~iJpr71p?&HPK<lk=d%?UYmzPC{~6Fm1ki`4f#Y=RT=$q2rfO#7eVr=Y#=rInyx zw$o9&Tu5e9>XF$7Tw~YbR@eaUKi>@>f-zwn=u_`4V^7?t&hxWiAJ1E3-m~)=xCcB# z&w(92GxN;}xt=+L;X!cy-G};pDh!8J@D(@?z6ZYr&+-%Cckpen?S63Xj!DifQs?V> zeihWw?BB_dIUA0G4v?G?r0%`{z`{6Z^4hC^_49JLDdabkj!X5sjI!^EQPz>Vw#JkD zc2?}yTq!b(B<NC)YcLE>1MfEXn``8G=sD#Y*nR{&0e6G@-95Vq95V%6hv|^Kdq{J7 zn#=aI9OP^Jfv_G<4)YmG{;#kMO2KngTg4df0w+TWTnBH$!C|a1^f)+fSG?Wy*#gim z&sO(=d(U&UD;O_tfqq>J#=C3qchL53p{)O%mok*)n&iF@r+wC(`JgLz$5TEQHbC#- z&%?-jp6mN-!1Ktw_eJu3mvnD<8qSKgk#}A@^*dP96;t%}1bwS7TfqRh7n0wsNIgqp zoOo}ofxb`#L%_Y-Bg)&=DZ0l)`nL%8#Y#y2FMxD4+^$`uz2F8YiFT4V4oAoGu1?YI z-IRNykoW!{8SNn72Xeo6l6OyxO|`pb1>YO7->yorWda-<^^x~ZO2_yp$~*lxo~VCE zQ*7-H&H9_`j@tBb8=p-+nM|Q{>#Pxblx8!TtyeBxv)FXmhxb&OmRHrJGoSfPRXOG2 zwm1CSw7huDV$)@1HT{<|ZWHCji&wr=QCLr1{hQy;X6;{DU6Xz=vnGA%r6jF>Woc#7 ze%ZxIdGo9ZZ(Dx<wV#xmZmrl-mbBltC29X>#g^|_Mp|W3U;N*i`r`j4^-<5ZjaB8z z_>HfXnQngWjzn(u@?J^*?3Riot=?2snaFu}a!vhH!Om#+`wMI8vwV<~eCnqC35XIH z4Y|M5>P(@)hj{kP@eQ{tsB<=<*E{=Em>QUt%KMJ8EN7%r^Y-_xVj9~l$NsTR8NTf- zZ}<N*x`euxFbuqp?K=ie0>}6UIv&)aji-QTz~11SY6hGDzBh(~-$gvLeFOO2;WY4m z^i3k$eJ6@bLj53k6`le6d;eCz`EWm|w-d~U)zA^HhH97(`@v5@86!aZ-v{sK2Hz0$ z=?cGx_0SG_gZHCz)DO}AOUeHUd?#qzhcE?vhi!(r!Kc1?s$e<zo-2-X&6m<1_5XnU zc(?*w7xg;V(eMbU!#>99EcgKKfxp38NPh1ijr#8(ubs*Nedp61>{b8o;5k?Zs~~<i zFt+{)@4>?`IE=Y~{8rG`C9naegf{iR3lD+sr`(;F&j#A#{J%}!?{4}){~KrP;CUDa z&O82JR@Co1-Z8(1A47XEe)PZVvOkP~Qpo#VmU?x)3{OB8FrKb~gWyKEBFsxU`lb!| z8%Q-6AHEBXJ!95&I~t6?+rahHAD@Nf?<&$hpsomx0)PLw8jQJf;Y!diG1i>tY;fM) z;3Bvk=74J~)@$2jxEU@5_re0W5L%{nhdJpl=P3i=U>F$6rh9@m+An^m>p{MI7~htB za;}lu*D-N?T3$cu^UdG2GrnEleDn%>_Od<XmFrQTAsq|J_YYFnF`o?U)Y0JYY06B0 z7;`K*U;XO3Xvgs|5nP`c;68Po%F<(ZB#*3)U@WQ6cVl-jHu}ObV9fLf*Vpsc^|y~> zI_`*W$09?&8rQqSac}~77OaF%z+AWqrojZTkLy1K#x#R|=V82;f%|zi41!|N9~Z#^ zpg!BYe_X2zpw2zpSbG?&58c1L!PveKt^#9v9XR)A;YCo_W8k^43|s@pIMy|4@>`iP z?laeT0T^fMC<V{NSK%5s97e%Hcmt+@zR)k86OQczP5S+U{w=`$XzaBE*Hk~RfhR$| z>A&&mKv}=*gNI-q7>|xshO!#H7W8%Q?kjyh306RVxCPcizW0lIz6jnk2f<1>4bB7O zvPpY^{zcFUyn8&`2ZCqu=t40>n{l@k`hjD*fpgFM-l<1UE5;lM?lon4zU%+@Ao&}) zd}C?55&i?tc@;Qs{iv+GcU}QGZRvkR!1y^4jP0{w2@I$`jymrP+s=Z+!1Z^{hJ$09 z6oblVjCL4n#=du=`FG%R;F)XOiGKb9ybYcaSHL{5|3~_N8^$Tqz2;u(4yVKHfd2g% zTn8&)1K7`aodc)BK49HA$o(!>+i!)+jB#GcZ%Cy2)-!h&jDZ30UHBB}^YviN+orFk z!@%G}?Wl9#7Sdb0p0Tc>^XdnlKgN~uV4Z6#`o%iidV#hiV`|H5Y8g3$z<p>eTmt*U zXi)xKP`5t!oHZsE!S3LgK~2?Hs6VodVdtvsPr|-165J=+WS!@h{TlrL-a>i`)gx0K z#)SGOLK{$b662)q^>}6{f6re?){fMpV>d|rY6>yVjL{~)t9H;9@2N)LEBSQQ{C-gL zZ`F*)%c`m$D64vBMcKQreW$o;Bjp*7kJy~8EKm1K^3|2utUpP7Ff*IovMHN=^UZAb zfj6?rC#F>!v)Qd>*=%)XP2X(YkB?V>mMDST?-aRTKB-K7nCpJv`R4h0NJxi~4i07S z;2~fi+ofj|LB0<x2V=#v$us467!TfCr-E-B&$`cm`f}%IC_h4K{CNf$|2M;YSPfr; zYe75K!YIgn*C4OFuY-C^;7+iAU+_%#e)X<1t{;WTko(?F-t*@s@J@6N-tR{RmXV$V z-jnXZl`s~PzZcgB<lRHc7JbwOw8_0}n`vjzeq|g9$@h*hz9r>W&>GxpeLy+U2L0U+ zY_pGjbMsHFgKeIxWuUKJi}OR?I@=1~*R*M~zIW^rSPYlKRWKE7%l+Md)EnlYP1-#k z7Qk$12W`N6O*yV_Z>VDfb#eSj<kfdnly4qf!%3iyI+0ABK6LHXuWs${0p3%W!v&!J zVyH7d%%LZ3`h7ag0b^B^Hw|ptC)!mzrA-^0pJ(UEpqw+nIgJ3@>a1H@4(+YMyY666 zpKEVkyX*KZJvQd)R|KBt#+;bX`&RU~&P|&$nV0#t{RjS<(R|JCpZU{m<=fZ)4^Jl- AhX4Qo diff --git a/www/src/jsonextractor.js b/www/src/jsonextractor.js deleted file mode 100644 index 3a8e280..0000000 --- a/www/src/jsonextractor.js +++ /dev/null @@ -1,293 +0,0 @@ -/** - * This is the json extractor. It tries to extract from the json datacite object the required fields to render the DOI - * landing page. - */ -function JsonExtractor() { -} - -/** - * Extract the DOI title from the datacite's JSON response. - * @param {json} data The data object provided by datacite - * @return {string} doi title. Null if it does not exist - */ -JsonExtractor.prototype.getTitle = function (data) { - if (data) { - if (data.titles) { - if (data.titles.length > 0) { - if (data.titles[0].title) { - return data.titles[0].title; - } - } - } - } - console.log('[JSON EXTRACTOR ERROR] title extraction failed.'); - return null; -}; - -/** - * Extract the DOI number from the datacite's JSON response. - * @param {json} data The data object provided by datacite - * @return {string} doi number. Null if it does not exist. - */ -JsonExtractor.prototype.getDOI = function (data) { - if (data) { - if (data.doi) { - return data.doi.toUpperCase(); - } - } - console.log('[JSON EXTRACTOR ERROR] doi extraction failed.'); - return null; -}; - -/** - * Extract the DOI publisher from the datacite's JSON response. - * @param {json} data The data object provided by datacite - * @return {string} doi publisher. Null if it does not exist. - */ -JsonExtractor.prototype.getPublisher = function (data) { - if (data) { - if (data.publisher) { - return data.publisher; - } - } - - console.log('[JSON EXTRACTOR ERROR] publisher extraction failed.'); - return null; -}; - -/** - * Extract the DOI authors/creators from the datacite's JSON response. - * @param {json} data The data object provided by datacite - * @return {array} doi creators. Null if creators does not exist. When creators details are not available, it returns - * an empty item within the array for each badly extracted creator. - */ -JsonExtractor.prototype.getCreators = function (data) { - if (data) { - if (data.creators) { - return _.map(data.creators, function (item) { - if ((item.givenName && item.familyName) || item.name) { - return item; - } else { - console.log('[JSON EXTRACTOR ERROR] one of the creator could not be properly extracted.'); - return {}; - } - }); - } - } - console.log('[JSON EXTRACTOR ERROR] Extraction of the creators failed.'); - return null; -}; - -/** - * Extract the DOI contributors from the datacite's JSON response. - * @param {json} data The data object provided by datacite - * @return {array} doi contributors. Null if contributors does not exist. When contributors details are not available, it returns - * an empty item within the array for each badly extracted contributor. - */ - JsonExtractor.prototype.getContributors = function (data) { - if (data && data.contributors) { - return _.map(data.contributors, function (item) { - if ((item.givenName && item.familyName) || item.name) { - return item; - } else { - console.log('[JSON EXTRACTOR ERROR] one of the contributors could not be properly extracted.'); - return {}; - } - }); - } - return null; -}; - - - -/** - * Extract the year the DOI referenced data will become publicly available. - * @param {json} data json datacite object - * @return {string} the year. Null if extraction failed. - */ -JsonExtractor.prototype.getPubliclyAccessibleYear = function (data) { - if (data && data.publicationYear) { - return data.publicationYear; - } - console.log('[JSON EXTRACTOR ERROR] Extraction of the publication year failed.'); - return null; -}; - -/** - * Extract investigationId from the data.doi field as received from the json response. - * @param {string} data The data object provided by datacite - * @return {string} investigationID requested for accessing data in ICAT. Null if it failed - */ -JsonExtractor.prototype.getInvestigationId = function (data) { - var regExp = RegExp(/\/\w*-*[Ee][Ss][Rr][Ff]-[Ee][Ss]-(\d+)$/); - if (regExp.exec(data.doi)) { - return regExp.exec(data.doi)[1]; - } - - console.log('[JSON EXTRACTOR ERROR] investigationId extraction failed.'); - return null; -}; - -/** - * Extract field value (beamline, proposal number and proposal type) from the - * data json object. Returns null if the field is not found. - * @param {array} subject The array containing objects of interest template - * @param {string} field The text field which is searched - * @returns {array} the found field in an array. When the field is string composed of coma separated items, each item is returned in the array. When there is no text, an empty array is returned - */ -JsonExtractor.prototype.getFieldFromSubject = function (subjects, field) { - if (subjects) { - var regExp = new RegExp("^" + field + "$", 'i'); - for (var i = 0; i < subjects.length; i++) { - if (regExp.test(subjects[i].subjectScheme)) { - if (subjects[i].subject) { - return _.split(subjects[i].subject, ','); - } - } - } - } - return null; -}; - -/** - * Get minting year from the data object. - * @param {object} data The data object provided by datacite template - * @return {string} The minting year. Null if it does not exist. - */ -JsonExtractor.prototype.getMintingYear = function (data) { - - // if (data) { - // if (data.date_registered && data.date_registered != null) { - // return moment(data.date_registered).year(); - // } - // } - - // return null; -}; - -/** - * Get session date from the data object. - * @param {object} data The data object provided by datacite - * @return {string} The formatted (YYY-M-D) session date. Null if it does not exist. - */ -JsonExtractor.prototype.getSessionDate = function (data) { - if (data) { - if (data.dates && data.dates instanceof Array) { - var sessionDate = _.find(data.dates, function (item) { - if (item.dateType) { - return item.dateType.toLowerCase() === "collected"; - } - }); - - if (sessionDate && sessionDate.date) { - return moment(sessionDate.date).format('YYYY-MM-DD'); - } - } - } - console.log('[JSON EXTRACTOR ERROR] Extraction of session date failed.'); - return null; -}; - - -/** - * Get the resource type general - * @param {object} data The data object provided by datacite - * @return {string} The resource type general. Null if it does not exist. - * */ -JsonExtractor.prototype.getResourceTypeGeneral = function (data) { - // if (data && data.resource_type_general) { - // return data.resource_type_general; - // } - // return null; - - - if (data && data.types) { - for (var key in data.types) { - if (key === 'resourceTypeGeneral') { - return data.types[key]; - } - } - } - console.log('[JSON EXTRACTOR ERROR] Extraction of resource type general failed.'); - return null; - -}; - -/** - * Get the resource type ("Experiment Session" or "Datacollection") - * @param {object} data The data object provided by datacite - * @return {string} Resource type. Null if it does not exist. - * */ -JsonExtractor.prototype.getResourceType = function (data) { - if (data && data.types) { - for (var key in data.types) { - if (key === 'resourceType') { - if (data.types[key] === "Experiment Session") { - return CONSTANTS.ES_RESOURCE_TYPE; - } - if (data.types[key] === "Datacollection") { - return CONSTANTS.DC_RESOURCE_TYPE; - } - } - } - } - console.log('[JSON EXTRACTOR ERROR] Extraction of resource type failed.'); - return null; -}; - -/** - * Get the abstract from the data - * @param {*} data data object provided by datacite - * @return {string} the abstract . Null if it does not exist. - */ -JsonExtractor.prototype.getAbstract = function (data) { - if (data && data.descriptions) { - var abstractObject = _.find(data.descriptions, function (item) { - return item.descriptionType.toLowerCase() === 'abstract'; - }); - - if (abstractObject) { - return abstractObject.description; - } - } - - console.log('[JSON EXTRACTOR ERROR] Extraction of the abstract failed.'); - return null; -}; - -/** - * merge proposal and beamlines together and remove proposal, beamline duplicates if any - * @param {array} proposals the extracted proposals - * @param {array} beamlines the extracted beamlines - * @param {array} beamlineUrls the extracted beamline urls - * @return {array} array of the form [ {proposal: 'proposal1', beamline: 'beamline1', beamlineUrl: 'beamlineUrl' ] , {}, ... ]. Null if input array length are not equal - */ -JsonExtractor.prototype.getMergedProposalAndBeamline = function (proposals, beamlines, beamlineUrls) { - if (proposals && beamlines && beamlineUrls) { - var result = []; - var index = 0; - if (proposals.length === beamlines.length && proposals.length === beamlineUrls.length) { - for (index; index < proposals.length; index++) { - result.push({ - proposal: proposals[index], - beamline: beamlines[index], - beamlineUrl: beamlineUrls[index] - }); - } - return _.uniqBy(result, function (value) { return JSON.stringify(value); }); - } - - if (proposals.length >= 1 && beamlines.length === 1 && beamlineUrls.length === 1) { - for (index = 0; index < proposals.length; index++) { - result.push({ - proposal: proposals[index], - beamline: beamlines[0], - beamlineUrl: beamlineUrls[0] - }); - } - return _.uniqBy(result, function (value) { return JSON.stringify(value); }); - } - } - return null; -}; - diff --git a/www/src/metadataTableHelper.js b/www/src/metadataTableHelper.js deleted file mode 100644 index 2210843..0000000 --- a/www/src/metadataTableHelper.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Helper function which displays the proposals and beamlines under the form of a table. Used in the context of a doi - * created for a dataset collection. - */ -function proposalBeamlineTable(chunk, context, bodies, params) { - var proposalAndBeamlines = params.mergedProposalBeamlines; - - chunk.write('<table class="table table-striped">'); - chunk.write('<thead>'); - chunk.write('<tr>'); - chunk.write('<th scope="col">Proposals</th>'); - chunk.write('<th scope="col">Beamlines</th>'); - chunk.write('</tr>'); - chunk.write('</thead>'); - chunk.write('<tbody>'); - - if (proposalAndBeamlines) { - for (var index = 0; index < proposalAndBeamlines.length; index++) { - if (proposalAndBeamlines[index]) { - var proposal = proposalAndBeamlines[index].proposal || 'unknown'; - var beamline = proposalAndBeamlines[index].beamline || 'unknown'; - var beamlineUrl = proposalAndBeamlines[index].beamlineUrl; - - chunk.write('<tr>'); - chunk.write('<td>' + proposal + '</td>'); - if (beamlineUrl === "noLink") { - chunk.write('<td>' + beamline + '</td>'); - } else { - chunk.write('<td> <a href="' + beamlineUrl + '" target="_blank">' + beamline + ' </a> </td>'); - } - chunk.write('</tr>'); - } else { - chunk.write('<tr>'); - chunck.write('<td> unknown </td>'); - chunck.write('<td> unknown </td>'); - chunk.write('</tr>'); - } - } - chunk.write('</tbody>'); - chunk.write('</table>'); - - return chunk.render(bodies.block, context); - } -} - -/** Helper function which dislays the abstract for a given doi */ -function abstract(chunk, context, bodies, params) { - var abstract = params.abstract; - chunk.write('<div class="myBorder-left">'); - chunk.write('<label> Abstract </label>'); - chunk.write('<div class="padding-left-15">'); - if (abstract) { - chunk.write(abstract); - } else { - chunk.write('There is no abstract for this session.'); - } - - chunk.write('</div >'); - chunk.write('</div >'); - return chunk.render(bodies.block, context); -} - -dust.helpers.proposalBeamlineTable = proposalBeamlineTable; -dust.helpers.abstract = abstract; - - diff --git a/www/templates/badges_tpl.js b/www/templates/badges_tpl.js deleted file mode 100644 index d996cd0..0000000 --- a/www/templates/badges_tpl.js +++ /dev/null @@ -1,36 +0,0 @@ -<div class="row margin-left-0 margin-right-0"> - - {@eq key=data.resourceType value=constants.ES_RESOURCE_TYPE} - <div class="col-auto padding-right-2 padding-left-2"> - <span class="badge badge-secondary font-1p4rem " > Session </span> - </div> - {/eq} - - {@eq key=data.resourceType value=constants.DC_RESOURCE_TYPE} - <div class="col-auto padding-right-2 padding-left-2"> - <span class="badge badge-secondary font-1p4rem " > Data collection </span> - </div> - {/eq} - - <div class="col"> </div> - - {@eq key=data.resourceTypeGeneral value="Dataset"} - - <div class="col-auto padding-right-2 padding-left-2"> - <span class="badge badge-secondary font-1p4rem"> Dataset </span> - </div> - {/eq} - - {@eq key=data.accessibility value="Open access"} - <div class="col-auto padding-right-2 padding-left-2"> - <span class="badge badge-success font-1p4rem "> Open access </span> - </div> - {/eq} - - {@eq key=data.accessibility value="Restricted access"} - <div class="col-auto padding-right-2 padding-left-2"> - <span class="badge badge-warning font-1p4rem "> Restricted access </span> - </div> - {/eq} - -</div> \ No newline at end of file diff --git a/www/templates/doinotfound2_tpl.js b/www/templates/doinotfound2_tpl.js deleted file mode 100644 index ac5be45..0000000 --- a/www/templates/doinotfound2_tpl.js +++ /dev/null @@ -1 +0,0 @@ -{message|s} \ No newline at end of file diff --git a/www/templates/doinotfound_tpl.js b/www/templates/doinotfound_tpl.js deleted file mode 100644 index d855a58..0000000 --- a/www/templates/doinotfound_tpl.js +++ /dev/null @@ -1,9 +0,0 @@ -<div class="container-fluid " style="color:black;"> - <div class="row"> - <div class="col-3"> </div> - <div class="col-6 lightRedBackground text-center rounded"> - <p> {message|s} </p> - </div> - </div> - <div class="col-3"> </div> -</div> diff --git a/www/templates/experimentalreport_tpl.js b/www/templates/experimentalreport_tpl.js deleted file mode 100644 index ebce350..0000000 --- a/www/templates/experimentalreport_tpl.js +++ /dev/null @@ -1,49 +0,0 @@ -<div class="card-header text-center"> - <label>Experimental report </label> -</div> - -<div class="card-body padding10"> - {?data} - {@eq key=data.length value=1} - <p class="card-text"> <b> One </b> report has been found for this proposal. </p> -</div> - <div class="card-body"> - <button type="button" class="btn btn-primary btn-lg btn-block" onclick="javascript:(function(){ var expRep = new ExperimentalReportController(); expRep.openFileInNewTab('{data[0]}'); })()" > <span class="fa fa-download whiteFont"></span> {data[0]} </button> - </div> - {/eq} - - {@gt key=data.length value=1} - <p class="card-text"> In total, <b> {data.length} </b> reports have been found for this proposal: </p> -</div> - <div class="card-body"> - <div class="scroll-box"> - {#data} - {@sep} - <div class="row"> - <div class="col-1"> </div> - <div class="col-10 padding-bottom-10"> - <button type="button" class="btn btn-primary btn-lg btn-block" onclick="javascript:(function(){ var expRep = new ExperimentalReportController(); expRep.openFileInNewTab('{.}'); })()" > <span class="fa fa-download whiteFont"></span> <span class="whitefont"> {.}</span> </button> - </div> - <div class="col-1"> </div> - </div> - {/sep} - {@last} - <div class="row"> - <div class="col-1"> </div> - <div class="col-10"> - <button type="button" class="btn btn-primary btn-lg btn-block" onclick="javascript:(function(){ var expRep = new ExperimentalReportController(); expRep.openFileInNewTab('{.}'); })()" > <span class="fa fa-download whiteFont"></span> <span class="whitefont"> {.}</span> </button> - </div> - <div class="col-1"> </div> - </div> - {/last} - {/data} - </div> - </div> - {/gt} - - {:else} - <p class="card-text"> There is currently no experimental report. </p> -</div> -{/data} - - diff --git a/www/templates/landingpage_tpl.js b/www/templates/landingpage_tpl.js deleted file mode 100644 index 8a9b83d..0000000 --- a/www/templates/landingpage_tpl.js +++ /dev/null @@ -1,143 +0,0 @@ -<div class="container-fluid"> - <div class="row padding-top-15"> - <div class="col-12 col-md-9"> - <div class="row"> - <div class="col-12"> - <div id="badges"> </div> - </div> - </div> - - <div class="row"> - <div class="col-12 fontSize-20 text-center text-uppercase font-weight-bold py-3">{data.title}</div> - </div> - - <div class="row"> - <div class="col-12"> - <div class="myBorder-left"> - <div> - <cite> - {#data.creators} - {@sep} - {?.givenName} {.givenName} {.familyName} ; {:else} {.name} ; {/.givenName} - {/sep} - {@last} - {?.givenName} {.givenName} {.familyName}. {:else} {.name}. {/.givenName} - {/last} - {/data.creators} - </cite> - </div> - </div> - </div> - </div> - <div class="padding-top-15"></div> - </div> - <div class="col-12 col-md-3"> - <div class="card"> - <div class="card-body"> - <div class="card-text"> - <label> DOI </label> - <div class="padding-left-15"> - <span class="doiBadge borderRadius-5 font-1p4rem"> - <a id="doiLink" href={data.dataciteLink}> {data.doi} </a> - </span> - </div> - - <label class="padding-top-5"> Licence (for files) </label> - <div class="padding-left-15"> - <p> <a href="https://creativecommons.org/licenses/by/4.0/"> Creative Commons Attribution 4.0 </a> </p> - </div> - </div> - </div> - </div> - </div> - </div> - - <hr> - - {?data.contributors} - <div class="row"> - <div class="col-12"> - <div class="myBorder-left"> - <label class="greyGradientToRight padding-left-10 padding-right-20"> - Contributors - </label> - <div class="padding-left-25"> - <cite> - {#data.contributors} - {@sep} - {?.givenName} {.givenName} {.familyName} ; {:else} {.name} ; {/.givenName} - {/sep} - {@last} - {?.givenName} {.givenName} {.familyName}. {:else} {.name}. {/.givenName} - {/last} - {/data.contributors} - </cite> - </div> - </div> - </div> - </div> - <hr> - {/data.contributors} - - - <div id="metadata"> </div> - - <hr> - - <div class="row"> - <div class="col-12"> - <div class="card" id="expReport"> - <div class="card-header text-center"> - <label>Experimental report </label> - </div> - </div> - </div> - </div> - - <br> - - <div class="row"> - <div class="col-12"> - <div class="card"> - <div class="card-header text-center"> - <label>Experimental data </label> - </div> - <div class="card-body padding10"> - <p class="card-text" >{data.accessMessage|s}</p> - </div> - <div class="card-body"> - <div class="row"> - <div class="col-1"> </div> - <div class="col-10"> - {@eq key=data.resourceType value=constants.ES_RESOURCE_TYPE} - <form action="https://data.esrf.fr/investigation/{data.investigationId}/datasets" target="_blank"> - {:else} - <form action="https://data.esrf.fr/public/{data.doi}" target="_blank" method="get"> - {/eq} - <button type="submit" class="btn btn-primary btn-lg btn-block"> Access data </button> - </form> - </div> - <div class="col-1"> </div> - </div> - </div> - </div> - </div> - </div> - - <hr> - - <div class="row"> - <div class="col-12"> - <div class="myBorder-left"> - <label class="greyGradientToRight padding-left-10 padding-right-20"> Reference </label> - <div class="padding-left-25"> - <p> Below is the recommended format for citing this work in a research publication.</p> - <div class="padding-left-25"> - <cite> {data.citation|s} </cite> - </div> - </div> - </div> - </div> - </div> -</div> - \ No newline at end of file diff --git a/www/templates/metadata_tpl.js b/www/templates/metadata_tpl.js deleted file mode 100644 index efde53f..0000000 --- a/www/templates/metadata_tpl.js +++ /dev/null @@ -1,105 +0,0 @@ -{! Presentation of the metadata for the DOI which are from sessions !} -{@eq key=data.resourceType value=constants.ES_RESOURCE_TYPE} -<div class="row"> - {?data.mergedProposalBeamlines} - {?data.mergedProposalBeamlines[0]} - <div class="col-6 col-md"> - <div class="myBorder-left"> - <label> Proposal </label> - {?data.mergedProposalBeamlines[0].proposal} - <div class="padding-left-15">{data.mergedProposalBeamlines[0].proposal}</div> - {:else} - <div class="padding-left-15"> Not available</div> - {/data.mergedProposalBeamlines[0].proposal} - </div> - </div> - - <div class="col-6 col-md"> - <div class="myBorder-left"> - <label> Publication year </label> - {?data.publiclyAccessibleYear} - <div class="padding-left-15">{data.publiclyAccessibleYear}</div> - {:else} - <div class="padding-left-15"> Not available</div> - {/data.publiclyAccessibleYear} - </div> - </div> - - <div class="col-6 col-md"> - <div class="myBorder-left"> - <label> Beamline </label> - {?data.mergedProposalBeamlines[0].beamline} - {@eq key=data.mergedProposalBeamlines[0].beamlineUrl value="noLink"} - <div class="padding-left-15">{data.mergedProposalBeamlines[0].beamline}</div> - {:else} - <div class="padding-left-15"> - <a href="{data.mergedProposalBeamlines[0].beamlineUrl}" target="_blank"> {data.mergedProposalBeamlines[0].beamline} </a> - </div> - {/eq} - {:else} - <div class="padding-left-15">Not available</div> - {/data.mergedProposalBeamlines[0].beamline} - </div> - </div> - - <div class="col-6 col-md"> - <div class="myBorder-left"> - <label> Session date </label> - {?data.sessionDate} - <div class="padding-left-15">{data.sessionDate}</div> - {:else} - <div class="padding-left-15"> Not available</div> - {/data.sessionDate} - </div> - </div> - - <div class="col-12 col-md-4"> - <div class="myBorder-left"> - <label>Category </label> - {?data.proposalType} - <div class="padding-left-15">{data.proposalType}</div> - {:else} - <div class="padding-left-15"> Not available</div> - {/data.proposalType} - </div> - </div> - {/data.mergedProposalBeamlines[0]} - {/data.mergedProposalBeamlines} -</div> - -<hr> - -<div class="row"> - <div class="col-12"> - {@abstract abstract=data.abstract} {/abstract} - </div> -</div> -{/eq} - - -{! Presentation of the metadata for the DOI which are from dataset collections !} -{@eq key=data.resourceType value=constants.DC_RESOURCE_TYPE} - <div class="row"> - <div class="col-md-12 col-xl-8"> - {@abstract abstract=data.abstract} {/abstract} - </br> - </div> - - <div class="col-sm-6 col-xl-2"> - <div class="myBorder-left" style="margin-right:-15px"> - {@proposalBeamlineTable mergedProposalBeamlines=data.mergedProposalBeamlines} {/proposalBeamlineTable} - </div> - </div> - - <div class="col-sm-6 col-xl-2" > - <div class="myBorder-left"> - <label> Publication year </label> - {?data.mintingYear} - <div class="padding-left-15">{data.mintingYear}</div> - {:else} - <div class="padding-left-15"> Not available</div> - {/data.mintingYear} - </div> - </div> - </div> -{/eq} \ No newline at end of file diff --git a/www/templates/welcome_tpl.js b/www/templates/welcome_tpl.js deleted file mode 100644 index ca4ee40..0000000 --- a/www/templates/welcome_tpl.js +++ /dev/null @@ -1,72 +0,0 @@ - <div class="container-fluid"> - <div class="row"> - <div class="col-12 flexCentered whiteFont" style="color:#132577; font-size: 6.4rem; height: 200px; margin-top: 10px; margin-bottom: 10px; text-align: center;">ESRF DOI Portal</div> - </div> - </div> - - <div class="container-fluid"> - <div class="row"> - <div class="col-12 col-md-4"> - <div class="padding10"> - <div class="card-header text-center"> - <h1 class="font-3p2rem">About the portal</h1> - </div> - <div class="card-body padding10"> - This page centralizes the <a href="http://www.esrf.eu/home/UsersAndScience/UserGuide/esrf-data-policy/doi.html" target="_blank"> DOI</a> services offered by the ESRF to access data stored at the facility as part of its data policy. - Data referred to by ESRF DOIs are accessed via the ESRF data catalogue <a href="https://data.esrf.fr" target="_blank"> data.esrf.fr</a>. - <p> In case you require a DOI for a subset of data please send an email with the following high level metadata - "proposal", "title", "authors", "abstract", "datasets" to datapolicy@esrf.fr </p> - </div> - </div> - </div> - - <div class="col-12 col-md-4"> - <div class="padding10"> - <div class="card-header text-center "> - <h1 class="font-3p2rem">DOI resolver</h1> - </div> - <div class="card-body padding10"> - <p> - The search engine below only searches DOIs which have been minted at the ESRF. <br/> Use - <a href="https://doi.org"> - doi.org - </a> - search engine for other DOIs. - </p> - <div class="row"> - <div class="col-xl-9 padding-right-0"> - <p> <input id="doiSearchBox" class="form-control" placeholder="10.15151/ESRF-ES-90632078" type="text" required/> </p> - <div class="text-danger" id="error"> </div> - </div> - <div class="col searchButtonDiv"> - <input class="btn btn-primary" type="submit" value="Search" onclick="searchDOI()" /> - </div> - </div> - <div class="row"> - <div class="col"> - <p> <a href="https://search.datacite.org/works?query=10.15151%2F*"> List all ESRF DOIs </a> </p> - </div> - </div> - </div> - </div> - </div> - - <div class="col-12 col-md-4"> - <div class="padding10"> - <div class="card-header text-center"> - <h1 class="font-3p2rem">About DOI </h1> - </div> - <div class="card-body padding10"> - - The Digital Object Identifier (<a href="http://www.esrf.eu/home/UsersAndScience/UserGuide/esrf-data-policy/doi.html">DOI</a>) is a code composed of digits and characters. It identifies data in a - unique and permanent way thereby allowing data to be referenced worldwide. The DOI has two parts, namely the DOI prefix and the DOI suffix separated by a slash ("/"). The ESRF prefix is 10.15151 followed by a slash and the ESRF suffix. - Currently the following suffix(es) are defined: - </p> - <pre> - ESRF-ES - for a session at the ESRF - </pre> - Refer to the <a href="http://www.esrf.eu/home/UsersAndScience/UserGuide/esrf-data-policy/doi/doi---concepts.html">DOI concepts</a> page to find out what a session is. - </div> - </div> - </div> - </div> - </div> \ No newline at end of file diff --git a/www/tests/citation.test.js b/www/tests/citation.test.js deleted file mode 100644 index fbba193..0000000 --- a/www/tests/citation.test.js +++ /dev/null @@ -1,40 +0,0 @@ -import Citation from '../src/citation'; - -describe('citation', () => { - describe('getDOIRegistrationYear', () => { - it('Returns the year for experimental session', () => { - let actualDoiData = { - resourceType: "experimental session resource type", - sessionDate="2017-12-31", - publiclyAccessibleYear = "2018" - }; - - let expectedYear = 2017; - let myCitation = new Citation(); - expect(myCitation.getDOIRegistrationYear(actualDoiData)).toEqual(expectedYear); - }) - - it('Returns the year for datacollection session', () => { - // thre is no sessionDate for this kind of DOI - let actualDoiData = { - resourceType: "dataset collection resource type", - publiclyAccessibleYear = "2018" - }; - - let expectedYear = 2018; - let myCitation = new Citation(); - expect(myCitation.getDOIRegistrationYear(actualDoiData)).toEqual(expectedYear); - }) - - it('Returns an empty string when sessionDate is not provided', () => { - let actualDoiData = { - }; - - let expectedYear = ""; - let myCitation = new Citation(); - expect(myCitation.getDOIRegistrationYear(actualDoiData)).toEqual(expectedYear); - }) - - }) - -}) \ No newline at end of file diff --git a/www/tests/doiController.test.js b/www/tests/doiController.test.js deleted file mode 100644 index e3d8377..0000000 --- a/www/tests/doiController.test.js +++ /dev/null @@ -1,83 +0,0 @@ -describe("Tests on doi controller", () => { - describe("getBeamlineUrl()", () => { - it("return beamlineurl for a 'ES' doi", () => { - let actualBeamlines = ['ID11']; - let actualDate = "2018-03-07" - let actualResourceType = CONSTANTS.ES_RESOURCE_TYPE; - let expectedBeamlineUrls = ["http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11"]; - - myDoiController = new DOIController(null); - expect(myDoiController.getBeamlineUrl(actualBeamlines, actualDate, actualResourceType)).toEqual(expectedBeamlineUrls); - }) - - it("return beamlineurl for a 'ES' doi without date", () => { - let actualBeamlines = ['ID11']; - let actualDate = null; - let actualResourceType = CONSTANTS.ES_RESOURCE_TYPE; - let expectedBeamlineUrls = ["noLink"]; - - myDoiController = new DOIController(null); - expect(myDoiController.getBeamlineUrl(actualBeamlines, actualDate, actualResourceType)).toEqual(expectedBeamlineUrls); - }) - - it("return beamlineurl for a 'ES' doi which beamline does not exists", () => { - let actualBeamlines = ['ID11', 'ID100']; - let actualDate = "2018-03-07"; - let actualResourceType = CONSTANTS.ES_RESOURCE_TYPE; - let expectedBeamlineUrls = ["http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11", "noLink"]; - - myDoiController = new DOIController(null); - expect(myDoiController.getBeamlineUrl(actualBeamlines, actualDate, actualResourceType)).toEqual(expectedBeamlineUrls); - }) - - it("return beamlineurl for a 'ES' doi which beamline which exists but it does not exist at the provided date ", () => { - let actualBeamlines = ['ID11', 'ID100']; - let actualDate = "1900-01-01"; //ESRF was not built at this time - let actualResourceType = CONSTANTS.ES_RESOURCE_TYPE; - let expectedBeamlineUrls = ["noLink", "noLink"]; - - myDoiController = new DOIController(null); - expect(myDoiController.getBeamlineUrl(actualBeamlines, actualDate, actualResourceType)).toEqual(expectedBeamlineUrls); - }) - - it("return beamlineurl for a 'DC' doi", () => { - let actualBeamlines = ['ID11', 'ID21']; - let actualDate = "2018-03-07" - let actualResourceType = CONSTANTS.DC_RESOURCE_TYPE; - let expectedBeamlineUrls = ["http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11", "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21"]; - - myDoiController = new DOIController(null); - expect(myDoiController.getBeamlineUrl(actualBeamlines, actualDate, actualResourceType)).toEqual(expectedBeamlineUrls); - }) - - it("return beamlineurl for a 'DC' doi without date", () => { - let actualBeamlines = ['ID11', 'ID21']; - let actualDate = null - let actualResourceType = CONSTANTS.DC_RESOURCE_TYPE; - let expectedBeamlineUrls = ["noLink", "noLink"]; - - myDoiController = new DOIController(null); - expect(myDoiController.getBeamlineUrl(actualBeamlines, actualDate, actualResourceType)).toEqual(expectedBeamlineUrls); - }) - - it("return beamlineurl for a 'DC' doi which beamline does not exists", () => { - let actualBeamlines = ['ID11', 'ID100']; - let actualDate = "2018-03-07"; - let actualResourceType = CONSTANTS.DC_RESOURCE_TYPE; - let expectedBeamlineUrls = ["http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11", "noLink"]; - - myDoiController = new DOIController(null); - expect(myDoiController.getBeamlineUrl(actualBeamlines, actualDate, actualResourceType)).toEqual(expectedBeamlineUrls); - }) - - it("return beamlineurl for a 'DC' doi which beamline which exists but it does not exist at the provided date ", () => { - let actualBeamlines = ['ID11', 'ID100']; - let actualDate = "1900-01-01"; //ESRF was not built at this time - let actualResourceType = CONSTANTS.DC_RESOURCE_TYPE; - let expectedBeamlineUrls = ["noLink", "noLink"]; - - myDoiController = new DOIController(null); - expect(myDoiController.getBeamlineUrl(actualBeamlines, actualDate, actualResourceType)).toEqual(expectedBeamlineUrls); - }) - }) -}) \ No newline at end of file diff --git a/www/tests/doiData.test.js b/www/tests/doiData.test.js deleted file mode 100644 index 7769456..0000000 --- a/www/tests/doiData.test.js +++ /dev/null @@ -1,22 +0,0 @@ -describe('DoiData', () => { - describe('getAccessibilityStatus', () => { - it('Returns open access when today is after publication date', () => { - let doiData = new DoiData(); - let actualReourceType = CONSTANTS.ES_RESOURCE_TYPE; - let actualSessionDate = "2017-01-01" - let actualPubliclyAccessibleYear = "2018" - expect(doiData.getAccessibilityStatus(actualReourceType, actualSessionDate, actualPubliclyAccessibleYear)).toEqual("Open access"); - }) - - it('Returns Restricted access when today is before publication date', () => { - let doiData = new DoiData(); - let actualReourceType = CONSTANTS.ES_RESOURCE_TYPE; - let actualSessionDate = "2017-01-01" - let actualPubliclyAccessibleYear = "2020" - expect(doiData.getAccessibilityStatus(actualReourceType, actualSessionDate, actualPubliclyAccessibleYear)).toEqual("Restricted access"); - }) - - - }) - -}) \ No newline at end of file diff --git a/www/tests/googleMetadataObject.test.js b/www/tests/googleMetadataObject.test.js deleted file mode 100644 index ca0fd7b..0000000 --- a/www/tests/googleMetadataObject.test.js +++ /dev/null @@ -1,47 +0,0 @@ -require('it-each')({ testPerIteration: true }); -let resources = require('./resources/googleMetadataObject.resource'); - -describe("googleMetadataObject unit tests", () => { - describe("initialization", () => { - it.each(resources.initialization, '[initialization: %s ]', ['aboutThisTest'], - function (element, next) { - let gmo = new GoogleMetadataObject(element.data); - - expect(gmo.getMetadata()).toEqual(element.expected); - next(); - }) - }) - - describe("setLicense", () => { - it.each(resources.setLicense, '[setLicense: %s ]', ['aboutThisTest'], - function (element, next) { - let gmo = new GoogleMetadataObject(element.data); - gmo.setLicense(); - - expect(gmo.getMetadata()).toEqual(element.expected); - next(); - }) - }) - - describe("setDescription", () => { - it.each(resources.setDescription, '[setDescription: %s ]', ['aboutThisTest'], - function (element, next) { - let gmo = new GoogleMetadataObject(element.data); - gmo.setDescription(); - - expect(gmo.getMetadata()).toEqual(element.expected); - next(); - }) - }) - - describe("setPublisherLogo", () => { - it.each(resources.setPublisherLogo, '[setPublisherLogo: %s ]', ['aboutThisTest'], - function (element, next) { - let gmo = new GoogleMetadataObject(element.data); - gmo.setPublisherLogo(); - - expect(gmo.getMetadata()).toEqual(element.expected); - next(); - }) - }) -}) \ No newline at end of file diff --git a/www/tests/jsonExtractor.test.js b/www/tests/jsonExtractor.test.js deleted file mode 100644 index 8a86a4e..0000000 --- a/www/tests/jsonExtractor.test.js +++ /dev/null @@ -1,124 +0,0 @@ -require('it-each')({ testPerIteration: true }); -let resources = require('./resources/jsonExtractor.resource'); - -describe("jsonExtractor unit tests", () => { - describe("getFieldFromSubject()", () => { - it.each(resources.getFieldFromSubject, '[getFieldFromSubject: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getFieldFromSubject(element.subjects, element.field)).toEqual(element.expected); - next(); - }) - }) - - describe("getResourceType()", () => { - it.each(resources.getResourceType, '[getResourceType: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getResourceType(element.doi)).toEqual(element.expected); - next(); - }) - }) - - describe('getResourceTypeGeneral', () => { - it.each(resources.getResourceTypeGeneral, '[getResourceTypeGeneral: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getResourceTypeGeneral(element.doi)).toEqual(element.expected); - next(); - }) - }) - - describe('getSessionDate', () => { - it.each(resources.getSessionDate, '[getSessionDate: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getSessionDate(element.doi)).toEqual(element.expected); - next(); - }) - }) - - describe("getMergedProposalAndBeamline", () => { - it.each(resources.getMergedProposalAndBeamline, '[getMergedProposalAndBeamline: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getMergedProposalAndBeamline(element.proposals, element.beamlines, element.beamlineUrls)).toEqual(element.expected); - next(); - }) - }) - - describe("getInvestigationId()", () => { - it.each(resources.getInvestigationId, '[getInvestigationId: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getInvestigationId(element.doi)).toEqual(element.expected); - next(); - }) - }) - - describe("getTitle()", () => { - it.each(resources.getTitle, '[getTitle: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getTitle(element.doi)).toEqual(element.expected); - next(); - }) - }) - - describe("getDOI()", () => { - it.each(resources.getDOI, '[getDOI: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getDOI(element.doi)).toEqual(element.expected); - next(); - }) - }) - - describe("getPublisher()", () => { - it.each(resources.getPublisher, '[getPublisher: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getPublisher(element.doi)).toEqual(element.expected); - next(); - }) - }) - - describe("getCreators()", () => { - it.each(resources.getCreators, '[getCreators: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getCreators(element.doi)).toEqual(element.expected); - next(); - }) - }) - - describe("getPubliclyAccessibleYear", () => { - it.each(resources.getPubliclyAccessibleYear, '[getPubliclyAccessibleYear: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getPubliclyAccessibleYear(element.doi)).toEqual(element.expected); - next(); - }) - }) - - describe("getAbstract()", () => { - it.each(resources.getAbstract, '[getAbstract: %s ]', ['aboutThisTest'], - function (element, next) { - let jsonExtractor = new JsonExtractor(); - - expect(jsonExtractor.getAbstract(element.doi)).toEqual(element.expected); - next(); - }) - }) -}) \ No newline at end of file diff --git a/www/tests/readme.txt b/www/tests/readme.txt deleted file mode 100644 index 996691f..0000000 --- a/www/tests/readme.txt +++ /dev/null @@ -1,4 +0,0 @@ -Below are doi created for the tests: - -- 10.5072/TEST-ESRF-MAX3 : data collection DOI -- DOI=10.5072/ESRF-ES-130884741 : experiment session DOI \ No newline at end of file diff --git a/www/tests/resources/doiLibrary.resource.js b/www/tests/resources/doiLibrary.resource.js deleted file mode 100644 index 367fe54..0000000 --- a/www/tests/resources/doiLibrary.resource.js +++ /dev/null @@ -1,180 +0,0 @@ -module.exports = { - doi_ES1: { - id: "https://doi.org/10.15151/esrf-es-92162610", - doi: "10.15151/ESRF-ES-92162610", - url: "https://doi.esrf.fr/10.15151/ESRF-ES-92162610", - types: { - ris: "DATA", - bibtex: "misc", - citeproc: "dataset", - schemaOrg: "Dataset", - resourceType: "Experiment Session", - resourceTypeGeneral: "Dataset" - }, - creators: [ - { - name: "Wright, Jonathan", - nameType: "Personal", - givenName: "Jonathan", - familyName: "Wright" - }, - { - name: "GLEYZOLLE, Henri", - nameType: "Personal", - givenName: "Henri", - familyName: "GLEYZOLLE" - }, - { - name: "MAJKUT, Marta", - nameType: "Personal", - givenName: "Marta", - familyName: "MAJKUT" - }, - { - name: "GIACOBBE, Carlotta", - nameType: "Personal", - givenName: "Carlotta", - familyName: "GIACOBBE" - }, - { - name: "LUDWIG, Wolfgang", - nameType: "Personal", - givenName: "Wolfgang", - familyName: "LUDWIG" - } - ], - titles: [ - { - title: "Align, radiation test and texture measurements on test samples" - } - ], - publisher: "European Synchrotron Radiation Facility", - container: {}, - subjects: [ - { - subject: "In-house Method and Instrumentation", - subjectScheme: "Proposal Type Description" - }, - { - subject: "IH-MI-1382", - subjectScheme: "Proposal" - }, - { - subject: "id11", - subjectScheme: "instrument" - } - ], - contributors: [], - dates: [ - { - date: "2018-03-26", - dateType: "Collected" - }, - { - date: "2021", - dateType: "Issued" - } - ], - publicationYear: 2021, - language: "eng", - identifiers: [ - { - identifier: "https://doi.org/10.15151/esrf-es-92162610", - identifierType: "DOI" - } - ], - sizes: [], - formats: [], - rightsList: [], - descriptions: [], - geoLocations: [], - fundingReferences: [], - relatedIdentifiers: [], - schemaVersion: "http://datacite.org/schema/kernel-3", - providerId: "inist", - clientId: "inist.esrf", - state: "findable" - }, - doi_DC1: { - - id: "https://doi.org/10.15151/esrf-dc-142915526", - doi: "10.15151/ESRF-DC-142915526", - url: "https://doi.esrf.fr/10.15151/ESRF-DC-142915526", - types: { - ris: "DATA", - bibtex: "misc", - citeproc: "dataset", - schemaOrg: "Dataset", - resourceType: "Datacollection", - resourceTypeGeneral: "Dataset" - }, - creators: [ - { - name: "Naschberger, Andreas", - nameType: "Personal", - givenName: "Andreas", - familyName: "Naschberger" - }, - { - name: "Bowler, Matthew W.", - nameType: "Personal", - givenName: "Matthew W.", - familyName: "Bowler" - }, - { - name: "Rupp, Bernhard", - nameType: "Personal", - givenName: "Bernhard", - familyName: "Rupp" - } - ], - titles: [ - { - title: "Controlled dehydration, structural flexibility, and Gadolinium MRI contrast compound binding in human plasma glycoprotein afamin" - } - ], - publisher: "European Synchrotron Radiation Facility", - container: {}, - subjects: [ - { - subject: "OPID-1", - subjectScheme: "Proposal" - }, - { - subject: "ID30A1", - subjectScheme: "Instrument" - } - ], - contributors: [], - dates: [ - { - date: "2018", - dateType: "Issued" - } - ], - publicationYear: 2018, - language: "en", - identifiers: [ - { - identifier: "https://doi.org/10.15151/esrf-dc-142915526", - identifierType: "DOI" - } - ], - sizes: [], - formats: [], - rightsList: [], - descriptions: [ - { - description: "Afamin, a human blood plasma glycoprotein, a putative multi-functional transporter of hydrophobic molecules and a marker for metabolic syndrome, poses multiple challenges for crystallographic structure determination, both practically and in analysis of the models. Several hundred crystals were analysed, and unusual variability in cell volume and difficulty solving the structure despite a ~34% sequence identity with non-glycosylated human serum albumin indicated that the molecule exhibits variable and context-sensitive packing, despite greatly simplified glycosylation in insect cell expressed recombinant afamin. Controlled dehydration of the crystals was able to stabilise the orthorhombic crystal form reducing the number of molecules in the asymmetric unit from the monoclinic form and changing the conformational states of the protein. An iterative strategy using fully automatic experiments available on MASSIF-1 was used to quickly determine the optimal protocol to achieve the phase transition that should be readily applicable to many types of sample. The study also highlights the drawback of using a single crystallographic structure model for computation modelling purposes given that conformational state of the binding sites and electron density in the binding site, likely resulting from PEGs, greatly varies between models. This also holds for the analysis of unspecific low-affinity ligands, where often a variety fragments with similar uncertainty can be modelled, inviting interpretative bias. As a promiscuous transporter, afamin can also bind Gadoteridol, a magnetic resonance imaging contrast compound in two sites, one near the human albumin Sudlow-site and a second hitherto unknown binding site.", - descriptionType: "Abstract" - } - ], - geoLocations: [], - fundingReferences: [], - relatedIdentifiers: [], - schemaVersion: "http://datacite.org/schema/kernel-3", - providerId: "inist", - clientId: "inist.esrf", - state: "findable" - } -} \ No newline at end of file diff --git a/www/tests/resources/googleMetadataLibrary.resource.js b/www/tests/resources/googleMetadataLibrary.resource.js deleted file mode 100644 index b46d082..0000000 --- a/www/tests/resources/googleMetadataLibrary.resource.js +++ /dev/null @@ -1,90 +0,0 @@ -module.exports = { - googleMetadata1: { - "@context": "http://schema.org", - "@type": "Dataset", - "@id": "https://doi.org/10.15151/esrf-es-47877949", - "identifier": { - "@type": "PropertyValue", - "propertyID": "DOI", - "value": "https://doi.org/10.15151/esrf-es-47877949" - }, - "url": "https://doi.esrf.fr/10.15151/ESRF-ES-47877949", - "additionalType": "Experiment Session", - "name": "Nanoscopic Metal Composition of Phagosomal Compartments during Engulfment of E. coli by Professional Phagocytes.", - "author": [ - { - "name": "Björn DE SAMBER", - "givenName": "Björn DE", - "familyName": "SAMBER", - "@type": "Person" - }, - { - "name": "Constantin URBAN", - "givenName": "Constantin", - "familyName": "URBAN", - "@type": "Person" - }, - { - "name": "Bart VEKEMANS", - "givenName": "Bart", - "familyName": "VEKEMANS", - "@type": "Person" - }, - { - "name": "Gerald FALKENBERG", - "givenName": "Gerald", - "familyName": "FALKENBERG", - "@type": "Person" - }, - { - "name": "Ella DE PAUW", - "givenName": "Ella DE", - "familyName": "PAUW", - "@type": "Person" - } - ], - "keywords": "Life Sciences, LS-2550, id16a", - "inLanguage": "eng", - "datePublished": "2020", - "schemaVersion": "http://datacite.org/schema/kernel-3", - "publisher": { - "@type": "Organization", - "name": "European Synchrotron Radiation Facility" - }, - "provider": { - "@type": "Organization", - "name": "DataCite" - } - }, - googleMetadata2: { - "@context": "http://schema.org", - "@type": "Dataset", - "@id": "https://doi.org/10.15151/esrf-es-94374108", - "identifier": { - "@type": "PropertyValue", - "propertyID": "DOI", - "value": "https://doi.org/10.15151/esrf-es-94374108" - }, - "url": "https://doi.esrf.fr/10.15151/ESRF-ES-94374108", - "additionalType": "Experiment Session", - "name": "High resolution 3-D structure of Thyroglobulin.", - "author": { - "name": "Didier NURIZZO", - "givenName": "Didier", - "familyName": "NURIZZO", - "@type": "Person" - }, - "keywords": "Macromolecular Crystallography, MX-2038, cm01", - "inLanguage": "eng", - "datePublished": "2021", - "schemaVersion": "http://datacite.org/schema/kernel-3", - "publisher": { - "@type": "Organization", - "name": "European Synchrotron Radiation Facility" - }, - "provider": { - "@type": "Organization", - "name": "DataCite" - } - } -} \ No newline at end of file diff --git a/www/tests/resources/googleMetadataObject.resource.js b/www/tests/resources/googleMetadataObject.resource.js deleted file mode 100644 index c99234c..0000000 --- a/www/tests/resources/googleMetadataObject.resource.js +++ /dev/null @@ -1,239 +0,0 @@ -let library = require('./googleMetadataLibrary.resource'); - -module.exports = { - initialization: [ - { - aboutThisTest: 'initialization', - data: library.googleMetadata1, - expected: library.googleMetadata1 - } - ], - setLicense: [ - { - aboutThisTest: 'it sets the expected license', - data: library.googleMetadata1, - expected: { - "@context": "http://schema.org", - "@type": "Dataset", - "@id": "https://doi.org/10.15151/esrf-es-47877949", - "identifier": { - "@type": "PropertyValue", - "propertyID": "DOI", - "value": "https://doi.org/10.15151/esrf-es-47877949" - }, - "url": "https://doi.esrf.fr/10.15151/ESRF-ES-47877949", - "additionalType": "Experiment Session", - "name": "Nanoscopic Metal Composition of Phagosomal Compartments during Engulfment of E. coli by Professional Phagocytes.", - "author": [ - { - "name": "Björn DE SAMBER", - "givenName": "Björn DE", - "familyName": "SAMBER", - "@type": "Person" - }, - { - "name": "Constantin URBAN", - "givenName": "Constantin", - "familyName": "URBAN", - "@type": "Person" - }, - { - "name": "Bart VEKEMANS", - "givenName": "Bart", - "familyName": "VEKEMANS", - "@type": "Person" - }, - { - "name": "Gerald FALKENBERG", - "givenName": "Gerald", - "familyName": "FALKENBERG", - "@type": "Person" - }, - { - "name": "Ella DE PAUW", - "givenName": "Ella DE", - "familyName": "PAUW", - "@type": "Person" - } - ], - "keywords": "Life Sciences, LS-2550, id16a", - "inLanguage": "eng", - "datePublished": "2020", - "schemaVersion": "http://datacite.org/schema/kernel-3", - "publisher": { - "@type": "Organization", - "name": "European Synchrotron Radiation Facility" - }, - "provider": { - "@type": "Organization", - "name": "DataCite" - }, - "license": "https://creativecommons.org/licenses/by/4.0" - } - } - ], - setDescription: [ - { - aboutThisTest: 'description made using title, authors as array and additional message', - data: library.googleMetadata1, - expected: { - "@context": "http://schema.org", - "@type": "Dataset", - "@id": "https://doi.org/10.15151/esrf-es-47877949", - "identifier": { - "@type": "PropertyValue", - "propertyID": "DOI", - "value": "https://doi.org/10.15151/esrf-es-47877949" - }, - "url": "https://doi.esrf.fr/10.15151/ESRF-ES-47877949", - "additionalType": "Experiment Session", - "name": "Nanoscopic Metal Composition of Phagosomal Compartments during Engulfment of E. coli by Professional Phagocytes.", - "author": [ - { - "name": "Björn DE SAMBER", - "givenName": "Björn DE", - "familyName": "SAMBER", - "@type": "Person" - }, - { - "name": "Constantin URBAN", - "givenName": "Constantin", - "familyName": "URBAN", - "@type": "Person" - }, - { - "name": "Bart VEKEMANS", - "givenName": "Bart", - "familyName": "VEKEMANS", - "@type": "Person" - }, - { - "name": "Gerald FALKENBERG", - "givenName": "Gerald", - "familyName": "FALKENBERG", - "@type": "Person" - }, - { - "name": "Ella DE PAUW", - "givenName": "Ella DE", - "familyName": "PAUW", - "@type": "Person" - } - ], - "keywords": "Life Sciences, LS-2550, id16a", - "inLanguage": "eng", - "datePublished": "2020", - "schemaVersion": "http://datacite.org/schema/kernel-3", - "publisher": { - "@type": "Organization", - "name": "European Synchrotron Radiation Facility" - }, - "provider": { - "@type": "Organization", - "name": "DataCite" - }, - "description": "Nanoscopic Metal Composition of Phagosomal Compartments during Engulfment of E. coli by Professional Phagocytes.; Björn DE SAMBER,Constantin URBAN,Bart VEKEMANS,Gerald FALKENBERG,Ella DE PAUW; There is currently no additional information regarding the description of this DOI.", - } - }, - { - aboutThisTest: 'description made using the title, the single author and the additional message', - data: library.googleMetadata2, - expected: { - "@context": "http://schema.org", - "@type": "Dataset", - "@id": "https://doi.org/10.15151/esrf-es-94374108", - "identifier": { - "@type": "PropertyValue", - "propertyID": "DOI", - "value": "https://doi.org/10.15151/esrf-es-94374108" - }, - "url": "https://doi.esrf.fr/10.15151/ESRF-ES-94374108", - "additionalType": "Experiment Session", - "name": "High resolution 3-D structure of Thyroglobulin.", - "author": { - "name": "Didier NURIZZO", - "givenName": "Didier", - "familyName": "NURIZZO", - "@type": "Person" - }, - "keywords": "Macromolecular Crystallography, MX-2038, cm01", - "inLanguage": "eng", - "datePublished": "2021", - "schemaVersion": "http://datacite.org/schema/kernel-3", - "publisher": { - "@type": "Organization", - "name": "European Synchrotron Radiation Facility" - }, - "provider": { - "@type": "Organization", - "name": "DataCite" - }, - "description": "High resolution 3-D structure of Thyroglobulin.; Didier NURIZZO; There is currently no additional information regarding the description of this DOI." - } - } - ], - setPublisherLogo: [ - { - aboutThisTest: 'set publisher s logo', - data: library.googleMetadata1, - expected: { - "@context": "http://schema.org", - "@type": "Dataset", - "@id": "https://doi.org/10.15151/esrf-es-47877949", - "identifier": { - "@type": "PropertyValue", - "propertyID": "DOI", - "value": "https://doi.org/10.15151/esrf-es-47877949" - }, - "url": "https://doi.esrf.fr/10.15151/ESRF-ES-47877949", - "additionalType": "Experiment Session", - "name": "Nanoscopic Metal Composition of Phagosomal Compartments during Engulfment of E. coli by Professional Phagocytes.", - "author": [ - { - "name": "Björn DE SAMBER", - "givenName": "Björn DE", - "familyName": "SAMBER", - "@type": "Person" - }, - { - "name": "Constantin URBAN", - "givenName": "Constantin", - "familyName": "URBAN", - "@type": "Person" - }, - { - "name": "Bart VEKEMANS", - "givenName": "Bart", - "familyName": "VEKEMANS", - "@type": "Person" - }, - { - "name": "Gerald FALKENBERG", - "givenName": "Gerald", - "familyName": "FALKENBERG", - "@type": "Person" - }, - { - "name": "Ella DE PAUW", - "givenName": "Ella DE", - "familyName": "PAUW", - "@type": "Person" - } - ], - "keywords": "Life Sciences, LS-2550, id16a", - "inLanguage": "eng", - "datePublished": "2020", - "schemaVersion": "http://datacite.org/schema/kernel-3", - "publisher": { - "@type": "Organization", - "name": "European Synchrotron Radiation Facility", - "logo": "https://doi.esrf.fr/src/images/esrfLogoBlue.png" - }, - "provider": { - "@type": "Organization", - "name": "DataCite" - }, - } - }, - ] -}; \ No newline at end of file diff --git a/www/tests/resources/jsonExtractor.resource.js b/www/tests/resources/jsonExtractor.resource.js deleted file mode 100644 index 2d5e8e6..0000000 --- a/www/tests/resources/jsonExtractor.resource.js +++ /dev/null @@ -1,289 +0,0 @@ -const doiLibrary = require('./doiLibrary.resource'); -module.exports = { - getFieldFromSubject: [ - { - aboutThisTest: 'subject has test without coma', - subjects: [ - { - subjectScheme: 'Proposal', - subject: 'IH-HC-3376' - }, - ], - field: 'Proposal', - expected: ['IH-HC-3376'] - }, - { - aboutThisTest: 'subject has text with coma coma', - subjects: [ - { - subjectScheme: 'Proposal', - subject: 'MA-4196,MD-1207' - }, - ], - field: 'Proposal', - expected: ['MA-4196', 'MD-1207'] - }, - { - aboutThisTest: 'is case insensitive on the subject', - subjects: [ - { - subjectScheme: 'instrument', - subject: 'id01' - }, - ], - field: 'Instrument', - expected: ['id01'] - }, - { - aboutThisTest: 'returns null when the subject is not found', - subjects: [ - { - subjectScheme: 'Instrument', - subject: 'id01' - }, - ], - field: 'Proposal', - expected: null - }, - { - aboutThisTest: 'returns null when the subject scheme exists but has no subject associated', - subjects: [ - { - subjectScheme: 'Proposal', - }, - ], - field: 'Proposal', - expected: null - } - ], - - getResourceType: [ - { - aboutThisTest: 'DOI corresponds to experimental session', - doi: doiLibrary.doi_ES1, - expected: CONSTANTS.ES_RESOURCE_TYPE - }, - { - aboutThisTest: 'DOI corresponds to a data collection', - doi: doiLibrary.doi_DC1, - expected: CONSTANTS.DC_RESOURCE_TYPE - }, - { - aboutThisTest: 'returns null when the doi resource type is not present', - doi: { title: 'just a title' }, - expected: null - }, - ], - - getResourceTypeGeneral: [ - { - aboutThisTest: 'DOI corresponds to experimental session', - doi: doiLibrary.doi_ES1, - expected: 'Dataset' - }, - { - aboutThisTest: 'returns null when the doi resource type general is not present', - doi: { title: 'just a title' }, - expected: null - }, - ], - - getSessionDate: [ - { - aboutThisTest: 'DOI corresponds to experimental session', - doi: doiLibrary.doi_ES1, - expected: '2018-03-26' - }, - { - aboutThisTest: 'DOI corresponds to a data collection', - doi: doiLibrary.doi_DC1, - expected: null - }, - ], - - getMergedProposalAndBeamline: [ - { - aboutThisTest: 'merge proposals and beamlines in a single table', - proposals: ['MA-4196', 'MD-1207'], - beamlines: ['ID11', 'ID21'], - beamlineUrls: ["http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11", "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21"], - expected: [ - { proposal: 'MA-4196', beamline: 'ID11', beamlineUrl: "http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11" }, - { proposal: 'MD-1207', beamline: 'ID21', beamlineUrl: "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21" } - ] - }, - { - aboutThisTest: 'merge proposals and beamlines in a single table and remove duplicates', - proposals: ['MA-4196', 'MD-1207', 'MA-4196'], - beamlines: ['ID11', 'ID21', 'ID11'], - beamlineUrls: ["http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11", "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21", "http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11"], - expected: [ - { proposal: 'MA-4196', beamline: 'ID11', beamlineUrl: "http://www.esrf.fr/UsersAndScience/Experiments/StructMaterials/ID11" }, - { proposal: 'MD-1207', beamline: 'ID21', beamlineUrl: "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21" }, - ] - }, - { - aboutThisTest: 'merge proposals and from a single beamline in a single table', - proposals: ['MA-4196', 'MD-1207'], - beamlines: ['ID21'], - beamlineUrls: ["http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21"], - expected: [ - { proposal: 'MA-4196', beamline: 'ID21', beamlineUrl: "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21" }, - { proposal: 'MD-1207', beamline: 'ID21', beamlineUrl: "http://www.esrf.eu/UsersAndScience/Experiments/XNP/ID21" } - ] - } - ], - getInvestigationId: [ - { - aboutThisTest: 'returns null for an experimental session DOI', - doi: doiLibrary.doi_ES1, - expected: '92162610' - }, - { - aboutThisTest: 'returns null for a data collection DOI', - doi: doiLibrary.doi_DC1, - expected: null - }, - ], - - getTitle: [ - { - aboutThisTest: 'returns the title for an experimental session DOI', - doi: doiLibrary.doi_ES1, - expected: 'Align, radiation test and texture measurements on test samples' - }, - { - aboutThisTest: 'returns null when titles is empty', - doi: { "titles": [] }, - expected: null, - }, - { - aboutThisTest: 'returns null when title is empty', - doi: { "titles": [{ "title": null }] }, - expected: null, - }, - ], - getDOI: [ - { - aboutThisTest: 'returns the DOI for an experimental session DOI', - doi: doiLibrary.doi_ES1, - expected: '10.15151/ESRF-ES-92162610' - }, - { - aboutThisTest: 'returns null when DOI is empty', - doi: { "doi": null, }, - expected: null - }, - ], - getPublisher: [ - { - aboutThisTest: 'returns the publisher for an experimental session DOI', - doi: doiLibrary.doi_ES1, - expected: 'European Synchrotron Radiation Facility' - }, - { - aboutThisTest: 'returns null when the publisher is not set', - doi: { "publisher": null }, - expected: null - }, - ], - getCreators: [ - { - aboutThisTest: 'returns the creators for an experimental session doi', - doi: doiLibrary.doi_ES1, - expected: [ - { - name: "Wright, Jonathan", - nameType: "Personal", - givenName: "Jonathan", - familyName: "Wright" - }, - { - name: "GLEYZOLLE, Henri", - nameType: "Personal", - givenName: "Henri", - familyName: "GLEYZOLLE" - }, - { - name: "MAJKUT, Marta", - nameType: "Personal", - givenName: "Marta", - familyName: "MAJKUT" - }, - { - name: "GIACOBBE, Carlotta", - nameType: "Personal", - givenName: "Carlotta", - familyName: "GIACOBBE" - }, - { - name: "LUDWIG, Wolfgang", - nameType: "Personal", - givenName: "Wolfgang", - familyName: "LUDWIG" - } - ] - }, - { - aboutThisTest: 'returns only the creators for which givenName && familyName is defined or name is defined', - doi: { - creators: [ - { - nameType: "Personal", - name: "LEAKE, Steven", - }, - { - nameType: "Personal", - }, - { - nameType: "Personal", - name: "ZATTERIN, Edoardo", - givenName: "Edoardo", - familyName: "ZATTERIN" - } - ] - }, - expected: [ - { - nameType: "Personal", - name: "LEAKE, Steven", - }, - {}, - { - nameType: "Personal", - name: "ZATTERIN, Edoardo", - givenName: "Edoardo", - familyName: "ZATTERIN" - } - ] - } - ], - - getPubliclyAccessibleYear: [ - { - aboutThisTest: 'returns the year the data will be publicly accessible', - doi: doiLibrary.doi_ES1, - expected: 2021 - }, - { - aboutThisTest: 'returns null when the year the data will be publicly accessible is not available', - doi: { publicationYear: null }, - expected: null - } - ], - - getAbstract: [ - { - aboutThisTest: 'returns the abstract', - doi: doiLibrary.doi_DC1, - expected: 'Afamin, a human blood plasma glycoprotein, a putative multi-functional transporter of hydrophobic molecules and a marker for metabolic syndrome, poses multiple challenges for crystallographic structure determination, both practically and in analysis of the models. Several hundred crystals were analysed, and unusual variability in cell volume and difficulty solving the structure despite a ~34% sequence identity with non-glycosylated human serum albumin indicated that the molecule exhibits variable and context-sensitive packing, despite greatly simplified glycosylation in insect cell expressed recombinant afamin. Controlled dehydration of the crystals was able to stabilise the orthorhombic crystal form reducing the number of molecules in the asymmetric unit from the monoclinic form and changing the conformational states of the protein. An iterative strategy using fully automatic experiments available on MASSIF-1 was used to quickly determine the optimal protocol to achieve the phase transition that should be readily applicable to many types of sample. The study also highlights the drawback of using a single crystallographic structure model for computation modelling purposes given that conformational state of the binding sites and electron density in the binding site, likely resulting from PEGs, greatly varies between models. This also holds for the analysis of unspecific low-affinity ligands, where often a variety fragments with similar uncertainty can be modelled, inviting interpretative bias. As a promiscuous transporter, afamin can also bind Gadoteridol, a magnetic resonance imaging contrast compound in two sites, one near the human albumin Sudlow-site and a second hitherto unknown binding site.' - }, - { - aboutThisTest: 'returns null when there is no abstract', - doi: doiLibrary.doi_ES1, - expected: null - }, - ] - - -} \ No newline at end of file diff --git a/www/tests/testSamples.js b/www/tests/testSamples.js deleted file mode 100644 index dfc4a8d..0000000 --- a/www/tests/testSamples.js +++ /dev/null @@ -1,101 +0,0 @@ -/** - * This file contains data received from datacite for different DOIs. - * doiData1 : metadata associated to a doi created from an experimental session - * doiData2 : metadata associated to a doi created from dataset collection - */ - -export const doiData1 = { - "id": "https://doi.org/10.15151/esrf-es-90632078", - "doi": "10.15151/esrf-es-90632078", - "creator": [ - { - "type": "Person", - "name": "Steven LEAKE", - "givenName": "Steven", - "familyName": "LEAKE" - }, - { - "type": "Person", - "name": "Edoardo ZATTERIN", - "givenName": "Edoardo", - "familyName": "ZATTERIN" - } - ], - "title": "Kmapping of Ge microdisks", - "publisher": "European Synchrotron Radiation Facility", - "resource_type_general": "Dataset", - "resource_type": "Experiment Session", - "subject": [ - [ - { - "subject_scheme": "Proposal Type Description", - "text": "In-house Hard Condensed Matter Science" - }, - { - "subject_scheme": "Proposal", - "text": "IH-HC-3376" - }, - { - "subject_scheme": "instrument", - "text": "id01" - } - ] - ], - "date_collected": "2018-03-07", - "date_published": "2021", - "date_registered": "2018-03-07T14:37:09Z", - "date_updated": "2018-03-08T16:30:22Z", - "publication_year": 2021, - "language": "eng", - "schemaVersion": "http://datacite.org/schema/kernel-3", - "provider_id": "INIST", - "client_id": "INIST.ESRF" -} - -export const doiData2 = { - "id": "https://handle.test.datacite.org/10.5072/esrf-dc-0123456", - "doi": "10.5072/esrf-dc-0123456", - "creator": [ - { - "type": "Person", - "name": "Sophie LANONE", - "givenName": "Sophie", - "familyName": "LANONE" - }, - { - "type": "Person", - "name": "Ana Elena PRADAS", - "givenName": "Ana", - "familyName": "Elena PRADAS" - } - ], - "title": "mint 2 different datasets from 2 different proposals, test2", - "publisher": "European Synchrotron Radiation Facility", - "resource_type_general": "Dataset", - "resource_type": "Datacollection", - "subject": [ - [ - { - "subject_scheme": "Proposal", - "text": "MA-4196,MD-1207" - }, - { - "subject_scheme": "Instrument", - "text": "ID11,ID21" - } - ] - ], - "date_published": "2018", - "date_updated": "2018-10-10T14:37:22.000Z", - "publication_year": 2018, - "language": "en", - "version": "1", - "description": { - "type": "Abstract", - "text": "no abstract" - }, - "schemaVersion": "http://datacite.org/schema/kernel-3", - "provider_id": "datacite", - "client_id": "datacite.esrf", - "provider": "DataCite" -} \ No newline at end of file -- GitLab