From 43f3602e8474b05159add9c4854d2af7ab9e625a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Pi=C3=B1era=20Buend=C3=ADa?= Date: Fri, 30 Jul 2021 07:36:25 +0200 Subject: [PATCH] Move TuistLab's API to the Tuist's repository (#3209) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Move lab-api to Tuist's repository * Centralize the Rubocop config at the root * Use the right Ruby version on CI * Update the Ruby version in the Gemfile * Use Node 16.4.0 * Add missing dependency * Remove encrypted credentials * Some renames * Disable test Co-authored-by: Pedro PiƱera --- .gitattributes | 2 + .github/workflows/lab.yml | 226 + .github/workflows/tuist-lab-deploy.yml | 20 + .nvmrc | 2 +- .rubocop.yml | 6 + .vscode/extensions.json | 4 +- .vscode/settings.json | 6 +- Procfile | 3 + projects/lab/.browserslistrc | 1 + projects/lab/.editorconfig | 30 + projects/lab/.eslintignore | 6 + projects/lab/.eslintrc.js | 58 + projects/lab/.gitattributes | 5 + projects/lab/.gitignore | 44 + projects/lab/.prettierrc | 6 + projects/lab/Gemfile | 62 + projects/lab/Gemfile.lock | 421 + projects/lab/Procfile.dev | 2 + projects/lab/Rakefile | 16 + projects/lab/app/assets/config/manifest.js | 0 .../app/assets/stylesheets/application.css | 15 + .../app/channels/application_cable/channel.rb | 7 + .../channels/application_cable/connection.rb | 7 + .../lab/app/controllers/app_controller.rb | 9 + .../app/controllers/application_controller.rb | 3 + .../controllers/concerns/authenticatable.rb | 8 + .../lab/app/controllers/graphql_controller.rb | 59 + .../users/omniauth_callbacks_controller.rb | 27 + .../lab/app/controllers/website_controller.rb | 54 + .../api_token_devise_strategy.rb | 95 + .../app/graphql/mutations/base_mutation.rb | 9 + .../graphql/mutations/organization_create.rb | 25 + projects/lab/app/graphql/tuist_lab_schema.rb | 32 + .../lab/app/graphql/types/base_argument.rb | 5 + .../lab/app/graphql/types/base_connection.rb | 7 + projects/lab/app/graphql/types/base_edge.rb | 7 + projects/lab/app/graphql/types/base_enum.rb | 5 + projects/lab/app/graphql/types/base_field.rb | 6 + .../app/graphql/types/base_input_object.rb | 6 + .../lab/app/graphql/types/base_interface.rb | 10 + projects/lab/app/graphql/types/base_object.rb | 8 + projects/lab/app/graphql/types/base_scalar.rb | 5 + projects/lab/app/graphql/types/base_union.rb | 7 + .../lab/app/graphql/types/mutation_type.rb | 6 + projects/lab/app/graphql/types/node_type.rb | 8 + .../app/graphql/types/organization_type.rb | 11 + projects/lab/app/graphql/types/query_type.rb | 19 + projects/lab/app/graphql/types/user_type.rb | 8 + .../lab/app/helpers/application_helper.rb | 5 + projects/lab/app/helpers/meta_tags_helper.rb | 38 + .../lab/app/javascript/components/App.tsx | 54 + .../app/javascript/components/MeQuery.graphql | 6 + .../graphql/OrganizationCreate.graphql | 10 + projects/lab/app/javascript/graphql/types.ts | 165 + projects/lab/app/javascript/images/icon.png | Bin 0 -> 22241 bytes .../lab/app/javascript/images/logo-topbar.png | Bin 0 -> 21712 bytes .../images/logo-with-background.png | Bin 0 -> 42509 bytes projects/lab/app/javascript/images/logo.svg | 6 + .../networking/ClientProvider.test.ts | 5 + .../javascript/networking/ClientProvider.tsx | 51 + .../networking/RESTClientProvider.tsx | 32 + .../app/javascript/networking/restClient.ts | 6 + .../lab/app/javascript/networking/signOut.ts | 17 + .../lab/app/javascript/packs/application.js | 26 + .../lab/app/javascript/packs/server-side.js | 8 + .../app/javascript/packs/server_rendering.js | 5 + .../lab/app/javascript/pages/HomePage.tsx | 321 + .../javascript/pages/OrganizationNewPage.tsx | 96 + .../app/javascript/pages/ProjectNewPage.tsx | 59 + .../lab/app/javascript/pages/SettingsPage.tsx | 59 + .../app/javascript/polaris/TopBarUserMenu.tsx | 66 + projects/lab/app/javascript/polaris/theme.ts | 13 + .../javascript/stylesheets/server-side.scss | 3 + .../javascript/stylesheets/tailwind.config.js | 34 + .../lab/app/javascript/types/globals.d.ts | 3 + projects/lab/app/javascript/types/png.d.ts | 4 + projects/lab/app/javascript/types/svg.d.ts | 4 + .../utilities/EnvironmentProvider.tsx | 61 + .../javascript/utilities/ErrorBoundary.tsx | 22 + .../lab/app/javascript/utilities/routes.ts | 4 + projects/lab/app/jobs/application_job.rb | 10 + projects/lab/app/lib/github/app.rb | 97 + .../lab/app/mailers/application_mailer.rb | 7 + projects/lab/app/mailers/example_mailer.rb | 6 + projects/lab/app/models/account.rb | 11 + projects/lab/app/models/application_record.rb | 6 + projects/lab/app/models/authorization.rb | 8 + .../models/concerns/token_authenticatable.rb | 48 + projects/lab/app/models/organization.rb | 7 + projects/lab/app/models/project.rb | 16 + projects/lab/app/models/role.rb | 16 + projects/lab/app/models/user.rb | 29 + projects/lab/app/policies/admin_policy.rb | 6 + .../lab/app/policies/application_policy.rb | 50 + .../app/presenters/application_presenter.rb | 10 + .../app/services/account_create_service.rb | 16 + .../lab/app/services/application_service.rb | 11 + .../app/services/authorization_add_service.rb | 28 + .../services/organization_create_service.rb | 20 + .../app/services/project_create_service.rb | 3 + .../lab/app/services/user_create_service.rb | 49 + .../lab/app/views/app/home/index.html.erb | 8 + .../views/devise/confirmations/new.html.erb | 16 + .../mailer/confirmation_instructions.html.erb | 5 + .../devise/mailer/email_changed.html.erb | 7 + .../devise/mailer/password_change.html.erb | 3 + .../reset_password_instructions.html.erb | 8 + .../mailer/unlock_instructions.html.erb | 7 + .../app/views/devise/passwords/edit.html.erb | 25 + .../app/views/devise/passwords/new.html.erb | 16 + .../views/devise/registrations/edit.html.erb | 43 + .../views/devise/registrations/new.html.erb | 29 + .../app/views/devise/sessions/new.html.erb | 18 + .../devise/shared/_error_messages.html.erb | 15 + .../app/views/devise/shared/_links.html.erb | 25 + .../lab/app/views/devise/unlocks/new.html.erb | 16 + .../example_mailer/example_email.html.erb | 9 + .../app/views/layouts/application.html.erb | 32 + .../lab/app/views/layouts/devise.html.erb | 32 + .../lab/app/views/layouts/mailer.html.erb | 13 + .../lab/app/views/layouts/mailer.text.erb | 1 + .../lab/app/views/layouts/website.html.erb | 31 + projects/lab/assets/header.png | Bin 0 -> 121798 bytes projects/lab/assets/logo.png | Bin 0 -> 6007 bytes projects/lab/babel.config.js | 89 + projects/lab/bin/aws-v3.rb | 29 + projects/lab/bin/bootsnap | 29 + projects/lab/bin/bundle | 114 + projects/lab/bin/byebug | 29 + projects/lab/bin/dotenv | 29 + projects/lab/bin/foreman | 29 + projects/lab/bin/gli | 29 + projects/lab/bin/graphql-schema | 29 + projects/lab/bin/haml | 29 + projects/lab/bin/listen | 29 + projects/lab/bin/nokogiri | 29 + projects/lab/bin/puma | 29 + projects/lab/bin/pumactl | 29 + projects/lab/bin/racc | 29 + projects/lab/bin/rackup | 29 + projects/lab/bin/rails | 5 + projects/lab/bin/rake | 5 + projects/lab/bin/redcarpet | 29 + projects/lab/bin/rubocop | 29 + projects/lab/bin/ruby-parse | 29 + projects/lab/bin/ruby-rewrite | 29 + projects/lab/bin/schema_comparator | 29 + projects/lab/bin/setup | 36 + projects/lab/bin/sidekiq | 29 + projects/lab/bin/sidekiqmon | 29 + projects/lab/bin/spring | 14 + projects/lab/bin/sprockets | 29 + projects/lab/bin/thor | 29 + projects/lab/bin/tilt | 29 + projects/lab/bin/webpack | 18 + projects/lab/bin/webpack-dev-server | 18 + projects/lab/bin/yarn | 17 + projects/lab/codegen.yml | 11 + projects/lab/config.ru | 8 + projects/lab/config/application.rb | 44 + projects/lab/config/boot.rb | 7 + projects/lab/config/cable.yml | 10 + projects/lab/config/database.ci.yml | 9 + projects/lab/config/database.yml | 18 + projects/lab/config/defaults.yml | 20 + projects/lab/config/environment.rb | 8 + .../lab/config/environments/development.rb | 80 + .../lab/config/environments/production.rb | 125 + projects/lab/config/environments/test.rb | 63 + .../application_controller_renderer.rb | 10 + projects/lab/config/initializers/assets.rb | 17 + .../initializers/backtrace_silencers.rb | 11 + projects/lab/config/initializers/bugsnag.rb | 6 + .../initializers/content_security_policy.rb | 36 + .../config/initializers/cookies_serializer.rb | 8 + projects/lab/config/initializers/devise.rb | 329 + projects/lab/config/initializers/dotenv.rb | 6 + .../initializers/filter_parameter_logging.rb | 7 + .../lab/config/initializers/inflections.rb | 18 + .../lab/config/initializers/mime_types.rb | 6 + .../config/initializers/permissions_policy.rb | 13 + .../lab/config/initializers/rails_admin.rb | 48 + projects/lab/config/initializers/rolify.rb | 11 + projects/lab/config/initializers/sidekiq.rb | 16 + projects/lab/config/initializers/smtp.rb | 9 + projects/lab/config/initializers/warden.rb | 2 + projects/lab/config/initializers/webpacker.rb | 5 + .../config/initializers/wrap_parameters.rb | 17 + projects/lab/config/locales/devise.en.yml | 65 + projects/lab/config/locales/en.yml | 33 + projects/lab/config/puma.rb | 46 + projects/lab/config/routes.rb | 30 + projects/lab/config/sidekiq.yml | 10 + projects/lab/config/spring.rb | 9 + projects/lab/config/storage.yml | 34 + projects/lab/config/webpack/development.js | 5 + projects/lab/config/webpack/environment.js | 22 + projects/lab/config/webpack/production.js | 28 + projects/lab/config/webpack/test.js | 5 + projects/lab/config/webpacker.yml | 95 + .../20210418163728_devise_create_users.rb | 44 + .../20210613100300_rolify_create_roles.rb | 21 + .../20210613165945_add_account_model.rb | 12 + .../20210613171635_add_project_model.rb | 10 + ...0210613173247_add_index_to_account_name.rb | 8 + ...174835_add_uniqueness_to_accounts_owner.rb | 8 + .../20210616152823_add_authorizations.rb | 27 + ...oken_and_repository_columns_to_projects.rb | 11 + projects/lab/db/schema.rb | 104 + projects/lab/db/seeds.rb | 9 + projects/lab/jest.config.js | 4 + projects/lab/lib/assets/.keep | 0 projects/lab/lib/tasks/.keep | 0 projects/lab/log/.keep | 0 projects/lab/package.json | 72 + projects/lab/postcss.config.js | 16 + projects/lab/public/404.html | 67 + projects/lab/public/422.html | 67 + projects/lab/public/500.html | 66 + .../public/apple-touch-icon-precomposed.png | 0 projects/lab/public/apple-touch-icon.png | 0 projects/lab/public/favicon.ico | 0 projects/lab/public/robots.txt | 1 + projects/lab/schema.graphql | 64 + projects/lab/schema.json | 1395 ++ projects/lab/storage/.keep | 0 .../lab/test/application_system_test_case.rb | 8 + .../application_cable/connection_test.rb | 16 + projects/lab/test/controllers/.keep | 0 projects/lab/test/fixtures/files/.keep | 0 projects/lab/test/fixtures/roles.yml | 11 + projects/lab/test/fixtures/users.yml | 7 + projects/lab/test/helpers/.keep | 0 projects/lab/test/integration/.keep | 0 projects/lab/test/lib/environment_test.rb | 7 + projects/lab/test/mailers/.keep | 0 projects/lab/test/models/account_test.rb | 75 + projects/lab/test/models/project_test.rb | 57 + projects/lab/test/models/role_test.rb | 8 + projects/lab/test/models/user_test.rb | 10 + .../sevices/account_create_service_test.rb | 3 + projects/lab/test/system/.keep | 0 projects/lab/test/test_helper.rb | 19 + projects/lab/tsconfig.json | 23 + projects/lab/yarn.lock | 12745 ++++++++++++++++ 245 files changed, 20748 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/lab.yml create mode 100644 .github/workflows/tuist-lab-deploy.yml create mode 100644 Procfile create mode 100644 projects/lab/.browserslistrc create mode 100644 projects/lab/.editorconfig create mode 100644 projects/lab/.eslintignore create mode 100644 projects/lab/.eslintrc.js create mode 100644 projects/lab/.gitattributes create mode 100644 projects/lab/.gitignore create mode 100644 projects/lab/.prettierrc create mode 100644 projects/lab/Gemfile create mode 100644 projects/lab/Gemfile.lock create mode 100644 projects/lab/Procfile.dev create mode 100644 projects/lab/Rakefile create mode 100644 projects/lab/app/assets/config/manifest.js create mode 100644 projects/lab/app/assets/stylesheets/application.css create mode 100644 projects/lab/app/channels/application_cable/channel.rb create mode 100644 projects/lab/app/channels/application_cable/connection.rb create mode 100644 projects/lab/app/controllers/app_controller.rb create mode 100644 projects/lab/app/controllers/application_controller.rb create mode 100644 projects/lab/app/controllers/concerns/authenticatable.rb create mode 100644 projects/lab/app/controllers/graphql_controller.rb create mode 100644 projects/lab/app/controllers/users/omniauth_callbacks_controller.rb create mode 100644 projects/lab/app/controllers/website_controller.rb create mode 100644 projects/lab/app/devise_strategies/api_token_devise_strategy.rb create mode 100644 projects/lab/app/graphql/mutations/base_mutation.rb create mode 100644 projects/lab/app/graphql/mutations/organization_create.rb create mode 100644 projects/lab/app/graphql/tuist_lab_schema.rb create mode 100644 projects/lab/app/graphql/types/base_argument.rb create mode 100644 projects/lab/app/graphql/types/base_connection.rb create mode 100644 projects/lab/app/graphql/types/base_edge.rb create mode 100644 projects/lab/app/graphql/types/base_enum.rb create mode 100644 projects/lab/app/graphql/types/base_field.rb create mode 100644 projects/lab/app/graphql/types/base_input_object.rb create mode 100644 projects/lab/app/graphql/types/base_interface.rb create mode 100644 projects/lab/app/graphql/types/base_object.rb create mode 100644 projects/lab/app/graphql/types/base_scalar.rb create mode 100644 projects/lab/app/graphql/types/base_union.rb create mode 100644 projects/lab/app/graphql/types/mutation_type.rb create mode 100644 projects/lab/app/graphql/types/node_type.rb create mode 100644 projects/lab/app/graphql/types/organization_type.rb create mode 100644 projects/lab/app/graphql/types/query_type.rb create mode 100644 projects/lab/app/graphql/types/user_type.rb create mode 100644 projects/lab/app/helpers/application_helper.rb create mode 100644 projects/lab/app/helpers/meta_tags_helper.rb create mode 100644 projects/lab/app/javascript/components/App.tsx create mode 100644 projects/lab/app/javascript/components/MeQuery.graphql create mode 100644 projects/lab/app/javascript/graphql/OrganizationCreate.graphql create mode 100644 projects/lab/app/javascript/graphql/types.ts create mode 100644 projects/lab/app/javascript/images/icon.png create mode 100644 projects/lab/app/javascript/images/logo-topbar.png create mode 100644 projects/lab/app/javascript/images/logo-with-background.png create mode 100644 projects/lab/app/javascript/images/logo.svg create mode 100644 projects/lab/app/javascript/networking/ClientProvider.test.ts create mode 100644 projects/lab/app/javascript/networking/ClientProvider.tsx create mode 100644 projects/lab/app/javascript/networking/RESTClientProvider.tsx create mode 100644 projects/lab/app/javascript/networking/restClient.ts create mode 100644 projects/lab/app/javascript/networking/signOut.ts create mode 100644 projects/lab/app/javascript/packs/application.js create mode 100644 projects/lab/app/javascript/packs/server-side.js create mode 100644 projects/lab/app/javascript/packs/server_rendering.js create mode 100644 projects/lab/app/javascript/pages/HomePage.tsx create mode 100644 projects/lab/app/javascript/pages/OrganizationNewPage.tsx create mode 100644 projects/lab/app/javascript/pages/ProjectNewPage.tsx create mode 100644 projects/lab/app/javascript/pages/SettingsPage.tsx create mode 100644 projects/lab/app/javascript/polaris/TopBarUserMenu.tsx create mode 100644 projects/lab/app/javascript/polaris/theme.ts create mode 100644 projects/lab/app/javascript/stylesheets/server-side.scss create mode 100644 projects/lab/app/javascript/stylesheets/tailwind.config.js create mode 100644 projects/lab/app/javascript/types/globals.d.ts create mode 100644 projects/lab/app/javascript/types/png.d.ts create mode 100644 projects/lab/app/javascript/types/svg.d.ts create mode 100644 projects/lab/app/javascript/utilities/EnvironmentProvider.tsx create mode 100644 projects/lab/app/javascript/utilities/ErrorBoundary.tsx create mode 100644 projects/lab/app/javascript/utilities/routes.ts create mode 100644 projects/lab/app/jobs/application_job.rb create mode 100644 projects/lab/app/lib/github/app.rb create mode 100644 projects/lab/app/mailers/application_mailer.rb create mode 100644 projects/lab/app/mailers/example_mailer.rb create mode 100644 projects/lab/app/models/account.rb create mode 100644 projects/lab/app/models/application_record.rb create mode 100644 projects/lab/app/models/authorization.rb create mode 100644 projects/lab/app/models/concerns/token_authenticatable.rb create mode 100644 projects/lab/app/models/organization.rb create mode 100644 projects/lab/app/models/project.rb create mode 100644 projects/lab/app/models/role.rb create mode 100644 projects/lab/app/models/user.rb create mode 100644 projects/lab/app/policies/admin_policy.rb create mode 100644 projects/lab/app/policies/application_policy.rb create mode 100644 projects/lab/app/presenters/application_presenter.rb create mode 100644 projects/lab/app/services/account_create_service.rb create mode 100644 projects/lab/app/services/application_service.rb create mode 100644 projects/lab/app/services/authorization_add_service.rb create mode 100644 projects/lab/app/services/organization_create_service.rb create mode 100644 projects/lab/app/services/project_create_service.rb create mode 100644 projects/lab/app/services/user_create_service.rb create mode 100644 projects/lab/app/views/app/home/index.html.erb create mode 100644 projects/lab/app/views/devise/confirmations/new.html.erb create mode 100644 projects/lab/app/views/devise/mailer/confirmation_instructions.html.erb create mode 100644 projects/lab/app/views/devise/mailer/email_changed.html.erb create mode 100644 projects/lab/app/views/devise/mailer/password_change.html.erb create mode 100644 projects/lab/app/views/devise/mailer/reset_password_instructions.html.erb create mode 100644 projects/lab/app/views/devise/mailer/unlock_instructions.html.erb create mode 100644 projects/lab/app/views/devise/passwords/edit.html.erb create mode 100644 projects/lab/app/views/devise/passwords/new.html.erb create mode 100644 projects/lab/app/views/devise/registrations/edit.html.erb create mode 100644 projects/lab/app/views/devise/registrations/new.html.erb create mode 100644 projects/lab/app/views/devise/sessions/new.html.erb create mode 100644 projects/lab/app/views/devise/shared/_error_messages.html.erb create mode 100644 projects/lab/app/views/devise/shared/_links.html.erb create mode 100644 projects/lab/app/views/devise/unlocks/new.html.erb create mode 100644 projects/lab/app/views/example_mailer/example_email.html.erb create mode 100644 projects/lab/app/views/layouts/application.html.erb create mode 100644 projects/lab/app/views/layouts/devise.html.erb create mode 100644 projects/lab/app/views/layouts/mailer.html.erb create mode 100644 projects/lab/app/views/layouts/mailer.text.erb create mode 100644 projects/lab/app/views/layouts/website.html.erb create mode 100644 projects/lab/assets/header.png create mode 100644 projects/lab/assets/logo.png create mode 100644 projects/lab/babel.config.js create mode 100755 projects/lab/bin/aws-v3.rb create mode 100755 projects/lab/bin/bootsnap create mode 100755 projects/lab/bin/bundle create mode 100755 projects/lab/bin/byebug create mode 100755 projects/lab/bin/dotenv create mode 100755 projects/lab/bin/foreman create mode 100755 projects/lab/bin/gli create mode 100755 projects/lab/bin/graphql-schema create mode 100755 projects/lab/bin/haml create mode 100755 projects/lab/bin/listen create mode 100755 projects/lab/bin/nokogiri create mode 100755 projects/lab/bin/puma create mode 100755 projects/lab/bin/pumactl create mode 100755 projects/lab/bin/racc create mode 100755 projects/lab/bin/rackup create mode 100755 projects/lab/bin/rails create mode 100755 projects/lab/bin/rake create mode 100755 projects/lab/bin/redcarpet create mode 100755 projects/lab/bin/rubocop create mode 100755 projects/lab/bin/ruby-parse create mode 100755 projects/lab/bin/ruby-rewrite create mode 100755 projects/lab/bin/schema_comparator create mode 100755 projects/lab/bin/setup create mode 100755 projects/lab/bin/sidekiq create mode 100755 projects/lab/bin/sidekiqmon create mode 100755 projects/lab/bin/spring create mode 100755 projects/lab/bin/sprockets create mode 100755 projects/lab/bin/thor create mode 100755 projects/lab/bin/tilt create mode 100755 projects/lab/bin/webpack create mode 100755 projects/lab/bin/webpack-dev-server create mode 100755 projects/lab/bin/yarn create mode 100644 projects/lab/codegen.yml create mode 100644 projects/lab/config.ru create mode 100644 projects/lab/config/application.rb create mode 100644 projects/lab/config/boot.rb create mode 100644 projects/lab/config/cable.yml create mode 100644 projects/lab/config/database.ci.yml create mode 100644 projects/lab/config/database.yml create mode 100644 projects/lab/config/defaults.yml create mode 100644 projects/lab/config/environment.rb create mode 100644 projects/lab/config/environments/development.rb create mode 100644 projects/lab/config/environments/production.rb create mode 100644 projects/lab/config/environments/test.rb create mode 100644 projects/lab/config/initializers/application_controller_renderer.rb create mode 100644 projects/lab/config/initializers/assets.rb create mode 100644 projects/lab/config/initializers/backtrace_silencers.rb create mode 100644 projects/lab/config/initializers/bugsnag.rb create mode 100644 projects/lab/config/initializers/content_security_policy.rb create mode 100644 projects/lab/config/initializers/cookies_serializer.rb create mode 100644 projects/lab/config/initializers/devise.rb create mode 100644 projects/lab/config/initializers/dotenv.rb create mode 100644 projects/lab/config/initializers/filter_parameter_logging.rb create mode 100644 projects/lab/config/initializers/inflections.rb create mode 100644 projects/lab/config/initializers/mime_types.rb create mode 100644 projects/lab/config/initializers/permissions_policy.rb create mode 100644 projects/lab/config/initializers/rails_admin.rb create mode 100644 projects/lab/config/initializers/rolify.rb create mode 100644 projects/lab/config/initializers/sidekiq.rb create mode 100644 projects/lab/config/initializers/smtp.rb create mode 100644 projects/lab/config/initializers/warden.rb create mode 100644 projects/lab/config/initializers/webpacker.rb create mode 100644 projects/lab/config/initializers/wrap_parameters.rb create mode 100644 projects/lab/config/locales/devise.en.yml create mode 100644 projects/lab/config/locales/en.yml create mode 100644 projects/lab/config/puma.rb create mode 100644 projects/lab/config/routes.rb create mode 100644 projects/lab/config/sidekiq.yml create mode 100644 projects/lab/config/spring.rb create mode 100644 projects/lab/config/storage.yml create mode 100644 projects/lab/config/webpack/development.js create mode 100644 projects/lab/config/webpack/environment.js create mode 100644 projects/lab/config/webpack/production.js create mode 100644 projects/lab/config/webpack/test.js create mode 100644 projects/lab/config/webpacker.yml create mode 100644 projects/lab/db/migrate/20210418163728_devise_create_users.rb create mode 100644 projects/lab/db/migrate/20210613100300_rolify_create_roles.rb create mode 100644 projects/lab/db/migrate/20210613165945_add_account_model.rb create mode 100644 projects/lab/db/migrate/20210613171635_add_project_model.rb create mode 100644 projects/lab/db/migrate/20210613173247_add_index_to_account_name.rb create mode 100644 projects/lab/db/migrate/20210613174835_add_uniqueness_to_accounts_owner.rb create mode 100644 projects/lab/db/migrate/20210616152823_add_authorizations.rb create mode 100644 projects/lab/db/migrate/20210626090126_add_token_and_repository_columns_to_projects.rb create mode 100644 projects/lab/db/schema.rb create mode 100644 projects/lab/db/seeds.rb create mode 100644 projects/lab/jest.config.js create mode 100644 projects/lab/lib/assets/.keep create mode 100644 projects/lab/lib/tasks/.keep create mode 100644 projects/lab/log/.keep create mode 100644 projects/lab/package.json create mode 100644 projects/lab/postcss.config.js create mode 100644 projects/lab/public/404.html create mode 100644 projects/lab/public/422.html create mode 100644 projects/lab/public/500.html create mode 100644 projects/lab/public/apple-touch-icon-precomposed.png create mode 100644 projects/lab/public/apple-touch-icon.png create mode 100644 projects/lab/public/favicon.ico create mode 100644 projects/lab/public/robots.txt create mode 100644 projects/lab/schema.graphql create mode 100644 projects/lab/schema.json create mode 100644 projects/lab/storage/.keep create mode 100644 projects/lab/test/application_system_test_case.rb create mode 100644 projects/lab/test/channels/application_cable/connection_test.rb create mode 100644 projects/lab/test/controllers/.keep create mode 100644 projects/lab/test/fixtures/files/.keep create mode 100644 projects/lab/test/fixtures/roles.yml create mode 100644 projects/lab/test/fixtures/users.yml create mode 100644 projects/lab/test/helpers/.keep create mode 100644 projects/lab/test/integration/.keep create mode 100644 projects/lab/test/lib/environment_test.rb create mode 100644 projects/lab/test/mailers/.keep create mode 100644 projects/lab/test/models/account_test.rb create mode 100644 projects/lab/test/models/project_test.rb create mode 100644 projects/lab/test/models/role_test.rb create mode 100644 projects/lab/test/models/user_test.rb create mode 100644 projects/lab/test/sevices/account_create_service_test.rb create mode 100644 projects/lab/test/system/.keep create mode 100644 projects/lab/test/test_helper.rb create mode 100644 projects/lab/tsconfig.json create mode 100644 projects/lab/yarn.lock diff --git a/.gitattributes b/.gitattributes index 89e130e09..59951e50e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,3 @@ CHANGELOG merge=union + +yarn.lock linguist-generated \ No newline at end of file diff --git a/.github/workflows/lab.yml b/.github/workflows/lab.yml new file mode 100644 index 000000000..184264137 --- /dev/null +++ b/.github/workflows/lab.yml @@ -0,0 +1,226 @@ +name: TuistLab + +on: + push: + branches: + - main + pull_request: + paths: + - projects/lab/** + +env: + RAILS_ENV: test + RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} + RUBY_VERSION: "3.0.1" + NODE_VERSION: "16.4.0" + CI: 1 +jobs: + test: + name: Test Ruby + runs-on: ubuntu-latest + services: + postgres: + image: postgres:11-alpine + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + redis: + image: redis:4.0.6 + steps: + - uses: actions/checkout@v2 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + ruby-version: ${{ env.RUBY_VERSION }} + - uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Install dependencies + working-directory: projects/lab + run: | + sudo apt-get -yqq install libpq-dev + gem install bundler + bundle config path vendor/bundle + bundle install --jobs=4 --retry=3 + - name: Set up database (to detect schema breaking changes) + working-directory: projects/lab + run: | + cp config/database.ci.yml config/database.yml + bundle exec rails db:create + bundle exec rails db:schema:load + - name: Migrate database + working-directory: projects/lab + run: bin/rails db:migrate + - name: Run Ruby tests + working-directory: projects/lab + run: | + bundle exec rails test + assets_precompile: + name: Assets precompile + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + ruby-version: ${{ env.RUBY_VERSION }} + - uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - uses: actions/cache@v2 + name: Cache Yarn dependencies + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('projects/lab/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install dependencies + working-directory: projects/lab + run: | + sudo apt-get -yqq install libpq-dev + gem install bundler + bundle config path vendor/bundle + bundle install --jobs=4 --retry=3 + yarn install --frozen-lockfile + - name: Precompile assets + working-directory: projects/lab + run: | + bin/rails assets:precompile + detect_schema_breaking_changes: + name: GraphQL breaking changes + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + ruby-version: ${{ env.RUBY_VERSION }} + - uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - uses: actions/cache@v2 + name: Cache Yarn dependencies + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('projects/lab/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install dependencies + working-directory: projects/lab + run: | + sudo apt-get -yqq install libpq-dev + gem install bundler + bundle config path vendor/bundle + bundle install --jobs=4 --retry=3 + yarn install --frozen-lockfile + - name: Precompile assets + working-directory: projects/lab + run: | + mv schema.graphql old_schema.graphql + bin/rails graphql:schema:dump + bundle exec schema_comparator verify old_schema.graphql schema.graphql + typescript_type_check: + name: Typescript type-check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - uses: actions/cache@v2 + name: Cache Yarn dependencies + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('projects/lab/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install dependencies + working-directory: projects/lab + run: | + sudo apt-get -yqq install libpq-dev + yarn install --frozen-lockfile + yarn install --frozen-lockfile --cwd website + - name: Typecheck + working-directory: projects/lab + run: | + yarn type-check + frontend_tests: + name: Frontend tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - uses: actions/cache@v2 + name: Cache Yarn dependencies + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('projects/lab/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install dependencies + working-directory: projects/lab + run: | + sudo apt-get -yqq install libpq-dev + yarn install --frozen-lockfile + - name: Typecheck + working-directory: projects/lab + run: | + yarn test + eslint: + name: ESLint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - uses: actions/cache@v2 + name: Cache Yarn dependencies + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('projects/lab/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install dependencies + working-directory: projects/lab + run: | + sudo apt-get -yqq install libpq-dev + yarn install --frozen-lockfile + yarn install --frozen-lockfile --cwd website + - name: ESLint + working-directory: projects/lab + run: | + yarn lint + diff --git a/.github/workflows/tuist-lab-deploy.yml b/.github/workflows/tuist-lab-deploy.yml new file mode 100644 index 000000000..f001e90d5 --- /dev/null +++ b/.github/workflows/tuist-lab-deploy.yml @@ -0,0 +1,20 @@ +name: Deploy + +on: + push: + branches: + - main + +jobs: + deploy: + name: Deploy to Heroku + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Deploy to Heroku + env: + HEROKU_APP_NAME: ${{ secrets.HEROKU_APP_NAME }} + HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }} + run: | + git remote add heroku https://heroku:$HEROKU_API_TOKEN@git.heroku.com/$HEROKU_APP_NAME.git + git push heroku --force HEAD:main diff --git a/.nvmrc b/.nvmrc index d9617ea1b..28ebe8b4d 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -16.5.0 \ No newline at end of file +16.5.0 diff --git a/.rubocop.yml b/.rubocop.yml index 39e4e2490..43bc7393b 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -4,6 +4,7 @@ inherit_gem: - config/rails.yml require: - rubocop-minitest + - rubocop-rails Style/ClassAndModuleChildren: Enabled: false @@ -25,3 +26,8 @@ AllCops: - vendor/**/* - projects/website/node_modules/**/* - projects/tuist/fixtures/**/* + - projects/lab/bin/**/* + - projects/lab/db/schema.rb + - projects/lab/node_modules/**/* + - projects/lab/docs/** + - projects/lab/website/**/* diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 93dd68985..d2ef2bbc6 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -5,6 +5,8 @@ "bradlc.vscode-tailwindcss", "rebornix.ruby", "misogi.ruby-rubocop", - "shopify.vscode-shadowenv" + "shopify.vscode-shadowenv", + "editorconfig.editorconfig", + "dracula-theme.theme-dracula", ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index f43273699..aef225561 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,5 +20,9 @@ "**/node_modules": true, "**/.DS_Store": true }, - "editor.formatOnSave": true + "editor.formatOnSave": false, + "workbench.colorTheme": "Dracula Soft", + "editor.quickSuggestions": { + "strings": true + } } diff --git a/Procfile b/Procfile new file mode 100644 index 000000000..f88fc3de3 --- /dev/null +++ b/Procfile @@ -0,0 +1,3 @@ +release: bundle exec rake db:migrate +web: bundle exec puma -C config/puma.rb +worker: bundle exec sidekiq -C config/sidekiq.yml diff --git a/projects/lab/.browserslistrc b/projects/lab/.browserslistrc new file mode 100644 index 000000000..e94f8140c --- /dev/null +++ b/projects/lab/.browserslistrc @@ -0,0 +1 @@ +defaults diff --git a/projects/lab/.editorconfig b/projects/lab/.editorconfig new file mode 100644 index 000000000..36c0f685c --- /dev/null +++ b/projects/lab/.editorconfig @@ -0,0 +1,30 @@ +root = true + +[*] +insert_final_newline = true + +[*.{js,json}] +charset = utf-8 +trim_trailing_whitespace = true +indent_style = space +indent_size = 2 + +[{Gemfile,Gemfile.lock,*.rb,*.ru,*.erb}] +charset = utf-8 +trim_trailing_whitespace = true +indent_style = space +indent_size = 2 + +[*.{yml,yaml}] +charset = utf-8 +trim_trailing_whitespace = true +indent_style = space +indent_size = 2 + +[{src,scripts}/**.{ts,json,js}] +end_of_line = crlf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 \ No newline at end of file diff --git a/projects/lab/.eslintignore b/projects/lab/.eslintignore new file mode 100644 index 000000000..f76b66d5b --- /dev/null +++ b/projects/lab/.eslintignore @@ -0,0 +1,6 @@ +node_modules +app/javascript/graphql +website/public/ +website/.cache/ +website/node_modules/ +docs diff --git a/projects/lab/.eslintrc.js b/projects/lab/.eslintrc.js new file mode 100644 index 000000000..a84846955 --- /dev/null +++ b/projects/lab/.eslintrc.js @@ -0,0 +1,58 @@ +module.exports = { + env: { + browser: true, + es2021: true, + jest: true, + }, + globals: { + BASE_URL: 'readonly', + ENVIRONMENT: 'readonly', + BUGSNAG_FRONTEND_API_KEY: 'readonly', + }, + settings: { + react: { + version: 'detect', + }, + 'import/resolver': { + node: { + extensions: [ + '.js', + '.jsx', + '.ts', + '.tsx', + '.css', + '.scss', + '.css.ts', + ], + moduleDirectory: ['node_modules', 'src/'], + }, + }, + }, + extends: [ + 'plugin:react/recommended', + 'plugin:@typescript-eslint/recommended', + 'airbnb', + 'prettier', + ], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 12, + sourceType: 'module', + }, + plugins: ['react', '@typescript-eslint', 'prettier'], + rules: { + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': ['error'], + 'prettier/prettier': ['error'], + 'react/jsx-filename-extension': [ + 1, + { extensions: ['.js', '.jsx', '.ts', '.tsx'] }, + ], + 'react/prop-types': 'off', + 'react/require-default-props': 'off', + 'import/extensions': 'off', + }, +}; diff --git a/projects/lab/.gitattributes b/projects/lab/.gitattributes new file mode 100644 index 000000000..2ad36c7a3 --- /dev/null +++ b/projects/lab/.gitattributes @@ -0,0 +1,5 @@ +# Mark the database schema as having been generated. +db/schema.rb linguist-generated + +# Mark any vendored files as having been vendored. +vendor/* linguist-vendored diff --git a/projects/lab/.gitignore b/projects/lab/.gitignore new file mode 100644 index 000000000..d8a8ce9e9 --- /dev/null +++ b/projects/lab/.gitignore @@ -0,0 +1,44 @@ +# See https://help.github.com/articles/ignoring-files for more about ignoring files. +# +# If you find yourself ignoring temporary files generated by your text editor +# or operating system, you probably want to add a global ignore instead: +# git config --global core.excludesfile '~/.gitignore_global' + +# Ignore bundler config. +/.bundle + +# Ignore all logfiles and tempfiles. +/log/* +/tmp/* +!/log/.keep +!/tmp/.keep + +# Ignore pidfiles, but keep the directory. +/tmp/pids/* +!/tmp/pids/ +!/tmp/pids/.keep + +# Ignore uploaded files in development. +/storage/* +!/storage/.keep + +/public/assets +.byebug_history + +# Ignore master key for decrypting credentials and more. +/config/master.key + +/public/packs +/public/packs-test +/node_modules +/yarn-error.log +yarn-debug.log* +.yarn-integrity +node_modules/ +/config/credentials/production.key + +.env.development + +sorbet/rbi/hidden-definitions/errors.txt + +TODO.md diff --git a/projects/lab/.prettierrc b/projects/lab/.prettierrc new file mode 100644 index 000000000..4a8b16b83 --- /dev/null +++ b/projects/lab/.prettierrc @@ -0,0 +1,6 @@ +{ + "semi": true, + "trailingComma": "all", + "singleQuote": true, + "printWidth": 70 + } diff --git a/projects/lab/Gemfile b/projects/lab/Gemfile new file mode 100644 index 000000000..e8db24689 --- /dev/null +++ b/projects/lab/Gemfile @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +source "https://rubygems.org" +git_source(:github) { |repo| "https://github.com/#{repo}.git" } + +ruby "~> 3.0.1" + +gem "bcrypt", "~> 3.1.7" +gem "bootsnap", ">= 1.4.4", require: false +gem "devise", "~> 4.8" +gem "dotenv-rails" +gem "jbuilder", "~> 2.7" +gem "js_from_routes", "~> 2.0" +gem "pg", "~> 1.1" +gem "puma", "~> 5.3.2" +gem "rails", "~> 6.1.4" +gem "redis", "~> 4.0" +gem "sass-rails", ">= 6" +gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] +gem "tailwindcss-rails", "~> 0.3.3" +gem "rolify", "~> 6.0" +gem "pundit", "~> 2.1" +gem "webpacker", "~> 5.4" +gem "actionpack-page_caching", "~> 1.2" +gem "front_matter_parser", "~> 1.0" +gem "redcarpet", "~> 3.5" +gem "rails_admin", "~> 2.1" +gem "sidekiq", "~> 6.2" +gem "bugsnag", "~> 6.21" +gem "dig_bang", "~> 0.2.1" +gem "octokit", "~> 4.21" +gem "securecompare", "~> 1.0" +gem "sidekiq-scheduler", "~> 3.1" +gem "react-rails", "~> 2.6" +gem "graphql", "~> 1.12" +gem "graphiql-rails", group: :development +gem "rexml", "~> 3.2" + +# Omniauth +gem "omniauth", "~> 2.0" +gem "omniauth-github", "~> 2.0" +gem "omniauth-rails_csrf_protection", "~> 1.0" + +group :development, :test do + gem "byebug", platforms: [:mri, :mingw, :x64_mingw] +end + +group :development do + gem "foreman", "~> 0.87.2" + gem "listen", "~> 3.3" + # gem "rack-mini-profiler", "~> 2.0" + gem "spring" + gem "web-console", ">= 4.1.0" + gem "graphql-schema_comparator", "~> 1.0" +end + +group :test do + gem "capybara", ">= 3.26" + gem "mocha", "~> 1.12" + gem "selenium-webdriver" + gem "webdrivers" +end diff --git a/projects/lab/Gemfile.lock b/projects/lab/Gemfile.lock new file mode 100644 index 000000000..bbb4fbc93 --- /dev/null +++ b/projects/lab/Gemfile.lock @@ -0,0 +1,421 @@ +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.4) + actionpack (= 6.1.4) + activesupport (= 6.1.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.4) + actionpack (= 6.1.4) + activejob (= 6.1.4) + activerecord (= 6.1.4) + activestorage (= 6.1.4) + activesupport (= 6.1.4) + mail (>= 2.7.1) + actionmailer (6.1.4) + actionpack (= 6.1.4) + actionview (= 6.1.4) + activejob (= 6.1.4) + activesupport (= 6.1.4) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.4) + actionview (= 6.1.4) + activesupport (= 6.1.4) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actionpack-page_caching (1.2.4) + actionpack (>= 4.0.0) + actiontext (6.1.4) + actionpack (= 6.1.4) + activerecord (= 6.1.4) + activestorage (= 6.1.4) + activesupport (= 6.1.4) + nokogiri (>= 1.8.5) + actionview (6.1.4) + activesupport (= 6.1.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.4) + activesupport (= 6.1.4) + globalid (>= 0.3.6) + activemodel (6.1.4) + activesupport (= 6.1.4) + activemodel-serializers-xml (1.0.2) + activemodel (> 5.x) + activesupport (> 5.x) + builder (~> 3.1) + activerecord (6.1.4) + activemodel (= 6.1.4) + activesupport (= 6.1.4) + activestorage (6.1.4) + actionpack (= 6.1.4) + activejob (= 6.1.4) + activerecord (= 6.1.4) + activesupport (= 6.1.4) + marcel (~> 1.0.0) + mini_mime (>= 1.1.0) + activesupport (6.1.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + babel-source (5.8.35) + babel-transpiler (0.7.0) + babel-source (>= 4.0, < 6) + execjs (~> 2.0) + bcrypt (3.1.16) + bindex (0.8.1) + bootsnap (1.7.5) + msgpack (~> 1.0) + bugsnag (6.21.0) + concurrent-ruby (~> 1.0) + builder (3.2.4) + byebug (11.1.3) + capybara (3.35.3) + addressable + mini_mime (>= 0.1.3) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (>= 1.5, < 3.0) + xpath (~> 3.2) + childprocess (3.0.0) + concurrent-ruby (1.1.9) + connection_pool (2.2.5) + crass (1.0.6) + devise (4.8.0) + bcrypt (~> 3.0) + orm_adapter (~> 0.1) + railties (>= 4.1.0) + responders + warden (~> 1.2.3) + dig_bang (0.2.1) + dotenv (2.7.6) + dotenv-rails (2.7.6) + dotenv (= 2.7.6) + railties (>= 3.2) + e2mmap (0.1.0) + erubi (1.10.0) + et-orbi (1.2.4) + tzinfo + execjs (2.8.1) + faraday (1.4.2) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) + multipart-post (>= 1.2, < 3) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.1.0) + ffi (1.15.1) + foreman (0.87.2) + front_matter_parser (1.0.0) + fugit (1.5.0) + et-orbi (~> 1.1, >= 1.1.8) + raabro (~> 1.4) + globalid (0.4.2) + activesupport (>= 4.2.0) + graphiql-rails (1.7.0) + railties + sprockets-rails + graphql (1.12.13) + graphql-schema_comparator (1.0.1) + bundler (>= 1.14) + graphql (~> 1.10) + thor (>= 0.19, < 2.0) + haml (5.2.1) + temple (>= 0.8.0) + tilt + hashie (4.1.0) + i18n (1.8.10) + concurrent-ruby (~> 1.0) + jbuilder (2.11.2) + activesupport (>= 5.0.0) + jquery-rails (4.4.0) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) + thor (>= 0.14, < 2.0) + jquery-ui-rails (6.0.1) + railties (>= 3.2.16) + js_from_routes (2.0.4) + railties (>= 5.1, < 8) + jwt (2.2.3) + kaminari (1.2.1) + activesupport (>= 4.1.0) + kaminari-actionview (= 1.2.1) + kaminari-activerecord (= 1.2.1) + kaminari-core (= 1.2.1) + kaminari-actionview (1.2.1) + actionview + kaminari-core (= 1.2.1) + kaminari-activerecord (1.2.1) + activerecord + kaminari-core (= 1.2.1) + kaminari-core (1.2.1) + listen (3.5.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + loofah (2.10.0) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + mail (2.7.1) + mini_mime (>= 0.1.1) + marcel (1.0.1) + method_source (1.0.0) + mini_mime (1.1.0) + mini_portile2 (2.5.3) + minitest (5.14.4) + mocha (1.13.0) + msgpack (1.4.2) + multi_json (1.15.0) + multi_xml (0.6.0) + multipart-post (2.1.1) + nested_form (0.3.2) + nio4r (2.5.7) + nokogiri (1.11.7) + mini_portile2 (~> 2.5.0) + racc (~> 1.4) + nokogiri (1.11.7-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.11.7-x86_64-linux) + racc (~> 1.4) + oauth2 (1.4.7) + faraday (>= 0.8, < 2.0) + jwt (>= 1.0, < 3.0) + multi_json (~> 1.3) + multi_xml (~> 0.5) + rack (>= 1.2, < 3) + octokit (4.21.0) + faraday (>= 0.9) + sawyer (~> 0.8.0, >= 0.5.3) + omniauth (2.0.4) + hashie (>= 3.4.6) + rack (>= 1.6.2, < 3) + rack-protection + omniauth-github (2.0.0) + omniauth (~> 2.0) + omniauth-oauth2 (~> 1.7.1) + omniauth-oauth2 (1.7.1) + oauth2 (~> 1.4) + omniauth (>= 1.9, < 3) + omniauth-rails_csrf_protection (1.0.0) + actionpack (>= 4.2) + omniauth (~> 2.0) + orm_adapter (0.5.0) + pg (1.2.3) + public_suffix (4.0.6) + puma (5.3.2) + nio4r (~> 2.0) + pundit (2.1.0) + activesupport (>= 3.0.0) + raabro (1.4.0) + racc (1.5.2) + rack (2.2.3) + rack-pjax (1.1.0) + nokogiri (~> 1.5) + rack (>= 1.1) + rack-protection (2.1.0) + rack + rack-proxy (0.7.0) + rack + rack-test (1.1.0) + rack (>= 1.0, < 3) + rails (6.1.4) + actioncable (= 6.1.4) + actionmailbox (= 6.1.4) + actionmailer (= 6.1.4) + actionpack (= 6.1.4) + actiontext (= 6.1.4) + actionview (= 6.1.4) + activejob (= 6.1.4) + activemodel (= 6.1.4) + activerecord (= 6.1.4) + activestorage (= 6.1.4) + activesupport (= 6.1.4) + bundler (>= 1.15.0) + railties (= 6.1.4) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.3.0) + loofah (~> 2.3) + rails_admin (2.1.1) + activemodel-serializers-xml (>= 1.0) + builder (~> 3.1) + haml (>= 4.0, < 6) + jquery-rails (>= 3.0, < 5) + jquery-ui-rails (>= 5.0, < 7) + kaminari (>= 0.14, < 2.0) + nested_form (~> 0.3) + rack-pjax (>= 0.7) + rails (>= 5.0, < 7) + remotipart (~> 1.3) + sassc-rails (>= 1.3, < 3) + railties (6.1.4) + actionpack (= 6.1.4) + activesupport (= 6.1.4) + method_source + rake (>= 0.13) + thor (~> 1.0) + rake (13.0.3) + rb-fsevent (0.11.0) + rb-inotify (0.10.1) + ffi (~> 1.0) + react-rails (2.6.1) + babel-transpiler (>= 0.7.0) + connection_pool + execjs + railties (>= 3.2) + tilt + redcarpet (3.5.1) + redis (4.3.1) + regexp_parser (2.1.1) + remotipart (1.4.4) + responders (3.0.1) + actionpack (>= 5.0) + railties (>= 5.0) + rexml (3.2.5) + rolify (6.0.0) + ruby2_keywords (0.0.4) + rubyzip (2.3.0) + rufus-scheduler (3.7.0) + fugit (~> 1.1, >= 1.1.6) + sass-rails (6.0.0) + sassc-rails (~> 2.1, >= 2.1.1) + sassc (2.4.0) + ffi (~> 1.9) + sassc-rails (2.1.2) + railties (>= 4.0.0) + sassc (>= 2.0) + sprockets (> 3.0) + sprockets-rails + tilt + sawyer (0.8.2) + addressable (>= 2.3.5) + faraday (> 0.8, < 2.0) + securecompare (1.0.0) + selenium-webdriver (3.142.7) + childprocess (>= 0.5, < 4.0) + rubyzip (>= 1.2.2) + semantic_range (3.0.0) + sidekiq (6.2.1) + connection_pool (>= 2.2.2) + rack (~> 2.0) + redis (>= 4.2.0) + sidekiq-scheduler (3.1.0) + e2mmap + redis (>= 3, < 5) + rufus-scheduler (~> 3.2) + sidekiq (>= 3) + thwait + tilt (>= 1.4.0) + spring (2.1.1) + sprockets (4.0.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.2.2) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + tailwindcss-rails (0.3.3) + rails (>= 6.0.0) + temple (0.8.2) + thor (1.1.0) + thwait (0.2.0) + e2mmap + tilt (2.0.10) + tzinfo (2.0.4) + concurrent-ruby (~> 1.0) + warden (1.2.9) + rack (>= 2.0.9) + web-console (4.1.0) + actionview (>= 6.0.0) + activemodel (>= 6.0.0) + bindex (>= 0.4.0) + railties (>= 6.0.0) + webdrivers (4.6.0) + nokogiri (~> 1.6) + rubyzip (>= 1.3.0) + selenium-webdriver (>= 3.0, < 4.0) + webpacker (5.4.0) + activesupport (>= 5.2) + rack-proxy (>= 0.6.1) + railties (>= 5.2) + semantic_range (>= 2.3.0) + websocket-driver (0.7.5) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + xpath (3.2.0) + nokogiri (~> 1.8) + zeitwerk (2.4.2) + +PLATFORMS + ruby + x86_64-darwin-19 + x86_64-linux + +DEPENDENCIES + actionpack-page_caching (~> 1.2) + bcrypt (~> 3.1.7) + bootsnap (>= 1.4.4) + bugsnag (~> 6.21) + byebug + capybara (>= 3.26) + devise (~> 4.8) + dig_bang (~> 0.2.1) + dotenv-rails + foreman (~> 0.87.2) + front_matter_parser (~> 1.0) + graphiql-rails + graphql (~> 1.12) + graphql-schema_comparator (~> 1.0) + jbuilder (~> 2.7) + js_from_routes (~> 2.0) + listen (~> 3.3) + mocha (~> 1.12) + octokit (~> 4.21) + omniauth (~> 2.0) + omniauth-github (~> 2.0) + omniauth-rails_csrf_protection (~> 1.0) + pg (~> 1.1) + puma (~> 5.3.2) + pundit (~> 2.1) + rails (~> 6.1.4) + rails_admin (~> 2.1) + react-rails (~> 2.6) + redcarpet (~> 3.5) + redis (~> 4.0) + rexml (~> 3.2) + rolify (~> 6.0) + sass-rails (>= 6) + securecompare (~> 1.0) + selenium-webdriver + sidekiq (~> 6.2) + sidekiq-scheduler (~> 3.1) + spring + tailwindcss-rails (~> 0.3.3) + tzinfo-data + web-console (>= 4.1.0) + webdrivers + webpacker (~> 5.4) + +RUBY VERSION + ruby 3.0.1p64 + +BUNDLED WITH + 2.2.21 diff --git a/projects/lab/Procfile.dev b/projects/lab/Procfile.dev new file mode 100644 index 000000000..fcb49425e --- /dev/null +++ b/projects/lab/Procfile.dev @@ -0,0 +1,2 @@ +web: bundle exec rails s +webpacker: ../bin/webpack-dev-server diff --git a/projects/lab/Rakefile b/projects/lab/Rakefile new file mode 100644 index 000000000..ba9d90c32 --- /dev/null +++ b/projects/lab/Rakefile @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require_relative "config/application" +require "graphql/rake_task" + +GraphQL::RakeTask.new(schema_name: "TuistLabSchema") + +desc("Starts Rails") +task start: :environment do + system("bundle exec foreman start -f Procfile.dev") || abort +end + +Rails.application.load_tasks diff --git a/projects/lab/app/assets/config/manifest.js b/projects/lab/app/assets/config/manifest.js new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/app/assets/stylesheets/application.css b/projects/lab/app/assets/stylesheets/application.css new file mode 100644 index 000000000..d05ea0f51 --- /dev/null +++ b/projects/lab/app/assets/stylesheets/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's + * vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/projects/lab/app/channels/application_cable/channel.rb b/projects/lab/app/channels/application_cable/channel.rb new file mode 100644 index 000000000..5a5cb686b --- /dev/null +++ b/projects/lab/app/channels/application_cable/channel.rb @@ -0,0 +1,7 @@ +# typed: ignore +# frozen_string_literal: true + +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/projects/lab/app/channels/application_cable/connection.rb b/projects/lab/app/channels/application_cable/connection.rb new file mode 100644 index 000000000..e5a2052da --- /dev/null +++ b/projects/lab/app/channels/application_cable/connection.rb @@ -0,0 +1,7 @@ +# typed: ignore +# frozen_string_literal: true + +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/projects/lab/app/controllers/app_controller.rb b/projects/lab/app/controllers/app_controller.rb new file mode 100644 index 000000000..4304fda58 --- /dev/null +++ b/projects/lab/app/controllers/app_controller.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true +class AppController < ApplicationController + include Authenticatable + before_action :authenticate_authenticatable! + + def index + render(component: "App", prerender: false) + end +end diff --git a/projects/lab/app/controllers/application_controller.rb b/projects/lab/app/controllers/application_controller.rb new file mode 100644 index 000000000..e0491348f --- /dev/null +++ b/projects/lab/app/controllers/application_controller.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true +class ApplicationController < ActionController::Base +end diff --git a/projects/lab/app/controllers/concerns/authenticatable.rb b/projects/lab/app/controllers/concerns/authenticatable.rb new file mode 100644 index 000000000..c5c3f4f89 --- /dev/null +++ b/projects/lab/app/controllers/concerns/authenticatable.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true +module Authenticatable + extend ActiveSupport::Concern + + included do + devise_group :authenticatable, contains: [:user, :project] + end +end diff --git a/projects/lab/app/controllers/graphql_controller.rb b/projects/lab/app/controllers/graphql_controller.rb new file mode 100644 index 000000000..5fa6585a6 --- /dev/null +++ b/projects/lab/app/controllers/graphql_controller.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true +class GraphqlController < ApplicationController + include Authenticatable + + # If accessing from outside this domain, nullify the session + # This allows for outside API access while preventing CSRF attacks, + # but you'll have to authenticate your user separately + # protect_from_forgery with: :null_session + + def execute + if current_user.nil? + url = "#{Rails.application.config.defaults[:urls][:app]}#{user_session_path}" + error_message = "Authentication is required to interact with the GraphQL API. Authenticate through #{url}" + error_extensions = { code: "AUTHENTICATION_ERROR" } + raise GraphQL::ExecutionError.new(error_message, extensions: error_extensions) + end + + variables = prepare_variables(params[:variables]) + query = params[:query] + operation_name = params[:operationName] + context = { + current_user: current_user, + } + result = TuistLabSchema.execute(query, variables: variables, context: context, operation_name: operation_name) + render(json: result) + rescue StandardError => e + raise e unless Rails.env.development? + handle_error_in_development(e) + end + + private + # Handle variables in form data, JSON body, or a blank value + def prepare_variables(variables_param) + case variables_param + when String + if variables_param.present? + JSON.parse(variables_param) || {} + else + {} + end + when Hash + variables_param + when ActionController::Parameters + variables_param.to_unsafe_hash # GraphQL-Ruby will validate name and type of incoming variables. + when nil + {} + else + raise ArgumentError, "Unexpected parameter: #{variables_param}" + end + end + + def handle_error_in_development(e) + logger.error(e.message) + logger.error(e.backtrace.join("\n")) + + render(json: { errors: [{ message: e.message, backtrace: e.backtrace }], data: {} }, + status: :internal_server_error) + end +end diff --git a/projects/lab/app/controllers/users/omniauth_callbacks_controller.rb b/projects/lab/app/controllers/users/omniauth_callbacks_controller.rb new file mode 100644 index 000000000..54581d4c3 --- /dev/null +++ b/projects/lab/app/controllers/users/omniauth_callbacks_controller.rb @@ -0,0 +1,27 @@ +# typed: ignore +# frozen_string_literal: true +module Users + class OmniauthCallbacksController < Devise::OmniauthCallbacksController + layout "application" + + def github + @user = UserCreateService.call(auth: auth_data) + + if @user.persisted? + sign_in_and_redirect(@user, event: :authentication) + else + data = auth_data.except("extra") + session["devise.oauth.data"] = data + redirect_to(new_user_registration_url) + end + end + + def failure + redirect_to(root_path) + end + + def auth_data + request.env["omniauth.auth"] + end + end +end diff --git a/projects/lab/app/controllers/website_controller.rb b/projects/lab/app/controllers/website_controller.rb new file mode 100644 index 000000000..18cb02fa7 --- /dev/null +++ b/projects/lab/app/controllers/website_controller.rb @@ -0,0 +1,54 @@ +# typed: ignore +# frozen_string_literal: true + +class WebsiteController < ApplicationController + layout "website" + + def landing + render("website/landing") + end + + def privacy + render("website/privacy") + end + + def terms + render("website/terms") + end + + def cookie + render("website/cookie") + end + + def acceptable_use_policy + render("website/acceptable_use_policy") + end + + def changelog + @changelogs = changelogs + render("website/changelog") + end + + def changelog_feed + head(:ok) + end + + private + def changelogs + changelog_dir = Rails.root.join("app/content/changelog") + Dir.glob(File.join(changelog_dir, "*")).map do |file_path| + parsed_file = FrontMatterParser::Parser.parse_file(file_path) + date_string = File.basename(file_path).split("-").first + OpenStruct.new( + date: Date.strptime(date_string, "%Y%m%d"), + title: parsed_file.front_matter["title"], + type: parsed_file.front_matter["type"], + html: markdown_parser.render(parsed_file.content) + ) + end + end + + def markdown_parser + @markdown_parser ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, tables: true) + end +end diff --git a/projects/lab/app/devise_strategies/api_token_devise_strategy.rb b/projects/lab/app/devise_strategies/api_token_devise_strategy.rb new file mode 100644 index 000000000..8076aa325 --- /dev/null +++ b/projects/lab/app/devise_strategies/api_token_devise_strategy.rb @@ -0,0 +1,95 @@ +# frozen_string_literal: true +class ApiTokenDeviseStrategy < Devise::Strategies::Base + Token = Struct.new(:model_name, :id, :token) do + def self.decode(encoded) + decoded = Base64.urlsafe_decode64(encoded) + model_name, id, token = decoded.split(":") + + new(model_name, id, token) + end + + def valid? + [model_name, id, token].all?(&:present?) + end + + def encode + Base64.urlsafe_encode64(to_a.join(":"), padding: false) + end + end + + def valid? + encoded_token.present? + end + + def authenticate! + return fail! unless model_is_authenticatable? + return fail! unless token_format_valid? + return fail! unless scope_match? + return fail! unless token_match? + + skip_trackable + + success!(model_object) + end + + def store? + false + end + + def clean_up_csrf? + false + end + + private + def skip_trackable + env["devise.skip_trackable"] = true + end + + def fail! + # TODO: Change the format to be: + # { + # "status": "error", + # "errors": [ + # { + # "code": "unauthorized", + # "message": "The session is not present or is not valid." + # } + # ] + # } + super("invalid token") + end + + def model_is_authenticatable? + model.class.include?(TokenAuthenticatable) + end + + def token_format_valid? + decoded_token.valid? + rescue ArgumentError + false + end + + def scope_match? + model.name == decoded_token.model_name + end + + def model_object + @model_object ||= model.find(decoded_token.id) + end + + def token_match? + Devise.secure_compare(model_object&.authentication_token, decoded_token.token) + end + + def model + mapping.to + end + + def decoded_token + @decoded_token ||= Token.decode(encoded_token) + end + + def encoded_token + request.headers["Authorization"].to_s.remove("Bearer ") + end +end diff --git a/projects/lab/app/graphql/mutations/base_mutation.rb b/projects/lab/app/graphql/mutations/base_mutation.rb new file mode 100644 index 000000000..a6576af26 --- /dev/null +++ b/projects/lab/app/graphql/mutations/base_mutation.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true +module Mutations + class BaseMutation < GraphQL::Schema::RelayClassicMutation + argument_class Types::BaseArgument + field_class Types::BaseField + input_object_class Types::BaseInputObject + object_class Types::BaseObject + end +end diff --git a/projects/lab/app/graphql/mutations/organization_create.rb b/projects/lab/app/graphql/mutations/organization_create.rb new file mode 100644 index 000000000..8633bafc5 --- /dev/null +++ b/projects/lab/app/graphql/mutations/organization_create.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true +module Mutations + class OrganizationCreate < BaseMutation + description "Create a new organization" + + # Arguments + argument :name, String, "The name of the organization", required: true + + # Fields + field :organization, Types::OrganizationType, null: true do + description "The created organization" + end + field :errors, [String], null: false do + description "A list of errors if the creation of the organization failed" + end + + def resolve(name:) + organization = OrganizationCreateService.call(name: name, admin: context[:current_user]) + { + organization: organization, + errors: [], + } + end + end +end diff --git a/projects/lab/app/graphql/tuist_lab_schema.rb b/projects/lab/app/graphql/tuist_lab_schema.rb new file mode 100644 index 000000000..bf3e2ba29 --- /dev/null +++ b/projects/lab/app/graphql/tuist_lab_schema.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true +class TuistLabSchema < GraphQL::Schema + mutation(Types::MutationType) + query(Types::QueryType) + + # Union and Interface Resolution + def self.resolve_type(_abstract_type, _obj, _ctx) + # TODO: Implement this function + # to return the correct object type for `obj` + raise(GraphQL::RequiredImplementationMissingError) + end + + # Relay-style Object Identification: + + # Return a string UUID for `object` + def self.id_from_object(object, type_definition, query_ctx) + # Here's a simple implementation which: + # - joins the type name & object.id + # - encodes it with base64: + # GraphQL::Schema::UniqueWithinType.encode(type_definition.name, object.id) + end + + # Given a string UUID, find the object + def self.object_from_id(id, query_ctx) + # For example, to decode the UUIDs generated above: + # type_name, item_id = GraphQL::Schema::UniqueWithinType.decode(id) + # + # Then, based on `type_name` and `id` + # find an object in your application + # ... + end +end diff --git a/projects/lab/app/graphql/types/base_argument.rb b/projects/lab/app/graphql/types/base_argument.rb new file mode 100644 index 000000000..3b7013d2d --- /dev/null +++ b/projects/lab/app/graphql/types/base_argument.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true +module Types + class BaseArgument < GraphQL::Schema::Argument + end +end diff --git a/projects/lab/app/graphql/types/base_connection.rb b/projects/lab/app/graphql/types/base_connection.rb new file mode 100644 index 000000000..c92982085 --- /dev/null +++ b/projects/lab/app/graphql/types/base_connection.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true +module Types + class BaseConnection < Types::BaseObject + # add `nodes` and `pageInfo` fields, as well as `edge_type(...)` and `node_nullable(...)` overrides + include GraphQL::Types::Relay::ConnectionBehaviors + end +end diff --git a/projects/lab/app/graphql/types/base_edge.rb b/projects/lab/app/graphql/types/base_edge.rb new file mode 100644 index 000000000..bfa77eea9 --- /dev/null +++ b/projects/lab/app/graphql/types/base_edge.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true +module Types + class BaseEdge < Types::BaseObject + # add `node` and `cursor` fields, as well as `node_type(...)` override + include GraphQL::Types::Relay::EdgeBehaviors + end +end diff --git a/projects/lab/app/graphql/types/base_enum.rb b/projects/lab/app/graphql/types/base_enum.rb new file mode 100644 index 000000000..f855d159b --- /dev/null +++ b/projects/lab/app/graphql/types/base_enum.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true +module Types + class BaseEnum < GraphQL::Schema::Enum + end +end diff --git a/projects/lab/app/graphql/types/base_field.rb b/projects/lab/app/graphql/types/base_field.rb new file mode 100644 index 000000000..cc277ea57 --- /dev/null +++ b/projects/lab/app/graphql/types/base_field.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true +module Types + class BaseField < GraphQL::Schema::Field + argument_class Types::BaseArgument + end +end diff --git a/projects/lab/app/graphql/types/base_input_object.rb b/projects/lab/app/graphql/types/base_input_object.rb new file mode 100644 index 000000000..527d02d47 --- /dev/null +++ b/projects/lab/app/graphql/types/base_input_object.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true +module Types + class BaseInputObject < GraphQL::Schema::InputObject + argument_class Types::BaseArgument + end +end diff --git a/projects/lab/app/graphql/types/base_interface.rb b/projects/lab/app/graphql/types/base_interface.rb new file mode 100644 index 000000000..3cee93d48 --- /dev/null +++ b/projects/lab/app/graphql/types/base_interface.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true +module Types + module BaseInterface + include GraphQL::Schema::Interface + edge_type_class(Types::BaseEdge) + connection_type_class(Types::BaseConnection) + + field_class Types::BaseField + end +end diff --git a/projects/lab/app/graphql/types/base_object.rb b/projects/lab/app/graphql/types/base_object.rb new file mode 100644 index 000000000..fc787341a --- /dev/null +++ b/projects/lab/app/graphql/types/base_object.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true +module Types + class BaseObject < GraphQL::Schema::Object + edge_type_class(Types::BaseEdge) + connection_type_class(Types::BaseConnection) + field_class Types::BaseField + end +end diff --git a/projects/lab/app/graphql/types/base_scalar.rb b/projects/lab/app/graphql/types/base_scalar.rb new file mode 100644 index 000000000..b2c1af2cd --- /dev/null +++ b/projects/lab/app/graphql/types/base_scalar.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true +module Types + class BaseScalar < GraphQL::Schema::Scalar + end +end diff --git a/projects/lab/app/graphql/types/base_union.rb b/projects/lab/app/graphql/types/base_union.rb new file mode 100644 index 000000000..f4c0671ed --- /dev/null +++ b/projects/lab/app/graphql/types/base_union.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true +module Types + class BaseUnion < GraphQL::Schema::Union + edge_type_class(Types::BaseEdge) + connection_type_class(Types::BaseConnection) + end +end diff --git a/projects/lab/app/graphql/types/mutation_type.rb b/projects/lab/app/graphql/types/mutation_type.rb new file mode 100644 index 000000000..071955ab3 --- /dev/null +++ b/projects/lab/app/graphql/types/mutation_type.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true +module Types + class MutationType < Types::BaseObject + field :organization_create, mutation: Mutations::OrganizationCreate + end +end diff --git a/projects/lab/app/graphql/types/node_type.rb b/projects/lab/app/graphql/types/node_type.rb new file mode 100644 index 000000000..85858217d --- /dev/null +++ b/projects/lab/app/graphql/types/node_type.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true +module Types + module NodeType + include Types::BaseInterface + # Add the `id` field + include GraphQL::Types::Relay::NodeBehaviors + end +end diff --git a/projects/lab/app/graphql/types/organization_type.rb b/projects/lab/app/graphql/types/organization_type.rb new file mode 100644 index 000000000..adf5d1c6f --- /dev/null +++ b/projects/lab/app/graphql/types/organization_type.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true +module Types + class OrganizationType < Types::BaseObject + field :id, String, null: false + field :name, String, null: false + + def name + object.account.name + end + end +end diff --git a/projects/lab/app/graphql/types/query_type.rb b/projects/lab/app/graphql/types/query_type.rb new file mode 100644 index 000000000..d07a32bcf --- /dev/null +++ b/projects/lab/app/graphql/types/query_type.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true +module Types + class QueryType < Types::BaseObject + # Add `node(id: ID!) and `nodes(ids: [ID!]!)` + include GraphQL::Types::Relay::HasNodeField + include GraphQL::Types::Relay::HasNodesField + + # Add root-level fields here. + # They will be entry points for queries on your schema. + + # Fields + field :me, UserType, "Returns the authenticated user.", null: false + + # Resolvers + def me + context[:current_user] + end + end +end diff --git a/projects/lab/app/graphql/types/user_type.rb b/projects/lab/app/graphql/types/user_type.rb new file mode 100644 index 000000000..2a7d322c1 --- /dev/null +++ b/projects/lab/app/graphql/types/user_type.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true +module Types + class UserType < Types::BaseObject + field :id, String, null: false + field :email, String, null: false + field :avatar_url, String, null: false + end +end diff --git a/projects/lab/app/helpers/application_helper.rb b/projects/lab/app/helpers/application_helper.rb new file mode 100644 index 000000000..82a8d9337 --- /dev/null +++ b/projects/lab/app/helpers/application_helper.rb @@ -0,0 +1,5 @@ +# typed: strict +# frozen_string_literal: true + +module ApplicationHelper +end diff --git a/projects/lab/app/helpers/meta_tags_helper.rb b/projects/lab/app/helpers/meta_tags_helper.rb new file mode 100644 index 000000000..75d317682 --- /dev/null +++ b/projects/lab/app/helpers/meta_tags_helper.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true +module MetaTagsHelper + def meta_title(title) + content_for(:meta_title, title) + end + + def content_for_meta_title + content_for?(:meta_title) ? "TuistLab | #{content_for(:meta_title)}" : Rails.application.config.defaults.dig( + :site_metadata, :title) + end + + def meta_description(description) + content_for(:meta_description, description) + end + + def content_for_meta_description + content_for?(:meta_description) ? content_for(:meta_description) : Rails.application.config.defaults.dig( + :site_metadata, :description) + end + + def meta_keywords(keywords) + content_for(:meta_keywords, keywords.join(",")) + end + + def content_for_meta_keywords + content_for?(:meta_keywords) ? content_for(:meta_keywords) : Rails.application.config.defaults.dig(:site_metadata, + :keywords) + end + + def content_for_meta_image + URI.join(Rails.application.config.defaults.dig(:urls, :app), + asset_pack_path("media/images/logo-with-background.png")).to_s + end + + def content_for_meta_twitter_handle + Rails.application.config.defaults.dig(:site_metadata, :twitter) + end +end diff --git a/projects/lab/app/javascript/components/App.tsx b/projects/lab/app/javascript/components/App.tsx new file mode 100644 index 000000000..5704a3075 --- /dev/null +++ b/projects/lab/app/javascript/components/App.tsx @@ -0,0 +1,54 @@ +import React from 'react'; +import { + BrowserRouter as Router, + Switch, + Route, +} from 'react-router-dom'; +import { AppProvider } from '@shopify/polaris'; +import ClientProvider from '../networking/ClientProvider'; +import RESTClientProvider from '../networking/RESTClientProvider'; + +import ErrorBoundary from '../utilities/ErrorBoundary'; +import HomePage from '../pages/HomePage'; +import ProjectNewPage from '../pages/ProjectNewPage'; +import OrganizationNewPage from '../pages/OrganizationNewPage'; +import SettingsPage from '../pages/SettingsPage'; +import { + projectNewPath, + organizationNewPath, + settingsPath, +} from '../utilities/routes'; +import EnvironmentProvider from '../utilities/EnvironmentProvider'; +import theme from '../polaris/theme'; + +export default function App() { + return ( + + + + + + + + + + + + + + + + + + + ); +} diff --git a/projects/lab/app/javascript/components/MeQuery.graphql b/projects/lab/app/javascript/components/MeQuery.graphql new file mode 100644 index 000000000..5769c1550 --- /dev/null +++ b/projects/lab/app/javascript/components/MeQuery.graphql @@ -0,0 +1,6 @@ +query Me { + me { + email + avatarUrl + } +} diff --git a/projects/lab/app/javascript/graphql/OrganizationCreate.graphql b/projects/lab/app/javascript/graphql/OrganizationCreate.graphql new file mode 100644 index 000000000..3c0d2835d --- /dev/null +++ b/projects/lab/app/javascript/graphql/OrganizationCreate.graphql @@ -0,0 +1,10 @@ +mutation OrganizationCreate( + $organization: OrganizationCreateInput! +) { + organizationCreate(input: $organization) { + errors + organization { + name + } + } +} diff --git a/projects/lab/app/javascript/graphql/types.ts b/projects/lab/app/javascript/graphql/types.ts new file mode 100644 index 000000000..696baa5e9 --- /dev/null +++ b/projects/lab/app/javascript/graphql/types.ts @@ -0,0 +1,165 @@ +import { gql } from '@apollo/client'; +import * as Apollo from '@apollo/client'; +export type Maybe = T | null; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +const defaultOptions = {} +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; +}; + +export type Mutation = { + __typename?: 'Mutation'; + /** Create a new organization */ + organizationCreate?: Maybe; +}; + + +export type MutationOrganizationCreateArgs = { + input: OrganizationCreateInput; +}; + +export type Organization = { + __typename?: 'Organization'; + id: Scalars['String']; + name: Scalars['String']; +}; + +/** Autogenerated input type of OrganizationCreate */ +export type OrganizationCreateInput = { + /** A unique identifier for the client performing the mutation. */ + clientMutationId?: Maybe; + /** The name of the organization */ + name: Scalars['String']; +}; + +/** Autogenerated return type of OrganizationCreate */ +export type OrganizationCreatePayload = { + __typename?: 'OrganizationCreatePayload'; + /** A unique identifier for the client performing the mutation. */ + clientMutationId?: Maybe; + /** A list of errors if the creation of the organization failed */ + errors: Array; + /** The created organization */ + organization?: Maybe; +}; + +export type Query = { + __typename?: 'Query'; + /** Returns the authenticated user. */ + me: User; +}; + +export type User = { + __typename?: 'User'; + avatarUrl: Scalars['String']; + email: Scalars['String']; + id: Scalars['String']; +}; + +export type MeQueryVariables = Exact<{ [key: string]: never; }>; + + +export type MeQuery = ( + { __typename?: 'Query' } + & { me: ( + { __typename?: 'User' } + & Pick + ) } +); + +export type OrganizationCreateMutationVariables = Exact<{ + organization: OrganizationCreateInput; +}>; + + +export type OrganizationCreateMutation = ( + { __typename?: 'Mutation' } + & { organizationCreate?: Maybe<( + { __typename?: 'OrganizationCreatePayload' } + & Pick + & { organization?: Maybe<( + { __typename?: 'Organization' } + & Pick + )> } + )> } +); + + +export const MeDocument = gql` + query Me { + me { + email + avatarUrl + } +} + `; + +/** + * __useMeQuery__ + * + * To run a query within a React component, call `useMeQuery` and pass it any options that fit your needs. + * When your component renders, `useMeQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useMeQuery({ + * variables: { + * }, + * }); + */ +export function useMeQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(MeDocument, options); + } +export function useMeLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(MeDocument, options); + } +export type MeQueryHookResult = ReturnType; +export type MeLazyQueryHookResult = ReturnType; +export type MeQueryResult = Apollo.QueryResult; +export const OrganizationCreateDocument = gql` + mutation OrganizationCreate($organization: OrganizationCreateInput!) { + organizationCreate(input: $organization) { + errors + organization { + name + } + } +} + `; +export type OrganizationCreateMutationFn = Apollo.MutationFunction; + +/** + * __useOrganizationCreateMutation__ + * + * To run a mutation, you first call `useOrganizationCreateMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useOrganizationCreateMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [organizationCreateMutation, { data, loading, error }] = useOrganizationCreateMutation({ + * variables: { + * organization: // value for 'organization' + * }, + * }); + */ +export function useOrganizationCreateMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(OrganizationCreateDocument, options); + } +export type OrganizationCreateMutationHookResult = ReturnType; +export type OrganizationCreateMutationResult = Apollo.MutationResult; +export type OrganizationCreateMutationOptions = Apollo.BaseMutationOptions; \ No newline at end of file diff --git a/projects/lab/app/javascript/images/icon.png b/projects/lab/app/javascript/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..55fea19f6cd6c0dfae89f257c684dc117ee9da17 GIT binary patch literal 22241 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 JKdIY1_& + + + + + diff --git a/projects/lab/app/javascript/networking/ClientProvider.test.ts b/projects/lab/app/javascript/networking/ClientProvider.test.ts new file mode 100644 index 000000000..9d6557327 --- /dev/null +++ b/projects/lab/app/javascript/networking/ClientProvider.test.ts @@ -0,0 +1,5 @@ +describe('it works', () => { + it('works', () => { + expect(true).toBeTruthy(); + }); +}); diff --git a/projects/lab/app/javascript/networking/ClientProvider.tsx b/projects/lab/app/javascript/networking/ClientProvider.tsx new file mode 100644 index 000000000..4ce667ad6 --- /dev/null +++ b/projects/lab/app/javascript/networking/ClientProvider.tsx @@ -0,0 +1,51 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +// @ts-nocheck + +import React from 'react'; +import { + ApolloClient, + InMemoryCache, + ApolloProvider, + concat, +} from '@apollo/client'; +import { ApolloLink } from 'apollo-link'; +import { createHttpLink } from 'apollo-link-http'; + +const httpLink = createHttpLink({ uri: '/graphql' }); + +const middlewareLink = new ApolloLink((operation, forward) => { + const csrfToken = document + .querySelector('meta[name=csrf-token]') + .getAttribute('content'); + operation.setContext({ + credentials: 'same-origin', + headers: { 'X-CSRF-Token': csrfToken }, + }); + return forward(operation); +}); + +const defaultOptions = { + watchQuery: { + fetchPolicy: 'no-cache', + errorPolicy: 'ignore', + }, + query: { + fetchPolicy: 'no-cache', + errorPolicy: 'all', + }, +}; + +const client = new ApolloClient({ + link: concat(middlewareLink, httpLink), + uri: `${BASE_URL}/graphql`, + cache: new InMemoryCache(), + defaultOptions, +}); + +const ClientProvider = ({ + children, +}: { + children: React.ReactNode; +}) => {children}; + +export default ClientProvider; diff --git a/projects/lab/app/javascript/networking/RESTClientProvider.tsx b/projects/lab/app/javascript/networking/RESTClientProvider.tsx new file mode 100644 index 000000000..b40310b63 --- /dev/null +++ b/projects/lab/app/javascript/networking/RESTClientProvider.tsx @@ -0,0 +1,32 @@ +import React, { useEffect, useContext } from 'react'; +import type { AxiosInstance } from 'axios'; +import restClient from './restClient'; + +const HTTPClientContext = + React.createContext(restClient); + +const RESTClientProvider = ({ children }) => { + useEffect(() => { + restClient.interceptors.request.use((config) => { + const csrfToken = document + .querySelector('meta[name=csrf-token]') + .getAttribute('content'); + /* eslint-disable no-param-reassign */ + config.headers['X-CSRF-Token'] = csrfToken; + config.headers['Content-Type'] = 'application/json'; + config.withCredentials = true; + /* eslint-enable no-param-reassign */ + return config; + }); + }, [restClient]); + + return ( + + {children} + + ); +}; +const useRestClient = () => useContext(HTTPClientContext); + +export { useRestClient, restClient }; +export default RESTClientProvider; diff --git a/projects/lab/app/javascript/networking/restClient.ts b/projects/lab/app/javascript/networking/restClient.ts new file mode 100644 index 000000000..245a19419 --- /dev/null +++ b/projects/lab/app/javascript/networking/restClient.ts @@ -0,0 +1,6 @@ +import axios from 'axios'; +import type { AxiosInstance } from 'axios'; + +const restClient: AxiosInstance = axios.create(); + +export default restClient; diff --git a/projects/lab/app/javascript/networking/signOut.ts b/projects/lab/app/javascript/networking/signOut.ts new file mode 100644 index 000000000..000d0a009 --- /dev/null +++ b/projects/lab/app/javascript/networking/signOut.ts @@ -0,0 +1,17 @@ +import { signOutPath } from '../utilities/routes'; +import restClient from './restClient'; + +export const redirectToSignIn = () => { + window.location.pathname = '/'; +}; + +const signOut = async () => { + try { + await restClient.delete(signOutPath); + } catch { + console.log('Logged out'); + } + redirectToSignIn(); +}; + +export default signOut; diff --git a/projects/lab/app/javascript/packs/application.js b/projects/lab/app/javascript/packs/application.js new file mode 100644 index 000000000..4f56a51f0 --- /dev/null +++ b/projects/lab/app/javascript/packs/application.js @@ -0,0 +1,26 @@ +/* eslint no-console:0 */ +import Bugsnag from '@bugsnag/js'; +import BugsnagPluginReact from '@bugsnag/plugin-react'; +import RailsUJS from '@rails/ujs'; +import ReactRailsUJS from 'react_ujs'; + +// Styles +import '@shopify/polaris/dist/styles.css'; + +RailsUJS.start(); + +// Bugsnag +if (ENVIRONMENT !== 'development') { + Bugsnag.start({ + apiKey: BUGSNAG_FRONTEND_API_KEY, + plugins: [new BugsnagPluginReact()], + }); +} + +// Images +require.context('../images', true); + +// React +const componentRequireContext = require.context('components', true); + +ReactRailsUJS.useContext(componentRequireContext); diff --git a/projects/lab/app/javascript/packs/server-side.js b/projects/lab/app/javascript/packs/server-side.js new file mode 100644 index 000000000..b5e2954d9 --- /dev/null +++ b/projects/lab/app/javascript/packs/server-side.js @@ -0,0 +1,8 @@ +/* eslint-disable */ +import 'stylesheets/server-side'; + +const images = require.context('../images', true); +const imagePath = (name) => images(name, true); + +// Rails +require('@rails/ujs').start(); diff --git a/projects/lab/app/javascript/packs/server_rendering.js b/projects/lab/app/javascript/packs/server_rendering.js new file mode 100644 index 000000000..3ad6c349e --- /dev/null +++ b/projects/lab/app/javascript/packs/server_rendering.js @@ -0,0 +1,5 @@ +import ReactRailsUJS from 'react_ujs'; + +const componentRequireContext = require.context('components', true); + +ReactRailsUJS.useContext(componentRequireContext); diff --git a/projects/lab/app/javascript/pages/HomePage.tsx b/projects/lab/app/javascript/pages/HomePage.tsx new file mode 100644 index 000000000..e4821d86c --- /dev/null +++ b/projects/lab/app/javascript/pages/HomePage.tsx @@ -0,0 +1,321 @@ +import React, { useCallback, useRef, useState } from 'react'; + +import { + AppProvider, + ActionList, + Card, + TextField, + TextContainer, + ContextualSaveBar, + FormLayout, + Modal, + Frame, + Layout, + Loading, + Navigation, + Page, + SkeletonBodyText, + SkeletonDisplayText, + SkeletonPage, + Toast, + TopBar, +} from '@shopify/polaris'; +import { HomeMajor, OrdersMajor } from '@shopify/polaris-icons'; +import { Helmet } from 'react-helmet'; +import theme from '../polaris/theme'; +import TopBarUserMenu from '../polaris/TopBarUserMenu'; + +export default function HomePage() { + const defaultState = useRef({ + emailFieldValue: 'pedro@ppinera.es', + nameFieldValue: 'Jaded Pixel', + }); + const skipToContentRef = useRef(null); + + const [toastActive, setToastActive] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const [isDirty, setIsDirty] = useState(false); + const [searchActive, setSearchActive] = useState(false); + const [searchValue, setSearchValue] = useState(''); + const [mobileNavigationActive, setMobileNavigationActive] = + useState(false); + const [modalActive, setModalActive] = useState(false); + const [nameFieldValue, setNameFieldValue] = useState( + defaultState.current.nameFieldValue, + ); + const [emailFieldValue, setEmailFieldValue] = useState( + defaultState.current.emailFieldValue, + ); + const [, setStoreName] = useState( + defaultState.current.nameFieldValue, + ); + const [supportSubject, setSupportSubject] = useState(''); + const [supportMessage, setSupportMessage] = useState(''); + + const handleSubjectChange = useCallback( + (value) => setSupportSubject(value), + [], + ); + const handleMessageChange = useCallback( + (value) => setSupportMessage(value), + [], + ); + const handleDiscard = useCallback(() => { + setEmailFieldValue(defaultState.current.emailFieldValue); + setNameFieldValue(defaultState.current.nameFieldValue); + setIsDirty(false); + }, []); + const handleSave = useCallback(() => { + defaultState.current.nameFieldValue = nameFieldValue; + defaultState.current.emailFieldValue = emailFieldValue; + + setIsDirty(false); + setToastActive(true); + setStoreName(defaultState.current.nameFieldValue); + }, [emailFieldValue, nameFieldValue]); + const handleNameFieldChange = useCallback((value) => { + setNameFieldValue(value); + // value && setIsDirty(true); + }, []); + const handleEmailFieldChange = useCallback((value) => { + setEmailFieldValue(value); + // value && setIsDirty(true); + }, []); + const handleSearchResultsDismiss = useCallback(() => { + setSearchActive(false); + setSearchValue(''); + }, []); + const handleSearchFieldChange = useCallback((value) => { + setSearchValue(value); + setSearchActive(value.length > 0); + }, []); + const toggleToastActive = useCallback( + () => setToastActive((_toastActive) => !_toastActive), + [], + ); + + const toggleMobileNavigationActive = useCallback( + () => + setMobileNavigationActive( + (_mobileNavigationActive) => !_mobileNavigationActive, + ), + [], + ); + const toggleIsLoading = useCallback( + () => setIsLoading((_isLoading) => !_isLoading), + [], + ); + const toggleModalActive = useCallback( + () => setModalActive((_modalActive) => !_modalActive), + [], + ); + + const toastMarkup = toastActive ? ( + + ) : null; + + const contextualSaveBarMarkup = isDirty ? ( + + ) : null; + + const searchResultsMarkup = ( + + ); + + const searchFieldMarkup = ( + + ); + const userMenuMarkup = ; + + const topBarMarkup = ( + + ); + + const navigationMarkup = ( + + + + ); + + const loadingMarkup = isLoading ? : null; + + const skipToContentTarget = ( + /* eslint-disable jsx-a11y/anchor-has-content,jsx-a11y/anchor-is-valid */ + + /* eslint-enable jsx-a11y/anchor-has-content,jsx-a11y/anchor-is-valid */ + ); + + const actualPageMarkup = ( + + + {skipToContentTarget} + + + + + + + + + + + ); + + const loadingPageMarkup = ( + + + + + + + + + + + + + ); + + const pageMarkup = isLoading ? loadingPageMarkup : actualPageMarkup; + + const modalMarkup = ( + + + + + + + + + ); + + return ( +
+ + TuistLab + + + + {contextualSaveBarMarkup} + {loadingMarkup} + {pageMarkup} + {toastMarkup} + {modalMarkup} + + +
+ ); +} diff --git a/projects/lab/app/javascript/pages/OrganizationNewPage.tsx b/projects/lab/app/javascript/pages/OrganizationNewPage.tsx new file mode 100644 index 000000000..c92203ef6 --- /dev/null +++ b/projects/lab/app/javascript/pages/OrganizationNewPage.tsx @@ -0,0 +1,96 @@ +import React from 'react'; +import { + Card, + FormLayout, + Frame, + Layout, + Page, + TopBar, + TextField, + Form, + Button, +} from '@shopify/polaris'; +import { Helmet } from 'react-helmet'; +import { useForm, Controller } from 'react-hook-form'; +import TopBarUserMenu from '../polaris/TopBarUserMenu'; +// import { useOrganizationCreateMutation } from '../graphql/types'; + +type FormData = { + name: string; +}; + +const OrganizationNewPage = () => { + // const [ + // createOrganization, + // { error: createOrganizationError, data: createOrganizationData }, + // ] = useOrganizationCreateMutation(); + + const { + control, + formState: { errors }, + handleSubmit, + } = useForm(); + const onSubmit = () => { + // createOrganization({ + // variables: { organization: { name: data.name } }, + // }); + }; + + // Page Markup + const pageMarkup = ( + + + + +
+ + ( + + )} + /> + + + +
+
+
+
+
+ ); + + const topBarUserMenu = ; + const topBarMarkup = ( + + ); + + return ( +
+ + New organization + + {pageMarkup} +
+ ); +}; + +export default OrganizationNewPage; diff --git a/projects/lab/app/javascript/pages/ProjectNewPage.tsx b/projects/lab/app/javascript/pages/ProjectNewPage.tsx new file mode 100644 index 000000000..0196d7390 --- /dev/null +++ b/projects/lab/app/javascript/pages/ProjectNewPage.tsx @@ -0,0 +1,59 @@ +import React, { useCallback, useState } from 'react'; +import { + Card, + FormLayout, + Frame, + Layout, + Page, + Toast, + TopBar, +} from '@shopify/polaris'; +import { Helmet } from 'react-helmet'; +import TopBarUserMenu from '../polaris/TopBarUserMenu'; + +const ProjectNewPage = () => { + // Toast + const [toastActive, setToastActive] = useState(false); + const toggleToastActive = useCallback( + () => setToastActive((_toastActive) => !_toastActive), + [], + ); + const toastMarkup = toastActive ? ( + + ) : null; + + // Page Markup + const pageMarkup = ( + + + + + + + + + + ); + + const topBarUserMenu = ; + const topBarMarkup = ( + + ); + + return ( +
+ + New project + + + {pageMarkup} + {toastMarkup} + +
+ ); +}; + +export default ProjectNewPage; diff --git a/projects/lab/app/javascript/pages/SettingsPage.tsx b/projects/lab/app/javascript/pages/SettingsPage.tsx new file mode 100644 index 000000000..c3d83986c --- /dev/null +++ b/projects/lab/app/javascript/pages/SettingsPage.tsx @@ -0,0 +1,59 @@ +import React, { useCallback, useState } from 'react'; +import { + Card, + FormLayout, + Frame, + Layout, + Page, + Toast, + TopBar, +} from '@shopify/polaris'; +import { Helmet } from 'react-helmet'; +import TopBarUserMenu from '../polaris/TopBarUserMenu'; + +const SettingsPage = () => { + // Toast + const [toastActive, setToastActive] = useState(false); + const toggleToastActive = useCallback( + () => setToastActive((_toastActive) => !_toastActive), + [], + ); + const toastMarkup = toastActive ? ( + + ) : null; + + // Page Markup + const pageMarkup = ( + + + + + + + + + + ); + + const topBarUserMenu = ; + const topBarMarkup = ( + + ); + + return ( +
+ + Settings + + + {pageMarkup} + {toastMarkup} + +
+ ); +}; + +export default SettingsPage; diff --git a/projects/lab/app/javascript/polaris/TopBarUserMenu.tsx b/projects/lab/app/javascript/polaris/TopBarUserMenu.tsx new file mode 100644 index 000000000..3500eb42f --- /dev/null +++ b/projects/lab/app/javascript/polaris/TopBarUserMenu.tsx @@ -0,0 +1,66 @@ +import React, { useState, useCallback } from 'react'; +import { TopBar } from '@shopify/polaris'; +import { useHistory } from 'react-router-dom'; +import { + projectNewPath, + organizationNewPath, + settingsPath, +} from '../utilities/routes'; +import signOut from '../networking/signOut'; +import { useEnvironment } from '../utilities/EnvironmentProvider'; + +const TopBarUserMenu = () => { + const history = useHistory(); + const environment = useEnvironment(); + + const [userMenuActive, setUserMenuActive] = useState(false); + const toggleUserMenuActive = useCallback( + () => setUserMenuActive((_userMenuActive) => !_userMenuActive), + [], + ); + const userMenuActions = [ + { + items: [ + { + content: 'New project', + accessibilityLabel: 'Create a new project', + onAction: () => { + history.push(projectNewPath); + }, + }, + { + content: 'New organization', + accesibilityLabel: 'Create a new organization', + onAction: () => { + history.push(organizationNewPath); + }, + }, + { + content: 'Settings', + accesibility: 'Check out and change the user settings', + onAction: () => { + history.push(settingsPath); + }, + }, + { + content: 'Sign out', + onAction: signOut, + }, + ], + }, + ]; + + return ( + + ); +}; + +export default TopBarUserMenu; diff --git a/projects/lab/app/javascript/polaris/theme.ts b/projects/lab/app/javascript/polaris/theme.ts new file mode 100644 index 000000000..56a73f483 --- /dev/null +++ b/projects/lab/app/javascript/polaris/theme.ts @@ -0,0 +1,13 @@ +import logo from '../images/logo-topbar.png'; + +const theme = { + logo: { + width: 120, + topBarSource: logo, + contextualSaveBarSource: logo, + url: `${BASE_URL}`, + accessibilityLabel: 'TuistLab', + }, +}; + +export default theme; diff --git a/projects/lab/app/javascript/stylesheets/server-side.scss b/projects/lab/app/javascript/stylesheets/server-side.scss new file mode 100644 index 000000000..76fcadcc0 --- /dev/null +++ b/projects/lab/app/javascript/stylesheets/server-side.scss @@ -0,0 +1,3 @@ +@import "tailwindcss/base"; +@import "tailwindcss/components"; +@import "tailwindcss/utilities"; diff --git a/projects/lab/app/javascript/stylesheets/tailwind.config.js b/projects/lab/app/javascript/stylesheets/tailwind.config.js new file mode 100644 index 000000000..97efe9336 --- /dev/null +++ b/projects/lab/app/javascript/stylesheets/tailwind.config.js @@ -0,0 +1,34 @@ +/* eslint-disable */ +// https://davidpiesse.github.io/tailwind-md-colours/ +module.exports = { + // purge: ["app/views/*/*.html.erb"], + darkMode: false, // or 'media' or 'class' + theme: { + extend: { + colors: { + 'deep-orange': '#ff5722', + 'deep-orange-50': '#fbe9e7', + 'deep-orange-100': '#ffccbc', + 'deep-orange-200': '#ffab91', + 'deep-orange-300': '#ff8a65', + 'deep-orange-400': '#ff7043', + 'deep-orange-500': '#ff5722', + 'deep-orange-600': '#f4511e', + 'deep-orange-700': '#e64a19', + 'deep-orange-800': '#d84315', + 'deep-orange-900': '#bf360c', + 'deep-orange-100-accent': '#ff9e80', + 'deep-orange-200-accent': '#ff6e40', + 'deep-orange-400-accent': '#ff3d00', + 'deep-orange-700-accent': '#dd2c00', + }, + }, + }, + variants: { + extend: {}, + }, + plugins: [ + require('@tailwindcss/forms'), + require('@tailwindcss/typography'), + ], +}; diff --git a/projects/lab/app/javascript/types/globals.d.ts b/projects/lab/app/javascript/types/globals.d.ts new file mode 100644 index 000000000..56a1f8a5f --- /dev/null +++ b/projects/lab/app/javascript/types/globals.d.ts @@ -0,0 +1,3 @@ +declare const BASE_URL; +declare const ENVIRONMENT; +declare const BUGSNAG_FRONTEND_API_KEY; diff --git a/projects/lab/app/javascript/types/png.d.ts b/projects/lab/app/javascript/types/png.d.ts new file mode 100644 index 000000000..dd84df40a --- /dev/null +++ b/projects/lab/app/javascript/types/png.d.ts @@ -0,0 +1,4 @@ +declare module '*.png' { + const content: any; + export default content; +} diff --git a/projects/lab/app/javascript/types/svg.d.ts b/projects/lab/app/javascript/types/svg.d.ts new file mode 100644 index 000000000..091d25e21 --- /dev/null +++ b/projects/lab/app/javascript/types/svg.d.ts @@ -0,0 +1,4 @@ +declare module '*.svg' { + const content: any; + export default content; +} diff --git a/projects/lab/app/javascript/utilities/EnvironmentProvider.tsx b/projects/lab/app/javascript/utilities/EnvironmentProvider.tsx new file mode 100644 index 000000000..ca7fb87c0 --- /dev/null +++ b/projects/lab/app/javascript/utilities/EnvironmentProvider.tsx @@ -0,0 +1,61 @@ +import React, { useContext } from 'react'; +import { Frame, Loading, EmptyState, Card } from '@shopify/polaris'; +import { useMeQuery } from '../graphql/types'; +import type { User } from '../graphql/types'; + +type Environment = { + user: Pick; +}; + +const EnvironmentContext = React.createContext< + Environment | undefined +>(undefined); + +const EnvironmentProvider = ({ + children, +}: { + children: React.ReactNode; +}) => { + const { data, loading } = useMeQuery(); + if (loading) { + return ( + + + + ); + } + if (data) { + const environment = { + user: data.me, + }; + return ( + + {children} + + ); + } + return ( + + + +

+ Track and receive your incoming inventory from suppliers. +

+
+
+ + ); +}; + +export const useEnvironment = (): Environment => + useContext(EnvironmentContext); + +export default EnvironmentProvider; diff --git a/projects/lab/app/javascript/utilities/ErrorBoundary.tsx b/projects/lab/app/javascript/utilities/ErrorBoundary.tsx new file mode 100644 index 000000000..80ebe3466 --- /dev/null +++ b/projects/lab/app/javascript/utilities/ErrorBoundary.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import Bugsnag from '@bugsnag/js'; + +let BugsnagErrorBoundary; + +if (ENVIRONMENT !== 'development') { + BugsnagErrorBoundary = + Bugsnag.getPlugin('react').createErrorBoundary(React); +} + +const ErrorBoundary = ({ + children, +}: { + children?: React.ReactNode; +}) => { + if (ENVIRONMENT === 'development') { + return <>{children}; + } + return {children}; +}; + +export default ErrorBoundary; diff --git a/projects/lab/app/javascript/utilities/routes.ts b/projects/lab/app/javascript/utilities/routes.ts new file mode 100644 index 000000000..53ccd1567 --- /dev/null +++ b/projects/lab/app/javascript/utilities/routes.ts @@ -0,0 +1,4 @@ +export const projectNewPath = '/projects/new'; +export const organizationNewPath = '/organizations/new'; +export const settingsPath = '/settings'; +export const signOutPath = '/users/sign_out'; diff --git a/projects/lab/app/jobs/application_job.rb b/projects/lab/app/jobs/application_job.rb new file mode 100644 index 000000000..7468e9109 --- /dev/null +++ b/projects/lab/app/jobs/application_job.rb @@ -0,0 +1,10 @@ +# typed: ignore +# frozen_string_literal: true + +class ApplicationJob < ActiveJob::Base + # Automatically retry jobs that encountered a deadlock + # retry_on ActiveRecord::Deadlocked + + # Most jobs are safe to ignore if the underlying records are no longer available + # discard_on ActiveJob::DeserializationError +end diff --git a/projects/lab/app/lib/github/app.rb b/projects/lab/app/lib/github/app.rb new file mode 100644 index 000000000..dfd09fe9a --- /dev/null +++ b/projects/lab/app/lib/github/app.rb @@ -0,0 +1,97 @@ +# frozen_string_literal: true +require "octokit" +require "jwt" +require "digest" +require "openssl" +require "securecompare" +require "base64" +require "dig_bang" + +module GitHub + class App + Error = Class.new(StandardError) + NonExistingInstallationOnRepositoryError = Class.new(Error) + + attr_reader :app_id, :app_name, :bot_login, :webhook_secret, :private_key, :oauth_id, :oauth_secret + + def initialize(app_id:, app_name:, bot_login:, webhook_secret:, private_key:, oauth_id:, oauth_secret:) + @app_id = app_id + @app_name = app_name + @bot_login = bot_login + @webhook_secret = webhook_secret + @private_key = private_key + @oauth_id = oauth_id + @oauth_secret = oauth_secret + end + + # Returns the URL the user can be forwarded to + # @param [String] ID of the user or organization that is installing your GitHub App. + # @param [Array] The list of repositories the app should be installed into. + # @return [String] The URL to redirect the user to. + def install_url(target_id:, repository_ids: []) + query = URI.encode_www_form( + suggested_target_id: target_id, + repository_ids: repository_ids + ) + "https://github.com/apps/#{app_name}/installations/new/permissions?#{query}" + end + + def verify_webhook_signature(signature:, message:) + algorithm, signature = signature.split("=", 2) + return false unless algorithm == "sha1" + SecureCompare.secure_compare(signature, OpenSSL::HMAC.hexdigest(algorithm, webhook_secret, message)) + end + + def authenticated_client + Octokit::Client.new(bearer_token: token) + end + + def authenticated_client_for_repository(repository_full_name) + cache_key = [self, "repository_token", private_key, repository_full_name] + return Octokit::Client.new(bearer_token: Rails.cache.fetch(cache_key)) if Rails.cache.exist?(cache_key) + + installation_id = installation_for_repository(repository_full_name)[:id] + response = authenticated_client.create_app_installation_access_token(installation_id, + repositories: [repository_full_name.split("/").last]) + token = response[:token] + expires_at = response[:expires_at] + Rails.cache.write(cache_key, token, expires_in: expires_at) + Octokit::Client.new(bearer_token: token) + end + + class << self + def tuist_lab + @tuist_lab ||= GitHub::App.new( + app_id: Rails.application.credentials.devise.dig!(:omniauth, :github, :app_id), + app_name: Rails.application.credentials.devise.dig!(:omniauth, :github, :app_name), + bot_login: Rails.application.credentials.devise.dig!(:omniauth, :github, :bot_login), + webhook_secret: Rails.application.credentials.devise.dig!(:omniauth, :github, :webhook_secret), + private_key: Base64.decode64(Rails.application.credentials.devise.dig!(:omniauth, :github, + :private_key_base_64)), + oauth_id: Rails.application.credentials.devise.dig!(:omniauth, :github, :client_id), + oauth_secret: Rails.application.credentials.devise.dig!(:omniauth, :github, :client_secret) + ) + end + end + + private + def installation_for_repository(repository_full_name) + authenticated_client.find_repository_installation(repository_full_name) + rescue Octokit::NotFound + raise NonExistingInstallationOnRepositoryError + end + + def token + Rails.cache.fetch([self, private_key, app_id], expires_in: 10.minutes) do + private_key = OpenSSL::PKey::RSA.new(self.private_key) + payload = { + # issued at time, 60 seconds in the past to allow for clock drift + iat: Time.now.to_i - 60, + exp: Time.now.to_i + (10 * 60), + iss: app_id, + } + JWT.encode(payload, private_key, "RS256") + end + end + end +end diff --git a/projects/lab/app/mailers/application_mailer.rb b/projects/lab/app/mailers/application_mailer.rb new file mode 100644 index 000000000..3eacf188c --- /dev/null +++ b/projects/lab/app/mailers/application_mailer.rb @@ -0,0 +1,7 @@ +# typed: ignore +# frozen_string_literal: true + +class ApplicationMailer < ActionMailer::Base + default from: "noreply@tuist.io" + layout "mailer" +end diff --git a/projects/lab/app/mailers/example_mailer.rb b/projects/lab/app/mailers/example_mailer.rb new file mode 100644 index 000000000..0d05bcb48 --- /dev/null +++ b/projects/lab/app/mailers/example_mailer.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true +class ExampleMailer < ApplicationMailer + def example_email + mail(to: "pedro@ppinera.es", subject: "Welcome to My Awesome Site") + end +end diff --git a/projects/lab/app/models/account.rb b/projects/lab/app/models/account.rb new file mode 100644 index 000000000..def873b5e --- /dev/null +++ b/projects/lab/app/models/account.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true +class Account < ApplicationRecord + # Validations + validates :name, presence: true, length: { maximum: 30, minimum: 5 }, uniqueness: true, +format: { with: /\A[a-zA-Z\-\_]+\z/, message: "invalid account name" } + validates :owner_id, uniqueness: { scope: :owner_type } + + # Associations + belongs_to :owner, inverse_of: :account, polymorphic: true, dependent: :destroy + has_many :projects, dependent: :destroy +end diff --git a/projects/lab/app/models/application_record.rb b/projects/lab/app/models/application_record.rb new file mode 100644 index 000000000..a638c2d60 --- /dev/null +++ b/projects/lab/app/models/application_record.rb @@ -0,0 +1,6 @@ +# typed: ignore +# frozen_string_literal: true + +class ApplicationRecord < ActiveRecord::Base + self.abstract_class = true +end diff --git a/projects/lab/app/models/authorization.rb b/projects/lab/app/models/authorization.rb new file mode 100644 index 000000000..ff045b139 --- /dev/null +++ b/projects/lab/app/models/authorization.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true +class Authorization < ApplicationRecord + # include Encryptable + # attr_encrypted :token, :secret, :refresh_token + + belongs_to :user, optional: true + validates :uid, uniqueness: { scope: [:provider] } +end diff --git a/projects/lab/app/models/concerns/token_authenticatable.rb b/projects/lab/app/models/concerns/token_authenticatable.rb new file mode 100644 index 000000000..b69e6e509 --- /dev/null +++ b/projects/lab/app/models/concerns/token_authenticatable.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +module TokenAuthenticatable + extend ActiveSupport::Concern + + included do + before_save :ensure_authentication_token + end + + class_methods do + attr_reader :authentication_token_attribute + + def attr_authentication_token(attribute) + @authentication_token_attribute = attribute + end + end + + def authentication_token + send(self.class.authentication_token_attribute.to_s) + end + + def authentication_token=(token) + send("#{self.class.authentication_token_attribute}=", token) + end + + def encoded_authentication_token + ApiTokenStrategy::Token.new( + self.class.name, + id, + authentication_token, + ).encode + end + + private + def ensure_authentication_token + if authentication_token.blank? + self.authentication_token = generate_authentication_token + end + end + + def generate_authentication_token + loop do + token = Devise.friendly_token(30) + query = { self.class.authentication_token_attribute.to_sym => token } + break token unless self.class.exists?(query) + end + end +end diff --git a/projects/lab/app/models/organization.rb b/projects/lab/app/models/organization.rb new file mode 100644 index 000000000..516209afa --- /dev/null +++ b/projects/lab/app/models/organization.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true +class Organization < ApplicationRecord + resourcify + + # Associations + has_one :account, dependent: :destroy, inverse_of: :owner, foreign_key: :owner_id +end diff --git a/projects/lab/app/models/project.rb b/projects/lab/app/models/project.rb new file mode 100644 index 000000000..88109c4a9 --- /dev/null +++ b/projects/lab/app/models/project.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true +class Project < ApplicationRecord + # Concerns + include TokenAuthenticatable + + # TokenAuthenticatable + attr_authentication_token :api_token + + # Validations + validates :name, presence: true, length: { maximum: 30, minimum: 5 } + validates :repository_full_name, + format: { with: %r{\A[\w.@\:-~]+/[\w.@\:-~]+\z}, message: "invalid organization/repo format" } + + # Associations + belongs_to :account +end diff --git a/projects/lab/app/models/role.rb b/projects/lab/app/models/role.rb new file mode 100644 index 000000000..54683c89d --- /dev/null +++ b/projects/lab/app/models/role.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true +class Role < ApplicationRecord + # rubocop:disable Rails/HasAndBelongsToMany + has_and_belongs_to_many :users, join_table: :users_roles + # rubocop:enable Rails/HasAndBelongsToMany + + belongs_to :resource, + polymorphic: true, + optional: true + + validates :resource_type, + inclusion: { in: Rolify.resource_types }, + allow_nil: true + + scopify +end diff --git a/projects/lab/app/models/user.rb b/projects/lab/app/models/user.rb new file mode 100644 index 000000000..8fa59a770 --- /dev/null +++ b/projects/lab/app/models/user.rb @@ -0,0 +1,29 @@ +# typed: ignore +# frozen_string_literal: true + +class User < ApplicationRecord + # Roles + rolify + + # Devise + devise :database_authenticatable, + :registerable, + :recoverable, + :rememberable, + :validatable, + # :confirmable, + :lockable, + :timeoutable, + :trackable, + :omniauthable, + omniauth_providers: [:github] + + # Associations + has_one :account, dependent: :destroy, inverse_of: :owner, foreign_key: :owner_id + has_many :authorizations, dependent: :destroy + + def avatar_url + hash = Digest::MD5.hexdigest(email.downcase) + "https://www.gravatar.com/avatar/#{hash}" + end +end diff --git a/projects/lab/app/policies/admin_policy.rb b/projects/lab/app/policies/admin_policy.rb new file mode 100644 index 000000000..f3c6a72af --- /dev/null +++ b/projects/lab/app/policies/admin_policy.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true +class AdminPolicy < ApplicationPolicy + def access? + user&.email == "pedro@ppinera.es" || Rails.env.development? + end +end diff --git a/projects/lab/app/policies/application_policy.rb b/projects/lab/app/policies/application_policy.rb new file mode 100644 index 000000000..f5274062c --- /dev/null +++ b/projects/lab/app/policies/application_policy.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true +class ApplicationPolicy + attr_reader :user, :record + + def initialize(user, record) + @user = user + @record = record + end + + def index? + false + end + + def show? + false + end + + def create? + false + end + + def new? + create? + end + + def update? + false + end + + def edit? + update? + end + + def destroy? + false + end + + class Scope + attr_reader :user, :scope + + def initialize(user, scope) + @user = user + @scope = scope + end + + def resolve + scope.all + end + end +end diff --git a/projects/lab/app/presenters/application_presenter.rb b/projects/lab/app/presenters/application_presenter.rb new file mode 100644 index 000000000..998c21d8e --- /dev/null +++ b/projects/lab/app/presenters/application_presenter.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true +class ApplicationPresenter + def self.present(*args, &block) + new(*args).present(&block) + end + + def present + raise NotImplementedError + end +end diff --git a/projects/lab/app/services/account_create_service.rb b/projects/lab/app/services/account_create_service.rb new file mode 100644 index 000000000..95e0625be --- /dev/null +++ b/projects/lab/app/services/account_create_service.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true +class AccountCreateService < ApplicationService + attr_reader :owner, :name + + def initialize(owner:, name:) + @owner = owner + @name = name + super() + end + + def call + account = Account.new(owner: owner, name: name) + account.save! + account + end +end diff --git a/projects/lab/app/services/application_service.rb b/projects/lab/app/services/application_service.rb new file mode 100644 index 000000000..78b5410d8 --- /dev/null +++ b/projects/lab/app/services/application_service.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class ApplicationService + def self.call(*args, &block) + new(*args).call(&block) + end + + def call + raise NotImplementedError + end +end diff --git a/projects/lab/app/services/authorization_add_service.rb b/projects/lab/app/services/authorization_add_service.rb new file mode 100644 index 000000000..9d979f863 --- /dev/null +++ b/projects/lab/app/services/authorization_add_service.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class AuthorizationAddService < ApplicationService + def initialize(user:, data:) + @user = user + @data = data + super() + end + + def call + @user + .authorizations + .build( + { + provider: @data["provider"], + uid: @data["uid"], + # token: data['credentials']['token'], + # secret: data['credentials']['secret'], + # refresh_token: data['credentials']['refresh_token'], + # expires: data['credentials']['expires'], + # expires_at: (Time.at(data['credentials']['expires_at']) rescue nil), + # Human readable label if a user connects multiple Google accounts + email: @data["info"]["email"], + } + ) + .save + end +end diff --git a/projects/lab/app/services/organization_create_service.rb b/projects/lab/app/services/organization_create_service.rb new file mode 100644 index 000000000..934991438 --- /dev/null +++ b/projects/lab/app/services/organization_create_service.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true +class OrganizationCreateService < ApplicationService + attr_reader :name, :admin + + def initialize(name:, admin:) + @name = name + @admin = admin + super() + end + + def call + ActiveRecord::Base.transaction do + organization = Organization.new + admin.add_role(:admin, organization) + organization.save! + AccountCreateService.call(owner: organization, name: name) + organization + end + end +end diff --git a/projects/lab/app/services/project_create_service.rb b/projects/lab/app/services/project_create_service.rb new file mode 100644 index 000000000..22335176a --- /dev/null +++ b/projects/lab/app/services/project_create_service.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true +class ProjectCreateService < ApplicationService +end diff --git a/projects/lab/app/services/user_create_service.rb b/projects/lab/app/services/user_create_service.rb new file mode 100644 index 000000000..2d606d050 --- /dev/null +++ b/projects/lab/app/services/user_create_service.rb @@ -0,0 +1,49 @@ +# typed: ignore +# frozen_string_literal: true + +# Find an existing user or create a user and authorizations +# schema of auth https://github.com/omniauth/omniauth/wiki/Auth-Hash-Schema +class UserCreateService < ApplicationService + attr_reader :auth + + def initialize(auth:) + @auth = auth + super() + end + + def call + # Returning users + authorization = Authorization.find_by(provider: auth.provider, uid: auth.uid) + return authorization.user if authorization + + email = auth.info.email + nickname = auth.info.nickname + + # Match existing users + existing_user = User.find_for_database_authentication(email: email.downcase) + if existing_user + AuthorizationAddService.call(user: existing_user, data: auth) + return existing_user + end + + create_new_user_from_oauth(auth: auth, email: email, nickname: nickname) + end + + private + def create_new_user_from_oauth(auth:, email:, nickname:) + ActiveRecord::Base.transaction do + # User + password = Devise.friendly_token[0, 20] + user = User.new({ email: email, password: password }) + AuthorizationAddService.call(user: user, data: auth) + user.save! + + AccountCreateService.call( + owner: user, + name: nickname + ) + + user + end + end +end diff --git a/projects/lab/app/views/app/home/index.html.erb b/projects/lab/app/views/app/home/index.html.erb new file mode 100644 index 000000000..bc2303d01 --- /dev/null +++ b/projects/lab/app/views/app/home/index.html.erb @@ -0,0 +1,8 @@ +
diff --git a/projects/lab/app/views/devise/confirmations/new.html.erb b/projects/lab/app/views/devise/confirmations/new.html.erb new file mode 100644 index 000000000..b12dd0cbe --- /dev/null +++ b/projects/lab/app/views/devise/confirmations/new.html.erb @@ -0,0 +1,16 @@ +

Resend confirmation instructions

+ +<%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %> + <%= render "devise/shared/error_messages", resource: resource %> + +
+ <%= f.label :email %>
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email) %> +
+ +
+ <%= f.submit "Resend confirmation instructions" %> +
+<% end %> + +<%= render "devise/shared/links" %> diff --git a/projects/lab/app/views/devise/mailer/confirmation_instructions.html.erb b/projects/lab/app/views/devise/mailer/confirmation_instructions.html.erb new file mode 100644 index 000000000..dc55f64f6 --- /dev/null +++ b/projects/lab/app/views/devise/mailer/confirmation_instructions.html.erb @@ -0,0 +1,5 @@ +

Welcome <%= @email %>!

+ +

You can confirm your account email through the link below:

+ +

<%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %>

diff --git a/projects/lab/app/views/devise/mailer/email_changed.html.erb b/projects/lab/app/views/devise/mailer/email_changed.html.erb new file mode 100644 index 000000000..32f4ba803 --- /dev/null +++ b/projects/lab/app/views/devise/mailer/email_changed.html.erb @@ -0,0 +1,7 @@ +

Hello <%= @email %>!

+ +<% if @resource.try(:unconfirmed_email?) %> +

We're contacting you to notify you that your email is being changed to <%= @resource.unconfirmed_email %>.

+<% else %> +

We're contacting you to notify you that your email has been changed to <%= @resource.email %>.

+<% end %> diff --git a/projects/lab/app/views/devise/mailer/password_change.html.erb b/projects/lab/app/views/devise/mailer/password_change.html.erb new file mode 100644 index 000000000..b41daf476 --- /dev/null +++ b/projects/lab/app/views/devise/mailer/password_change.html.erb @@ -0,0 +1,3 @@ +

Hello <%= @resource.email %>!

+ +

We're contacting you to notify you that your password has been changed.

diff --git a/projects/lab/app/views/devise/mailer/reset_password_instructions.html.erb b/projects/lab/app/views/devise/mailer/reset_password_instructions.html.erb new file mode 100644 index 000000000..f667dc12f --- /dev/null +++ b/projects/lab/app/views/devise/mailer/reset_password_instructions.html.erb @@ -0,0 +1,8 @@ +

Hello <%= @resource.email %>!

+ +

Someone has requested a link to change your password. You can do this through the link below.

+ +

<%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %>

+ +

If you didn't request this, please ignore this email.

+

Your password won't change until you access the link above and create a new one.

diff --git a/projects/lab/app/views/devise/mailer/unlock_instructions.html.erb b/projects/lab/app/views/devise/mailer/unlock_instructions.html.erb new file mode 100644 index 000000000..41e148bf2 --- /dev/null +++ b/projects/lab/app/views/devise/mailer/unlock_instructions.html.erb @@ -0,0 +1,7 @@ +

Hello <%= @resource.email %>!

+ +

Your account has been locked due to an excessive number of unsuccessful sign in attempts.

+ +

Click the link below to unlock your account:

+ +

<%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token) %>

diff --git a/projects/lab/app/views/devise/passwords/edit.html.erb b/projects/lab/app/views/devise/passwords/edit.html.erb new file mode 100644 index 000000000..5fbb9ff0a --- /dev/null +++ b/projects/lab/app/views/devise/passwords/edit.html.erb @@ -0,0 +1,25 @@ +

Change your password

+ +<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %> + <%= render "devise/shared/error_messages", resource: resource %> + <%= f.hidden_field :reset_password_token %> + +
+ <%= f.label :password, "New password" %>
+ <% if @minimum_password_length %> + (<%= @minimum_password_length %> characters minimum)
+ <% end %> + <%= f.password_field :password, autofocus: true, autocomplete: "new-password" %> +
+ +
+ <%= f.label :password_confirmation, "Confirm new password" %>
+ <%= f.password_field :password_confirmation, autocomplete: "new-password" %> +
+ +
+ <%= f.submit "Change my password" %> +
+<% end %> + +<%= render "devise/shared/links" %> diff --git a/projects/lab/app/views/devise/passwords/new.html.erb b/projects/lab/app/views/devise/passwords/new.html.erb new file mode 100644 index 000000000..9b486b81b --- /dev/null +++ b/projects/lab/app/views/devise/passwords/new.html.erb @@ -0,0 +1,16 @@ +

Forgot your password?

+ +<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %> + <%= render "devise/shared/error_messages", resource: resource %> + +
+ <%= f.label :email %>
+ <%= f.email_field :email, autofocus: true, autocomplete: "email" %> +
+ +
+ <%= f.submit "Send me reset password instructions" %> +
+<% end %> + +<%= render "devise/shared/links" %> diff --git a/projects/lab/app/views/devise/registrations/edit.html.erb b/projects/lab/app/views/devise/registrations/edit.html.erb new file mode 100644 index 000000000..38d95b85a --- /dev/null +++ b/projects/lab/app/views/devise/registrations/edit.html.erb @@ -0,0 +1,43 @@ +

Edit <%= resource_name.to_s.humanize %>

+ +<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> + <%= render "devise/shared/error_messages", resource: resource %> + +
+ <%= f.label :email %>
+ <%= f.email_field :email, autofocus: true, autocomplete: "email" %> +
+ + <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %> +
Currently waiting confirmation for: <%= resource.unconfirmed_email %>
+ <% end %> + +
+ <%= f.label :password %> (leave blank if you don't want to change it)
+ <%= f.password_field :password, autocomplete: "new-password" %> + <% if @minimum_password_length %> +
+ <%= @minimum_password_length %> characters minimum + <% end %> +
+ +
+ <%= f.label :password_confirmation %>
+ <%= f.password_field :password_confirmation, autocomplete: "new-password" %> +
+ +
+ <%= f.label :current_password %> (we need your current password to confirm your changes)
+ <%= f.password_field :current_password, autocomplete: "current-password" %> +
+ +
+ <%= f.submit "Update" %> +
+<% end %> + +

Cancel my account

+ +

Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?" }, method: :delete %>

+ +<%= link_to "Back", :back %> diff --git a/projects/lab/app/views/devise/registrations/new.html.erb b/projects/lab/app/views/devise/registrations/new.html.erb new file mode 100644 index 000000000..d655b66f6 --- /dev/null +++ b/projects/lab/app/views/devise/registrations/new.html.erb @@ -0,0 +1,29 @@ +

Sign up

+ +<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> + <%= render "devise/shared/error_messages", resource: resource %> + +
+ <%= f.label :email %>
+ <%= f.email_field :email, autofocus: true, autocomplete: "email" %> +
+ +
+ <%= f.label :password %> + <% if @minimum_password_length %> + (<%= @minimum_password_length %> characters minimum) + <% end %>
+ <%= f.password_field :password, autocomplete: "new-password" %> +
+ +
+ <%= f.label :password_confirmation %>
+ <%= f.password_field :password_confirmation, autocomplete: "new-password" %> +
+ +
+ <%= f.submit "Sign up" %> +
+<% end %> + +<%= render "devise/shared/links" %> diff --git a/projects/lab/app/views/devise/sessions/new.html.erb b/projects/lab/app/views/devise/sessions/new.html.erb new file mode 100644 index 000000000..7d84a2e65 --- /dev/null +++ b/projects/lab/app/views/devise/sessions/new.html.erb @@ -0,0 +1,18 @@ +
+
+
+ Workflow +

+ Sign into TuistLab +

+

+ You build your apps and frameworks, an we take care of making your documentation available through the Internet. +

+
+
+ <%= link_to omniauth_authorize_path(resource_name, :github), method: :post, class: "group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-gray-700 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-600" do %> + Sign in with GitHub + <% end %> +
+
+
diff --git a/projects/lab/app/views/devise/shared/_error_messages.html.erb b/projects/lab/app/views/devise/shared/_error_messages.html.erb new file mode 100644 index 000000000..ba7ab8870 --- /dev/null +++ b/projects/lab/app/views/devise/shared/_error_messages.html.erb @@ -0,0 +1,15 @@ +<% if resource.errors.any? %> +
+

+ <%= I18n.t("errors.messages.not_saved", + count: resource.errors.count, + resource: resource.class.model_name.human.downcase) + %> +

+
    + <% resource.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+<% end %> diff --git a/projects/lab/app/views/devise/shared/_links.html.erb b/projects/lab/app/views/devise/shared/_links.html.erb new file mode 100644 index 000000000..96a941241 --- /dev/null +++ b/projects/lab/app/views/devise/shared/_links.html.erb @@ -0,0 +1,25 @@ +<%- if controller_name != 'sessions' %> + <%= link_to "Log in", new_session_path(resource_name) %>
+<% end %> + +<%- if devise_mapping.registerable? && controller_name != 'registrations' %> + <%= link_to "Sign up", new_registration_path(resource_name) %>
+<% end %> + +<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %> + <%= link_to "Forgot your password?", new_password_path(resource_name) %>
+<% end %> + +<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> + <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %>
+<% end %> + +<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %> + <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %>
+<% end %> + +<%- if devise_mapping.omniauthable? %> + <%- resource_class.omniauth_providers.each do |provider| %> + <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider), method: :post %>
+ <% end %> +<% end %> diff --git a/projects/lab/app/views/devise/unlocks/new.html.erb b/projects/lab/app/views/devise/unlocks/new.html.erb new file mode 100644 index 000000000..ffc34de8d --- /dev/null +++ b/projects/lab/app/views/devise/unlocks/new.html.erb @@ -0,0 +1,16 @@ +

Resend unlock instructions

+ +<%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %> + <%= render "devise/shared/error_messages", resource: resource %> + +
+ <%= f.label :email %>
+ <%= f.email_field :email, autofocus: true, autocomplete: "email" %> +
+ +
+ <%= f.submit "Resend unlock instructions" %> +
+<% end %> + +<%= render "devise/shared/links" %> diff --git a/projects/lab/app/views/example_mailer/example_email.html.erb b/projects/lab/app/views/example_mailer/example_email.html.erb new file mode 100644 index 000000000..539ae2a7c --- /dev/null +++ b/projects/lab/app/views/example_mailer/example_email.html.erb @@ -0,0 +1,9 @@ + + + + + + +

This is just a test

+ + diff --git a/projects/lab/app/views/layouts/application.html.erb b/projects/lab/app/views/layouts/application.html.erb new file mode 100644 index 000000000..7088aa67a --- /dev/null +++ b/projects/lab/app/views/layouts/application.html.erb @@ -0,0 +1,32 @@ + + + + + + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + + <%= javascript_pack_tag 'application' %> + <%= stylesheet_pack_tag "application" %> + <%= favicon_pack_tag 'media/images/icon.png' %> + + + <%= content_for_meta_title %> + + + + + + + + + + + + + + + + <%= yield %> + + diff --git a/projects/lab/app/views/layouts/devise.html.erb b/projects/lab/app/views/layouts/devise.html.erb new file mode 100644 index 000000000..c195d1581 --- /dev/null +++ b/projects/lab/app/views/layouts/devise.html.erb @@ -0,0 +1,32 @@ + + + + + + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + + <%= javascript_pack_tag 'server-side' %> + <%= stylesheet_pack_tag "server-side" %> + <%= favicon_pack_tag 'media/images/icon.png' %> + + + <%= content_for_meta_title %> + + + + + + + + + + + + + + + + <%= yield %> + + diff --git a/projects/lab/app/views/layouts/mailer.html.erb b/projects/lab/app/views/layouts/mailer.html.erb new file mode 100644 index 000000000..cbd34d2e9 --- /dev/null +++ b/projects/lab/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ + + + + + + + + + <%= yield %> + + diff --git a/projects/lab/app/views/layouts/mailer.text.erb b/projects/lab/app/views/layouts/mailer.text.erb new file mode 100644 index 000000000..37f0bddbd --- /dev/null +++ b/projects/lab/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/projects/lab/app/views/layouts/website.html.erb b/projects/lab/app/views/layouts/website.html.erb new file mode 100644 index 000000000..f175652d5 --- /dev/null +++ b/projects/lab/app/views/layouts/website.html.erb @@ -0,0 +1,31 @@ + + + + + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + + <%= javascript_pack_tag 'website' %> + <%= stylesheet_pack_tag "website" %> + <%= favicon_pack_tag 'media/images/icon.png' %> + + + <%= content_for_meta_title %> + + + + + + + + + + + + + + + + <%= yield %> + + diff --git a/projects/lab/assets/header.png b/projects/lab/assets/header.png new file mode 100644 index 0000000000000000000000000000000000000000..cc3856a9565a7378d46d33ec52f00c9488759175 GIT binary patch literal 121798 zcmeGEc{r5eA2$r!vb0GQvJ9yxA*t*}$(CvmQDllDNl3B{L$b?~trBBRmQ2dN%n%{l zNOm$9jD48F%$VhRF8%J`eLv58-0z?7@gB#0JO^{kjO*O4>-?VQ`T2gnpRZ{1o5lzB z9^1>o!EwOUmWgENJn7yOI%>M{d-W>BZ0`Sl=1kcw_^8`4l7mB^!}RK9 zD?iSa#(OyTUtZExxb->2^Ao|{arp{~bGB6{%#zN=9uGgkdxY<@qb+18h|J9e=ehh* z#wJwdt&Aw=EB;zfw!ZRnC;6!RE$1ZlLpd$qo?KG=c0}>(!;wS{$)v---mA5|*DNY5 z&RTOB9CJfA;(f8R@4bs%wu_h6z~91>;y^Sdi>gEWg`zR@4APCVg&y-93;o}}O$iuG zy}z~WpO~55iR#xJZMS)v-C6iHK8Iza z*+YJK3kza4^GnZCmLiJRXaAgs?xfTapM#zFvC^_TbO)?lwwNN)t%3C4f#6bMVOkO7 zYH8AcM>|}KK;wnX<5IB~C;#U_h@FL(r3~nH3BFf0W@A+{GbjntKN)B8_z>nMc~yQ( zvzgU=i{i4b(_4@}VDt}a0vOQ;z6<@J^Bb1u?XY63Yy;ApwLpO$BTOSiEs39x$U)Ea{U#yF}=}PwjzQ zQb76|v4GqNB&c)!`;Ep|F}@)zC1#065U*UuCUehCRi+Ow^(`2n=Spa zVQAln`%kC##03K5z%-vR;fB3HX{Q3b^-@W3p3aeq8~)n~Q7O zARb9;{_Q7h!&P#=Q?$INcu4`a$Ng3oORh$pDgImv;Qk`e#_P~jL%`Ka?b$R1iWmg^uy zb*{3Q7x}Wh;Xl^mdgi&kRY}9Yk@|K`UJ*NTQ+hzJ3}xkRfsP7P8&~j-8QP-htWIAz zqN!YL?J#bM`2RY{s*CN$PNw2>j5}vr#+#ydS^9#@e@%ielMP+X~zT}x~#m>Fc?*(AN+8zk2-+mPG=riHM1 z2ab8Tl;rP+6!BJDa@DCwGsOeKM9$``djqbAB8%~rS=ti|RQojK&!!%S^- z5gt}wywUI_q4uEBujJc79gm9`Hgnp558E5Hz$88}IIC~*ggL;mpDvEg@nQejx`FU+ z_{gnve$BK*Z_Z?yS%PRswqqGr+p&@R%Q*~-HYji60GD;61H#h}O@f>ef9J0-JXY+9 z2LB2lm|&>FdiFNPoB*cBOAG@la}MtvMRMap7!~{5kR^zU4JR zM?3=(yr7pMri~hDAudw$+xv)>Uv=~_{aDnM!30vH)c>f^zjFyG{X9||!YI_K#PjJ6q zW*()hpoeiW&BT>!v$fgcU}qBv7=dGKwW7$1O2H4j3t3+QGoWMof6lLJib7}>5NdJEPsa%=jMj{xkhRRQx-GE;uN zsq6ZTfgaqmZ2yB~rjp;8M7~C&-w!zhF{7py_~pp%lLf}aThd6u$NAqM*ns$k_9ENmBFYaQWA|^suE)#0ytC{OJid&5 zTCuoXn<)j*?`0E!8u{PD;Ee&z27aO|BrJ;s__fuP`j8O+3JPx1ebpv;M~fBD9f{gG z9?d6Nv`knx`+0_>&b?`ovtF{%rC#zup_utZXMeb=?Msm->VqaFLCRqRTQ~Sc3OW;f zZZ(I`@3$dPcUo*NVHB(yZu=3XIh<9r_f}>+$sg3KPWm4uscdc`j^v7UMdtYKDWfO_ zh+pawJ$cdLHk~(T{sVo);`86)y_hi=RLVaSJF+j2sU#VE@h@6+=o?D3O|6x; zT&lyMejc+5HiJD%!M`28sE9oY9|uv^=|Z>LS*$=S_cPdn!tnqwASRbhnA(NmH*5q_kWK&o;*MpxSZ;O%&}Me zOg3C$7WbO^-`&MJSYvBr|E1jtL*{@J5IaJ*&P*m(WdF~4|EBp0IJu(bloBoZIoE$! zO4?d#uIQg}goCbuiX+j+=Vs@hSGyQbcNcKMc1>#E;6+7vYcG1~V@lyatQKem0>P|Z zLliA`yN!v;gb!+-hV2{sv}=AKpwrzoUll75sS9aii@hzgj_zVXlEt7!R=}=xz(0dF zar|YlH8EdD>2b!cse^!VYuBc*=3w3b_r^d7JMiBb>q609c`@0-2d}VI>6r?&47x1@ zh|u#dt1YFFpP;c+l%60-7SBfdpZyzV^zQ^i)QHl10h_&5dVq5;Uw$S)P#z)TQ@K{2 zIqxttG$AH0+0`Pc8WTO=E$b;jH$5buf+Ql_TCKqnMq!YXWDUGO5deT+cserP)a3Dr-UVn-5>yn(sKm>UOT`>%a+GNA9 z9zcT3cl|%_Y%m1;58i10@BwB>f~{{ffc{C4YnO`gj>|2{jBzha-4 zouw|?>?sZ{e*NA%enAdJ`D+~+6ZE{Yku9aexp6XlYLmCw?m)kU(Njco>W#R zp3|+ly|fRYpYwhcYHEZfLbKyK}KHz2TW;&d+QqkCZe4_v|&TAHn7e< zX8S9Hiz*p3s|{#d)~|D(XKb>y?bTi$;#2sE%H3efm+vtwT9f)hF69~wiPEYUM%OPn zzdlbKDQO`Mx=M%?D68C^yR)a5Q^==k7#buJB7*!IE_h~}bH(B1dj3dlO4VhHrEQ}U zof7?vGP%8L-M%(|cOO6bmSH7jxokBtBF!Bs* zk%fvB;85Z-+p3P;(5*7{eOy8*`lOr%Cjk@QA)^crfwqRngxr8~q%~ioQzHvYfd;L= zQ!E!8*cT)&QqW3W-+IGd@(>+Qut0B@Qi>u}vhWA>d>Ud`hXp3f9f-Gj?&)A1fH;AW zJ2QDRL8=&^ur*sWrD*Jr6yxUm1z zTGnSMtq8|ll4IXWSPs3O{M}2=OkiPJG{SxH){#xyB8|9m%bX<@W7MtjDu_2h@aCoG-bCn1ciqYy z>Bv;U0~ivC3;;ohHrqb|Er4#r&Cx4K$Zm_}m1-nXX|ebES>F(Frqddo;bZpMIy-DU z9Sg2|pci;AX7=Okpxx}S9^hw`nn#?1ZX9X9y*dW%Sh{TE8)2%1`#C78dh^NhR4MXG z&D&}L&;8w5I_)Kj#gs4cK1GPi;pO&IBYaJ^MU3Y3hs@)cG1$V0{2<|KwotW=!-Wso zF9b1Ee3O=CG4`-qpVK24X1f}Yh~YU>y3sJfjo$|5E>CR0$)o*2pD43Ep5Zn`tdLU_ z`k2S#KbDju29*?4?ghGT!xM0mYKgzOr;36^A>Zc-SqHJHbex(bTVGn_Q6}t<{|?g^ zaobO6`p%r4&0FK2=|x(7qRkJfvu?=0O}zkR?>-YqAyX9G*3kA{H?7-8GW>ipQ=LRY zpI~3uK#%$E)mrM*!#Cpqu zmK^u6y)!p1zre(9w8)9xg|Czz=Hwhrgx}-oyllnr6;uvm|JGo~uU&m=Dg9zFc*WuA zahg_ESIbIUKmhBc&^Ei!EF3oIcZUvV0KaIZ8yW{Q<6QD5@?b?LYyzD{h zNVH1SCLQAIqks9tWs4p5A1Z_z&1RD})-U`;vg9#{L1XEY=o!hZ(UuWQUB?HbR-yOq ziKNdgUwy>7?qIn2c&mS-ILQI|G2^-5y{GylfGd7UuVklyZ32hzRo;0x-bqV}Fl#S4 zwTrO5LM@mXij?r<({Dp5)zvA z%oTTx{z_cOjemyE-kTrDi%Yme%U}=OX|z=&OJ-1BeIVN_DlkUo5B$ukUd$_vtTGMF zpt$1Cgg%-n_!Lim#B@NCkPLw7E!sL%Sf#|T_&^YF+42~bgaNi#Xc96Ah#ene2Zg)fY7%UNtuZ957j%(8$U?{$!Re+-1?2hmN z>o`%AwRY=(sPN;i%PcNj9bMn(SO2D`eqp62(ru5SD*#~waok+@`467f>iCWaXw45n zrvkd}1CoOOIMR}!bZCzGoX$eus=Ng6!ljACI_l zG<;{aaib%zb6K(}FHsAXIthS_3n`e8#AjZzk?-EArsvj>lj*LUd`V~s#AzcXk35*V z{_!Bz+y!@wAU{Q-QP&q}={)7>$R|*%-@L^-W6We$hktiq{!qo4K|P+4s>5k|@rD0m zOj;mAwag?=|E9wZ^LQVi2pn<*9goN}e&%zdB!8Ur%?C|;Xjl0Zmf_f&$bXK0{a9kaL&P;fY4`669$)T$+0JP#{}d`L`6lU#70nR>o&N

CvAH{n`;cd@)PzaI6DVh_kaZ{mDeU&#ytin!!t}`5 z3I&k7e(~Qo^a^~ps4EcFDAQS!`(21Hiw}#Ii+&6`q^ht!3MgDdBg?fLK{)Y;?IG0i z?g~c|pWz+8l#Az=nvTKZWU)31`vOX>0e!7aY(jB@$y&<84yUO!22w5wQiNiEqfMl2Es z0s!ugZ~yI8y5-%geY?GC|NpC3qX9Y$@uo>Fn_hULOyir;wVDSDmU8(=VT;~&%F<*# z!DT+fW{e|$;bR$Scd|fCVNajSo{c=@%qfE4!9_&rSf_ba=lB z9y#+ZoqmbziU*AJ78xFRq!;whK2tnWDcbq<)YA>g&Zu9^;;X$V3_xW;Cr&cM5zy<_ zDn?8my5hC+F`-%l$G*oBd#-1*jX2yG{4B;v;+@9hf6kM5jUni3VtWB;zK#TqNIzbG zOhs0Mcwi+C3x>Qv5P-!1KTYfwS>U?Ypgi%7Aly zCN_R|Bgf4+$%zJwBxJlG{18}Hp2)(zsi&<|o+qJ0U)|UD47t0}WEP_})}m>ip)+Ql z3;nD<)hr`%V7&WD!_H4`Z>O(6DuOiTzZMhb>bwKWx*pDu6ORO9p2a1#-KLapJ7A}r z9`mpp0Z;LrpHC~ACf;dkq4&4))6`bDFEo^866e84}R zC@x>tl^7{zXzl{*efIK`p1P}jgZJkL7+c#e)XPl=V1j$aSg8^Ci9DmP7+H3(Zu4tu z&1l~13}?>@KwEOzFH7@8mE-%%L*z$5C-0%aKBoc}cFN}R8Nc{hy~CS_r~gy>835Oy zjiE&U^4?)!1Nx4kXRtpx7Xzh$i(m65>1Y}(yoh#-2u@y{isqVP*Z%L%MU!)0$5QFl z8dF1b#BcY+EqbAJMO(=%dM0GEQ4i4Bxt*W~!~j;WW1zY>iTDHRg5L2BG0@A=M+rz=nk?AD2-K(S}3<+v@YIlynZ{Nq|psW9ot?)pzmR~5omYP*z%X{vfYa%l*X5= zvEA}+=<2ch-HYg6>e$x5@@0*aPe}hRYT^HX(U^9n17IViDszo_^I)Jv8#M0+;|#`` z*X=ptJ%K!DC^GhB+N^jixb)_o{#)l4@+23Z1fP=olVJ11c6lgP!%m(3qIwu-Lp0;C zp>4Ah-i1J=6*qgFf-2v9%ddp^tjfXa#vsWafOJjmE#hCyp-#!INl-BuV4GD(E&sCWeQ&M#ympu{f*4;!@G|D{aJa(zeG3+IW5#BKNGJSE)5=`mH6=n zc?j4f{yof_J|h0Q4} z4NNURD=?aVxBYq~Uf1EHf5updB$4A*j&Xn${=&Ru+Rn3I(%A~_lb;!qdE;4< zfsakbC0*jx$0x3$Au>*R+!mnRVNrVHC58oMw&V?th{GlwZ4LJkvMLBb6tKTy%F&D& zLgo(S8EdnXJZxYR_-iCC#!XE7!do1RUv^Yw&FbX~Hh0Hvl*m}WPxO47SYRd~hxMyE zf9cyk8A@6{f5C#RZVW!rVL9;9cjLID+mE^X9iGR1u8Al&kfVPz=KqE8Svz!5cTMx* zFQS-aJr%mX^_TZyw43LG-C7_CIpsBgRm z_Cm5C5G$XjHZU?@*^A`=roktP0g1lCKuJ2=@t5n)Ar0JJWn2U78h%fsR{_sZfvEG3 zSz0EaSgZP}6GWN!$7)@l!2FAoK7DvNbm6_(#ziq`HyH4*ZpP5ZLXHS1z;q=jv zFYoY4c9d>pkA(5)_}+h-xSASvp>I<^tMX*}lL>gbp+rywqEm=52~0Q7e2I`K=QHGt ze`+u&A#aFeU>_JFy%AA|J@BOSckRI>{-k&q!8wW!kf07@>hBi_mz}&X< z1;2qNaj9RWlD{TH>_kdEhKnzmq%!eEwUWxN5WGZw({JQ4n|}|M&H7v zHXgSh3iD}ytZIZt(v2=1R5DNyhFw;xGOb<~V=q7os8|+U(s@p0*Y|6M>Ug|hLl(Ug z?)rN~mZYC*}YAU~+ASfBaO*uN!`+EHKm5qWk+HPg%C_t2bPoOc*?QN8M8Ac7bKj z#W6rF*oM&jHg{_0S=XmG zJ>TPmvZex$@!e>!kJUBmxG!5|F4@waN)M0Eh-uH#@sah-w_-H1XFyyj{bChpC;V~B zP>rHFP9)E?^=)`GU1cva`9v3)xIYSI-Mb_XQU^Q4i2h`|zNJ_77Ic0l+!<`*nk8fq zzQZ1;!fCCv+)*lc>`?Y=KA+rV;d@uv>}32#_hnjR!lo*lT}>;A4?g6`WV^&bej*YD5Ezf}$oYG* z#N}>C12ySN6$#mpEZdT$90dA!A{tvPWZTG_M-K!~>4za+lh(VQ+--d(-iB2~dVvzXE2=daQaToW=^yC+WE&=an*}ofainLT@#L9dCC3^bC z%rFuQ=KBOtZ@(YsA2Mn{h}J1;m)VoqU#rFD2+%;0B=cMxKx*5}4mWDu5_U0ZkEQ+8YIed7^t3Dgi;2PTI>U zN$HkI8Lpxg5-owIwQYEZ;PqyhtM_#kC{n=nA~(ffLt=J>{rksAV2}&j+)soc!ioah zM8|d**hqekB?`phtwu=WBn!DA3_tSt8OP~lX@$LG&Asf=c`jo}j>Jw^*u!DHwhBR| z#Nn&;l5gMU2OjGRE{lEP8+>WM>YZK#w~zZC2C`a3_(AtlHjNuuF&fGLmQU9~!L+Wh ze1%w(Ur+h|K!Zr2TvjCZ|D)k?@5mh;VP6Q)=RDrOI-tCV)kM~h3kEct8%|tvJiBWo;*cd9e%Dd z1{C66GL5AhyHRNt6B`K>ImBMJ$U>rW`Q2eHAe_X>m$GAcKda|EvdRZsOsK`=>7dQQ zaf0|u+6u_I6vA%6mznJ}jT=-#x(j8M;8QC)Q8GSmSN3^V(V{oFfwPsn*Vb7#v;p+g z1AkjHy-!_v##{9(xIssZH^tY&*9DCHY<5<6fzSw=>W(w7DIo|*6?LZ%l za_@vr+#lX!9ejVk6IqSHQ~_f&6^XbbvF7uti0yM_pneQwBzE;iBuc`2@;6Ey4%zaB z1f_fsEj*L?YvB=lfC^=Vt?yz;b?hjm{`i7s0SOxjHTib6oCE{`BnH5m09a_Pv>8i$!h5A?9sXA#=Yvwlm&t_***02YY?MG)%?c(^-8XwG&pz3cu8v z2LE_F^hfh$i%zC;CB$gn+k*|V*T}l5%@4m;>9_*+C>wro?<@QUF={xylLqDd2uWWA2Cw$nUk`i2s^AlN9H=pHw2!#k+)Im7hD=g-T`SKrH4C-E*D zCf8-FPLgLtyjv=~QxlWv5%DE$Vb4tiS)riJ)w79CJ|caKHTWUK`dT%>ef+*7B*nVn z?#FVaJ!y2FHDbWza?lx=v`9g)*9uL2GenjG>exc2y(FZMuni{}6G=auw1Ikx-%anh zs7%_eR@+uc)-J+}RKNPP7WOdY3%QamG;W`tRrqOwj{Kz9`eDWpYz>FS0L!s|cKsFb z_R>V>F#WqM#+Yn?E&F+(w$4`W`Hv^0hzplvyJFz5srwH?f+ILL9pj#Pa2x)LeIpp7 zB@)D?EH3)YO+v*%hO74Mtf|~$%T))SxSHC}AJR;BPRd?D=nh>{Id~e%YeKg-M`Igm zuCD|DEvShb-NXI&CWglVac}YZES2+3AxCW6tVv2D$n)XZ3Z`=`^URn z5&D>erOr;YGq20K94pofsSL?gX_qGZ=xPei93mI-aa#wMUNQ==L-T#RosD0H@7R%m zO=DjeCHVy|ZqErKrLz+??OnXY-Mw*}Jct?xxEot@2oTI4I*!GWWkGoKkP%h4OPDqb zzcZRvhmF&LF*7s-Lzsg`=>&um1(6JoXLs*px||YEdUpooRs9q8we3ZJz%A668el*r zA4htzpAVZ)VSAB+`zx1pU#!_9tBMI!ppcF1b_&~Dm{0b{Knx_t)Ivox+$$_2N#{{~ z2T8irBvDLG_+&(a%I$N`k9@vfrOYQ&j!T(pNcb%<^uKyQ%EXO+B?JqvR}H|a1Z76%x-!^0sjUV3Hgr?N~aG_X&>C(-)yWY_%q`Ip>Sk=d*5AIe%iP@`h5i z(OM4eEqlG3@n5S`h?73-SY}nc%g)P9?Kpu4Q}%3`UI~~^jY|G1z&oUl2Vg5BKJ_)E zd{FrPlkK}pbBAK;a6W9Rwh~3E+Y&# z&!!O)ZwJ~QZR-Rv=yHS?T3Dt%$-S2Ql@hg%3jNA?p|#a6>d5J1q8RCbu1iNc*xmx| zvf)|ek=yTZtL^|=!Uzrvk<_l@ysr34o?6F3UNN|S)K1}8*W!@I-@5)uQ*~ z`;+p!OBHNmM>t4Pa-kEp<4A<^rPY>E;LfGHi(#Yt%Im~oN-++~?L6;xW!Cc%3}}2gtj4G)!ETm391-q@-WCd6)y_(I{#(B$8~TIS%^|ovXj9?DtB3>fLX`#K8eivr zimjAf5l7BNohv4*c0|kD3@_U(h+H{7D|3{YUO)T~5usIzcf%^xrH_pddq(BfUcA}s z|7x2qYP;|r&GcK0@aErhpL{(g4OBlKG_ty+0HbDGoeV#Ga)P7$CKIO%sPkfjyh+IW z!=T6k_wL~Z*Y$7i$>-}x>TCu`tD=-^Uf|{g`l*oC2Uws_8$~9R`G!+K&&eHl{j*<{ zQ1G_0fU5lGRB!f3g;HQ3OGvUJpj&!e%*d#awni&EnN$r$IUqUqOO|T9+@%nOUhLQH zZ}b~mhRN@9#8v8yN0_ujo1rnoWW)TtA-abKZVY?IVb@8MYXW6bwFEK+$um(Y_RBvA z$jDwJswJ;7p&aAwCI1mk?0O<3Q;NV28`(0O5DwzV=J88aIcvaX;ol4T7Bi@Xs`PvQ zjHz)=%k-qMq12mtX?!Ov;kqEnX6;q84Se9(mDu8AV;3`Tbz=lawRJm zHU=u0fo3u&7+^4spLLOJ=(!K()eMYpp$Z#E^)>(b9a>;+LO&yc^_=1V>wZ&WuCaeY zyQ|Cm=L%4_f$*BIdf)XY4Xcy9V9n4fe`kGy;|7l;H!DzO=Jxi}tjD{GwAw_+{b1Hl zv{ZFCrjH?LBd!uX4*aj2@I1%c4MowD??NW0*NCrlVtuyw6MU$xjU_? z`G{LeNw=_mwJK8n(LYt3pQ$fXpu*fe7K-8&d!R#e8S@UMm{HugVc7AZJYq%w&lkb zV?K%Bf_H@1wzTbqqb8Aj`8&k1yeZci^MaVNZQwP3J^?waqhY(H;?PO^*(UtH&W4-` zgk&9QwXr-zzL^)OAH}vX4ebSZqaXYxq5|7_a&g%G>4@^fNsrvG8)Yl-pQtiS_0`;T z`0}tJU{Vc3fgc~ItLUix{r&g#JF%;q-75~YZo7)1Aa;+Fhds{@lfq+1A}+^$(*un9 zL-))ckI8;g(|@Y&7o~fJft(@8Xz2?-w^GZ&&oi;nEwb@kd^+mfAiKm|%AVpe_5YC= zVWHDF1#?DF{z~)td$n?N-u`!WLX7(nI@nu;V z75pL|X2O!O1UrgnfO_HqO=nQr35UO^1k~go>Zn%5X2ASSCwY_(MJRf5RJ=zE!$@0ItzTw5dg9d|D6Q@87)Vgub(C#{t(S8L z1g&;mDF23+Y-$|nTa$R+-)Au4lh6ZcKm7-&D2@{(JnRn(7hKC?4kfiOzBst=Bi{m1 zG(F(K1Nay}lnY^zz3e`Qa!>q9W&K7SW6S#vkwmy=BlQkyxqU+1oigOtZ6@xwgbnk5 zkNxrMt`i#4!P6FRK|(U1j-LtmmIqrhm*k*5pw<6JC?Bh#uXAXhbS+5kNl_sytczxN z;P@+ML3<5_YkJosf?{O-8@8w@6YW;nCtdP_a&D_6WXLBh5DsaQJ)5x}FZlS$1Ncrl z-eW(s&I%7e@C+m~9=)I5@L_Cwen|Df*-I}scg#+)i-ZweqIYz{Uft8`T_QdF!2A`q z7hbbye=fb@R!PRU$~}f#>-+~yFZb)+`(0lub>W(OPPqe?@P`3;*3X8l-G>?NKc>@v zAS3F*fHqtB2zVBNk&di8(klK9ad^`{B78ocK>ULB#Hm5o)ifthH#8SV7xCGn028Q} zAeX=78Wf{C92CdMP;CSvlsH`hB$J6u!aAb005!<^+6Wyl^ot};;JdiPKubA#&2vL0 z3w9XDHZv5mS`VQ7v^jNL@PeOhR{o2+{U%xH{F=LaP!iM5ujS32klD}o4(zLF{&SqZ zf{y0UdU`APcSO8GAoQ|P?d3pLtyC?fDfQQ|{)}?c6%E>i3ZJFlHxM%NiXW1bnT=K$ z8|5uek=ui5rx{AT&aD6>(jt0>V2OtdFKe?~E@}gjW-?`3z?+XPXASqd2xQUse-(hG zRe{$#IydPVrI6C`6RK~tP^VGW6f z>SA|URx+bw3+BiEmubW!jbf&&VEWY-v-A0{W38U@I6ouGFyDUN_<4FZ!mH#htgZx? z?=_F`lRf^ECk0JNU!AX`(1ss?XF!@K-dp@{t*fg|`yb72>&#sMZ zcmxm8afsP&zwsWpbjYH2CzVdjUYQxD17&m|Qg25hG6700XjvA7Ya*KUkel1>f+XD? zbJ}ds9CU-W{MDsR4yR?gzYL5kf)8+mS_v4dQhRLULD!irASo$5e#mj=Kqj#E0nlQL z&#v8HvkomPUpc-?0)!HR0Ac8ZgPo^Nc3WrA_x)(8eT}QS7ZjgK|LtCWL;kG}PRjCv zJV^yZ6Bc3*A9eTaQwU$XQ5sc$pepBE3F?Ov;*Z7Tfh@n$6{qVX*$3Z^hWL2*B+B5I zaO=G>h-y>BVV8hXSBmn!&WmDq`i?p>|gyMl|D1O+v1Iv-;Y?NIKT zK5N7s=(wc5PO149a>|}9Off3v7^O3EXxsY{{;Erj-JWe1128cQ>Lh*BkZt+~5cR;k zq`|O&hg6pTx^&v|9LpFdIq64qid2~~9I-=7Iv^Pr17)`bkg5^sPVhkL$>gpY`=2&% z@E1PJINZ{!C%q}1caiJytloP{O+sroMT)X+N`^gQ?gr&{ofI5}>8iKuT1p0+Fq0#_ zv(E~LXYL>UD3Z?aF`fuXk6S4`yGlD$5x#d;`AxWrxFKN)_DUz(;cA) zYa9Tbg=j-Ao$ce7XE90J>}o*mlN`tDFEJx-e}R!{wX#IoN%&kWpgN?@=2p>%fqsLR zX-r!$k~0mO&K{vddYeBAhIF_zq|ufs*pFdy>F!h36mjpl<9ZkM)7j$9T~*@C)jdf3 zHgh>P-C<3ts90KdQRn9*3(K=C%z(Llng%|Q}l zlRAVw=TGc(9~K0%-pwq4qAb+}_eGFIdz~DCj5A2_GTY&d1;Csw&~b@d>;<}gE~Cnr z9x52-{9*s#_4YB#s~zXxbSHion>ESN@dxHcZWC47%dl}5BR-HPWGt&M9h5a&ekpea z0_xkUDlWP&Ax>cjA-8EOTR2_chSkg0x#VU{t`#k;vec38poon6`SMvqWuDAOWKbq0 zeIpa#wd&s5&1rUe+9&_RRLm@2`682O3I*VS(>`~W{a0euJ)|&9(#4yrJ~?W=*qVP zh{{6usnh#n0K|d+ReBe?1}}u+&-h@8z}Kyo z-yvH0RZs+Q?X}5bK}>T{|NUP8eSBE!Cz$7ry+FLUm)xF+5kqIazF^|9)~6xp&a{gE5$`snLjIJ`m(TF}`}Y*=QM>sww}w*Vbu{4SK+|&u z&{RFs-WdNEKZ%@K+=-Ak8*JChSzTeBH?4kutd7`;a#ta?(d!&Yz6+UGx7O$2jP)Ifjg4#RJiM&NU!o#b;jM}{Rqyy7g1fA@GMGJRDhChCq;WPeZqa3FL&dhx{)ZV&)tQMDekvGK?qp&}O< zo%o~krz}Me4=y1uhF(VRo|QYWf_3?-P!feC5y)=bVM>Isp3M0$6calHFiFlnifr_y z`^U(ts#&OXFZnsK00-W>g`^WzQ$^f90nKm|3Ak!P)<5h`oPKI(;V}RguYglC0wc+%=u1Qpt2>n zriB-gFIw`~kpD56^J*$8pL~089gN_kV6@OBE9;%_&uSbPCUIb*Dky+8Lkd287VbwY z#tZnlj%xvBn$9CL&9P&%<3PH~rzKWkblTtcF4iv35f4lvdyek5yYV)HB&r2~(J4|y z`jHcc8o5yZ z1N3ZB$fNK$?0Q0t@YN9|-Fa7S0L>PLZ=<1yEvC#SOe>YvvAxOYI*m&Td)wYrVE|4+ z$IFP3AHplH6u<%Lca?;^dX<3;#&$8Rk-#bm8yD@LrS~2W9K}v#i5~4AY<5Ln+2pwV z78+_ec{=gfu#9wNO~|>?GL=((Q?^ruPZ$2|b+vywZ}hr1T7LdCMXDh<>6`dhPvv|u z^|tHLpi&o0yTw4xz5>%+6FbC`+7s14m-eHc_i2io%+(chyP3#idtGN|dVv_YOvT2^ zuKq*^ou%2}OQU^6p4sQye2Wf&f5Nze8Yvch%`FH>V0>UtTTECSzv5q( z*yef`>Dgp!Y<~xo+D-YN0eZA=fC@bJQH|H_O7v*!9h+5( z&C6!?_kXC)JT4GXk>Y*ZUe*8IlI^m^xO3nS>n!kUj7`7A5 zpX6N7xgf9ey5e$`$=ERi01$5W8JtcmS9a|=`A|vzp`iD*b8m3J~e_Fh?x%Jo; z;Je-0+H6)Th8?>k7ZmL|!v8A@7mox{no2{M-&vMGfMa| zgBG-7wmXLxyM5A$z;IUmno3nWb0&Q}EaOpcDjUiuYrlsHj*}|axe0d*m8yER%!Cx4 zrraX}>j!6q9P;(zk1CC|+me{ZR$9Ox`3aYIRMX!IIu>$`W^CU-+aX`poh!Z`mD`Qt z0Tr`=%L197kDN`r+Ar8S0NX1-&TfW1xiNI~OLk|T%C$JLyw&lHA<;Amp0kk{XnKhGb!EipCR?~Qw) zeRh-0&G$3raS2Wl${-$mz&AilHHN3?>lnEKg5dd$Cl@Z>OEFimhVLcq)iKz|yc^J_ zlmFvNJJi#>G^(ntf&3l0cIc(PlY{@Jp+KusMLe)R%!meT%9ydM5DaxXBjdVmWlIDRap0C3}23O`HNI@Ewgh@#gFd^~4;M5v`)E%Jp!_S#T`(x~F-<%c}6! z6hox#I8!*m@bTJstkAr0q-oqC*_&D3wh1`Z$J_xq;c1WDxBIeq`DXJPhoKv?r}X&{ z_s1Eq*Hen2rZOVI5?RJ8Rjku5=D&k7X=p8s9;L*RL%q2lm<8MKnH9cCU( z1_N5kqTSVfhdcAi3MlYdxv3DY(kRn`yhm;DpWg2`(l3tP%Irl>CkT7Ul5Mtj4c=FiAFACTlVt zM{Z(f00x{1#)>vFp~OG5%t*X9Z3V>~nNG*--!+) z?DY1_cENzV+l0L3$p6LNn}cjiY){p!6f{xC8rNmjqY$Jxp)2lDdI|>Q-T5OAYdv=D}AF-Aqne(QcAW zCf%gJUVj@xTl(;58KFF#;Ky!W@VhP6ETx(4m*=dCw}uzaJQ00J1M(5w@weh3;W`XZ zJhmgL6;5{YUgcU+5X;&5LM73o*(4Sm@|t0r1YM=9ng}tUL4X_&S3bcerhxX`{y>H~ zSXS>`!(fLJ(DTjwSa3uDCRqa}{d?@p##u9DY8E2oSNk7+zHG4eB}%Tyk3Qxp{PV+R zLbWlfjRAF)%upbS>fF?RMXxZ~Lj;bv1FW%$z-sk($hxQ%UCjOG$g#eEkg*bQsAk77 zulu(5s^N^?%E%cgqoJ=F+ZDS? zuk}bMvk99$;sr7gvsAkH@3^A7qLnIVhVECa5FhQXMfHkM=6p;sB-YP&246+D<&?5I zdo*}a7-2|2Ts4sM>fcru*zUXw_q8F_f~gjzNMD@*x6F|*`|p3O>;!-ARHH|eAk|tE z89V^&=241RF97@SNAwliCtY1eNl59~7ONs3;GSkNr{mGH>nufq5!CSjerD zJL_tE>)dRey~dcu1!tdIB2RGjWk)@RifWi<@Q?bgy#?}`sba}Zf2rk0 zNm8#YQyQ8bVehD5Gk!ik3W3hp%Ceu(@L#Y5KVfP%SM>$3%vKpP)h=|>k6CFZYDvOu zl@FT#@^Yfjj8fEVyk&U&^jG0xUbxCA%w3El+fu8cJSbf|%1NJ`gL~Zuvw(s{6p&@P z2^rfUwGsjnSu;WJ74Tlw$q(&!wSIEATHmmI%;g<;ay+J)Df6&%+t9UWUCH|J%&)%& z`4q*+@f8VH(nIsW3?`j8H+Vn65Cad2AL+YoIW9W;S@6RY(hvAx z8ChEJ_6MV>K03Ox*Q~~dZ=+M3P z^qMN9q4FDP_v(WiRhf`%g3EUr8+h=@H?0Vu1k+i%xW<&Xll1;*UuAwr#4z?+jRY7u z9foKI&9w4?8!M%AFd}O^lD%g@_NmS;u&iZaLi_k75fjE@j_mgh%aM0^U+GqWw&G8 z#xsQWjhFEd2>FavH=M*^~(?LegO(-V$GqUL3yjb^Xj#^4X&nbr>liQqC>|8R}cF*KmHRrTJ+o~E>mg8A8Q=NT3lm8 zp`mjEtZVIdJ$CBc5pFVgjF-Dn5-L(f15a=M5u2r`iQ2sDNmXbnr-1+B(eo~L_%@R0 z{3w=PUr+F#fja(dbztCfj^9sK33#Jfc>?eTCW@#7@Uz}$vZ3$+>k}>bGfNAnF@E39 zn$eAIKj3AjF{U4M(3|U8Cl$Q7mB*+0`$3AvcdF70qo0X_iapolqO}Ae9!0l$d=o|C z$hw{GT<%n{PO#!>80SyNmBM)c&5#q`FZDVH?M)cnlOzHEL(rwam^zRd@Z`U47&Mke z#PgMSg(+p_E_*Hx=+e9T?k&H`%IHpSRG`@2hwgftfFRa5V$ zoDyyx{T1kM7J3th-NT65hRR{mNg5*}K@ZmG=HeRIr~JC=iifGUiSRbUZqa8p>kQ{Y zt||yeO(WeS#ocxop=(u5qazD!Vu|05kOZL|(s1=Jc|PumP;?NSW&(rTlef+_D<)V|<95jiJPD##A2T?yos~rw5XFu+K)U)S+fZZmpNx9n^uI;jUek_dqyiBg6 z`i_`P3lAoKeky;uV9@LGx$Wr6sEG+oDz|tQ{kbqUab|H?IzQ@5*@KDeqacTFEm1oV zQQPv`1JPoPivA78Q=2)YD>&2@1TNHDmP-Y~G9(Kmz(8}`MYN;;4lct!`Uk|(0t;X} zv-R86>*{_|-mW0AW+S&?bE-6eT!NY5#SdxG4iQ9-SOOSIdZ)=$%aWCrOlkLCRK%9? ze+1C$4!(j_&o&I4^(TKlYl8&0F~Yu=Mc1x&D{AEQ7JhKlAyeKCEmAhW($1@KXhi<4lxL+<{RF1@tZ#l>Y{-ymyb~QWJ9hEn0x8o zR-57YuivTQ3__U6VlE_u*qtv(CHf~e&b(%4LZ2VMHLxA_cNPF!9RY~o{ ze4WxPZXP7ypL79W2Nm;*<>pm){FE`wD`Gd|Yet@pf)pI2tj5@f{0jVmB*@ zKBlYrcc8S?M?t>If<1yO;y+^(DMJ+8!wbcbo}?3G9OII%{UTXcDBTfzH9e~4#*U6E z2=sNVNoeg%MGN48Etp!Bb3Wra7Q|^XgX_KEpdZ(uqXHBhM3W~lT2J8Qt@b!{nii1_ zvAQ_>c?p>1$+-KN6&7@gjLKatM2;dT&2Q)n`hl~_T+S+OhyI!Mtc!R_U@n(^uF&7w z#zbFeUaq6UX)_c$;CIaV6Y)8AA;IYFYIR^XnXLTVMO97u=7Pcb66XTd3*sM@tVTwL zL(~{c-wTPKDIPvSnEDjnWdF=`!dLg<(&qBl(GYGTMLO;J5<6P{#k9R2P&_E`Y80Hd z2q(U&%089?(Ns7(eY{th_RtN$tY?wtK_Px;Nua3>?454pc9sC<{lJmwwJL^jD3Y;* zbSdM*u$r2|oVDqk>Iv`d+0aQJDj`x`;Dq-IKpk;+rjOtl-fX8TI*&Mlz4!cj4dE9S zxoiD{NqSHCl&s}@EK*m2*Tg2VycCf~MKnq; zS*H~GZ=BC4EKH77i+uvs$B7|#c@Dl6o0a!mDXHxgGne44cr>IRt_8^~+zDZP3J=8p z9aA@2P8x-8`>rxxCHg6ncc=Dx^BEQC6FT*zY+M(w%rn?I-`E^n(64Bx?qB{!@zAkt zp<`ofCICeH*|YA>XVDOtjIo~eK9~lIz%g6F_%-?J0D>2K5h(%ew1I8YSUl4z6we+& zz|d3@eCo9l`^Ap1nlNcF3WQ-8@u)FJtp$Xi!r8itpL`bwfkv9Zq~Gd#2@XFOTAkRmlAy*I0~By02qz9~P{G0X_E#oRRAwl+G7mD=k<~1? zc+K{6Ceo}bnhqKh*uXRtZ*bk8f4M0{#;M+XVykXDQelk(BJ|Z>Pj2pGLW|}lnd~>E zA2QxvzB`+#zjxR(n~qw+6PDX4LIyqM(OLhGQEYJw*8VNJ+i=G6WwE~A!rO`J}etIAQQM7VfW#MzbA26f}pPF2U zFs|PDuE0=8 z5Z3a!!n#yMHUE3mhW$CLlnIgdIE1`V*bQ>ikJXud=M5KldfQ5VG&0H5M4wR{OE{cI z4dxlGB_-_Ab-NEfk?Y&n$o(txXS~zR&hvR0EQ?nA1N{u$V5ce1yF{{1#p1idqtULu|2tMF@#ORDIx{z3?#8 z=ns$ac}9DV9|KyDu$WcdCHc9f`#CJ49RbSrjuF^zeP_>t5Sw|F+aKM5X0RtqCpl>H z6U;%qFX(TZqR<+)I*n6B)8w#s^#47att#S~FYqNptQE#goAL#s$J0v=6?f9~Yzo9< zLfUqQ#bd)W9ge3|+{P7w5e(O#;=kJQP`Lx{^=T8n;SoP=@Jbe#)k>+DUfa5T!)TKi zF%D^U*=!shq-`VT0$T(To!i*NPj^u-+Co9a{L<%ud;VkAM^4F>#ILe)Td(~JnGZHn zt-mLh4~~AYhd0P_GV<_=3Asr$)Lm2`$8UjI266}S4HXfOHpP^nFk2`UL z0$p}kjIa41gye;5RYwEbN)2IP*Uh_5=ufoq%oz#|d zj%yesmBq{z0#>IN{#KrOi!jH~>+xv%v@?6FUcQ=|5sIe{AS8jQYGhI0e^n0aVMtH~t;;v$%P{N$#K{Bc^!;LOe3xST9e?;dk>6 zKc3m8dyQk1odv$(5nyw;8Rl|hi7WnOW}}P)Us5VfWRj#jbtq8_%;wr+C>O2&(TSrN z%jQM;ygT7zDBpK4X5zI5(`s^W=pTiNFOc+Nhe`M+6w`?BA)R%#Kgyk`*{S)D0Y1NO z`V;%`$$Y-Hr%J1IP~mUiYqLIMF}0WfSWOA9+Y&JUe)Kcio-3G_>R@jtn2grK*vGC8 z>N%ef5qO2esCOUzweL9V1Uc-?$RanS)Y+GOsP?1zq2L@GWJkCl7s98Y6X%M^bDB~I zq-gCpWbbc*;*g=((r*fKs-p{+7>t#KbzY2VHP}@E%WPs~5m6S!z|T->H66`+UR- z>|twa*>0S@eUS2L^V{wFkOA)Y^kWow!{&_twW+QP-YI^-i%w%m>bFqbAXs>8V=Qpr z#L6tx%=B}kB3W*J-g`eEt&%$D?YY-$zvF3%zoa{cNm_eF;*W&`H)fA;IJrSfflW)0 zn!MnGkbA4=qOZxExKE^xxPO&3W{Tf%T}SGg+4gmx_G~IF{c&>Q+4mt7dZM%|eUU-;dm$*59N5uh>ItiBLtSh6+ebh}DmU z_$;gg)04im;!tok14CVh;WzP;S}!r4NA1Smu$7gt2=tt}vtnF~8ny)a5;+JLylfFW zhBZ&|(_A+9M^nhGFnI|%GAZRFex|Fwubi}fZbW+81$E!=!EKJUVtuo<-yj4Kk8W;l z;xro{m~uLY(8}kHA^zaLQgc)2%biO@%#~05))?KZ>q<8M0tXJe?8P=RBVil=is7+k z`^xuTIjkggpztGi@P&~WH_6P2I7rpDKgNdRRn(VQ*Y-fU z+PgfG{W`q?GvtlfBUU5sRN9_K?*Hs*v{oy8*hWf#$KtolyvD6+IVj)ZJNuV&Nc`ft z*#s{0fUklY&`CKON9WH;SNtX}kU7Ey=5AXJp3j^JR5)3yD=GNP0nzI7(bv2c`3sx` z(%>pAdNKaMR=!}BHnZIw+@8iW2JlPr_{+$9dTn z?k^jCS(?}=O>Igb#G`%`+^2r`x#4_oKs2AkkS_kX(fT(k^dX0C&Pv(e0(OPYeQ+}g zK{qoG4XpZzQObXA!>0u+e%2R_mC8cJx*QJJsJCHfkl=ZUS=;UPyY>gMgaB&dKPOanj=s89THA|`^Rk29581c>^?s;sre69|@z4*q%XmvSO9>mS6-wnq zX4p;swN!+Px1ILEyTetEuD<-l|D-;T1G%{%T4fXb4y_7!B0$tI%vwJyCY@~j?;b+tt)K_T) z>as84_TLOO2ho!g%1^si!*vx@Mw(8aeB}hp=AECkQ;Tr4svL3_P_3c@p+bP~ZPsM7d7JoFDwW9eoZRySdHtutTN)0gq#+k9%x0WbS} zSRbA|{7|ro%qCuR&-|A)Bq&h%5?hxktVcIK7A%V%9^p!4)1Sr66{SlDcVzYh4@X=* zBZo+^lTY&3Jx>D9xa+C|qWmOQp|*$1`-6L=A7+m1e-IOld+Tey(Tmx&o9@;Xum?|} zIdad&wn((Y?l_`Fa@l_>a8;tM>_3aKgPFnGVp^ z!u#7S{y#8MEK)Qo)AT+hih$_)#Jp!Z9RnAG>+z-0GFOL2X^3QQ^>2QR=-r zwhc;U5|8qV=j^i8xL;}UHt)ZoBQ%=+7puU%Im+$qoD;kvljdZ!2)zo4v*j8eMCKp4 zqpz(yd=va;p!Gb@-7s*R;gWV+XV+uz!Al=a?_%64Fh)5KPCmB2Pzr_?d$K}}y*b~; zJS{Q&9Zuq#G=@QJNla#jyLj;=!?_lgn2LCdSZ3-R=2NHIc?70^6mlJxJofG*>gOB? zXR^S+CphZ~|INDTHBHvG)2c^o`9k;ejMoLAzBRy_w(w(kc5HYumx__>k?23SlY=-P z6R9Iq&{ zV4OV#6?8e0HFq7uA}3Y_cWhpLdW2m_8TWSgQShFp5-zrly&={IL!B%S+6o<`HVZx% zZ*t+}z1wgE5@u;NJ<2l0x5A2ZolKF;T5|}xMl-e_8osU3Khb57J)$oW{CnA)@o@re z#y)RBHf4+mpgKF8ws!aq>%9f;X>AwHEG7KQm@#;DJ0Be3s~qA48xP(PnqX}>`-uGI)4rS`&ZU%MhxlfJk)d- z0Kd)R@Qk2P$d!(6kZmG*Lr7pW)KmBJM?u1@2s<~8td(9yDp=E6L>X#QC|9;#gMM-X z0gw`h8m;hTwRY$U%eTEHV?n6t#EX91hV8Pfoqs?z0Cm>^= zi7m(P-|rODlilOKW3nKO`N3ybm~7H~28Vhqmphu8+HDP9`NXAetDA7b`|QV&o2vh7 zJKFI5R)x5iuxU)!n3oY&kDt*V zw9OCmqZte)23SBUjr_zv^dbAXXvh2SNoTiITlPR+H8wW|GMyjbu`OzmI;!zXCeBcF zMHO}4JrX_;!ZCDTZU6C`OchU~GO1s?Urkt#j{P^#57E(j!-CTJP4SjNe0NgQc z^6`2pwnvV*e7ieV8@` zxc@Av?9W*;9q~gAqU2CH#p9!xW1^A(!s01m;>ioeo zUo2@i`iA3JVeHVi5YqlhygQev);_aYoydqcT6_JVS!>g;#}0^neeD41pb10DP&m%D zh7EVAPZod)8WsKvI=|-T?a(fV<&>*Rn-LS|g!;Zh6@|&P^Jy0i=kvu$=Vz-5B0PRn z4kG@X@S9-53J-^h;d(5lSW}7zSZj)6I1J9`pZtfko5tP7qIsxW^)(LX;IB^CYZ+aY zTcdtqR9Zw?dVlcns)coGrdNko`Gz?@2tX4hnTmz zfB3KAxvtC%DhDOVgz(mNoXWcJJ&p!$B3#!yF&-!A-0aiene9)Dp>tt8ArZeKwoCkH zm3LI}3UgR!jhIsn(Amzatokyz;s()aV=@O49*};oJqF`&Krk1&Sx7osrM7Ux7gCL^ zcw&k)n|#?$tOg-_*XJxfO6!fmA5}jmLmNyWqZaNpV%5xC%=Vk7e7-)GMLVav-mOJ;aqIQD9q zXk9#1r)A_JizG9jLWICmhhz-ySQyGxgXIv8SBMC=<<*v}*_FsH922c?t$+5rFj^4R zY7Q>bl>>y`c`_*w{=Eq=NF*OJGP-&mA)RV{hwJEGYxb1~AGvSjvb!t%Q$z(&;zu9N z^|D@O7~reT-{^DP&^bziIntZ`a<;y!eme#3PnKX-+l$v1#2*w_2Y;$X zTz%8D6MYXNB>$I%Z;Ju`)dZVAMeIdJVO^D+k_2|muZrMglD}QTcBGE?Qkq?PPMX(M zVZV3qf&C?#%~|JquJj4h+5v6`LPaI`BIL^Bz^&?QU&S8IiYzmV?-PwCZxtym_MVWv zQ-UbYjCGxkoqX9#>swqd&30NH!YkqF6Ca6q;A$S$F#5%_ zNPo`vT?MyF?lBaZ*mtb$!PTYRjtn>(iu5MQ?^}q}xB0P8Me%ucaxFKzuWb-~frI;O z&)36!NPY+=XHKB%8E~13+!V1UQG!EpcV9JmKfR>@?8g*@eV5?B5nf~GU#fW!z`R89 z-@{>i4-_r31qK(_;3=>jpsjX~cnr*b^dbT8a;2!bI6#oIm3m>`+wfUp+su<2cO~Zu zD{Cxg?P(AIy#BcAkGN^5J)za(hxTIT1f18oE4to17*>3La{A=u_P?sw5ht=qn9s_& z1VQ4Seb56owfa`&cTMtSa)enrE#j;hNoJ2MhIi$X%RU2nyprs>Wg00J2N1L zHc>GAYfkpqV;QQ+!oMFEtn#ij-Z-h<6|m>vLDRU*7q`bmPVe=wB-CqfYkU|U(jbsD zHem_y%ZkxCsz{_kO5&5xBS2WXZ_F2Oo)91sWUe$i*}* z`)8)lv-JBdR^{sIrR!$hw;z&Lirr&$S0Z9V`M}B*yoD^M3g`Ztv9L1x>9+mbWWkFa zJ<)zPvt(~8qg(T-vIcD;3&njp9&Y?yh>1|KCdceO6orZOH=$P|g-(1V;ckXl#Fr{2 zIF|=4&Pi&+8Dp4-c2|+cSsg*u4=VLURwM+^0>{8ZzXJNh0eLL_D5|krfLpTZhKu3I z#!7TW_V?H2_U;K~w|_lY^VSP*ZOw|G&fOPNc-$x1Up|@Qzb>-cLgZt8`ls4$%H;w z2rKk1kZ+IS&4v>{~qC zhhlYO{1Skfwi$ONmFI4`-Z?z@I{RqZ zh=b<<*7MH%mDUU+wCts-{p>3evig+=r@lcemdxY5{8k(_?=2h+*AF-b++o#Ydq72? zocjo`Xu`CD=#ykKmWkV9p~lJ`bor39z-tMne#@)3 ztn92F76}fSR~F*Q3BN5Hzfsnfj0yLhH5l_(Xy4jHajYH>VwC?#er>l|Rol)aYIXQp zPG-fW2@N)x$ua6DgO&&h?o;AnV2Hs@Y9+ae%r zgjE*ZkuzEQ;Oh24&&M7npNzV=EcROaksLO@oX)(-&9>ZxSD@jb8Y`AyifxE06(4N&sk5&nITg82eiXGN- zk}54yS2%R+BKZu*fUWEg`|gsg=WQ?4%DpVL$XiF^ESMYfqmv4n?$q4R+m}l+=I~zQ zL2KK-v__e&3)h*HAN5t&nT5%vKAWH7vx}MLK9xM|Wm85&yl6;<+Zz8i=F_8REY&kf z|FVy4u?rzWzV%_aFXwRoSWW%NBQan9{(0TwGzeDbfW02meLGZU zjI(9|vz){rvX(r-_9L_!kJ*EbM-<*w6wqLA<>G(AuZXOl0d2*~U)0q+TE~+B^(1#T zCx37dSIE%5i;Z??R>S0sbi+1qCagAgnM4aq-usJ<`9^udzK0!j;zSY!PK5=PHc>k$ zlQpxBLBy`yJEvT7MmMJx*5$4f_cUL)rgX%0(5QCE@)?JR1xpdpnQqGvs6K5KR;ZCwp zWy5M)=<$?E&ITi`VsCfMJf6Ko+e|CQTV84T);>9o?%n(<<~$gBu-6f&`&0Q;egX8t zKWD?;Sv^~8-)h{b>Z~V89Fo%o8;LVua4!jnh+4lLnm_CVR5+k-Yd|A4j=p~SP&!Gw5L2;h! zzw0!ySNFiKYH_rFzoo?2vtcN^Wl#*(c%i+y4n16H#r zyHD7`cc!6Y()`)P<$HM78(QQu2AZ7!_Hc}b&uXtpxhQHsX5ss2VI{;`E?$km3H^j? zjaT>?5xgGSl*Ch%2z-!r+^OSHkZcr^A*MB8OpP8)c2kHVi;?H zjwNCT0PmY6D*4QMF~f6Xm64ch3lXM$N`LmcKV$XAqeH}s3H8T78pS$1m|yRucCG*| zR(f8&AU){*3$z3G>4IV%TU!ZRNHmE z*~>zzJlwu9-I!1RJ^1H$!3H?wR3d7dEEsMH=rrTmoqC2{L%@>_s0*wOvp)j`F<09Dz07oxXdGOShSrSpL+w@XlhFBmgkbN`rz8Y z%0cq=mrSXqR<^m`86XHAF?&Vj*zLynEZai!9sKa=S!~^nqR-I$gUw6`s&?#^mt;xS zx8!ZgI|J*R!HMupAIzFC1Du=aSV|^p6)%sau6%7ni0xnGRZqcO5{I0(Q9?MYuHx}e z8{qOlk^9;HFU4Uda|}XfXQHI|3%MQ*FuXcy8m#v@OMv?T$B3j9M528ghrAEaLB&1P zw);4T(*RF}RZ4uE`nTo{44(zby&?+y`+MTGwYm%glc$$-Z*=4voaztL-QSv-`ce?D4Tq|bFI^O3$rz@&h(%UNcv$yiCIpekDbz$>1eANYMxV)!b*6^V}a3^}uhjr4<0D7Lyw3&JmYRJzUeSPx^gZ zo}7}w>Gs1tFcNd`4}lKjpZf~F6n6pBVBMGvhQ4@9-GdKj)^p2sk#>FoqYq{<(AVHt z1eSj26`@R$!eG#dOwG{I-2J|}n?W^dS4rs?R)xgB>J(w5tz|?^FSQlpj3tnl&}|5; zIIX+(#A#Q5zuXYd2WiwpuZn`A1Vo$<1itdotgd_J!#`)z93L^cuyf`>>%=@DX0w$F z*AP~D=({*9fzqTn(+n{u{IWnoTH_4Ao#g43%IYt(7PvPSDMOw-J*@rk*~uUguyfVw zD|))U+3)fXk8OKp%&VQ~vWa%VbFsqTL~Nu0O_Tu8P9fl`o>llWlkP9b(&3o(w{unM ziV>>5aX_w}V}#YrWOwLzy3F<^Hu6IpMSd2ufcFO|E(t^|H3HqeD z6!_t5_2MVvdp=#B=+QTOA$p?h7J1a;magLFa$sw4OFZR9lj%35mTSj(H;QZ1OjBK4 zSy_x=+GBX+H)vW4^|AFf9_aJzexqVRlkJh0R`SpQylQ{u;+-PsU>Y6^V016@lC`KkqrKGgb4f zKA@K^5lYl!B_H7VPNU%*(Y+q%dC1;acgZ>tY#4Mwf2#*yet9AIWYX~Yz+|Ef8$JuO z`AnG<-#?u>V!J;17psf5e2JxEyiB7eyBq1euy|}b*Ii?Ub{VCJAD7a8stzKZJ~44q zha**L_iK=cQs~O|nhOjBwZg#&?>vV3E=+Uu11Ce#yk~Viz>5zZuDv}(dYs2TIc+8K zkQjV0wr3-&Cqa181is&ac~!&0NLbL{apt|BL={wgZYNU=O{I6YEHe8>x6*K>BAQPcy?U2uYbGjK zFm>)s)mcr)GI7}u56bl8!_nvOeoIt)_eP8dvm8>MmLL|(*vn9P{MGj>R`#=2IbhrM ztN1xmn8)dLVV$w{vO5@oI)o0x3~`)cBkK)>a20gb2Du3REIkJTT_*Kt;!~FS_S?{Z zn8@zui8CIDpDezv^UT#NR$r`c$H4qI?RuB0#S%L5_K|>&e3;t>I%g0*w&ZmY;75TL zt2c~--mS_UCz!|96TJ||9d*)4dDaf{l{}Vqo-*7t>I9mP-!xvJo*T*v>OGNabOi`I z(s1IcK!7Kn2`@8LzN~gy425wA^+9>1+feG^xN{36(Cxdg&SE++J7GAtsIK3#QRxS{ zKOMU`qsihcJ}a4fK8(96tfk*4*Cm+NBvEFThL+Wk4VSo^l&;(GFm#kIcHbd)OlkWEgA?$t4b=oB9&wx(a_)qZ9KuQ4fRl(n4RnFA!uzvLM`n;5FhLc5-jahS zT^w{2^9_rfSP0OozQ_ADqC|1~?#fpH3pgKEsQM`Lc#)(5a=?EC!6(|b;TtmsN}-CM zf%ppnZ10EwxZccF3PUK&xcRd5tov2k>bzcElPdj+!~6QlG6%-ZMXa zS#+T8L59|gR;WTMugq*P^Ls@Jqb52hZO5cJxKtqkzt;w7TRHoOy4z(zpt1ow4Cp;&qf1zGT! zf!pD>z5h4Vg1f8xN)s*=!ted;J^Nb9^@_UQ^u!EW3kv?J)RuL?fyu%X>@_$^E>k+K zNdAD{zz;7mPQe+LML|b>y-$7&Sy0WprK)(;Bma-N<{JZ4Mn;!v>V;0i{=%B3?ZIcw zLH<9n+-(lXRX*7}t9XX)3>NqXU?~K`l@q6~-Vs!~0%hUfpsIGmVD`48|CLiVaZGp( zC1t56S$T1o%i@Lcuo8$TjTI-Fh?fHlp-F}D&q5w#pSw8~v%4vtfqqK;<7TK<_HkJh z|99;(Nc4~_<0taRma|)_$bEM;uwTccqd_Yg)?RlM*AA6T6v1B17Zyd90-r@T!52u8 z;2X1PpR_Gywz0nZ2@}1-ef)1@HAO}>~Ne4`+huSty;DkEJ1 zc-7|MXAP$nK`ClpW!H&Rm>Tud(wv8Sc7omHWJM($HP_0`eq~eB>W_|PVSrCU*~(bP zOcC+;agE&xdW=dKX78r|B)~C22uBHilH^))rjx_${gxI`H%rIA__>qY>!>lXO()Q?4BV776`x?+4i*wzsmLb$OTD2O*XY=y^Rtsz z$<%dyy(9i_1OgtpHKH!e{;jwE+%IHt8O@xD9iOgt_S(hEGdayNE(vr5Xs_{kac0kz)*(xl+$?rTpA+4L zX$+fLkZQq9zL}Bh^}CPB6Zk1Nj+$v=W(%!W-FI!QLZ~&ZLDBqNxxLvp3sdR`OI%`& z%RG10%px6A|F<#EJUgQqKJxYIa?WH-6p#owD;3GwyTY-U4t}ROWpo3g z2}7REqPpSsEndLKS>XwK@e_9OixI>@U6cSg!R-UmADy$`0hA`j^m zd^zLuqY+JXIQC9s=X~(~#pzfR>DTv8ltGM~pU77kG&iwxYf6HjnF8&7LRotfR8cc9 zU~bBlr)m?Zo+B*d3}XNRIhBF-kUy}MbDiHPh?Q9d%~|~374DNDJE9o&Ny2hly?6?? zyZEAst=wiE;F|9%D9iV!ZKyYvBMt%WfAlK^TyWit)Ef3l-Q zus=I9+*_-SF0_&R%CHHH1UCoUF#t~SLIZ@rN zO+ok963$15S{xT7G=^OlxT$p6n?LGUL~B~q##}cyc>;OvyrF>UL{wf+*|ddz4!5a= z&yyTaf7j5~oAHuK*QLL=2E~Kl5eaJCg_OVJOf$w~{76~ST~bODgXW`g3+gp9YCqR2GsEzGBwtJ0J;aW^LE7F zUqjN#7+(_Z*_HnKKZtLX$Nt4e=gERq$BhQ(XSJQxWs>t3&z4X! zaZ&aaB^}HXR2nZh4Bq^kU)5{jgN;D+d0eH|59JBDcllfubSp;}y&aa?Mh5KveH!TJ zFAP3zR1#(OwJaMfQ@Cvx*C5<;bo=V6aOv-RD?H(_p-(2WvF|_e*i|GMMVZWd@1cbFSpkXJ@Slz#zu_RzwFKlkasLQOXFNp%U3OCRlRG#Ox zQK87273x}Mf{FVM2lbs50j()?y!?Yhm1$XgE03fE#?6SFJBjYoY~{s_D%e$}MLkmMy_){*jbIM2DcSTCP|yUi~9#4Ve3^jqe4B2fBFB9M6Rfb7&g zdIP+w*)GV~ z4lrxj_(U}86I_mD5yPODV3VyY+|4d#gx-5_f8|AFolRjcKLh-?TT{U93>YVbooMQO zgHDj#?#+s9xwZ-h$H6I{OFKT%#Jzn-HjrP*J9i($S28`5R#8!yt&Y$k(4Ea-#Skz8 z&Hw^LfS4@SWX)KL{pWRC146JH#r+-ZlX5h^?>9l77B_PmbCgC>JrcYTg9h z-n3J(-xMhV0lVFri!GcIG$dR zoi9-Mt@jgVDXlb(cE!1ae3$p|JG~XH&G~CQ1Eaeh`>XL*+S7F=Y>4wl_f3yN%N?n6 zD~W)7sjK_2vBt`cAk{TmB)87PIII4;KQGqrsK?mCdcY^fC0|B|o$hjFgAr%MO*s%w zEM}TM@Z7fzKvqZ%o`F^GP<#8;bDTuQ1&iHYQBOubKxHchUPjJHZjR%uKm#(kI+B=; ziG_P!a96p>QZMp?m<^lCuO#HG-$DT9H5>UwHb5t`}v{*W9PH z*vMD23+HRB4;>l}ql~32fqM>J)(bN2Jy&NqJ{6}Tt!V@}Zo0~~(pm;&8zd&fFvEMU zyi5t8M&0 zsC)BxsQ&nWloUlM5!qEDk}XTNNkWAtMY0abmSsrxWk`};DLW%;vX_0E>}Aa^+mvlE zwlQXy_1xq0{rw(~d++0MANQa8&wcpI!YTFTyY0 zC3s$@;C|ZC3#)X-vy-os=cRU-gPnk6pQtP$ruCWK*%twlotmFM_+22HNPT^Ws%=vOs33Y(!C+xxDcLG@vC^_XL z@tmzM;bbxiYN!(-*a@)b=SkwweB4hyd$kt>nVMj0H2qeY5!>>pCW>nh+JnkRBF4Wx zqk}lcsiw7lK42f_v#)WzfmgEs@+~I=&(qX@41&Fq=fhHM^lBji54laZxeuzdeR3Zi za_K@GL=PN!MRdd;-qZVH)GPVbiQQa%+QQx9N)FhpvAA&oyHQ~OAA9e(zzdc)IdO=p z+dYUxUJy)GO1ks#S?JWVf)ONeL$+ANe;ID%xPslWqWySfueRdEm>woxqZUKCE;VgZ z)clW%Px%f@8_I66@+te#?vxXP%hrn4v(wDkd_`~c44enylDO+O&7x*#0~0}UdOhv4 zef;S3U3tCi^9k6G@-PnthlDC%Gq8YwJ*)^1X3QG@o)B@vwI44#L|(k=Av-&y0jQj* z<1^U2OxMITXrGo7uFp_&njmQ0$(2GP@T4iZk!6kE7%m?T7jKpUJnBRi3yxX|^B9IY z$45_o;F#UI6Fy*Qn{?o|RUoW)k}Fw7v9{Gt;okE?9a+1>7w59?ZWx^681K*IFR@o# zEzwvGo@qF+v`!Vx#`Y63Wj3@g9U#*lQYAh48Ll=kTw%#Nw;=VK@0$K$^wUKMi1@&I z5X>AsTm}y-C#imwAa&P~Jq1NJ(A&5YWat-P26gNVx&|O(|HGjRiHHya(g@u^ut4m1 zQE3p6y0-Xk)f^(%`sy*=i=q0$u)d@Iz{FNbbb{We7uO?dmiv{Qn5_lF>?y%D7XHfi z!IPgYxuYW7tASn%u!2>g+J^qg&;XW65=Z!~-H&ai{Zaxo!ZhzWHE3lK2n~{}Iu3&! z7c;Hq5O9bR4U#Ss;0@Jzv3131>+feKzi%U?qnlumEgx3;cwm*){EI@P1&iyrr zC0{IdJChI@X}O{rpB{bcQ}@=l zyG8#DmQt7G!G{7UYcC{{c7%%QZe(H7l;Dmo>E{IJgZeAM@2r!XdTl5x>^%Zhr&uZq zVvSq~-G-VWw-xD?H|v}}FC7ArirBWpQQ11#>b_%fgYaG|rvSS2*u?oq?r*Bv4=&La z=}vUlkhYb?C18Ug8X?#q^E+016d0VcW%QNZn2F4eoLDC z5C7^&8jxZd%lZ;YfIEgBtfuPaKC!;g7W6W3yBjI#l&!RgoO-E#`)g5Kl=~77F|r4BIEfs>-EwF%K5k_d89@Jq=dAjsM`h~M(~zLMoC~zW zX1X!yey+se5dz3-S2994de6BVya@4h_;n~DdCtCu7~(*Mp_XE2A4x?1GJoh%a_a|2 zvX(zj&)lbFoVoB7=2T#BcTqAc8~Q^k(-r-I zA^G}HCVp*0b~IRgM;+YlAJTF!SY2K%5`!;(J~KRtS5KYFo~~;=nL%7=v8ufp}ZB&J;2( ze*=mDOZv}4mfh314MsJ9hqD2?i%P^0e?jEAm^8D6xlg>EQoCX!$lCJY#A4yFVoIcW zG3%D?MD_#APFq7#^+@~4VxA}Y_9`saL-F{DgzRIdEo!2#|MSYkM%i`MgycOA0s&(T zoz3brzKVtPTE(PJw_2R%jbQc3n2RQqy#;KI(e>(}McB1G+-r_lSj2NJLEJ6$u~mBj$=C>D`-+J9_jb@cBJ5=kH5cb7oT+^FacJ&XyS>9@a% z`7)DjF)+p~l^4v;&$<|~H;B+7hbs|<)$TfdmEIoXzPugjq zRFcZST1U?A=ehn^l0QJi6D-^I99*}#7Um@ID2iJ(%fOx4lj?4;9AHq3{QJtap(PSE z-Po-hEyGgy9GG^PSq!j2S!*%kg6&I;lq3H*z%TYXw zNH90PD8A>)*2qn{oNbFj`Q4biX1~qaj|)Be>D}_+sRv(IK-K$qMLxNbqQ95x)sWk{ z(wC+MIp51FECnxWvqY?r?T#yC$}DQKduD=ByXQLRYvpSiqxbzg>xYdO%MP8C< zFgzQ#jXm|s^OcLf_4`zhz+RH=K+!UprfpPyyz|GyiBQ{vr;+Co(HRs@fp&|x^<5}+ zK3d!j8rr&V7v$)}#L|8q?r?A|Vrdz`LeOsS*g1)|B6;{$KPYYbRw&5+MegLWQj)=d ze%$whs1-0Zle)U!>4d5xzLKD(=V!}L#)3f^leIG6M%ku>Q(3NfDnNUdY~#y^AfJc% z>*uTuD>Pwqm4{}R`a1B`2zGDvcba?DWDKOoHl8g`u^@ns=XN{`^3=!TG=LRSD$57^ zWgx`+DkR}_IP)L==)PH&XW_FgV<9GE>8J8Un!cf~G_9&=oetDEd3(lR;0(5tx}iql zm7&&56`>h6Bzkk1u(ypPJ05>F35ZqhEOG02(yzmVf#2Rz8ZaZ^p1Na)2$@2*wR4De zgGHDZgGK=mg_d&wxqA2o&TYH(zN_04u*-h(Fs+j$IHE~DWOqPco;J}BW}63)=LYME zxPt0ouRS2SGQeij4U<%RC6q*LT$i;8G=QKN@qCd%u1gzUCu+6gjVK8Ees^urm%#t< zo1hu9%Zo2T5cF&EV+UWYpfkHj3@QeBbkiVZ@4KqQ*N=ziAe63H6!F{U}LU|b^-=LP4q-@-&v^BoM!j9%^n~6>+-ATQ}h*s3Tz+y&Ii+SNwfvFF`y^#lZ z{o=ag5ZYYfWEPOl*4vf!lJ@Kkh~`49Zyb?+i1e_-ccND#Z|q$Fx)l}`Pm6k^{Ou|f zXVb;ad#zqUR!~SSy#5&WK`_&pbt`rC6U;dK;2CYFi3N0Fc+0lww8d@~>3D8?75UZZ*l%!asyKz*0m4 zaN<8!9{j5>{7aJ7n~x9tcTu?yi{ujxoSEFvE}*@MU7JLYDlM6RQ+#gwbbonw*+^jZ zv(f{v#L%*HLl_%Olp1fuVIBzQE1P&n#@04wPh_>*Gy-p{yHFP;XfW!fCFC9J*qwJG z7XVGiKq|N?Eb4L4R1r+$FsKju` zMHjX`#6&SA3O=O%@E*qxlOm3m=(Fe@rN;>$0H^V?r=Kto#-wR)YcSf>D?i~Ih~;ml zE>($drjjb-hp}BK5N?OiT;r)AyRf_eA^{*r%MNFr92C|`GBmag%Xk`VRn4}1Rk3e2 z)ArP>uS^?R2N5~(W)yFeM{!W0-!?_J8GToRFLu8nDL6g|@3Uv0ab~J|Q0f`cZUtr^ zI`gQRmu49$+3=DNjhl5K9}C8G6@G`DO85l>)mX zD1tv; zod!PjA)KIA*`f5m2lWO)>i0wFJ&6xsEu@g+0qd<#s6pgvr`Vy|G$#~c`TSSkVL+nT za_k%^6MZ}yOJ0l(h~ysQ#GJJr$-p3G43EDb045&B%S?74Oe=akJa!25odn=KTO(Zq z_#qU=r0byttl%qc88No{Z_f0{Ra#t@b)xqlPVI0W^c_IGvv-X^?UnUWR_1N_ZhL*U zi#}Nm@{`Rrl;{ktpu@1!5sxaNmWJJn#{+4TB{o|Ipqam`;$hEnR;krWU`T9dYHDb? zqKUiDm_^Vk+0N|a9B>oysQ*idhC%x8vi86hi{e1>$@sjSw!Z=ob+fSqak{jgU2Z_j zsAGhD;cItC_;)8V$R^o22t%Fm!Qa-xG}{baTNj{ofQ>~2xx0t8;ih=V;;Wwk{8(Un z43^PG8;8`rF#CsWrGDJ_cRuq`&ZUGlAW@`6)MaT%%Ddo$!PND450(=egLO|oYASU5 z-YSn0IVjokx)ExF;irItcAI7G^00sW=2MUA{!ra2K~k4P`Oi6`x*FXQi=hi>4RTZ& z<^b=a&r5tl;>}_MlI{VJP%1_irZW53(z7JO{WKpf)Vw%w#YTdjUNs6tN5^n2QM*&; zAAUL3n}zb-2zQEZW#`@-(I|P22pW?@?><^+5Uzk;V&^zdC>X)f) zYM3=B3shxeQS_0UoDh8wz~1qaDTa&l%IVR}ncBxoUBT~|O+#KAlq%jUFD*;xmoMMi zjc8A6@TS#7r+*4^C-x>>l;azuNo?Oc2c+CkCi#(3LZixmdV?#3trX}ta}?;(H_kW- zgAR@G?;@EGcC1xYEB$qqf$~z+T-KSiXt$*KrPvj@s8lV#g;-wLaLYSr(8Twj8FUnp zcNW%qggfAk(Mqf2r4@ijEcfe+H&zG$Pqo*w3#uEUO*|)GRg?2 zi9=%0^9#`D)Mhgr9F{$Tockp*;g$aP?t2Z(g%9g?Q(7b2WagP31~2g|uJ+LmZh3d{)_190jhoqf`>V4;^ERlM%$wM>_4PLMxx^f_en~z=_~J6i^YH)3 zZ*A%c0ks}L9O-T1QZH&M`>!a~Zh0OZvwyl85tk`iJr z*P&<`g5tg08F*v*Pfjk6cn=Eibltr3zFBZJP1=t>>wEUV5m;vf8Y3JE zc&rcQoAA_p7m;0Pe7dr(SKK4wi4X6ZsXpH8_jJMp{E~%{tjngz3j3AcE|I9#CHSk6 zT#XY}32(f`bVK?v&Ee$iTtksmv-@a^h5*A9==zG<2;o zkhlJO`5IvIXu>AT1gWGYt^803$ce_vDhTr*5*5J zGx}#g5kdd=XJD|JHC!aOtPxPI)&R~HIwmgdpw?Y#S4imJ(#pT^(Es84zz*N_wf{{t z@CF)8aN*Qvlh#{mpPfk;6uZ~<#&-vHZ6k#;+Owi|jUL9u3!!iUnoeZL@ zDh1;7!TQbm+Wq2vfKUDm{HfE==qY6_2PzivJ_&~oUDp9(IEk56Pc33?01ovJukmg4@k5ZaOGO07UzQh~StD&t0hbc#-LHtt2AzDpB@ICb zUHfyfP-WrGFm*}-Jl0B z+osB*agn!FcBbc^*Bw|oGk&micMr*Zw};abE?Dx<5@>(6rH|a1Az$2d?aLKfjG<7h z5F&TI0nIbqh#O@R^g;M25S|FKaEyJAs3xCRZ_k#mKraB;h{gJBYVrDfG18^1RhXhb zg;oin4Pgmc9hz^5N(aFDR2k#|)wCBerUK7SP9H+Dq^u6tdURm(DP~2A6tgMC8fOp{ zJ5?+Fu_suNWri8ppO`*SJs59%j#BOUpy@YJKS*8@oS_urCUd~+dr4EG|7jZ?zBfBB zOqv5U0L7kTLd&kf_Sts5Gv#0?{9&~X0h}T$G!^NZ4LGP4?!-a$w`KpZ_+J*b^*O{U zn|Z99#~aq(oE?XX7pp6^qbnpLOD0t#*r819h0P^ zCRyXf&+qe>H->H%$wt)@KFp$xF)v$YJb>s3hmht<6l|i2g3>@+AqY2TPi-r0|4hC< zt9XERt8E1&=$32+U=-GGseR3b1Mc#gKgQJB9nSeJ|K)q2UeBd`3>$7I3VdxThg;}?nDgFZb@=wcVf{NxxiKm$5(&s|& zzvl*Li<|u#EWcFMO|F>=)uUNYSP8NDG}4;{9AoDY-|sGpXS|;^+58(w>c|mTzfJK5F2E*EQ&9;u`Wn@yg0n#tB3Y=}$j=%>10@+eE@1Xo7%QdiT9( z<*m@Xp5|oE1k5pQXlNCln3_Rc?3>KS!RKj-f8I7n1(Iv*j#JD-_*BYzk~7?N9}&99sYye@f*=a8cFsyLM0QY8+qX4M@Vo z%Tc-)$1cjYeHl`l)LSsS|LbcJVs}~RwedcdsaX8H0AsnAU6c{`Xg>W(>b<{x7H@bm z!w07w4KzP4ef5OqNN>8h6?%9--B`&mf?x(lEHbbX&Oz#Cg8M8yGozB%eq}4SE#OWj zQ=oAf<>WiA#EW0Wv_nH7&!l}M=eb=1A*Ar`)>%jCY!jO6GO^gmoLeqne@~qnaUy2J$o9PK^f41_A$;$Gsly12) zg>6pDCyJ#~Uy1n+B}f^)`g!21c*XC@L7v{pt;t~MdmsJH2w(o%%ws&tzt(Iy)#Ex;%5UrsY?yn#H`bN?h#i7k;!) z?pgNDZ@pT+x+ZIEltd_es`GZkEDV>lx?+CsT^ZYO_Q8-{yr)l5i#nA1ymxNt2bo!C zE*nFIK9@IdRc@`>}<sTosQ1h6@=gH9n zSFcU1$=2!5d|sMAk&P`Lw3FD)WSx~9ZeyiXBI#dpD#kFqr`Ip z?}wU_H+*ikl^QJi=_v+WtL-6Qgn@2x~aqiZo-kGGD5WoL9Q$5~tu_Tpy&pX(1 zYGck(%N=dK@+b9GCVh*V;=dstNj>@swf|4QV)8&yWkD5N2yF#RCs!`ddcUdZ8xzz&c`or{<4S;K9LY-v{Q_(Wf8-w5J?Ty>Wl4OfH zWvt1TwHI57#e^7gbXId_LYs4p_QnrhJ|2qaUOKvC^a%Zg>_|BoKh|NZ~a zf&=lO7WPSK&3Sc6{h?7@(|0n2M9 z9|`_9F5n{qNHdQc+nViUad2PB(5Ezc8iFBiI>smFOC+27DYb)$?T^0>r^ufDW|zi@ zx#>X4qR6%VO+s-If)bBVr@>`uDq~aIyXWpq+mJ2=IwXjUhd0%1)gDwfP)t=qS*AK2Al>pnq&?mA1Y+`NXXB9N}6kGnrgRH@rEz5Aq(m z?PQ%*;1*hFRYo=wGVO+h_oF4W!JIfL`@YqZ|>;Ny)Sl4_}s{>c*wYJjE#58RQNKv zG`iz$)a)Fh+g8bJWmPWau(+}quw>{5;W4CE_`vhRo&**d&!LbIOVm<7=H$0Nl9Sh3_VGO`hH}Xz zLY|S?s^?s_{{LKX**C!3-c1o58fxXbjRK2I2ySP%YxmG78u^%;bs6Vx!PTNd}WQA@I^cE`ynaSLJgPq!Gd9b{I?oQx>-PV{qe95^7n0W+a z_A|kNSHwc_YV6+CDkya4BeM5F8=s^4LMVAJ`5TG|XP)mr^z%h5gf7L^RW`n&v0oe* z`|xe@&lV`#uBWZ3-z5icPteafrUM~R&|?&HLFMugEr1Rp3Bh!*bh(ofOy?E+i)dka zuaL#NN7Jv47Pxx~zvs0F1}DDMzfn6K`-e;A3ak7tTrU6BD`h^G!d9%3!M6=FawWYq zCS8`E@K%8S(K^Na5vh?kjQ|bKofmRZ7*t0|>zja{8OU)$9Kf%Z!gWw816XHr6eWUk zp8cq)(3j*B0VKj03qme?p?M^71l>qB7#nPsD16}g8la`xp9vJ-1JE|Kwo?!Q6mu%I zt_;AS(AL%T^(~B+diG7P@=O(Y4($mIRCqX0fl&jrBCQfZKtDixZySuAW8p1kb81u0 zPTirZZLn3B)^is1s|@!ksJd2s8O>h>zS;?K;BQ5fQha6_Cc5!lVOI)K0z85~wC=og z;I#DxfX9l{k~)lmBvwR&#-*pCG+0hCC#hSUYp+!eSdXnVVmWmv!NIg$oKaJjpntp@ z-q;nPt&w)ER>%0}<&%{x)+PU9uh;OS6JR85#36e!vrX_!8N0^sb)KbQZ(5bdHYCYq z+K_sn^&+Jj`xmioxxZfMJCmk12GDd%QES6TsPjY;P|=5)KFl-=^&uZlAk(!xiS}a@ zDB@Y*^PSaKxS;^j_n&@aw4F+-EOL{a zRT+kYQ+#VwmIN7=)rIe=!0j{|>}2JnisXcyfemlMa;^*hG^kQcUDllz|0nwZ<0ZQv zJqF{=90CHC#YxYCxO<$JKq#XG)K#NKBc>_q-O z0`355KfQ}xgiU>y^#5cL$TmLQ0}~~quO5F8a)zLGXSOi$dZ}S@ znkSlP+5WQKs)NzMqm}4C9B-X{89$}=r|kXCSF=KL6p2XJ#Q5(P$bj1-fUWe0r`~{4 z`p~}!c=0Ex*ZiC05Pk09N8iPBOe-kIkIOavfpGzjh@RwqM6~M#pzEIk{Srs(C~0Re z+Z%kwqX;D${Sz`9BuRg*dxK`fCU4Ag2oiwL-&6`&-GdqqqYe|+H-EYAovIo(goo^V zgS60!!Iro%>H`kgDAzAWHOC=UKIMP<9FpAe{tvap9a+u9J|jpNB0lg z*~TOQ95R;rk8?=>CScXH*R@Y5twh=&RGo@_{LvLVTFsadr>Q>R#*^#_xH__3Db`}b>|to zWy!x?qNET@JWJ(tTZ6HJZvf9B3!@C(k&{(o4@Z^L{3UTv)>Uecm=c0Pn` zc&yTy%=`Vz6rvH}3y#vibLaOzV)W?Sl0b(|=4@#Ldh56iCWp>RxxS~l$W|61?hT|A)ED^iKfhZM;~d^upvX_-H6+jZU&$QEK`L@|Mn(v zWAFlCi(2tFaTqvb2vr}MZ4)JVo_XJfO6e2D5O71?#U7{gT?E{BSPk(|w zl;K4k!dGVMU88{aC6mjSDlobUM0&UEz_rNeK@S|w8ZL0;YJ|& zZu>u`L3oN(NCds&BDID8C3+x9B3|N0W)h9N|B3KauTHapg1j`LanaaRf2~-d#Z%Yn zdg;cYC7K)99ewuzdOv6?0EBzM1{Jb*@6D}I{aiWL9BmP9h`*TbSB;)!cdlx|6 z%f&FB>JvDo<;(PcvYy=dphw=d`-mAvT-P(R9>{dKR~EOVf*{x}tIR&9&&KiMuOFt+ zL^;Ci{f}QZHM|!as~B2ZGj6&L8i7u1MO(3G;Ze4C+!*JQ_)`>sF^=7f-m>{UPV{1- zzxwCF{}Vg`b3TOcy&}MHiPTKg5jAAtx_kUJ0M=w{Jv}Ti%sw6Gs>r2Kx zz>Cf}VB$Ovlu=7e#DR{b-Mc2qY%k=dFZ`;gYjs+4t)GfK8s@9O0B|0PCz&b4rRA++ z#lqhdj7bO*Pv~CQav>1-2?t~aK;}=e#iK@Xe0dr`=-=wx9dys~AG@J478xzeB%Q#^ z{dU$iO0|(^dnq`tPwum)0H~F$Y(JhN$YfCCC+FM{PmFK&rczXqU*ruX=Xyvh^eN3K zac>}%%ZI_FA^tFCO@kh?h|($>Hdl1J+YnDlro%#nCk;VsKrs~D!r1?upwyfmkb(cb zG|^4E<8F8RpYl*5xF6j;a4wHN1yYl*Pbw`7$^BDa?0;1jU__nLO#ALSo#ZKS5EYb7 zht~~&OIV`TzjtSDOWbA;_>EI0r=D{6o2S$sXePo08uvSH8Dkz^{5B3gc zO@bSmsPSL-F&|BM%KPq~BXH(SVH155=lgAMpofmxwRF>4gTXor0_x5{V*Qw>h>&=i zBefDbrQ`8FW&pu+=>;+@*Hb+$DJp&dh;S);_Ul$Ne?#i<|Dfy17*L?GOkyDw4Rd@+ z;?MEACPpx;3x9Enzr!7EzMV2UoA;xFX@4&rNXP*?B-$1q5Z?+bhfc+Oxz52$*pd<< zC;q6q9RB{G`;#C|t#az7A4ZkFMi2?I}{v)D-hdVNA zc^|>&ThYZHEg(1L6xDQePSc}vV(3oP{9z`3kbN2hbiVA)@+CcE$k?g%aW~;yw6 z=kx#ob9Mnys*R9cd2*XKmV;w>WlAF zo!4s{W1MFwdA#zul<_*M;7rYmk8t3>=eJh$;n}P%nDL=n;!fj}qOH>XCI>@XSHMkEgMu6bZWEF3-al3mgp1=~oF3)F^}z%SwS1=g@Rh~-a?biT3(A3&^cb;F>(ius8My$`V#i3#$0!LV1L|kL8<$n~_wltxMOw zPdHJdOua#SYPw$`=>Do)aY4o*PWK4!5}sTSo$c9Gequ%;{9nH8z?+Ju5Dp-)HbypW zK6n>j9HZ8?6w!~&iZA0$Tg5xAxj~De^2s-rwF21Oz%=CWCpfNS*QWy1VcFdBf5>ej z@)a_L1alQYncth|RlA3uwU?6&xIv{+b?WN1_NlF#)2>&woT#!lz0SWCYj>b0XMq#x zFhm&sI*1$Ahp)T8mj}{pxUZ~jQs}2hX(0!6mFh$O;94Pjx0!YbB zQSX0jmw%_AYrboUhDjyri2r8H`kC0#U9z`u{4DiL+2dW-)5Sfp9P4X~WCjl5gu70c zy9G^=V^36gZt?m*Tvu1TE@g<=bxSa!I*OQ6N?5<+L}y@*b|q2ORT?8 zk2m!z|3A~($1C9Lcuv*pyGqq1dZ$eiKb*3(7!$O6luAR^yxMYZTFkVqoiAg2DtmP2 z-bf{Zlwww>m};ld3kQda;*yA5G7h7CxKSv!jBQeCzTo-+lJbD{aj9l@U7cxuJ8}AWabLeoNfqY=9h*AKWcY;pNyoPy z8HcI~X>pS__$2yrM-uhUr}fWCjKnImsN|Xhw})s}q7Pr9y|=Gg)M`g{W4a(4w}UxM zFx;C(7f_38j5!n_NNp|kcd1HjiM(C1@TSdfr&?57y#!8pJ!|ShX}@kup`*$nkzw2y zZF*4rBRqEPqWhXqm5ZaZk2yU?pK?ftc>nUb0MvK8o}$$WeG{2uG66@^qypVNw)k(- z1>mplUc{|b4EoGAON1N|j8JI!89D6*^ka}8lE-hi1}FfrCl2E{C}7^_snyXY;)h{` zD*oO4fYk}tbU>4SGT|`60VeN22ozQ6Y+T_s{ZwphU~8r~(|S>O^MH8#+l-aZ(>l2Z zJyA=9o7E?YwOai(xnuLntpl8F6Sa+6XVQ}?BY*FCFPZ&g{h9~6FoNM}q|>`?z=# z$oMXk5L#_tea`3{mzM+q3_L0zPOM|-TL66}J#?4%K&Y;i^N+DE?N_3VM%&M=R&`)D zb+%ao?;b*O&T0!!ZYR`;;&Bm75(zIR{|r#1XC>j%kG#LwYNW;QwYI4)dQw@7*C8N3U3Jn35G&848YyRZEu2so+Aq*p;F^kdBHuX zBai0=&~*X#YjeI`@=bmr0jES%rG}2Dk`ixnrd&djWbu&QGc*}8=kpn^6+Eb!{jV0m zgsK8-v6Wn94HD-u_E}uj3trOiRD9NWgjF7HRATvzM8wxu4`O$ciO8mzYx_`_OmDim`2!AA_to+97ZvcgN zn#K_&n%7kg5mgv5>H4Bv(K!zCc?>Vw>g_360_+9n#^RP7+6s7m;s}Ur&xxfZQ)HQo zdF+Dra$ickk>@-BEioxG5l#N;Yl`JjR+M#_4a+RpHpJIBG+2iXN#W$a{?DmIGfi>f z3Ox$XR~C9#%!EBBmS{DH+(*bO$Fnvkt1!v_ftP50iLD1wA4GI@lz)i(#=pjQ#k#>o zfQlBU;sLYGH}s>RhrIBka!tenKvR4IaD~DQ_2;0A#RY%gswRx_ctM^xZ;i;BaKtE_ zcAg;cpU8VHb+ca=w|hAqT=k*U+2ZBDkdfJ*7<1X#wwJs5>wQh;GG2Pz%=3A7aQlek zA%C2wm6i}k&iJF3>Jmq8mz&~~FViEkI$B(&WtkKFPIv4wcid9z6k!@G3oN-eabnflj ziO3W3aUzQj2<%VgUju~7Cc;Y!tooY zzMQn*R8%&57hY}5{w@-OWl|=dr%xKz-EzE5D z@CnnVojlasm?k>f*3xk3oS;3@@TO=OgT}iHI`2$pK8p=QI6bN8or}7s1?TqJ!}A3B z4Vv@v8}FR(VmLcLU2m+D@~yzwS}=je$`if{tG;k?B~R<@?`kp0$d*T?8|1+SERmaWYlEVnv$48qO%#mx3UidwL8r4O=JHh=Sni=6lga$F$8@5ZZoJP^^WO~&nQvH{OI8Bf6NXSlPG9D zO+LA~ReEfR^SSO1bCSe|SO3>lIP-uPab{tzrqGtr_*}GH~Jx=D+^`O6p z$35@q2Z3&3slp_)7p62G_VQzU3nCo?6k^7H!hbjD@lfnoG|;ow9`;WeCtH+f#BK00 ze_E%Id+&bvS5)3-(_0G^9e;bYP4a^Af49jlbw?DmfgWAa6?(TxP4u&S9^64+KHjz| zF(sJYsA2sXgg6P`oOK;l@B5(V%YLJuJRo({Z|+ZrApe)90F6&K!4uUCog6PfEGR>&f)j zR;Xz$u$ik&_(zwd>LCiy?~4EtVYstIF;!9e;m0_{;ntEEn7+7k_>v*~IlZ*U_PQ*| zny(zsx))knH>URZ{ZTJ{B%DGHLk0sb4@Zn{1iEH21K120lX4ZR37vxzDjQ?A^YSz{aYZG&HTA zuge`n(VqSAmBx*Be45eZ0V6})KGES}c{1;ie-k_xSTB1rSM_LTs@au9aa&u2u5pHg zMuf)c&4NmN0Nv}-iKrs?dlR8C@MKP~K>T@y&Tdz8Vr%MFHUAkw+KdlmH~Myyg7tiP)%R5>Ucf{ko;+dH!d`RingAlEr}3~_*lB(a+; zq7G%{#?O;4xR6mxEaCdBi^3tS2OAzQz5Heu&s|* zd0l?{*~k+f_Uh~9C6SQxtHxU3GJvT5VPz-da#XL!T@Vkwo1`mre-#m35?>U-!GQ7V7UvJ2T=q;~rCGmfZ*qg| zv!ec-d3H~!NGHApef`1*#+>mU;!wlCDMzx;`bc<@BVFRxETeC$H7lJuxkT z{ERXhvMGXz$iBS#Iksh_3sD2^)p27+v2SNa_&{+ZcFW+P8j%G(S{8%n&loK@lM(wO zWKEa-Vo8*1&_3o1XceCCrF&@|c`sMN+}K_5nGWY36dwc}IrbXSd(Cyd{^tqZ#6rq6 zWJu!ZUBnaO5JyL?m8#RXE~!>^aej0TnZ17O^p(OyfS7pD`+0ouX7??gS^4u0?sK6h zg2y6#wlR7{t`6vGEf@G>AS&rv@6oY z?Uj#BvGRpEK5Njn8kRz$u@S=@_w59q8T3j&|4q^(JM3qRC&{a1tnd%LDg~o=LEr29 zb8q(*wT|kc{Y>weZ{IxrvpH+yS+>-g>>PFup?G9)M`|%b?F28$3|UHj9VpWX8K#}R zOhYf`&KSg1kG22UO2ctZ;;ppfKEH06y}E?32fJ@>a^Nb2$?#~P?4N329TRl9XH%Hh zH_#X5fBfU;(kKwaj{&2E1B98v3Y>=&d|S9wA4E~F5Xz*Ro~pc%9&Wk-4Cek<#>W7Z zu#-z#5h*AYeyjd4lk5wymbfbTN4+{!rXEHTA~nA4aP0e%z}s5sgRTY8h8)lyJHVx8mw&6f!$)AqnI$u(F9V**j;f$z4KbDc<3td ztkSlk-Nu`!C&cEhY1CAZNV}U)2Vw8_0f6}%7^d`q{v8_J=%lEZlmNA$i+2As4xO^& z;eWoo{`t5-Nu8QNSg=d#Mgk|EuLt%)zZuIA&8gr#)}&YTNdl@CCo*|y#_Dl}$lEH~ zAWb%n!(X0qe1NygbTdUtF6>Fk$q>6&SB<=TL1nE?71P#7I_iRK*IAbyh_(?H(T-H4 zH`@mY4;*r~95r^u>w29`-fgQQ$Dj0^;k{b-A*jcCRE&PR=*G}b6}4Ot>Hi~*hy1qn z2Q|are23>YxOdq1 zKU7;>?=om+6N+Dg`vuH@m)q@7Ra)geOew zm@hiV!_D>5PLa4{In02~3tkpe5g$ai|GxD~r#KBP-Q!4M%%nKrpQGmDBwM~w&FJgXN2n@{tw#DGpMQPTl*?13JMAWA|;|UMT`i7 z)TpS4NK+I9Ap%Mf0Rbt2KvbGYmtKQ_Akw856RDy1-U5W)LPAN;dBgwS`_A02@60>Q z$hAC_6%Q{n5MhyLEBldc;$1}ZQ^mH_V3`$!fRg67dJo7N%F5e zKxRUnK6a@bfhgvgzuX)`=a>1EK8(ISq)6J(dFN)oY|EPY$p}))D@28d1JZQ;73<*! zI;0I42ltsI5cI9ygYL|KiI6K{7R-2hh)4-TiQW3>y|!9N4&F!5$?wtO155+lCXmv46Wx|{IUf#W+P+>ok$hp}BUu-@=hJewQ`HxbT zkIWobs{xBMb*`>%o@bOf7nX`KAf~NbS&Sp1$NYwaSQZ)fdX^iLmCS=e>@B$}KbRA9 z!vJsoF4p$Qc_hZl@7uiwwAId278tdcE|5NYP;$}B%Eq7>-HT^FrhGet4ECZPN<%ED zqLRf$_(!gdk407QZ#_Q7WPc!ruX-U^c<{IuBln+~n*Q{_!+oG1l$b+S3|9;rn@U5?bZu1H;85huGD$ zRoCC;{=2m#x*@WQ*$-U05jDjcFV$=w8T2{iDri&vJgY&<*+eBA+NxkydqXqjRHgL; z>n#?m$yw**^+d!?lEeP$KhxYx9cr9|gjzYN z*0g(Wf|)mjJFhIq)AXAT=#Mh|nP@)9B{sv>6PE0V?;aziop(~^zFluk$$(UX6}UCy zhPGHZ>Q%seNajHa0VA{(*!SszkikBZh1AA+*1{Hjr{nVYKEc^t^YqxskN` z1@l(|_AKEDnaEz*#tUMbG5VD!QTa$0{q+gR%|QV8bi(wU2lK_g+iv6r%H3 zGv?aT1vS3+rA~(N z)*FY7^T4Onr>N=YEkLk)3t#||Hal+^pnwwt>DYrJ9+&j_fIblL@T7PzQrPnwA?PE)>es`-s!iRXSaT-+pB{@`@sIzE)X0t_W9Cc_EcyS^lS{dGU9&a?aH#&cJ^v z$aT-l-wN$`i&szR+SghB`KC1HlET9mpiu)@wXupz5xh~?_>(dHqc@p>|K_SrZAu8Y zd^>|Uzkb1ul}_rmc_Q4ETX{*+wi)yL*TqL~=mI!fdM_D!G&>Bqby05Q4U_ZpptJoI z1KH9`%~%%sR-#lJ=adA52nHMI9D%ds&cgFCrmBt$S%>{!rz5&D;&)!BZeoEA#ySZS z2^mh6oyramu^tV-<{W+dHM-12?dbWDZheDyKRDhQv_1PfJmLVE%2dPj>>2Y`PR%pR z8#^$k*ObI3d<+p-Ul$0URO*o>O+Pk^dHB35OXE>J#kSA+6(_rfuLBoJjbb;H_a#YK zE8BU*wvo|&MA*Ghrl9JnPwOJLBdUI(@u;uMyNK~KRJHve_&nmy)vK38v-&P+SO+)E zs(-?Hg;Hr-p|m7&!fCOkQl$l6fbFT_S;F~1egbQdW}8U6l*T;yLd zBpDR-?b}z3botlbG0PiX+_Sf5GMOmayq_fVt>#zQ#%W6M8Ndgi`u1Xv%?@!{9s1Jy zZoZ<*h`#K3*&r{J%I?UCYhi+`n76TCV_B7Kk!O8-YQd@^cT|VKs~U8de_PCU^Mqe@8EY-OEV5^) zwb|K{(W=pC)4)dx4LR<6k=^o2Emz)HxoFI9ijAnzU>p3 zd3gBTxO12yy0qf+1D&K#$3~j|ZOK2kqOQ{m3RS)p7XOYUvWk4n1m&kZB+b_JeLcTl%C+D+xGbcML3X_${+4cw@~lK5D6$pl1EF!nxTj zwrbxyT?o`wqO^qR6Iqn|j?Xx4zGc9IkM8%da`wIOn^fxq?J)_6vc3lW$DagH!`4FF z`-nh4v~2l^PfOr`~7qHd&8;mR_r zdhLPts-@8OYHbQ{6C-wU!bb1UM466!=1X^YKg1vJ$P!OZIXH(O&@uHV}tLq8}2;qR4HlX z#kKr8-Bj6(77DCndvNklB{fB1OlX=;#%P{pg@RdFU~j{dfF-8guc+0OZ_+upm zbL8MXC?_KWOJ+YVGkNdQrz%qB=XHCHoK&*0Cd)!_<$MM5+2Z0o4oMtZPyvUw zzT4HHcEYYgW0Gh$nE9HA%gAqcs2Zx^`cAJ2@B6<-4k0`B_X4bHvGhl0|=Q9#_cv$rw3h*Ak_gX|LU z`ak)Re!87?+BX}zzq3;#a^g>^z>|q_W0^J9Hot8-2{>ma2nc@qUHnOiE|H2pPtuKnn#E8PRsm39$K*qN|BI8w4(=W9F&+*NAoSPf*{_tYTxj#JR9p5(&E92w zAo-sC=oIlm!SIjzSC5vDpI|+N$HhxeZv69=8fN(aEs4yKMcX4L)tzBiKXGjjEmvK1 z`#HT65B~F8f9spZsJTpizt2&adH&G&+S^7dy8n+;fj_m~f1dqxwk$f&9FxGgSHlri z^Pi(CSc|F4>~$aIaNZTYt1$`|l2B}CC~+R@{C09)!0Ryg1o6ER?)l-NvZBSjLn{BC zA+cY&;`n!1g7kCb6rXQV-3zZQ(g`99g(+UDJr5!1qorj1xFI=+X!e%K&$%4s?y~yF z))1~gG>i}5G&V&#Q!eFG7m8NgrYjnS{%S>yRyq)^V2cJu0t>4!w-Z&l$hq?^ zqM|xlGgwqG^p5EYBn%=Q`_|==xuwbMcQslqENJxA4IUM_c5KfD$5Y3xg@+- zT>qcn1ialrFq#Dv?~tCW6){rAzFpX=Z+G-DpBZz!l{EEt^uS3~jNnZp&r4r1A)|!ysyfV!41&P~DXaS8xzp2%UZK<(-OJbY z6PT+@TQMo&QU^lrDnP0Ouys54S?;NWA4rdyG>P@}$00Ylkh1HcR{7Ya+U?v3wcQJ6 z&Y!z$ID4_6tl^RYm3j6NuE9$i8Q!=)hSm^H>6*hm>$RC6EwfAoEX=@@c|<$Qwyh1| zak%s7_>FO`-=!@1YNGj?`)#JTL(lXc1OJ?k*r<@otwJwX44TcjIC(QDS~;U?D9GRa zy~roa7G)6gzpg&iCC;iGXJ6dXuIvxQ&N5iH7a%C*hC*vfTS903nEk-gi>Xo8Xu~Wp zjkFG7cQ=W55WzyC^zJUuptd3l-aD;ns{kE}QuEyaYE3NujQSfufNJKmTvAT1AJKhK zXvWLCc6&27X9w%@&U^lJZjNddUT?H`ItfK+>|O=}bIM=xJ|pmLPwF-Kl@!laKguvd5s zoBoHSK}+>PkiP$sq-<8~cO~DFcR*Fx^i28gQ|Oq{AZNIrf2F512K|8$_JNqR^Cn*w zRKHttRyUq-Pc_<{IACrS?4Iwz`NAXETvg5~yC0{NWH|bV`9m1J@9_chaz750zKtV9 zD$41^?I;E04%Dh#b`|S*ZKite(C|P5<-)WE?ZWVBDq1nwd}7a+SPY*=KelU(U&V5O^l0O$=OD0EJKS zb!%{T-4`l8+*HQv%NtYM;1uD6E_B{yZ!w)QZ7+KJYV>q&B;reW70aXc?-?%g?zi;- z97HyJyWUetds;zvB|JR1_F6y?vbdjyAmSNFjYC-}ZfYLLW{woHNw7 z;P0t_eK%2qjnyZo7PqwNeQ_s*yJ$cPS+Kn8i&1X$44Ej@^QMj zezI9@(SBn0j3~)kE65hTZK7`1)%lK@g-5B<*HyRj%J!JAmp~lE@!Hw5p^cqDuVC8d zljIs0F1^IEd#l8PSw!24-;UESx%aqIv^^#(K>6#b_|Q{gCn#dHsy!HehrCQE#?Myl3y{wb zmP6|oIQ+P5Ei|>B2N?YA*LM>3eA+Ui=g<}y%DdI>&&B@D6vCZ%C;I&Tv059Ogg+H> z3qOxw67%d$;w9Kd)X%>wy;i)bo{hyg2Y=K6{`H^t>Uq=p-IHDi=sePVwf0z(kQae> z4A8iN!`2AMorup$~{l4l^8xm-)zqbfPdQ9%92S%!KZThi!@l52<;xlExm7+^{TxZ4h4un55(w5WmQ}43aqtPS17X&=`O%9FVWDqQ7~@)~z={x%~O_DYjWnSSlLde5`xT|?gGw#4b@o#>O!c;ulQ zo7<9MDmwW^WJ5G85|Z{S+1#t;{km}L$%{O2=4t)rtAxozarrFFG{|fh3E)vZ%7Fr^ep$PKCy_52?B3x(hfY9t z8Av=rR+PpZow~buXrvdCvq86&{9-&M@cZeuLb*yt>m|0#G1Q~6-{Y;{$32FIqzjI` z^gT1ol^UmE{<#k_d9HFn0ts6=3^VvU`ur3wgi*z%G(A{)Z)Au@wv;SA*3Dup9XCvw z9nd>2HGW>83D@-Yr`ux7;2%@;k{( zeLW#EZERyoe~8bvH%*jD)m$DP?`8nB(8;DzjXJ+;0Nx?XQ1L-mJw?882Z7K2FrvvH z1khS1n|d~BXA%`wYm2=?!o{2@)X^@e`mq}+t=l>OMiEe8*z(j_6mVAcYXX_6MVO^Q zu)u`3C1(+laEk4aeW4Tz5Xcu!W&ls*y;4t{G+0ZOGx!mfa;c+2QtxO~?iEpmTT)V) z@hSST&mt6hpJ@~cW^q~6uH7u=Gm#YO%_iQwR2jltujc#PFRI~(L{N{;o@E3WiSh27 z0FhI0ppmG6+u3qr)R;H!;}Njk2L{>pG1Q%G;($=4{prV$X@K{WI@6xc<_)C>2XFPU z3aSL)zW7CFwafK$o=#B-sLoooE9p{kkT5bf@@ zFs#8?f1=J7L0+>R2~ z^U9=)LjkF8z&pi?q@-RF`pe}z+VeMgt<|^MW4u|;Mt&*tUdcE#cQInvSfu5{yf3^Q z^yyOKIXf5L+!W>ZK7@JqqD+(hbRvdY;O}E5e(6|9F7iF-($%c6!|E)ay@B|C8bh;^ z_~Kd>-wiA5m0nb-F9_WWk<*0VO8g$iZy^jUSzED-SESL<6NmR#zUfz%WDVhvRNj$P zazKLMgJSPIoSZN3xx7vkDToYwl>&>buZMdH46fCA9ILMuWxt-kH6s{dDyN$IVXgiH zJBDzkdz_DS15Fh2XMBe2*RL4MgZ!Rx4O>T^uhG#_eb zFWi3zJs&WB!_c;|*cP=kTEyu&U0c=w4Og0YnrAmxt-|-N##}ns`;~k-*Xw*CpTDXs zWTIZWki}l5e3OHPw{P{%l87#L1>ujw_;r&IC&4JDl7j}zzp`_KkJQY;(E7$n$3k(e zFa?i`MD}jkuA_Sq0P`9Y5N55^({94Y0Wf;)#5s6L4^D&-${KXcCc zGWkRt>&3e?Gg`}V=u;ad+>Qfp!M9xfTmTZ;6BG)#UcW)!t93Nn4~j%PzaTIr0Tq270ECQ(zGom(XWToOJsy<|Ki+;bao_x55J%#t?ZOU(~-*qRv*^SA!zwaz^w6M+of=-DNZ3Ql=W zTR{_2?dWL}*Ld?Kc=qH*KHo&blI7-!RmHW+uXbc9!;g)A&bRf(LXVnz3>B2Tr@W`6 z@ad^oTX-$-CInJA7ikr2_FMIWb8ivw$6mvs#hgCdO_7-~jFxc12owu6Y+G?+0qNi8 zgpOIbZiuIQT^gZn>njiNe{7*o?PP`3;{oeCv#KSoUQ>d?9P>!oH^G{z%%iLUiux8%#UYUy`O$vfPdSYmg(`8 zV?yRbbQVX2Xxy(93&snfy3H{UHF20{+Fs5>i_nQP7Q5_H?Uq_3-X~sH*YbMJMK$*I zWo|v3#*UzciY9or**DIud!DRX(&WJ)x=y;Ci!)D1DH@;X5OrWU5C4|`C1I(Kf%lBw z+M#U{vyP=GZP>Sl{ejbkMz&5WLBY_MVcmb1yFCN6)cowdI^5!e2YUq>obgiW8esaa zP6Ve{=5_rIW$CAHXFP(65mvmV-|>jkH~6f+x<73?XV9W>!G+X9#@^086^)Z@`Q@h3 z?%|UfiG=`%!T%1IYCdTWJ1X{ChIv_R6jBt&q$rgkuO0p$yaHH0ouBU`2-(*;#ql7en{?7c4MR6qYP!| zni0@B3}7^LE;*o5_WdBT&204pW32x7eSv@XJ6vLZcf9bqw1E>C{3?>UdEwhNBtkwM zhb=kus2a%U+x?EIPmSaWQ_oPwO53$uzG9hP0!vGEUdxaC{raO>dmn&t)DKW+E*?L{ z-HD1H9aFZRp(dy7t-B}3^}>3zU_Ik;P^>U>cXUx=pLo;=sshY~7PKv+<@&$0F!b*@ zn#e?|ibyk4_^&?P%VT>m%|=81_V(?hC^?t++|+-oJbKR)KP7;o=k3i^fd5{9MeTJx zq!Q(~kQ*Po^HuQIh?5x>V_!`0AtB_`1*3w5otbXPUdnCH)OEtL=2afviI{+-SH?z& zS+bT;s^?P>qCA%p)e?Ug=v`J@_GJzqQMPeIHGoTJW(^-FO1-y`T27%Zi7Gm)I4XKZ zZN}zq<)}xGs!9K;J^dga!IYb%E`yqmT%2Qd&EW8Ex3=if3YlVeLmBoFwf=KzL|}ss z9^3cD3>M`l+9Y6p#-JfDW%Xe$&ExLi)Bt zkW^cjt{p<)-Vz}IiM%xA&01!M?A!$Yz4rARhna*ulnxe)$Z#PF?qpd^9IgtRZq`W;o;T5u zWN!HoK)6jkm0dPrMAgIg=WZQ8F;jo{R5<6S6x>eyP~(PA0wjD2{|w;i8CZo{iZ9XO zYNGNi5sm!-aT=+Wwn-n||8gslU6H84wBsxdo;d39Bkhqd;E4@Iq}FXwKGL;l)qoV* z6NoGYlSJCTFEE{bbjBLqyI_@pXr%bPT*phK&aCL!yR>IlpCQlOeY$c}qx~XSf|xD6 zIxpKxy~Ja9wAONV$YP)%`F_uvYfuo|bJ!RDZ~vC5zVvpK22c`+!_u4Tf1z@2vYO%0 zJILaiPUmf?ox4A(^5c6R^FU)W0lByp(+kKk~~-EXH~aP0mLeUmCS&u<;2 zd99OIk0=vQ+cy<#y`dX)+lOn3mvF>2i+2VYgzA%wtt5K9Z#5Z*8PAl;!|{_hM@~fMO#s&+ z9(uP)mZ6P*F53pSblR+8)2C@ot$RL=IeS+AJ|2NG;K>3-ZR^$(_Mv%#=weo%uQ&pC z^^q|*IAs~s4A0IZA|^)5A1-=prk_hPuU~YLeazssuhAxqn9f$n;>n&Y!Ut%!g8|aW zMYnW^{|LC_a@8e%C2Y_0OSg8+-1oD%p3kCVeI0#)+$D)Y?;NO16rYa z(sWf90?GLc2Klr@HmzN&E-`Adsp5DS?@iSnn?YHsP%qtStlkfAvJN=^W$tdzYF&3) zz0-z+QPeQ|CXz??K6 zR^73X);E|d)&q86#=*nHW{Xwm^!cmnkHh`P0QkIr{*f7FPihSVPxl^*NeINZ_!s{{ ztY|AEYXDrvo*V>z-)mkzg2T&p%%G9BhN42(8xe^2j@64)N5lG|UYL}KEl~Bkzw1ML zq&CEF{?~^MZ3ceC8c-~n6hZAL?ak>RO@y54#F&2;4{sm@I!5gf8!(y12MO1rJ*lT7 z5%_e5>q_Oz_pcq@@X7D5z6vl08c}N zM#mHYVR;g=qdP=BV^&}1KfHg89)Fm=oYt|Y&y9MoX)V&vYS41xc(1FfA-@UB%gWoT z_OX6LaaT}5(ZE_Y%g8IOekyjPRs+#X)Vj7z6ZmbNW*?KD76sA3oH62F#BaO>7Yv_p0hB2McA zfqcXObJF2!Z`Kv`(~EotoZ;W9A7DQdjG=lAqcfX-Ysuh_zfs zr2hixL?r%nH^9q-UWza&g`Vv(cEpv897U$G%{hOh*w*fXt%!&p@fhZ)aBXb6meFPKG3euu6xL2=DcmEJS5Uo&!0Nx~z+-*4x$2CS zMZaXV?UR4L;n2Y)veeWB`3vSxxg#Vqc4))iqNo0QJkJ*JMcu_??C=!`5WRUs&#QZ- zI{E8jlx~F*8D9*m6TQPYi3{g9PL%C`W zT_T6BEfK)uho^kOOsoels%I=s?|ZS8`S#bAHTG1`0R^WWY0bvZkq9h`F}LRIw6^ti zVg8I$>K#O$%$k4~Vld+WNn1oW8Z<{S3GG1>4}W+ZJ^ z=fuuP==TwTupSn#5T58jg{-Uu5I|(QydD$apz}Y7od#K9?@Al@}Q@IhK|Hu>x4<| zQP?d+fabeSoI5Y>KIQ{Hr%fSO*6%0AHx;baEumZM03ZVg-P8Z5=$`uP=Eg+hH?`{E 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 tD?ICPi3?P{HGN e + e + end +end + +m.load_bundler! + +if m.invoked_as_script? + load Gem.bin_path("bundler", "bundle") +end diff --git a/projects/lab/bin/byebug b/projects/lab/bin/byebug new file mode 100755 index 000000000..16f20bbd1 --- /dev/null +++ b/projects/lab/bin/byebug @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'byebug' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("byebug", "byebug") diff --git a/projects/lab/bin/dotenv b/projects/lab/bin/dotenv new file mode 100755 index 000000000..a8ec8c761 --- /dev/null +++ b/projects/lab/bin/dotenv @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'dotenv' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("dotenv", "dotenv") diff --git a/projects/lab/bin/foreman b/projects/lab/bin/foreman new file mode 100755 index 000000000..529866728 --- /dev/null +++ b/projects/lab/bin/foreman @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'foreman' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("foreman", "foreman") diff --git a/projects/lab/bin/gli b/projects/lab/bin/gli new file mode 100755 index 000000000..d951c06b0 --- /dev/null +++ b/projects/lab/bin/gli @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'gli' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("gli", "gli") diff --git a/projects/lab/bin/graphql-schema b/projects/lab/bin/graphql-schema new file mode 100755 index 000000000..cbdbd3721 --- /dev/null +++ b/projects/lab/bin/graphql-schema @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'graphql-schema' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("graphql-schema_comparator", "graphql-schema") diff --git a/projects/lab/bin/haml b/projects/lab/bin/haml new file mode 100755 index 000000000..2cc42c7ed --- /dev/null +++ b/projects/lab/bin/haml @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'haml' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("haml", "haml") diff --git a/projects/lab/bin/listen b/projects/lab/bin/listen new file mode 100755 index 000000000..3dd36a7e3 --- /dev/null +++ b/projects/lab/bin/listen @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'listen' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("listen", "listen") diff --git a/projects/lab/bin/nokogiri b/projects/lab/bin/nokogiri new file mode 100755 index 000000000..b22a1a0aa --- /dev/null +++ b/projects/lab/bin/nokogiri @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'nokogiri' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("nokogiri", "nokogiri") diff --git a/projects/lab/bin/puma b/projects/lab/bin/puma new file mode 100755 index 000000000..880935b2d --- /dev/null +++ b/projects/lab/bin/puma @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'puma' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("puma", "puma") diff --git a/projects/lab/bin/pumactl b/projects/lab/bin/pumactl new file mode 100755 index 000000000..b698e6e93 --- /dev/null +++ b/projects/lab/bin/pumactl @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'pumactl' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("puma", "pumactl") diff --git a/projects/lab/bin/racc b/projects/lab/bin/racc new file mode 100755 index 000000000..87e4820d6 --- /dev/null +++ b/projects/lab/bin/racc @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'racc' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("racc", "racc") diff --git a/projects/lab/bin/rackup b/projects/lab/bin/rackup new file mode 100755 index 000000000..3ac4a5a7e --- /dev/null +++ b/projects/lab/bin/rackup @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'rackup' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("rack", "rackup") diff --git a/projects/lab/bin/rails b/projects/lab/bin/rails new file mode 100755 index 000000000..21d3e02d8 --- /dev/null +++ b/projects/lab/bin/rails @@ -0,0 +1,5 @@ +#!/usr/bin/env ruby +load File.expand_path("spring", __dir__) +APP_PATH = File.expand_path('../config/application', __dir__) +require_relative "../config/boot" +require "rails/commands" diff --git a/projects/lab/bin/rake b/projects/lab/bin/rake new file mode 100755 index 000000000..7327f471e --- /dev/null +++ b/projects/lab/bin/rake @@ -0,0 +1,5 @@ +#!/usr/bin/env ruby +load File.expand_path("spring", __dir__) +require_relative "../config/boot" +require "rake" +Rake.application.run diff --git a/projects/lab/bin/redcarpet b/projects/lab/bin/redcarpet new file mode 100755 index 000000000..906e9458a --- /dev/null +++ b/projects/lab/bin/redcarpet @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'redcarpet' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("redcarpet", "redcarpet") diff --git a/projects/lab/bin/rubocop b/projects/lab/bin/rubocop new file mode 100755 index 000000000..d0c488293 --- /dev/null +++ b/projects/lab/bin/rubocop @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'rubocop' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("rubocop", "rubocop") diff --git a/projects/lab/bin/ruby-parse b/projects/lab/bin/ruby-parse new file mode 100755 index 000000000..74d87beba --- /dev/null +++ b/projects/lab/bin/ruby-parse @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'ruby-parse' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("parser", "ruby-parse") diff --git a/projects/lab/bin/ruby-rewrite b/projects/lab/bin/ruby-rewrite new file mode 100755 index 000000000..972bc4563 --- /dev/null +++ b/projects/lab/bin/ruby-rewrite @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'ruby-rewrite' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("parser", "ruby-rewrite") diff --git a/projects/lab/bin/schema_comparator b/projects/lab/bin/schema_comparator new file mode 100755 index 000000000..2f13e66fe --- /dev/null +++ b/projects/lab/bin/schema_comparator @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'schema_comparator' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("graphql-schema_comparator", "schema_comparator") diff --git a/projects/lab/bin/setup b/projects/lab/bin/setup new file mode 100755 index 000000000..90700ac4f --- /dev/null +++ b/projects/lab/bin/setup @@ -0,0 +1,36 @@ +#!/usr/bin/env ruby +require "fileutils" + +# path to your application root. +APP_ROOT = File.expand_path('..', __dir__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +FileUtils.chdir APP_ROOT do + # This script is a way to set up or update your development environment automatically. + # This script is idempotent, so that you can run it at any time and get an expectable outcome. + # Add necessary setup steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + # Install JavaScript dependencies + system! 'bin/yarn' + + # puts "\n== Copying sample files ==" + # unless File.exist?('config/database.yml') + # FileUtils.cp 'config/database.yml.sample', 'config/database.yml' + # end + + puts "\n== Preparing database ==" + system! 'bin/rails db:prepare' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/projects/lab/bin/sidekiq b/projects/lab/bin/sidekiq new file mode 100755 index 000000000..9e7549996 --- /dev/null +++ b/projects/lab/bin/sidekiq @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'sidekiq' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("sidekiq", "sidekiq") diff --git a/projects/lab/bin/sidekiqmon b/projects/lab/bin/sidekiqmon new file mode 100755 index 000000000..fedda51ca --- /dev/null +++ b/projects/lab/bin/sidekiqmon @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'sidekiqmon' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("sidekiq", "sidekiqmon") diff --git a/projects/lab/bin/spring b/projects/lab/bin/spring new file mode 100755 index 000000000..b4147e843 --- /dev/null +++ b/projects/lab/bin/spring @@ -0,0 +1,14 @@ +#!/usr/bin/env ruby +if !defined?(Spring) && [nil, "development", "test"].include?(ENV["RAILS_ENV"]) + gem "bundler" + require "bundler" + + # Load Spring without loading other gems in the Gemfile, for speed. + Bundler.locked_gems&.specs&.find { |spec| spec.name == "spring" }&.tap do |spring| + Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path + gem "spring", spring.version + require "spring/binstub" + rescue Gem::LoadError + # Ignore when Spring is not installed. + end +end diff --git a/projects/lab/bin/sprockets b/projects/lab/bin/sprockets new file mode 100755 index 000000000..9f75aa748 --- /dev/null +++ b/projects/lab/bin/sprockets @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'sprockets' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("sprockets", "sprockets") diff --git a/projects/lab/bin/thor b/projects/lab/bin/thor new file mode 100755 index 000000000..71bfaeae0 --- /dev/null +++ b/projects/lab/bin/thor @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'thor' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("thor", "thor") diff --git a/projects/lab/bin/tilt b/projects/lab/bin/tilt new file mode 100755 index 000000000..34f7bcaa5 --- /dev/null +++ b/projects/lab/bin/tilt @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'tilt' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +bundle_binstub = File.expand_path("../bundle", __FILE__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("tilt", "tilt") diff --git a/projects/lab/bin/webpack b/projects/lab/bin/webpack new file mode 100755 index 000000000..1031168d0 --- /dev/null +++ b/projects/lab/bin/webpack @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby + +ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development" +ENV["NODE_ENV"] ||= "development" + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +require "bundler/setup" + +require "webpacker" +require "webpacker/webpack_runner" + +APP_ROOT = File.expand_path("..", __dir__) +Dir.chdir(APP_ROOT) do + Webpacker::WebpackRunner.run(ARGV) +end diff --git a/projects/lab/bin/webpack-dev-server b/projects/lab/bin/webpack-dev-server new file mode 100755 index 000000000..dd9662737 --- /dev/null +++ b/projects/lab/bin/webpack-dev-server @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby + +ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development" +ENV["NODE_ENV"] ||= "development" + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +require "bundler/setup" + +require "webpacker" +require "webpacker/dev_server_runner" + +APP_ROOT = File.expand_path("..", __dir__) +Dir.chdir(APP_ROOT) do + Webpacker::DevServerRunner.run(ARGV) +end diff --git a/projects/lab/bin/yarn b/projects/lab/bin/yarn new file mode 100755 index 000000000..9fab2c350 --- /dev/null +++ b/projects/lab/bin/yarn @@ -0,0 +1,17 @@ +#!/usr/bin/env ruby +APP_ROOT = File.expand_path('..', __dir__) +Dir.chdir(APP_ROOT) do + yarn = ENV["PATH"].split(File::PATH_SEPARATOR). + select { |dir| File.expand_path(dir) != __dir__ }. + product(["yarn", "yarn.cmd", "yarn.ps1"]). + map { |dir, file| File.expand_path(file, dir) }. + find { |file| File.executable?(file) } + + if yarn + exec yarn, *ARGV + else + $stderr.puts "Yarn executable was not detected in the system." + $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" + exit 1 + end +end diff --git a/projects/lab/codegen.yml b/projects/lab/codegen.yml new file mode 100644 index 000000000..e2f31039b --- /dev/null +++ b/projects/lab/codegen.yml @@ -0,0 +1,11 @@ +schema: schema.graphql +generates: + app/javascript/graphql/types.ts: + documents: 'app/javascript/**/*.graphql' + plugins: + - typescript + - typescript-operations + - typescript-react-apollo + config: + reactApolloVersion: 3 + withHooks: true diff --git a/projects/lab/config.ru b/projects/lab/config.ru new file mode 100644 index 000000000..2e0308469 --- /dev/null +++ b/projects/lab/config.ru @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +# This file is used by Rack-based servers to start the application. + +require_relative "config/environment" + +run Rails.application +Rails.application.load_server diff --git a/projects/lab/config/application.rb b/projects/lab/config/application.rb new file mode 100644 index 000000000..d6496f52f --- /dev/null +++ b/projects/lab/config/application.rb @@ -0,0 +1,44 @@ +# typed: ignore +# frozen_string_literal: true + +require_relative "boot" + +require "rails" +# Pick the frameworks you want: +require "active_model/railtie" +require "active_job/railtie" +require "active_record/railtie" +# require "active_storage/engine" +require "action_controller/railtie" +require "action_mailer/railtie" +# require "action_mailbox/engine" +# require "action_text/engine" +require "action_view/railtie" +require "action_cable/engine" +require "sprockets/railtie" +require "rails/test_unit/railtie" + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module TuistLab + class Application < Rails::Application + # Initialize configuration defaults for originally generated Rails version. + config.load_defaults(6.1) + + # Configuration for the application, engines, and railties goes here. + # + # These settings can be overridden in specific environments using the files + # in config/environments, which are processed later. + config.defaults = config_for(:defaults) + Rails.application.routes.default_url_options[:host] = config.defaults[:urls][:app] + config.action_controller.default_url_options = { host: config.defaults[:urls][:app] } + config.action_mailer.default_url_options = { host: config.defaults[:urls][:app] } + + # + # config.time_zone = "Central Time (US & Canada)" + # config.eager_load_paths << Rails.root.join("extras") + config.active_job.queue_adapter = :sidekiq + end +end diff --git a/projects/lab/config/boot.rb b/projects/lab/config/boot.rb new file mode 100644 index 000000000..2666e1424 --- /dev/null +++ b/projects/lab/config/boot.rb @@ -0,0 +1,7 @@ +# typed: strict +# frozen_string_literal: true + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +require "bundler/setup" # Set up gems listed in the Gemfile. +require "bootsnap/setup" # Speed up boot time by caching expensive operations. diff --git a/projects/lab/config/cable.yml b/projects/lab/config/cable.yml new file mode 100644 index 000000000..a32c7a5c1 --- /dev/null +++ b/projects/lab/config/cable.yml @@ -0,0 +1,10 @@ +development: + adapter: async + +test: + adapter: test + +production: + adapter: redis + url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> + channel_prefix: tuist_lab_production diff --git a/projects/lab/config/database.ci.yml b/projects/lab/config/database.ci.yml new file mode 100644 index 000000000..36675c836 --- /dev/null +++ b/projects/lab/config/database.ci.yml @@ -0,0 +1,9 @@ +test: + adapter: postgresql + encoding: unicode + pool: 5 + timeout: 5000 + host: localhost + username: postgres + password: postgres + database: tuist_lab_db diff --git a/projects/lab/config/database.yml b/projects/lab/config/database.yml new file mode 100644 index 000000000..38138db19 --- /dev/null +++ b/projects/lab/config/database.yml @@ -0,0 +1,18 @@ +default: &default + adapter: postgresql + encoding: unicode + # For details on connection pooling, see Rails configuration guide + # https://guides.rubyonrails.org/configuring.html#database-pooling + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> +development: + <<: *default + database: tuist_lab_development + url: <%= ENV['DATABASE_URL'] %> +test: + <<: *default + database: tuist_lab_test + url: <%= ENV['DATABASE_URL'] %> +production: + <<: *default + database: <%= ENV["DATABASE_NAME"] %> + url: <%= ENV['DATABASE_URL'] %> diff --git a/projects/lab/config/defaults.yml b/projects/lab/config/defaults.yml new file mode 100644 index 000000000..68ead2610 --- /dev/null +++ b/projects/lab/config/defaults.yml @@ -0,0 +1,20 @@ +base_urls: &base_urls + app: http://127.0.0.1:5000 +default: &default + urls: + <<: *base_urls + site_metadata: + description: "TuistLab is a server-side extension for Tuist projects" + title: "TuistLab | A server buddy for your Xcode projects" + keywords: "Xcode,Swift,Deployment,DocC,Xcode 13,WWDC" + twitter: tuistio +development: &development + <<: *default +production: + <<: *default + urls: + <<: *base_urls + app: https://lab.tuist.io + domain: tuist.io +test: + <<: *development diff --git a/projects/lab/config/environment.rb b/projects/lab/config/environment.rb new file mode 100644 index 000000000..1be9ce72e --- /dev/null +++ b/projects/lab/config/environment.rb @@ -0,0 +1,8 @@ +# typed: ignore +# frozen_string_literal: true + +# Load the Rails application. +require_relative "application" + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/projects/lab/config/environments/development.rb b/projects/lab/config/environments/development.rb new file mode 100644 index 000000000..5f21b9759 --- /dev/null +++ b/projects/lab/config/environments/development.rb @@ -0,0 +1,80 @@ +# typed: ignore +# frozen_string_literal: true + +require "active_support/core_ext/integer/time" + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded any time + # it changes. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports. + config.consider_all_requests_local = true + + # Enable/disable caching. By default caching is disabled. + # Run rails dev:cache to toggle caching. + if Rails.root.join("tmp/caching-dev.txt").exist? + config.action_controller.perform_caching = true + config.action_controller.enable_fragment_cache_logging = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + "Cache-Control" => "public, max-age=#{2.days.to_i}", + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Store uploaded files on the local file system (see config/storage.yml for options). + # config.active_storage.service = :local + + # Don't care if the mailer can't send. + config.action_mailer.delivery_method = :smtp + config.action_mailer.default_url_options = { host: "http://127.0.0.1", port: 3000 } + config.action_mailer.raise_delivery_errors = false + config.action_mailer.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise exceptions for disallowed deprecations. + config.active_support.disallowed_deprecation = :raise + + # Tell Active Support which deprecation messages to disallow. + config.active_support.disallowed_deprecation_warnings = [] + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Highlight code that triggered database queries in logs. + config.active_record.verbose_query_logs = true + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + config.assets.precompile += ["graphiql/rails/application.js", "graphiql/rails/application.css"] + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations. + # config.i18n.raise_on_missing_translations = true + + # Annotate rendered view with file names. + # config.action_view.annotate_rendered_view_with_filenames = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + config.file_watcher = ActiveSupport::EventedFileUpdateChecker + + # Uncomment if you wish to allow Action Cable access from any origin. + # config.action_cable.disable_request_forgery_protection = true +end diff --git a/projects/lab/config/environments/production.rb b/projects/lab/config/environments/production.rb new file mode 100644 index 000000000..7e209f0e3 --- /dev/null +++ b/projects/lab/config/environments/production.rb @@ -0,0 +1,125 @@ +# typed: ignore +# frozen_string_literal: true + +require "active_support/core_ext/integer/time" + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] + # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). + # config.require_master_key = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = + ENV["RAILS_SERVE_STATIC_FILES"].present? || ENV["RENDER"].present? + + # Compress CSS using a preprocessor. + config.assets.css_compressor = :purger + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.asset_host = 'http://assets.example.com' + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Store uploaded files on the local file system (see config/storage.yml for options). + # config.active_storage.service = :local + + # Mount Action Cable outside main process or domain. + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Include generic and useful information about system operation, but avoid logging too much + # information to avoid inadvertent exposure of personally identifiable information (PII). + config.log_level = :info + + # Prepend all log lines with the following tags. + config.log_tags = [:request_id] + + # Use a different cache store in production. + config.cache_store = :redis_cache_store, { url: ENV["REDIS_URL"] } + + # Action mailer + config.action_mailer.delivery_method = :smtp + config.action_mailer.default_url_options = { host: Rails.application.config.defaults[:urls][:app] } + config.action_mailer.perform_caching = false + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Log disallowed deprecations. + config.active_support.disallowed_deprecation = :log + + # Tell Active Support which deprecation messages to disallow. + config.active_support.disallowed_deprecation_warnings = [] + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Use a different logger for distributed setups. + # require "syslog/logger" + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new($stdout) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false + + # Inserts middleware to perform automatic connection switching. + # The `database_selector` hash is used to pass options to the DatabaseSelector + # middleware. The `delay` is used to determine how long to wait after a write + # to send a subsequent read to the primary. + # + # The `database_resolver` class is used by the middleware to determine which + # database is appropriate to use based on the time delay. + # + # The `database_resolver_context` class is used by the middleware to set + # timestamps for the last write to the primary. The resolver uses the context + # class timestamps to determine how long to wait before reading from the + # replica. + # + # By default Rails will store a last write timestamp in the session. The + # DatabaseSelector middleware is designed as such you can define your own + # strategy for connection switching and pass that into the middleware through + # these configuration options. + # config.active_record.database_selector = { delay: 2.seconds } + # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver + # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session + # config.google_cloud.project_id = "becquer" + # config.google_cloud.keyfile = Rails.root.join("assets/becquer-be4b0a62794b.json") +end diff --git a/projects/lab/config/environments/test.rb b/projects/lab/config/environments/test.rb new file mode 100644 index 000000000..cbc0e7555 --- /dev/null +++ b/projects/lab/config/environments/test.rb @@ -0,0 +1,63 @@ +# typed: ignore +# frozen_string_literal: true + +require "active_support/core_ext/integer/time" + +# The test environment is used exclusively to run your application's +# test suite. You never need to work with it otherwise. Remember that +# your test database is "scratch space" for the test suite and is wiped +# and recreated between test runs. Don't rely on the data there! + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + config.cache_classes = false + config.action_view.cache_template_loading = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + "Cache-Control" => "public, max-age=#{1.hour.to_i}", + } + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + config.cache_store = :null_store + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + + # Store uploaded files on the local file system in a temporary directory. + # config.active_storage.service = :test + + config.action_mailer.perform_caching = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raise exceptions for disallowed deprecations. + config.active_support.disallowed_deprecation = :raise + + # Tell Active Support which deprecation messages to disallow. + config.active_support.disallowed_deprecation_warnings = [] + + # Raises error for missing translations. + # config.i18n.raise_on_missing_translations = true + + # Annotate rendered view with file names. + # config.action_view.annotate_rendered_view_with_filenames = true +end diff --git a/projects/lab/config/initializers/application_controller_renderer.rb b/projects/lab/config/initializers/application_controller_renderer.rb new file mode 100644 index 000000000..bf31332ba --- /dev/null +++ b/projects/lab/config/initializers/application_controller_renderer.rb @@ -0,0 +1,10 @@ +# typed: strict +# frozen_string_literal: true +# Be sure to restart your server when you modify this file. + +# ActiveSupport::Reloader.to_prepare do +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) +# end diff --git a/projects/lab/config/initializers/assets.rb b/projects/lab/config/initializers/assets.rb new file mode 100644 index 000000000..a69dc800f --- /dev/null +++ b/projects/lab/config/initializers/assets.rb @@ -0,0 +1,17 @@ +# typed: ignore +# frozen_string_literal: true + +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = "1.0" + +# Add additional assets to the asset load path. +# Rails.application.config.assets.paths << Emoji.images_path +# Add Yarn node_modules folder to the asset load path. +Rails.application.config.assets.paths << Rails.root.join("node_modules") + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in the app/assets +# folder are already added. +# Rails.application.config.assets.precompile += %w( admin.js admin.css ) diff --git a/projects/lab/config/initializers/backtrace_silencers.rb b/projects/lab/config/initializers/backtrace_silencers.rb new file mode 100644 index 000000000..17ffaadbc --- /dev/null +++ b/projects/lab/config/initializers/backtrace_silencers.rb @@ -0,0 +1,11 @@ +# typed: ignore +# frozen_string_literal: true + +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| /my_noisy_library/.match?(line) } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code +# by setting BACKTRACE=1 before calling your invocation, like "BACKTRACE=1 ./bin/rails runner 'MyClass.perform'". +Rails.backtrace_cleaner.remove_silencers! if ENV["BACKTRACE"] diff --git a/projects/lab/config/initializers/bugsnag.rb b/projects/lab/config/initializers/bugsnag.rb new file mode 100644 index 000000000..71239366c --- /dev/null +++ b/projects/lab/config/initializers/bugsnag.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true +if Rails.env.production? + Bugsnag.configure do |config| + config.api_key = Rails.application.credentials[:bugsnag][:backend_api_key] + end +end diff --git a/projects/lab/config/initializers/content_security_policy.rb b/projects/lab/config/initializers/content_security_policy.rb new file mode 100644 index 000000000..aaef1d61a --- /dev/null +++ b/projects/lab/config/initializers/content_security_policy.rb @@ -0,0 +1,36 @@ +# typed: ignore +# frozen_string_literal: true +# Be sure to restart your server when you modify this file. + +# Define an application-wide content security policy +# For further information see the following documentation +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + +Rails.application.config.content_security_policy do |policy| + # policy.default_src :self, :https + # policy.font_src :self, :https, :data + # policy.img_src :self, :https, :data + # policy.object_src :none + # policy.script_src :self, :https + + # You may need to enable this in production as well depending on your setup. + # policy.script_src *policy.script_src, :blob if Rails.env.test? + + # You may need to enable this in production as well depending on your setup. + # policy.script_src *policy.script_src, :blob if Rails.env.test? + + # # Specify URI for violation reports + # # policy.report_uri "/csp-violation-report-endpoint" + # end + + # If you are using UJS then enable automatic nonce generation + # Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) } + + # Set the nonce only to specific directives + # Rails.application.config.content_security_policy_nonce_directives = %w(script-src) + + # Report CSP violations to a specified URI + # For further information see the following documentation: + # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only + # Rails.application.config.content_security_policy_report_only = true +end diff --git a/projects/lab/config/initializers/cookies_serializer.rb b/projects/lab/config/initializers/cookies_serializer.rb new file mode 100644 index 000000000..9de2c269d --- /dev/null +++ b/projects/lab/config/initializers/cookies_serializer.rb @@ -0,0 +1,8 @@ +# typed: ignore +# frozen_string_literal: true + +# Be sure to restart your server when you modify this file. + +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/projects/lab/config/initializers/devise.rb b/projects/lab/config/initializers/devise.rb new file mode 100644 index 000000000..a1e0ff45c --- /dev/null +++ b/projects/lab/config/initializers/devise.rb @@ -0,0 +1,329 @@ +# typed: ignore +# frozen_string_literal: true + +# Assuming you have not yet modified this file, each configuration option below +# is set to its default value. Note that some are commented out while others +# are not: uncommented lines are intended to protect your configuration from +# breaking changes in upgrades (i.e., in the event that future versions of +# Devise change the default values for those options). +# +# Use this hook to configure devise mailer, warden hooks and so forth. +# Many of these configuration options can be set straight in your model. +Devise.setup do |config| + # The secret key used by Devise. Devise uses this key to generate + # random tokens. Changing this key will render invalid all existing + # confirmation, reset password and unlock tokens in the database. + # Devise will use the `secret_key_base` as its `secret_key` + # by default. You can change it below and use your own secret key. + config.secret_key = Rails.application.credentials[:secret_key] + + # ==> Controller configuration + # Configure the parent class to the devise controllers. + # config.parent_controller = 'DeviseController' + + # ==> Mailer Configuration + # Configure the e-mail address which will be shown in Devise::Mailer, + # note that it will be overwritten if you use your own mailer class + # with default "from" parameter. + config.mailer_sender = + "please-change-me-at-config-initializers-devise@example.com" + + # Configure the class responsible to send e-mails. + # config.mailer = 'Devise::Mailer' + + # Configure the parent class responsible to send e-mails. + # config.parent_mailer = 'ActionMailer::Base' + + # ==> ORM configuration + # Load and configure the ORM. Supports :active_record (default) and + # :mongoid (bson_ext recommended) by default. Other ORMs may be + # available as additional gems. + require "devise/orm/active_record" + + # ==> Configuration for any authentication mechanism + # Configure which keys are used when authenticating a user. The default is + # just :email. You can configure it to use [:username, :subdomain], so for + # authenticating a user, both parameters are required. Remember that those + # parameters are used only when authenticating and not when retrieving from + # session. If you need permissions, you should implement that in a before filter. + # You can also supply a hash where the value is a boolean determining whether + # or not authentication should be aborted when the value is not present. + # config.authentication_keys = [:email] + + # Configure parameters from the request object used for authentication. Each entry + # given should be a request method and it will automatically be passed to the + # find_for_authentication method and considered in your model lookup. For instance, + # if you set :request_keys to [:subdomain], :subdomain will be used on authentication. + # The same considerations mentioned for authentication_keys also apply to request_keys. + # config.request_keys = [] + + # Configure which authentication keys should be case-insensitive. + # These keys will be downcased upon creating or modifying a user and when used + # to authenticate or find a user. Default is :email. + config.case_insensitive_keys = [:email] + + # Configure which authentication keys should have whitespace stripped. + # These keys will have whitespace before and after removed upon creating or + # modifying a user and when used to authenticate or find a user. Default is :email. + config.strip_whitespace_keys = [:email] + + # Tell if authentication through request.params is enabled. True by default. + # It can be set to an array that will enable params authentication only for the + # given strategies, for example, `config.params_authenticatable = [:database]` will + # enable it only for database (email + password) authentication. + # config.params_authenticatable = true + + # Tell if authentication through HTTP Auth is enabled. False by default. + # It can be set to an array that will enable http authentication only for the + # given strategies, for example, `config.http_authenticatable = [:database]` will + # enable it only for database authentication. + # For API-only applications to support authentication "out-of-the-box", you will likely want to + # enable this with :database unless you are using a custom strategy. + # The supported strategies are: + # :database = Support basic authentication with authentication key + password + # config.http_authenticatable = false + + # If 401 status code should be returned for AJAX requests. True by default. + # config.http_authenticatable_on_xhr = true + + # The realm used in Http Basic Authentication. 'Application' by default. + # config.http_authentication_realm = 'Application' + + # It will change confirmation, password recovery and other workflows + # to behave the same regardless if the e-mail provided was right or wrong. + # Does not affect registerable. + # config.paranoid = true + + # By default Devise will store the user in session. You can skip storage for + # particular strategies by setting this option. + # Notice that if you are skipping storage for all authentication paths, you + # may want to disable generating routes to Devise's sessions controller by + # passing skip: :sessions to `devise_for` in your config/routes.rb + config.skip_session_storage = [:http_auth] + + # By default, Devise cleans up the CSRF token on authentication to + # avoid CSRF token fixation attacks. This means that, when using AJAX + # requests for sign in and sign up, you need to get a new CSRF token + # from the server. You can disable this option at your own risk. + # config.clean_up_csrf_token_on_authentication = true + + # When false, Devise will not attempt to reload routes on eager load. + # This can reduce the time taken to boot the app but if your application + # requires the Devise mappings to be loaded during boot time the application + # won't boot properly. + # config.reload_routes = true + + # ==> Configuration for :database_authenticatable + # For bcrypt, this is the cost for hashing the password and defaults to 12. If + # using other algorithms, it sets how many times you want the password to be hashed. + # The number of stretches used for generating the hashed password are stored + # with the hashed password. This allows you to change the stretches without + # invalidating existing passwords. + # + # Limiting the stretches to just one in testing will increase the performance of + # your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use + # a value less than 10 in other environments. Note that, for bcrypt (the default + # algorithm), the cost increases exponentially with the number of stretches (e.g. + # a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation). + config.stretches = Rails.env.test? ? 1 : 12 + + # Set up a pepper to generate the hashed password. + # config.pepper = 'fe284602d24ea00b5f3b08c72cabaa7548a51c1043a82f5b87273d129cf4f14972' + + # Send a notification to the original email when the user's email is changed. + # config.send_email_changed_notification = false + + # Send a notification email when the user's password is changed. + # config.send_password_change_notification = false + + # ==> Configuration for :confirmable + # A period that the user is allowed to access the website even without + # confirming their account. For instance, if set to 2.days, the user will be + # able to access the website for two days without confirming their account, + # access will be blocked just in the third day. + # You can also set it to nil, which will allow the user to access the website + # without confirming their account. + # Default is 0.days, meaning the user cannot access the website without + # confirming their account. + # config.allow_unconfirmed_access_for = 2.days + + # A period that the user is allowed to confirm their account before their + # token becomes invalid. For example, if set to 3.days, the user can confirm + # their account within 3 days after the mail was sent, but on the fourth day + # their account can't be confirmed with the token any more. + # Default is nil, meaning there is no restriction on how long a user can take + # before confirming their account. + # config.confirm_within = 3.days + + # If true, requires any email changes to be confirmed (exactly the same way as + # initial account confirmation) to be applied. Requires additional unconfirmed_email + # db field (see migrations). Until confirmed, new email is stored in + # unconfirmed_email column, and copied to email column on successful confirmation. + config.reconfirmable = true + + # Defines which key will be used when confirming an account + # config.confirmation_keys = [:email] + + # ==> Configuration for :rememberable + # The time the user will be remembered without asking for credentials again. + # config.remember_for = 2.weeks + + # Invalidates all the remember me tokens when the user signs out. + config.expire_all_remember_me_on_sign_out = true + + # If true, extends the user's remember period when remembered via cookie. + # config.extend_remember_period = false + + # Options to be passed to the created cookie. For instance, you can set + # secure: true in order to force SSL only cookies. + # config.rememberable_options = {} + + # ==> Configuration for :validatable + # Range for password length. + config.password_length = 6..128 + + # Email regex used to validate email formats. It simply asserts that + # one (and only one) @ exists in the given string. This is mainly + # to give user feedback and not to assert the e-mail validity. + config.email_regexp = /\A[^@\s]+@[^@\s]+\z/ + + # ==> Configuration for :timeoutable + # The time you want to timeout the user session without activity. After this + # time the user will be asked for credentials again. Default is 30 minutes. + # config.timeout_in = 30.minutes + + # ==> Configuration for :lockable + # Defines which strategy will be used to lock an account. + # :failed_attempts = Locks an account after a number of failed attempts to sign in. + # :none = No lock strategy. You should handle locking by yourself. + # config.lock_strategy = :failed_attempts + + # Defines which key will be used when locking and unlocking an account + # config.unlock_keys = [:email] + + # Defines which strategy will be used to unlock an account. + # :email = Sends an unlock link to the user email + # :time = Re-enables login after a certain amount of time (see :unlock_in below) + # :both = Enables both strategies + # :none = No unlock strategy. You should handle unlocking by yourself. + # config.unlock_strategy = :both + + # Number of authentication tries before locking an account if lock_strategy + # is failed attempts. + # config.maximum_attempts = 20 + + # Time interval to unlock the account if :time is enabled as unlock_strategy. + # config.unlock_in = 1.hour + + # Warn on the last attempt before the account is locked. + # config.last_attempt_warning = true + + # ==> Configuration for :recoverable + # + # Defines which key will be used when recovering the password for an account + # config.reset_password_keys = [:email] + + # Time interval you can reset your password with a reset password key. + # Don't put a too small interval or your users won't have the time to + # change their passwords. + config.reset_password_within = 6.hours + + # When set to false, does not sign a user in automatically after their password is + # reset. Defaults to true, so a user is signed in automatically after a reset. + # config.sign_in_after_reset_password = true + + # ==> Configuration for :encryptable + # Allow you to use another hashing or encryption algorithm besides bcrypt (default). + # You can use :sha1, :sha512 or algorithms from others authentication tools as + # :clearance_sha1, :authlogic_sha512 (then you should set stretches above to 20 + # for default behavior) and :restful_authentication_sha1 (then you should set + # stretches to 10, and copy REST_AUTH_SITE_KEY to pepper). + # + # Require the `devise-encryptable` gem when using anything other than bcrypt + # config.encryptor = :sha512 + + # ==> Scopes configuration + # Turn scoped views on. Before rendering "sessions/new", it will first check for + # "users/sessions/new". It's turned off by default because it's slower if you + # are using only default views. + # config.scoped_views = false + + # Configure the default scope given to Warden. By default it's the first + # devise role declared in your routes (usually :user). + # config.default_scope = :user + + # Set this configuration to false if you want /users/sign_out to sign out + # only the current scope. By default, Devise signs out all scopes. + # config.sign_out_all_scopes = true + + # ==> Navigation configuration + # Lists the formats that should be treated as navigational. Formats like + # :html, should redirect to the sign in page when the user does not have + # access, but formats like :xml or :json, should return 401. + # + # If you have any extra navigational formats, like :iphone or :mobile, you + # should add them to the navigational formats lists. + # + # The "*/*" below is required to match Internet Explorer requests. + # config.navigational_formats = ['*/*', :html] + + # The default HTTP method used to sign out a resource. Default is :delete. + config.sign_out_via = :delete + + # ==> OmniAuth + # Add a new OmniAuth provider. Check the wiki for more information on setting + # up on your models and hooks. + config.omniauth( + :github, + Rails.application.credentials.dig( + :devise, + :omniauth, + :github, + :client_id + ), + Rails.application.credentials.dig( + :devise, + :omniauth, + :github, + :client_secret + ), + scope: "read:user,user:email" + ) + + # ==> Warden configuration + # If you want to use other strategies, that are not supported by Devise, or + # change the failure app, you can configure them inside the config.warden block. + # + # config.warden do |manager| + # manager.intercept_401 = false + # manager.default_strategies(scope: :user).unshift :some_external_strategy + # end + + # ==> Mountable engine configurations + # When using Devise inside an engine, let's call it `MyEngine`, and this engine + # is mountable, there are some extra configurations to be taken into account. + # The following options are available, assuming the engine is mounted as: + # + # mount MyEngine, at: '/my_engine' + # + # The router that invoked `devise_for`, in the example above, would be: + # config.router_name = :my_engine + # + # When using OmniAuth, Devise cannot automatically set OmniAuth path, + # so you need to do it manually. For the users scope, it would be: + # config.omniauth_path_prefix = '/my_engine/users/auth' + + # ==> Turbolinks configuration + # If your app is using Turbolinks, Turbolinks::Controller needs to be included to make redirection work correctly: + # + # ActiveSupport.on_load(:devise_failure_app) do + # include Turbolinks::Controller + # end + + # ==> Configuration for :registerable + + # When set to false, does not sign a user in automatically after their password is + # changed. Defaults to true, so a user is signed in automatically after changing a password. + # config.sign_in_after_change_password = true + OmniAuth.config.full_host = Rails.application.config.defaults[:urls][:app] +end diff --git a/projects/lab/config/initializers/dotenv.rb b/projects/lab/config/initializers/dotenv.rb new file mode 100644 index 000000000..d80bb4ad6 --- /dev/null +++ b/projects/lab/config/initializers/dotenv.rb @@ -0,0 +1,6 @@ +# typed: strict +# frozen_string_literal: true + +require "dotenv-rails" + +# Dotenv.require_keys("DATABASE_URL", "BASE_URL") diff --git a/projects/lab/config/initializers/filter_parameter_logging.rb b/projects/lab/config/initializers/filter_parameter_logging.rb new file mode 100644 index 000000000..f742cb50a --- /dev/null +++ b/projects/lab/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,7 @@ +# typed: ignore +# frozen_string_literal: true + +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn] diff --git a/projects/lab/config/initializers/inflections.rb b/projects/lab/config/initializers/inflections.rb new file mode 100644 index 000000000..a7eb6665f --- /dev/null +++ b/projects/lab/config/initializers/inflections.rb @@ -0,0 +1,18 @@ +# typed: strict +# frozen_string_literal: true +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +ActiveSupport::Inflector.inflections(:en) do |inflect| + inflect.acronym("GitHub") +end diff --git a/projects/lab/config/initializers/mime_types.rb b/projects/lab/config/initializers/mime_types.rb new file mode 100644 index 000000000..d84ba7e7a --- /dev/null +++ b/projects/lab/config/initializers/mime_types.rb @@ -0,0 +1,6 @@ +# typed: strict +# frozen_string_literal: true +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/projects/lab/config/initializers/permissions_policy.rb b/projects/lab/config/initializers/permissions_policy.rb new file mode 100644 index 000000000..b61706fff --- /dev/null +++ b/projects/lab/config/initializers/permissions_policy.rb @@ -0,0 +1,13 @@ +# typed: strict +# frozen_string_literal: true +# Define an application-wide HTTP permissions policy. For further +# information see https://developers.google.com/web/updates/2018/06/feature-policy +# +# Rails.application.config.permissions_policy do |f| +# f.camera :none +# f.gyroscope :none +# f.microphone :none +# f.usb :none +# f.fullscreen :self +# f.payment :self, "https://secure.example.com" +# end diff --git a/projects/lab/config/initializers/rails_admin.rb b/projects/lab/config/initializers/rails_admin.rb new file mode 100644 index 000000000..990970017 --- /dev/null +++ b/projects/lab/config/initializers/rails_admin.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true +require "nested_form/engine" +require "nested_form/builder_mixin" + +RailsAdmin.config do |config| + ### Popular gems integration + + ## == Devise == + config.authenticate_with do + warden.authenticate!(scope: :user) + end + config.authorize_with do |_| + AdminPolicy.new(current_user, nil).access? + end + + config.current_user_method(&:current_user) + + ## == CancanCan == + # config.authorize_with :cancancan + + ## == Pundit == + # config.authorize_with(:pundit) + + ## == PaperTrail == + # config.audit_with :paper_trail, 'User', 'PaperTrail::Version' # PaperTrail >= 3.0.0 + + ### More at https://github.com/sferik/rails_admin/wiki/Base-configuration + + ## == Gravatar integration == + ## To disable Gravatar integration in Navigation Bar set to false + config.show_gravatar = true + + config.actions do + dashboard # mandatory + index # mandatory + new + export + bulk_delete + show + edit + delete + show_in_app + + ## With an audit adapter, you can add: + # history_index + # history_show + end +end diff --git a/projects/lab/config/initializers/rolify.rb b/projects/lab/config/initializers/rolify.rb new file mode 100644 index 000000000..dfead44dc --- /dev/null +++ b/projects/lab/config/initializers/rolify.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true +Rolify.configure do |config| + # By default ORM adapter is ActiveRecord. uncomment to use mongoid + # config.use_mongoid + + # Dynamic shortcuts for User class (user.is_admin? like methods). Default is: false + # config.use_dynamic_shortcuts + + # Configuration to remove roles from database once the last resource is removed. Default is: true + # config.remove_role_if_empty = false +end diff --git a/projects/lab/config/initializers/sidekiq.rb b/projects/lab/config/initializers/sidekiq.rb new file mode 100644 index 000000000..e572d3625 --- /dev/null +++ b/projects/lab/config/initializers/sidekiq.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +if Rails.env.production? + url = ENV.fetch("REDIS_URL") + sidekiq_config = { url: url } + + Sidekiq.default_worker_options = { retry: 2 } + + Sidekiq.configure_server do |config| + config.redis = sidekiq_config + end + + Sidekiq.configure_client do |config| + config.redis = sidekiq_config + end +end diff --git a/projects/lab/config/initializers/smtp.rb b/projects/lab/config/initializers/smtp.rb new file mode 100644 index 000000000..b0fbbba2c --- /dev/null +++ b/projects/lab/config/initializers/smtp.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true +# ActionMailer::Base.smtp_settings = { +# domain: "tuist.io", +# address: "smtp.sendgrid.net", +# port: 587, +# authentication: :plain, +# user_name: "apikey", +# password: Rails.application.credentials.sendgrid[:api_key], +# } diff --git a/projects/lab/config/initializers/warden.rb b/projects/lab/config/initializers/warden.rb new file mode 100644 index 000000000..c303b4777 --- /dev/null +++ b/projects/lab/config/initializers/warden.rb @@ -0,0 +1,2 @@ +# frozen_string_literal: true +Warden::Strategies.add(:api_token, ApiTokenDeviseStrategy) diff --git a/projects/lab/config/initializers/webpacker.rb b/projects/lab/config/initializers/webpacker.rb new file mode 100644 index 000000000..68685110f --- /dev/null +++ b/projects/lab/config/initializers/webpacker.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true +Webpacker::Compiler.env["BASE_URL"] = Rails.application.config.defaults[:urls][:app] +if Rails.env.production? + Webpacker::Compiler.env["BUGSNAG_FRONTEND_API_KEY"] = Rails.application.credentials[:bugsnag][:frontend_api_key] +end diff --git a/projects/lab/config/initializers/wrap_parameters.rb b/projects/lab/config/initializers/wrap_parameters.rb new file mode 100644 index 000000000..5da9c97fb --- /dev/null +++ b/projects/lab/config/initializers/wrap_parameters.rb @@ -0,0 +1,17 @@ +# typed: false +# frozen_string_literal: true + +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/projects/lab/config/locales/devise.en.yml b/projects/lab/config/locales/devise.en.yml new file mode 100644 index 000000000..ab1f07060 --- /dev/null +++ b/projects/lab/config/locales/devise.en.yml @@ -0,0 +1,65 @@ +# Additional translations at https://github.com/heartcombo/devise/wiki/I18n + +en: + devise: + confirmations: + confirmed: "Your email address has been successfully confirmed." + send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes." + send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes." + failure: + already_authenticated: "You are already signed in." + inactive: "Your account is not activated yet." + invalid: "Invalid %{authentication_keys} or password." + locked: "Your account is locked." + last_attempt: "You have one more attempt before your account is locked." + not_found_in_database: "Invalid %{authentication_keys} or password." + timeout: "Your session expired. Please sign in again to continue." + unauthenticated: "You need to sign in or sign up before continuing." + unconfirmed: "You have to confirm your email address before continuing." + mailer: + confirmation_instructions: + subject: "Confirmation instructions" + reset_password_instructions: + subject: "Reset password instructions" + unlock_instructions: + subject: "Unlock instructions" + email_changed: + subject: "Email Changed" + password_change: + subject: "Password Changed" + omniauth_callbacks: + failure: "Could not authenticate you from %{kind} because \"%{reason}\"." + success: "Successfully authenticated from %{kind} account." + passwords: + no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided." + send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes." + send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." + updated: "Your password has been changed successfully. You are now signed in." + updated_not_active: "Your password has been changed successfully." + registrations: + destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon." + signed_up: "Welcome! You have signed up successfully." + signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated." + signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked." + signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account." + update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirmation link to confirm your new email address." + updated: "Your account has been updated successfully." + updated_but_not_signed_in: "Your account has been updated successfully, but since your password was changed, you need to sign in again" + sessions: + signed_in: "Signed in successfully." + signed_out: "Signed out successfully." + already_signed_out: "Signed out successfully." + unlocks: + send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes." + send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes." + unlocked: "Your account has been unlocked successfully. Please sign in to continue." + errors: + messages: + already_confirmed: "was already confirmed, please try signing in" + confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one" + expired: "has expired, please request a new one" + not_found: "not found" + not_locked: "was not locked" + not_saved: + one: "1 error prohibited this %{resource} from being saved:" + other: "%{count} errors prohibited this %{resource} from being saved:" diff --git a/projects/lab/config/locales/en.yml b/projects/lab/config/locales/en.yml new file mode 100644 index 000000000..cf9b342d0 --- /dev/null +++ b/projects/lab/config/locales/en.yml @@ -0,0 +1,33 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# The following keys must be escaped otherwise they will not be retrieved by +# the default I18n backend: +# +# true, false, on, off, yes, no +# +# Instead, surround them with single quotes. +# +# en: +# 'true': 'foo' +# +# To learn more, please read the Rails Internationalization guide +# available at https://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/projects/lab/config/puma.rb b/projects/lab/config/puma.rb new file mode 100644 index 000000000..e8e550ee5 --- /dev/null +++ b/projects/lab/config/puma.rb @@ -0,0 +1,46 @@ +# typed: false +# frozen_string_literal: true + +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers: a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum; this matches the default thread size of Active Record. +# +max_threads_count = ENV.fetch("RAILS_MAX_THREADS", 5) +min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } +threads min_threads_count, max_threads_count + +# Specifies the `worker_timeout` threshold that Puma will use to wait before +# terminating a worker in development environments. +# +worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development" + +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +# +port ENV.fetch("PORT", 3000) + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV", "development") + +# Specifies the `pidfile` that Puma will use. +pidfile ENV.fetch("PIDFILE", "tmp/pids/server.pid") + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked web server processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +workers ENV.fetch("WEB_CONCURRENCY", 4) + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. +# +preload_app! + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/projects/lab/config/routes.rb b/projects/lab/config/routes.rb new file mode 100644 index 000000000..a4abc201c --- /dev/null +++ b/projects/lab/config/routes.rb @@ -0,0 +1,30 @@ +# typed: ignore +# frozen_string_literal: true +require "sidekiq/web" + +Rails.application.routes.draw do + if Rails.env.development? + mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "/graphql" + end + post "/graphql", to: "graphql#execute" + mount RailsAdmin::Engine => "/admin", as: "rails_admin" + + # Devise + devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" } + + authenticate :user, lambda { |u| u.has_role?(:admin) } do + mount Sidekiq::Web => "/sidekiq" + end + + # API + defaults format: :json do + scope :api do + post "/upload", to: "api#upload" + end + end + + # Landing + root to: "app#index" + get "/", to: "app#index", as: :app + get "*path", to: "app#index" +end diff --git a/projects/lab/config/sidekiq.yml b/projects/lab/config/sidekiq.yml new file mode 100644 index 000000000..3cda2dac2 --- /dev/null +++ b/projects/lab/config/sidekiq.yml @@ -0,0 +1,10 @@ +--- +:concurrency: 5 +:verbose: true +:timeout: 25 +:queues: + - default + - mailers +:schedule: + # TestJob: + # cron: '0 8 * * *' # Runs once per minute diff --git a/projects/lab/config/spring.rb b/projects/lab/config/spring.rb new file mode 100644 index 000000000..7cb841153 --- /dev/null +++ b/projects/lab/config/spring.rb @@ -0,0 +1,9 @@ +# typed: ignore +# frozen_string_literal: true + +Spring.watch( + ".ruby-version", + ".rbenv-vars", + "tmp/restart.txt", + "tmp/caching-dev.txt" +) diff --git a/projects/lab/config/storage.yml b/projects/lab/config/storage.yml new file mode 100644 index 000000000..d32f76e8f --- /dev/null +++ b/projects/lab/config/storage.yml @@ -0,0 +1,34 @@ +test: + service: Disk + root: <%= Rails.root.join("tmp/storage") %> + +local: + service: Disk + root: <%= Rails.root.join("storage") %> + +# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# amazon: +# service: S3 +# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> +# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> +# region: us-east-1 +# bucket: your_own_bucket + +# Remember not to checkin your GCS keyfile to a repository +# google: +# service: GCS +# project: your_project +# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> +# bucket: your_own_bucket + +# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# microsoft: +# service: AzureStorage +# storage_account_name: your_account_name +# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> +# container: your_container_name + +# mirror: +# service: Mirror +# primary: local +# mirrors: [ amazon, google, microsoft ] diff --git a/projects/lab/config/webpack/development.js b/projects/lab/config/webpack/development.js new file mode 100644 index 000000000..7f3342f96 --- /dev/null +++ b/projects/lab/config/webpack/development.js @@ -0,0 +1,5 @@ +process.env.NODE_ENV = process.env.NODE_ENV || "development"; + +const environment = require("./environment"); + +module.exports = environment.toWebpackConfig(); diff --git a/projects/lab/config/webpack/environment.js b/projects/lab/config/webpack/environment.js new file mode 100644 index 000000000..e8920a7ae --- /dev/null +++ b/projects/lab/config/webpack/environment.js @@ -0,0 +1,22 @@ +/* eslint-disable */ +const { environment } = require('@rails/webpacker'); +const webpack = require('webpack'); +/* eslint-enable */ + +let ENVIRONMENT = process.env.NODE_ENV; +if (!ENVIRONMENT) { + ENVIRONMENT = 'development'; +} + +environment.plugins.append( + 'DefinePlugin', + new webpack.DefinePlugin({ + BASE_URL: JSON.stringify(process.env.BASE_URL), + BUGSNAG_FRONTEND_API_KEY: JSON.stringify( + process.env.BUGSNAG_FRONTEND_API_KEY, + ), + ENVIRONMENT: JSON.stringify(ENVIRONMENT), + }), +); + +module.exports = environment; diff --git a/projects/lab/config/webpack/production.js b/projects/lab/config/webpack/production.js new file mode 100644 index 000000000..b27aee537 --- /dev/null +++ b/projects/lab/config/webpack/production.js @@ -0,0 +1,28 @@ +const { + BugsnagSourceMapUploaderPlugin, + BugsnagBuildReporterPlugin, +} = require("webpack-bugsnag-plugins"); + +process.env.NODE_ENV = process.env.NODE_ENV || "production"; + +const environment = require("./environment"); +const bugsnagApiKey = "4b8674da082f9f4f779936212d6d60d8"; + +if (!process.env.CI) { + environment.plugins.append( + "BugsnagBuildReporterPlugin", + new BugsnagBuildReporterPlugin({ + apiKey: bugsnagApiKey, + }) + ); + + environment.plugins.append( + "BugsnagSourceMapUploaderPlugin", + new BugsnagSourceMapUploaderPlugin({ + apiKey: bugsnagApiKey, + overwrite: true, + }) + ); +} + +module.exports = environment.toWebpackConfig(); diff --git a/projects/lab/config/webpack/test.js b/projects/lab/config/webpack/test.js new file mode 100644 index 000000000..c5edff94a --- /dev/null +++ b/projects/lab/config/webpack/test.js @@ -0,0 +1,5 @@ +process.env.NODE_ENV = process.env.NODE_ENV || 'development' + +const environment = require('./environment') + +module.exports = environment.toWebpackConfig() diff --git a/projects/lab/config/webpacker.yml b/projects/lab/config/webpacker.yml new file mode 100644 index 000000000..e550c32e9 --- /dev/null +++ b/projects/lab/config/webpacker.yml @@ -0,0 +1,95 @@ +# Note: You must restart bin/webpack-dev-server for changes to take effect + +default: &default + source_path: app/javascript + source_entry_path: packs + public_root_path: public + public_output_path: packs + cache_path: tmp/cache/webpacker + webpack_compile_output: true + + # Additional paths webpack should lookup modules + # ['app/assets', 'engine/foo/app/assets'] + additional_paths: [] + + # Reload manifest.json on all requests so we reload latest compiled packs + cache_manifest: false + + # Extract and emit a css file + extract_css: false + + static_assets_extensions: + - .jpg + - .jpeg + - .png + - .gif + - .tiff + - .ico + - .svg + - .eot + - .otf + - .ttf + - .woff + - .woff2 + + extensions: + - .tsx + - .ts + - .jsx + - .mjs + - .js + - .sass + - .scss + - .css + - .module.sass + - .module.scss + - .module.css + - .png + - .svg + - .gif + - .jpeg + - .jpg + +development: + <<: *default + compile: true + + # Reference: https://webpack.js.org/configuration/dev-server/ + dev_server: + https: false + host: localhost + port: 3035 + public: localhost:3035 + hmr: false + # Inline should be set to true if using HMR + inline: true + overlay: true + compress: true + disable_host_check: true + use_local_ip: false + quiet: false + pretty: false + headers: + 'Access-Control-Allow-Origin': '*' + watch_options: + ignored: '**/node_modules/**' + + +test: + <<: *default + compile: true + + # Compile test packs to a separate directory + public_output_path: packs-test + +production: + <<: *default + + # Production depends on precompilation of packs prior to booting for performance. + compile: false + + # Extract and emit a css file + extract_css: true + + # Cache manifest.json for performance + cache_manifest: true diff --git a/projects/lab/db/migrate/20210418163728_devise_create_users.rb b/projects/lab/db/migrate/20210418163728_devise_create_users.rb new file mode 100644 index 000000000..d9c761f58 --- /dev/null +++ b/projects/lab/db/migrate/20210418163728_devise_create_users.rb @@ -0,0 +1,44 @@ +# typed: ignore +# frozen_string_literal: true + +class DeviseCreateUsers < ActiveRecord::Migration[6.1] + def change + create_table(:users) do |t| + ## Database authenticatable + t.string(:email, null: false, default: "") + t.string(:encrypted_password, null: false, default: "") + + ## Recoverable + t.string(:reset_password_token) + t.datetime(:reset_password_sent_at) + + ## Rememberable + t.datetime(:remember_created_at) + + ## Trackable + t.integer(:sign_in_count, default: 0, null: false) + t.datetime(:current_sign_in_at) + t.datetime(:last_sign_in_at) + t.string(:current_sign_in_ip) + t.string(:last_sign_in_ip) + + ## Confirmable + t.string(:confirmation_token) + t.datetime(:confirmed_at) + t.datetime(:confirmation_sent_at) + t.string(:unconfirmed_email) # Only if using reconfirmable + + ## Lockable + t.integer(:failed_attempts, default: 0, null: false) # Only if lock strategy is :failed_attempts + t.string(:unlock_token) # Only if unlock strategy is :email or :both + t.datetime(:locked_at) + + t.timestamps(null: false) + end + + add_index(:users, :email, unique: true) + add_index(:users, :reset_password_token, unique: true) + add_index(:users, :confirmation_token, unique: true) + add_index(:users, :unlock_token, unique: true) + end +end diff --git a/projects/lab/db/migrate/20210613100300_rolify_create_roles.rb b/projects/lab/db/migrate/20210613100300_rolify_create_roles.rb new file mode 100644 index 000000000..4a9f2f3c3 --- /dev/null +++ b/projects/lab/db/migrate/20210613100300_rolify_create_roles.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true +class RolifyCreateRoles < ActiveRecord::Migration[6.1] + def change + create_table(:roles) do |t| + t.string(:name) + t.references(:resource, polymorphic: true) + + t.timestamps + end + + create_table(:users_roles, id: false) do |t| + t.references(:user) + t.references(:role) + + t.timestamps + end + + add_index(:roles, [:name, :resource_type, :resource_id]) + add_index(:users_roles, [:user_id, :role_id]) + end +end diff --git a/projects/lab/db/migrate/20210613165945_add_account_model.rb b/projects/lab/db/migrate/20210613165945_add_account_model.rb new file mode 100644 index 000000000..7a4c97fb8 --- /dev/null +++ b/projects/lab/db/migrate/20210613165945_add_account_model.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true +class AddAccountModel < ActiveRecord::Migration[6.1] + def change + create_table(:accounts) do |t| + t.string(:name, null: false, limit: 30) + t.references(:owner, null: false, polymorphic: true) + + t.timestamps + end + create_table(:organizations, &:timestamps) + end +end diff --git a/projects/lab/db/migrate/20210613171635_add_project_model.rb b/projects/lab/db/migrate/20210613171635_add_project_model.rb new file mode 100644 index 000000000..52053c0cb --- /dev/null +++ b/projects/lab/db/migrate/20210613171635_add_project_model.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true +class AddProjectModel < ActiveRecord::Migration[6.1] + def change + create_table(:projects) do |t| + t.string(:name, null: false, limit: 30) + t.references(:account, null: false) + t.timestamps + end + end +end diff --git a/projects/lab/db/migrate/20210613173247_add_index_to_account_name.rb b/projects/lab/db/migrate/20210613173247_add_index_to_account_name.rb new file mode 100644 index 000000000..95e033b80 --- /dev/null +++ b/projects/lab/db/migrate/20210613173247_add_index_to_account_name.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true +class AddIndexToAccountName < ActiveRecord::Migration[6.1] + def change + change_table(:accounts) do |t| + t.index(:name, unique: true) + end + end +end diff --git a/projects/lab/db/migrate/20210613174835_add_uniqueness_to_accounts_owner.rb b/projects/lab/db/migrate/20210613174835_add_uniqueness_to_accounts_owner.rb new file mode 100644 index 000000000..b72e53315 --- /dev/null +++ b/projects/lab/db/migrate/20210613174835_add_uniqueness_to_accounts_owner.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true +class AddUniquenessToAccountsOwner < ActiveRecord::Migration[6.1] + def change + change_table(:accounts) do |t| + t.index([:owner_id, :owner_type], unique: true) + end + end +end diff --git a/projects/lab/db/migrate/20210616152823_add_authorizations.rb b/projects/lab/db/migrate/20210616152823_add_authorizations.rb new file mode 100644 index 000000000..f1b0a7b4b --- /dev/null +++ b/projects/lab/db/migrate/20210616152823_add_authorizations.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true +class AddAuthorizations < ActiveRecord::Migration[6.1] + def change + create_table("authorizations", force: :cascade) do |t| + t.integer("user_id") + t.string("provider") + t.string("uid") + t.string("email") + + # t.string "encrypted_token" + # t.string "encrypted_secret" + # t.string "encrypted_refresh_token" + # t.boolean "expires" + # t.datetime "expires_at" + t.datetime("created_at", precision: 6, null: false) + t.datetime("updated_at", precision: 6, null: false) + t.index( + ["provider", "uid"], + name: "index_authorizations_on_provider_and_uid", + unique: true + ) + t.index(["provider"], name: "index_authorizations_on_provider") + t.index(["uid"], name: "index_authorizations_on_uid") + t.index(["user_id"], name: "index_authorizations_on_user_id") + end + end +end diff --git a/projects/lab/db/migrate/20210626090126_add_token_and_repository_columns_to_projects.rb b/projects/lab/db/migrate/20210626090126_add_token_and_repository_columns_to_projects.rb new file mode 100644 index 000000000..82a0e1624 --- /dev/null +++ b/projects/lab/db/migrate/20210626090126_add_token_and_repository_columns_to_projects.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true +class AddTokenAndRepositoryColumnsToProjects < ActiveRecord::Migration[6.1] + def change + change_table("projects", bulk: true) do |t| + t.string(:repository_full_name, null: false, limit: 30) + t.string(:api_token, null: false, limit: 30) + end + + add_index(:projects, :api_token, unique: true) + end +end diff --git a/projects/lab/db/schema.rb b/projects/lab/db/schema.rb new file mode 100644 index 000000000..19311e999 --- /dev/null +++ b/projects/lab/db/schema.rb @@ -0,0 +1,104 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# This file is the source Rails uses to define your schema when running `bin/rails +# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 2021_06_26_090126) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" + + create_table "accounts", force: :cascade do |t| + t.string "name", limit: 30, null: false + t.string "owner_type", null: false + t.bigint "owner_id", null: false + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["name"], name: "index_accounts_on_name", unique: true + t.index ["owner_id", "owner_type"], name: "index_accounts_on_owner_id_and_owner_type", unique: true + t.index ["owner_type", "owner_id"], name: "index_accounts_on_owner" + end + + create_table "authorizations", force: :cascade do |t| + t.integer "user_id" + t.string "provider" + t.string "uid" + t.string "email" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["provider", "uid"], name: "index_authorizations_on_provider_and_uid", unique: true + t.index ["provider"], name: "index_authorizations_on_provider" + t.index ["uid"], name: "index_authorizations_on_uid" + t.index ["user_id"], name: "index_authorizations_on_user_id" + end + + create_table "organizations", force: :cascade do |t| + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + + create_table "projects", force: :cascade do |t| + t.string "name", limit: 30, null: false + t.bigint "account_id", null: false + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.string "repository_full_name", limit: 30, null: false + t.string "api_token", limit: 30, null: false + t.index ["account_id"], name: "index_projects_on_account_id" + t.index ["api_token"], name: "index_projects_on_api_token", unique: true + end + + create_table "roles", force: :cascade do |t| + t.string "name" + t.string "resource_type" + t.bigint "resource_id" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id" + t.index ["resource_type", "resource_id"], name: "index_roles_on_resource" + end + + create_table "users", force: :cascade do |t| + t.string "email", default: "", null: false + t.string "encrypted_password", default: "", null: false + t.string "reset_password_token" + t.datetime "reset_password_sent_at" + t.datetime "remember_created_at" + t.integer "sign_in_count", default: 0, null: false + t.datetime "current_sign_in_at" + t.datetime "last_sign_in_at" + t.string "current_sign_in_ip" + t.string "last_sign_in_ip" + t.string "confirmation_token" + t.datetime "confirmed_at" + t.datetime "confirmation_sent_at" + t.string "unconfirmed_email" + t.integer "failed_attempts", default: 0, null: false + t.string "unlock_token" + t.datetime "locked_at" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true + t.index ["email"], name: "index_users_on_email", unique: true + t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true + t.index ["unlock_token"], name: "index_users_on_unlock_token", unique: true + end + + create_table "users_roles", id: false, force: :cascade do |t| + t.bigint "user_id" + t.bigint "role_id" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["role_id"], name: "index_users_roles_on_role_id" + t.index ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id" + t.index ["user_id"], name: "index_users_roles_on_user_id" + end + +end diff --git a/projects/lab/db/seeds.rb b/projects/lab/db/seeds.rb new file mode 100644 index 000000000..f0d2d488b --- /dev/null +++ b/projects/lab/db/seeds.rb @@ -0,0 +1,9 @@ +# typed: strict +# frozen_string_literal: true +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup). +# +# Examples: +# +# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) +# Character.create(name: 'Luke', movie: movies.first) diff --git a/projects/lab/jest.config.js b/projects/lab/jest.config.js new file mode 100644 index 000000000..91a2d2c0d --- /dev/null +++ b/projects/lab/jest.config.js @@ -0,0 +1,4 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', +}; \ No newline at end of file diff --git a/projects/lab/lib/assets/.keep b/projects/lab/lib/assets/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/lib/tasks/.keep b/projects/lab/lib/tasks/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/log/.keep b/projects/lab/log/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/package.json b/projects/lab/package.json new file mode 100644 index 000000000..a26d00e8d --- /dev/null +++ b/projects/lab/package.json @@ -0,0 +1,72 @@ +{ + "name": "swift-docs", + "private": true, + "scripts": { + "type-check": "tsc", + "lint": "yarn eslint app", + "test": "jest app/javascript", + "generate": "bin/rails graphql:schema:dump && graphql-codegen --config codegen.yml" + }, + "dependencies": { + "@apollo/client": "^3.3.20", + "@babel/preset-react": "^7.14.5", + "@babel/preset-typescript": "^7.14.5", + "@bugsnag/js": "^7.10.1", + "@bugsnag/plugin-react": "^7.10.0", + "@graphql-codegen/cli": "^1.21.7", + "@graphql-codegen/typescript": "^1.23.0", + "@graphql-codegen/typescript-operations": "^1.18.2", + "@graphql-codegen/typescript-react-apollo": "^2.2.7", + "@prettier/plugin-ruby": "^1.5.5", + "@rails/actioncable": "^6.1.4", + "@rails/activestorage": "^6.0.0", + "@rails/ujs": "^6.0.3-7", + "@rails/webpacker": "5.4.0", + "@shopify/polaris": "^6.5.0", + "@shopify/polaris-icons": "^4.6.2", + "@tailwindcss/forms": "^0.3.3", + "@tailwindcss/typography": "^0.4.1", + "@types/jest": "^26.0.23", + "@types/react": "^17.0.11", + "@types/react-dom": "^17.0.8", + "apollo-link": "^1.2.14", + "apollo-link-http": "^1.5.17", + "autoprefixer": "^9", + "axios": "^0.21.1", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", + "graphql": "^15.5.1", + "jest": "^27.0.5", + "postcss": "^8.3.5", + "prettier": "^2.3.2", + "prop-types": "^15.7.2", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-helmet": "^6.1.0", + "react-hook-form": "^7.9.0", + "react-router-dom": "^5.2.0", + "react_ujs": "^2.6.1", + "tailwindcss": "npm:@tailwindcss/postcss7-compat", + "ts-jest": "^27.0.3", + "typescript": "^4.3.4", + "webpack": "^4.46.0", + "webpack-bugsnag-plugins": "^1.7.0", + "webpack-cli": "^3.3.12", + "webpack-dev-server": "^3.11.2" + }, + "engines": { + "node": "16.4.0", + "yarn": "1.22.10" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^4.28.1", + "@typescript-eslint/parser": "^4.28.1", + "eslint": "^7.29.0", + "eslint-config-airbnb": "^18.2.1", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-react": "^7.24.0", + "eslint-plugin-react-hooks": "^4.2.0" + } +} diff --git a/projects/lab/postcss.config.js b/projects/lab/postcss.config.js new file mode 100644 index 000000000..b6d2f5a1b --- /dev/null +++ b/projects/lab/postcss.config.js @@ -0,0 +1,16 @@ +/* eslint-disable */ +module.exports = { + plugins: [ + require('tailwindcss')( + './app/javascript/stylesheets/tailwind.config.js', + ), + require('postcss-import'), + require('postcss-flexbugs-fixes'), + require('postcss-preset-env')({ + autoprefixer: { + flexbox: 'no-2009', + }, + stage: 3, + }), + ], +}; diff --git a/projects/lab/public/404.html b/projects/lab/public/404.html new file mode 100644 index 000000000..2be3af26f --- /dev/null +++ b/projects/lab/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +

+ + diff --git a/projects/lab/public/422.html b/projects/lab/public/422.html new file mode 100644 index 000000000..c08eac0d1 --- /dev/null +++ b/projects/lab/public/422.html @@ -0,0 +1,67 @@ + + + + The change you wanted was rejected (422) + + + + + + +
+
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/projects/lab/public/500.html b/projects/lab/public/500.html new file mode 100644 index 000000000..78a030af2 --- /dev/null +++ b/projects/lab/public/500.html @@ -0,0 +1,66 @@ + + + + We're sorry, but something went wrong (500) + + + + + + +
+
+

We're sorry, but something went wrong.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/projects/lab/public/apple-touch-icon-precomposed.png b/projects/lab/public/apple-touch-icon-precomposed.png new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/public/apple-touch-icon.png b/projects/lab/public/apple-touch-icon.png new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/public/favicon.ico b/projects/lab/public/favicon.ico new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/public/robots.txt b/projects/lab/public/robots.txt new file mode 100644 index 000000000..c19f78ab6 --- /dev/null +++ b/projects/lab/public/robots.txt @@ -0,0 +1 @@ +# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file diff --git a/projects/lab/schema.graphql b/projects/lab/schema.graphql new file mode 100644 index 000000000..0cf5e293f --- /dev/null +++ b/projects/lab/schema.graphql @@ -0,0 +1,64 @@ +type Mutation { + """ + Create a new organization + """ + organizationCreate( + """ + Parameters for OrganizationCreate + """ + input: OrganizationCreateInput! + ): OrganizationCreatePayload +} + +type Organization { + id: String! + name: String! +} + +""" +Autogenerated input type of OrganizationCreate +""" +input OrganizationCreateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of the organization + """ + name: String! +} + +""" +Autogenerated return type of OrganizationCreate +""" +type OrganizationCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A list of errors if the creation of the organization failed + """ + errors: [String!]! + + """ + The created organization + """ + organization: Organization +} + +type Query { + """ + Returns the authenticated user. + """ + me: User! +} + +type User { + avatarUrl: String! + email: String! + id: String! +} diff --git a/projects/lab/schema.json b/projects/lab/schema.json new file mode 100644 index 000000000..d7ffa732b --- /dev/null +++ b/projects/lab/schema.json @@ -0,0 +1,1395 @@ +{ + "data": { + "__schema": { + "queryType": { + "name": "Query" + }, + "mutationType": { + "name": "Mutation" + }, + "subscriptionType": null, + "types": [ + { + "kind": "SCALAR", + "name": "Boolean", + "description": "Represents `true` or `false` values.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Mutation", + "description": null, + "fields": [ + { + "name": "organizationCreate", + "description": "Create a new organization", + "args": [ + { + "name": "input", + "description": "Parameters for OrganizationCreate", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "OrganizationCreateInput", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "OrganizationCreatePayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Organization", + "description": null, + "fields": [ + { + "name": "id", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "OrganizationCreateInput", + "description": "Autogenerated input type of OrganizationCreate", + "fields": null, + "inputFields": [ + { + "name": "name", + "description": "The name of the organization", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "OrganizationCreatePayload", + "description": "Autogenerated return type of OrganizationCreate", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "errors", + "description": "A list of errors if the creation of the organization failed", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "organization", + "description": "The created organization", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Organization", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Query", + "description": null, + "fields": [ + { + "name": "me", + "description": "Returns the authenticated user.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "String", + "description": "Represents textual data as UTF-8 character sequences. This type is most often used by GraphQL to represent free-form human-readable text.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "User", + "description": null, + "fields": [ + { + "name": "avatarUrl", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "email", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Directive", + "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", + "fields": [ + { + "name": "args", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "locations", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "__DirectiveLocation", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "onField", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": true, + "deprecationReason": "Use `locations`." + }, + { + "name": "onFragment", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": true, + "deprecationReason": "Use `locations`." + }, + { + "name": "onOperation", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": true, + "deprecationReason": "Use `locations`." + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "__DirectiveLocation", + "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "QUERY", + "description": "Location adjacent to a query operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MUTATION", + "description": "Location adjacent to a mutation operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SUBSCRIPTION", + "description": "Location adjacent to a subscription operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIELD", + "description": "Location adjacent to a field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FRAGMENT_DEFINITION", + "description": "Location adjacent to a fragment definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FRAGMENT_SPREAD", + "description": "Location adjacent to a fragment spread.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INLINE_FRAGMENT", + "description": "Location adjacent to an inline fragment.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SCHEMA", + "description": "Location adjacent to a schema definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SCALAR", + "description": "Location adjacent to a scalar definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OBJECT", + "description": "Location adjacent to an object type definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIELD_DEFINITION", + "description": "Location adjacent to a field definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ARGUMENT_DEFINITION", + "description": "Location adjacent to an argument definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INTERFACE", + "description": "Location adjacent to an interface definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UNION", + "description": "Location adjacent to a union definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM", + "description": "Location adjacent to an enum definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM_VALUE", + "description": "Location adjacent to an enum value definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_OBJECT", + "description": "Location adjacent to an input object type definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_FIELD_DEFINITION", + "description": "Location adjacent to an input object field definition.", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__EnumValue", + "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.", + "fields": [ + { + "name": "deprecationReason", + "description": null, + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Field", + "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.", + "fields": [ + { + "name": "args", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deprecationReason", + "description": null, + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__InputValue", + "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.", + "fields": [ + { + "name": "defaultValue", + "description": "A GraphQL-formatted string representing the default value for this input value.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deprecationReason", + "description": null, + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Schema", + "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.", + "fields": [ + { + "name": "directives", + "description": "A list of all directives supported by this server.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Directive", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mutationType", + "description": "If this server supports mutation, the type that mutation operations will be rooted at.", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "queryType", + "description": "The type that query operations will be rooted at.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "subscriptionType", + "description": "If this server support subscription, the type that subscription operations will be rooted at.", + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "types", + "description": "A list of all types supported by this server.", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Type", + "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name and description, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.", + "fields": [ + { + "name": "description", + "description": null, + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "enumValues", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__EnumValue", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "fields", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Field", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inputFields", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "interfaces", + "description": null, + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "kind", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "__TypeKind", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ofType", + "description": null, + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "possibleTypes", + "description": null, + "args": [ + + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "__TypeKind", + "description": "An enum describing what kind of type a given `__Type` is.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "SCALAR", + "description": "Indicates this type is a scalar.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OBJECT", + "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INTERFACE", + "description": "Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UNION", + "description": "Indicates this type is a union. `possibleTypes` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM", + "description": "Indicates this type is an enum. `enumValues` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_OBJECT", + "description": "Indicates this type is an input object. `inputFields` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LIST", + "description": "Indicates this type is a list. `ofType` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NON_NULL", + "description": "Indicates this type is a non-null. `ofType` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + } + ], + "directives": [ + { + "name": "include", + "description": "Directs the executor to include this field or fragment only when the `if` argument is true.", + "locations": [ + "FIELD", + "FRAGMENT_SPREAD", + "INLINE_FRAGMENT" + ], + "args": [ + { + "name": "if", + "description": "Included when true.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ] + }, + { + "name": "skip", + "description": "Directs the executor to skip this field or fragment when the `if` argument is true.", + "locations": [ + "FIELD", + "FRAGMENT_SPREAD", + "INLINE_FRAGMENT" + ], + "args": [ + { + "name": "if", + "description": "Skipped when true.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ] + }, + { + "name": "deprecated", + "description": "Marks an element of a GraphQL schema as no longer supported.", + "locations": [ + "FIELD_DEFINITION", + "ENUM_VALUE", + "ARGUMENT_DEFINITION", + "INPUT_FIELD_DEFINITION" + ], + "args": [ + { + "name": "reason", + "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/).", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": "\"No longer supported\"", + "isDeprecated": false, + "deprecationReason": null + } + ] + } + ] + } + } +} diff --git a/projects/lab/storage/.keep b/projects/lab/storage/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/test/application_system_test_case.rb b/projects/lab/test/application_system_test_case.rb new file mode 100644 index 000000000..280afc9af --- /dev/null +++ b/projects/lab/test/application_system_test_case.rb @@ -0,0 +1,8 @@ +# typed: ignore +# frozen_string_literal: true + +require "test_helper" + +class ApplicationSystemTestCase < ActionDispatch::SystemTestCase + driven_by :selenium, using: :chrome, screen_size: [1400, 1400] +end diff --git a/projects/lab/test/channels/application_cable/connection_test.rb b/projects/lab/test/channels/application_cable/connection_test.rb new file mode 100644 index 000000000..b94815a85 --- /dev/null +++ b/projects/lab/test/channels/application_cable/connection_test.rb @@ -0,0 +1,16 @@ +# typed: ignore +# frozen_string_literal: true + +require "test_helper" + +# module ApplicationCable +# class ConnectionTest < ActionCable::Connection::TestCase +# # test "connects with cookies" do +# # cookies.signed[:user_id] = 42 +# # +# # connect +# # +# # assert_equal connection.user_id, "42" +# # end +# end +# end diff --git a/projects/lab/test/controllers/.keep b/projects/lab/test/controllers/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/test/fixtures/files/.keep b/projects/lab/test/fixtures/files/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/test/fixtures/roles.yml b/projects/lab/test/fixtures/roles.yml new file mode 100644 index 000000000..51816369f --- /dev/null +++ b/projects/lab/test/fixtures/roles.yml @@ -0,0 +1,11 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +# This model initially had no columns defined. If you add columns to the +# model remove the '{}' from the fixture names and add the columns immediately +# below each fixture, per the syntax in the comments below +# +one: {} +# column: value +# +two: {} +# column: value diff --git a/projects/lab/test/fixtures/users.yml b/projects/lab/test/fixtures/users.yml new file mode 100644 index 000000000..d2027cdd0 --- /dev/null +++ b/projects/lab/test/fixtures/users.yml @@ -0,0 +1,7 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +# This model initially had no columns defined. If you add columns to the +# model remove the '{}' from the fixture names and add the columns immediately +# below each fixture, per the syntax in the comments below +# +one: {} diff --git a/projects/lab/test/helpers/.keep b/projects/lab/test/helpers/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/test/integration/.keep b/projects/lab/test/integration/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/test/lib/environment_test.rb b/projects/lab/test/lib/environment_test.rb new file mode 100644 index 000000000..609e8a020 --- /dev/null +++ b/projects/lab/test/lib/environment_test.rb @@ -0,0 +1,7 @@ +# typed: strict +# frozen_string_literal: true + +require "test_helper" + +class EnvironmentTest < ActiveSupport::TestCase +end diff --git a/projects/lab/test/mailers/.keep b/projects/lab/test/mailers/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/test/models/account_test.rb b/projects/lab/test/models/account_test.rb new file mode 100644 index 000000000..43e2dd522 --- /dev/null +++ b/projects/lab/test/models/account_test.rb @@ -0,0 +1,75 @@ +# frozen_string_literal: true +require "test_helper" + +class AccountTest < ActiveSupport::TestCase + test "validates that name is at least 5 characters" do + # Given + subject = Account.new(name: "test") + + # When + subject.validate + + # Then + assert_includes subject.errors.details[:name], { error: :too_short, count: 5 } + end + + test "validates that name is at shorter than 30 characters" do + # Given + subject = Account.new(name: "testtesttesttesttesttesttesttesttesttesttest") + + # When + subject.validate + + # Then + assert_includes subject.errors.details[:name], { error: :too_long, count: 30 } + end + + test "validates that the name is present" do + # Given + subject = Account.new + + # When + subject.validate + + # Then + assert_includes subject.errors.details[:name], { error: :blank } + end + + test "validates that name is unique" do + # Given + first_owner = Organization.create! + second_owner = Organization.create! + Account.create!(owner: first_owner, name: "test-account") + account = Account.new(owner: second_owner, name: "test-account") + + # When + account.validate + + # Then + assert_includes account.errors.details[:name], { error: :taken, value: "test-account" } + end + + test "validates the uniqueness of the owner" do + # Given + owner = Organization.create! + Account.create!(owner: owner, name: "test-account") + account = Account.new(owner: owner, name: "test-account") + + # When + account.validate + + # Then + assert_includes account.errors.details[:owner_id], { error: :taken, value: owner.id } + end + + test "validates the format of the name" do + # Given + subject = Account.new(name: "invalid.name! test") + + # When + subject.validate + + # Then + assert_includes subject.errors.details[:name], { error: :invalid, value: subject.name } + end +end diff --git a/projects/lab/test/models/project_test.rb b/projects/lab/test/models/project_test.rb new file mode 100644 index 000000000..25d60e4b7 --- /dev/null +++ b/projects/lab/test/models/project_test.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true +require "test_helper" + +class ProjectTest < ActiveSupport::TestCase + test "validates that name is at least 5 characters" do + # Given + subject = Project.new(name: "test") + + # When + subject.validate + + # Then + assert_includes subject.errors.details[:name], { error: :too_short, count: 5 } + end + + test "validates that name is at shorter than 30 characters" do + # Given + subject = Project.new(name: "testtesttesttesttesttesttesttesttesttesttest") + + # When + subject.validate + + # Then + assert_includes subject.errors.details[:name], { error: :too_long, count: 30 } + end + + test "validates that repository_full_name has the right format" do + # Given + invalid = Project.new(repository_full_name: "test") + valid = Project.new(repository_full_name: "tuist/lab") + + invalid.validate + valid.validate + + assert_includes( + invalid.errors.details[:repository_full_name], + { error: :invalid, value: "test" } + ) + assert_empty valid.errors.details[:repository_full_name] + end + + test "api_token gets generated on save if it doesn't exist" do + # Given + user = User.create!(email: "test@tuist.io", password: Devise.friendly_token) + account = Account.create!(owner: user, name: "test-account") + + # When + project = Project.create!( + name: "test-project", + repository_full_name: "tuist/lab", + account: account + ) + + # Then + assert_not project.api_token.blank? + end +end diff --git a/projects/lab/test/models/role_test.rb b/projects/lab/test/models/role_test.rb new file mode 100644 index 000000000..33fb2accf --- /dev/null +++ b/projects/lab/test/models/role_test.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true +require "test_helper" + +class RoleTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/projects/lab/test/models/user_test.rb b/projects/lab/test/models/user_test.rb new file mode 100644 index 000000000..daef03092 --- /dev/null +++ b/projects/lab/test/models/user_test.rb @@ -0,0 +1,10 @@ +# typed: strict +# frozen_string_literal: true + +require "test_helper" + +class UserTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/projects/lab/test/sevices/account_create_service_test.rb b/projects/lab/test/sevices/account_create_service_test.rb new file mode 100644 index 000000000..8fd0ddf26 --- /dev/null +++ b/projects/lab/test/sevices/account_create_service_test.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true +class AccountCreateServiceTest < ActiveSupport::TestCase +end diff --git a/projects/lab/test/system/.keep b/projects/lab/test/system/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/projects/lab/test/test_helper.rb b/projects/lab/test/test_helper.rb new file mode 100644 index 000000000..0669df217 --- /dev/null +++ b/projects/lab/test/test_helper.rb @@ -0,0 +1,19 @@ +# typed: false +# frozen_string_literal: true + +ENV["RAILS_ENV"] ||= "test" +require_relative "../config/environment" +require "rails/test_help" +require "mocha/minitest" + +module ActiveSupport + class TestCase + # Run tests in parallel with specified workers + parallelize(workers: :number_of_processors) + + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all + + # Add more helper methods to be used by all tests here... + end +end diff --git a/projects/lab/tsconfig.json b/projects/lab/tsconfig.json new file mode 100644 index 000000000..72ef5878d --- /dev/null +++ b/projects/lab/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "declaration": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "lib": ["es6", "dom"], + "module": "es6", + "moduleResolution": "node", + "sourceMap": true, + "target": "es5", + "jsx": "react", + "noEmit": true, + "skipLibCheck": true + }, + "exclude": [ + "**/*.spec.ts", + "node_modules", + "vendor", + "public" + ], + "compileOnSave": false +} diff --git a/projects/lab/yarn.lock b/projects/lab/yarn.lock new file mode 100644 index 000000000..ef4e623ce --- /dev/null +++ b/projects/lab/yarn.lock @@ -0,0 +1,12745 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@apollo/client@^3.3.20": + version "3.3.20" + resolved "https://registry.npmjs.org/@apollo/client/-/client-3.3.20.tgz" + integrity sha512-hS7UmBwJweudw/J3M0RAcusMHNiRuGqkRH6g91PM2ev8cXScIMdXr/++9jo7wD1nAITMCMF4HQQ3LFaw/Or0Bw== + dependencies: + "@graphql-typed-document-node/core" "^3.0.0" + "@types/zen-observable" "^0.8.0" + "@wry/context" "^0.6.0" + "@wry/equality" "^0.5.0" + fast-json-stable-stringify "^2.0.0" + graphql-tag "^2.12.0" + hoist-non-react-statics "^3.3.2" + optimism "^0.16.0" + prop-types "^15.7.2" + symbol-observable "^4.0.0" + ts-invariant "^0.7.0" + tslib "^1.10.0" + zen-observable "^0.8.14" + +"@ardatan/aggregate-error@0.0.6": + version "0.0.6" + resolved "https://registry.npmjs.org/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz" + integrity sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ== + dependencies: + tslib "~2.0.1" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== + dependencies: + "@babel/highlight" "^7.14.5" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.5.tgz" + integrity sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w== + +"@babel/compat-data@^7.14.7": + version "7.14.7" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz" + integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== + +"@babel/core@^7.0.0", "@babel/core@^7.14.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.5.tgz" + integrity sha512-RN/AwP2DJmQTZSfiDaD+JQQ/J99KsIpOCfBE5pL+5jJSt7nI3nYGoAXZu+ffYSQ029NLs2DstZb+eR81uuARgg== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.5" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helpers" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5": + version "7.14.6" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz" + integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.5" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helpers" "^7.14.6" + "@babel/parser" "^7.14.6" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.12.13", "@babel/generator@^7.14.5", "@babel/generator@^7.5.0", "@babel/generator@^7.7.2": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz" + integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== + dependencies: + "@babel/types" "^7.14.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz" + integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz" + integrity sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz" + integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== + dependencies: + "@babel/compat-data" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.5.tgz" + integrity sha512-Uq9z2e7ZtcnDMirRqAGLRaLwJn+Lrh388v5ETrR3pALJnElVh2zqQmdbz4W2RUJYohAPh2mtyPUgyMHMzXMncQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-member-expression-to-functions" "^7.14.5" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + +"@babel/helper-create-class-features-plugin@^7.14.6": + version "7.14.6" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz" + integrity sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-member-expression-to-functions" "^7.14.5" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + +"@babel/helper-create-regexp-features-plugin@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz" + integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.2.2": + version "0.2.3" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz" + integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-explode-assignable-expression@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz" + integrity sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz" + integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== + dependencies: + "@babel/helper-get-function-arity" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-get-function-arity@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz" + integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-hoist-variables@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz" + integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-member-expression-to-functions@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.5.tgz" + integrity sha512-UxUeEYPrqH1Q/k0yRku1JE7dyfyehNwT6SVkMHvYvPDv4+uu627VXBckVj891BO8ruKBkiDoGnZf4qPDD8abDQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz" + integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-module-transforms@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz" + integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-simple-access" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-optimise-call-expression@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz" + integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz" + integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== + +"@babel/helper-remap-async-to-generator@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz" + integrity sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-wrap-function" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-replace-supers@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz" + integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.14.5" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-simple-access@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz" + integrity sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz" + integrity sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-split-export-declaration@^7.12.13", "@babel/helper-split-export-declaration@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz" + integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz" + integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== + +"@babel/helper-validator-option@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz" + integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + +"@babel/helper-wrap-function@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz" + integrity sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ== + dependencies: + "@babel/helper-function-name" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helpers@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.5.tgz" + integrity sha512-xtcWOuN9VL6nApgVHtq3PPcQv5qFBJzoSZzJ/2c0QK/IP/gxVcoWSNQwFEGvmbQsuS9rhYqjILDGGXcTkA705Q== + dependencies: + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helpers@^7.14.6": + version "7.14.6" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz" + integrity sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA== + dependencies: + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@7.12.16": + version "7.12.16" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.16.tgz" + integrity sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw== + +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.5", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7", "@babel/parser@^7.7.2": + version "7.14.7" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz" + integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz" + integrity sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/plugin-proposal-optional-chaining" "^7.14.5" + +"@babel/plugin-proposal-async-generator-functions@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.5.tgz" + integrity sha512-tbD/CG3l43FIXxmu4a7RBe4zH7MLJ+S/lFowPFO7HetS2hyOZ/0nnnznegDuzFzfkyQYTxqdTH/hKmuBngaDAA== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz" + integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-proposal-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz" + integrity sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz" + integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz" + integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz" + integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz" + integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz" + integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz" + integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.14.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz" + integrity sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g== + dependencies: + "@babel/compat-data" "^7.14.7" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.14.5" + +"@babel/plugin-proposal-object-rest-spread@^7.14.2", "@babel/plugin-proposal-object-rest-spread@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.5.tgz" + integrity sha512-VzMyY6PWNPPT3pxc5hi9LloKNr4SSrVCg7Yr6aZpW4Ym07r7KqSU/QXYwjXLVxqwSv0t/XSXkFoKBPUkZ8vb2A== + dependencies: + "@babel/compat-data" "^7.14.5" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.14.5" + +"@babel/plugin-proposal-optional-catch-binding@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz" + integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz" + integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz" + integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-proposal-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz" + integrity sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz" + integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz" + integrity sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz" + integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.14.5", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz" + integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz" + integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-async-to-generator@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz" + integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.14.5" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz" + integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz" + integrity sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz" + integrity sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz" + integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.14.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz" + integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-destructuring@^7.13.17", "@babel/plugin-transform-destructuring@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.5.tgz" + integrity sha512-wU9tYisEbRMxqDezKUqC9GleLycCRoUsai9ddlsq54r8QRLaeEhc+d+9DqCG+kV9W2GgQjTZESPTpn5bAFMDww== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz" + integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-duplicate-keys@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz" + integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-exponentiation-operator@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz" + integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz" + integrity sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-flow" "^7.14.5" + +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz" + integrity sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz" + integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== + dependencies: + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz" + integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz" + integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-modules-amd@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz" + integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== + dependencies: + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz" + integrity sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== + dependencies: + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-simple-access" "^7.14.5" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz" + integrity sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA== + dependencies: + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.5" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz" + integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== + dependencies: + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.5.tgz" + integrity sha512-+Xe5+6MWFo311U8SchgeX5c1+lJM+eZDBZgD+tvXu9VVQPXwwVzeManMMjYX6xw2HczngfOSZjoFYKwdeB/Jvw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + +"@babel/plugin-transform-new-target@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz" + integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz" + integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz" + integrity sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz" + integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz" + integrity sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-react-jsx-development@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz" + integrity sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.14.5" + +"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz" + integrity sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-jsx" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/plugin-transform-react-pure-annotations@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz" + integrity sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-regenerator@^7.13.15", "@babel/plugin-transform-regenerator@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz" + integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz" + integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-runtime@^7.14.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz" + integrity sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + babel-plugin-polyfill-corejs2 "^0.2.2" + babel-plugin-polyfill-corejs3 "^0.2.2" + babel-plugin-polyfill-regenerator "^0.2.2" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz" + integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.14.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz" + integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + +"@babel/plugin-transform-spread@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.5.tgz" + integrity sha512-/3iqoQdiWergnShZYl0xACb4ADeYCJ7X/RgmwtXshn6cIvautRPAFzhd58frQlokLO6Jb4/3JXvmm6WNTPtiTw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + +"@babel/plugin-transform-sticky-regex@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz" + integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz" + integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-typeof-symbol@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz" + integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-typescript@^7.14.5": + version "7.14.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz" + integrity sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.14.6" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-typescript" "^7.14.5" + +"@babel/plugin-transform-unicode-escapes@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz" + integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-unicode-regex@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz" + integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/preset-env@^7.14.2": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.5.tgz" + integrity sha512-ci6TsS0bjrdPpWGnQ+m4f+JSSzDKlckqKIJJt9UZ/+g7Zz9k0N8lYU8IeLg/01o2h8LyNZDMLGgRLDTxpudLsA== + dependencies: + "@babel/compat-data" "^7.14.5" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.14.5" + "@babel/plugin-proposal-async-generator-functions" "^7.14.5" + "@babel/plugin-proposal-class-properties" "^7.14.5" + "@babel/plugin-proposal-class-static-block" "^7.14.5" + "@babel/plugin-proposal-dynamic-import" "^7.14.5" + "@babel/plugin-proposal-export-namespace-from" "^7.14.5" + "@babel/plugin-proposal-json-strings" "^7.14.5" + "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" + "@babel/plugin-proposal-numeric-separator" "^7.14.5" + "@babel/plugin-proposal-object-rest-spread" "^7.14.5" + "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" + "@babel/plugin-proposal-optional-chaining" "^7.14.5" + "@babel/plugin-proposal-private-methods" "^7.14.5" + "@babel/plugin-proposal-private-property-in-object" "^7.14.5" + "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.14.5" + "@babel/plugin-transform-async-to-generator" "^7.14.5" + "@babel/plugin-transform-block-scoped-functions" "^7.14.5" + "@babel/plugin-transform-block-scoping" "^7.14.5" + "@babel/plugin-transform-classes" "^7.14.5" + "@babel/plugin-transform-computed-properties" "^7.14.5" + "@babel/plugin-transform-destructuring" "^7.14.5" + "@babel/plugin-transform-dotall-regex" "^7.14.5" + "@babel/plugin-transform-duplicate-keys" "^7.14.5" + "@babel/plugin-transform-exponentiation-operator" "^7.14.5" + "@babel/plugin-transform-for-of" "^7.14.5" + "@babel/plugin-transform-function-name" "^7.14.5" + "@babel/plugin-transform-literals" "^7.14.5" + "@babel/plugin-transform-member-expression-literals" "^7.14.5" + "@babel/plugin-transform-modules-amd" "^7.14.5" + "@babel/plugin-transform-modules-commonjs" "^7.14.5" + "@babel/plugin-transform-modules-systemjs" "^7.14.5" + "@babel/plugin-transform-modules-umd" "^7.14.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.5" + "@babel/plugin-transform-new-target" "^7.14.5" + "@babel/plugin-transform-object-super" "^7.14.5" + "@babel/plugin-transform-parameters" "^7.14.5" + "@babel/plugin-transform-property-literals" "^7.14.5" + "@babel/plugin-transform-regenerator" "^7.14.5" + "@babel/plugin-transform-reserved-words" "^7.14.5" + "@babel/plugin-transform-shorthand-properties" "^7.14.5" + "@babel/plugin-transform-spread" "^7.14.5" + "@babel/plugin-transform-sticky-regex" "^7.14.5" + "@babel/plugin-transform-template-literals" "^7.14.5" + "@babel/plugin-transform-typeof-symbol" "^7.14.5" + "@babel/plugin-transform-unicode-escapes" "^7.14.5" + "@babel/plugin-transform-unicode-regex" "^7.14.5" + "@babel/preset-modules" "^0.1.4" + "@babel/types" "^7.14.5" + babel-plugin-polyfill-corejs2 "^0.2.2" + babel-plugin-polyfill-corejs3 "^0.2.2" + babel-plugin-polyfill-regenerator "^0.2.2" + core-js-compat "^3.14.0" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.4": + version "0.1.4" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz" + integrity sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-transform-react-display-name" "^7.14.5" + "@babel/plugin-transform-react-jsx" "^7.14.5" + "@babel/plugin-transform-react-jsx-development" "^7.14.5" + "@babel/plugin-transform-react-pure-annotations" "^7.14.5" + +"@babel/preset-typescript@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz" + integrity sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-transform-typescript" "^7.14.5" + +"@babel/runtime-corejs3@^7.10.2": + version "7.14.7" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.7.tgz" + integrity sha512-Wvzcw4mBYbTagyBVZpAJWI06auSIj033T/yNE0Zn1xcup83MieCddZA7ls3kme17L4NOGBrQ09Q+nKB41RLWBA== + dependencies: + core-js-pure "^3.15.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.14.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + version "7.14.6" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz" + integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.14.5", "@babel/template@^7.3.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz" + integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/traverse@7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz" + integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.12.13" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.7.2": + version "7.14.7" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz" + integrity sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/parser" "^7.14.7" + "@babel/types" "^7.14.5" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.5.tgz" + integrity sha512-G3BiS15vevepdmFqmUc9X+64y0viZYygubAMO8SvBmKARuF6CPSZtH4Ng9vi/lrWlZFGe3FWdXNy835akH8Glg== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/types" "^7.14.5" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz" + integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.14.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz" + integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@bugsnag/browser@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.10.1.tgz" + integrity sha512-Yxm/DheT/NHX2PhadBDuafuHBhP547Iav6Y9jf+skBBSi1n0ZYkGhtVxh8ZWLgqz5W8MsJ0HFiLBqcg/mulSvQ== + dependencies: + "@bugsnag/core" "^7.10.0" + +"@bugsnag/core@^7.10.0": + version "7.10.0" + resolved "https://registry.npmjs.org/@bugsnag/core/-/core-7.10.0.tgz" + integrity sha512-sDa2nDxwsxHQx2/2/tsBWjYqH0TewCR8N/r5at6B+irwVkI0uts7Qc2JyqDTfiEiBXKVEXFK+fHTz1x9b8tsiA== + dependencies: + "@bugsnag/cuid" "^3.0.0" + "@bugsnag/safe-json-stringify" "^6.0.0" + error-stack-parser "^2.0.3" + iserror "0.0.2" + stack-generator "^2.0.3" + +"@bugsnag/cuid@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.0.0.tgz" + integrity sha512-LOt8aaBI+KvOQGneBtpuCz3YqzyEAehd1f3nC5yr9TIYW1+IzYKa2xWS4EiMz5pPOnRPHkyyS5t/wmSmN51Gjg== + +"@bugsnag/js@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@bugsnag/js/-/js-7.10.1.tgz" + integrity sha512-1/MK/Bw2ViFx1hMG2TOX8MOq/LzT2VRd0VswknF4LYsZSgzohkRzz/hi6P2TSlLeapRs+bkDC6u2RCq4zYvyiA== + dependencies: + "@bugsnag/browser" "^7.10.1" + "@bugsnag/node" "^7.10.1" + +"@bugsnag/node@^7.10.1": + version "7.10.1" + resolved "https://registry.npmjs.org/@bugsnag/node/-/node-7.10.1.tgz" + integrity sha512-kpasrz/im5ljptt2JOqrjbOu4b0i5sAZOYU4L0psWXlD31/wXytk7im11QlNALdI8gZZBxIFsVo8ks6dR6mHzg== + dependencies: + "@bugsnag/core" "^7.10.0" + byline "^5.0.0" + error-stack-parser "^2.0.2" + iserror "^0.0.2" + pump "^3.0.0" + stack-generator "^2.0.3" + +"@bugsnag/plugin-react@^7.10.0": + version "7.10.0" + resolved "https://registry.npmjs.org/@bugsnag/plugin-react/-/plugin-react-7.10.0.tgz" + integrity sha512-o0oHd2BfGxFAQTrc1/u0T5RtWntOaeUREnXOfnrX2obi6JthWCcn44YUyUQ0IklcoZ+IAcLy27GNDggs5LfIew== + +"@bugsnag/safe-json-stringify@^6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz" + integrity sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA== + +"@bugsnag/source-maps@^2.0.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@bugsnag/source-maps/-/source-maps-2.1.0.tgz" + integrity sha512-z3PGk4mkCTDIEfviF0qXCzksOTbrwt/low33avZtb2iBiLEU/S9RwAbzmgMKX7M3FPY3X/YcGbUM8fgFCkdpIA== + dependencies: + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + concat-stream "^2.0.0" + consola "^2.15.0" + form-data "^3.0.0" + glob "^7.1.6" + read-pkg-up "^7.0.1" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@endemolshinegroup/cosmiconfig-typescript-loader@3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz" + integrity sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA== + dependencies: + lodash.get "^4" + make-error "^1" + ts-node "^9" + tslib "^2" + +"@eslint/eslintrc@^0.4.2": + version "0.4.2" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz" + integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@fullhuman/postcss-purgecss@^3.1.3": + version "3.1.3" + resolved "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-3.1.3.tgz" + integrity sha512-kwOXw8fZ0Lt1QmeOOrd+o4Ibvp4UTEBFQbzvWldjlKv5n+G9sXfIPn1hh63IQIL8K8vbvv1oYMJiIUbuy9bGaA== + dependencies: + purgecss "^3.1.3" + +"@graphql-codegen/cli@^1.21.7": + version "1.21.7" + resolved "https://registry.yarnpkg.com/@graphql-codegen/cli/-/cli-1.21.7.tgz#ac90afdf0d166bc725c60d2269482e65af1c7848" + integrity sha512-6EOS3hMDFeLPO6OopASvXbQirhrHjFd0Qb4iGLnueW/WIETk8mOsbyfqlBnm6uehW6bUjdLDu25MUjo+4rkOvA== + dependencies: + "@graphql-codegen/core" "1.17.10" + "@graphql-codegen/plugin-helpers" "^1.18.8" + "@graphql-tools/apollo-engine-loader" "^6.2.5" + "@graphql-tools/code-file-loader" "^6.3.1" + "@graphql-tools/git-loader" "^6.2.6" + "@graphql-tools/github-loader" "^6.2.5" + "@graphql-tools/graphql-file-loader" "^6.2.7" + "@graphql-tools/json-file-loader" "^6.2.6" + "@graphql-tools/load" "^6.2.8" + "@graphql-tools/prisma-loader" "^6.3.0" + "@graphql-tools/url-loader" "^6.10.1" + "@graphql-tools/utils" "^7.9.1" + ansi-escapes "^4.3.1" + chalk "^4.1.0" + change-case-all "1.0.14" + chokidar "^3.5.2" + common-tags "^1.8.0" + cosmiconfig "^7.0.0" + debounce "^1.2.0" + dependency-graph "^0.11.0" + detect-indent "^6.0.0" + glob "^7.1.6" + graphql-config "^3.3.0" + inquirer "^7.3.3" + is-glob "^4.0.1" + json-to-pretty-yaml "^1.2.2" + latest-version "5.1.0" + listr "^0.14.3" + listr-update-renderer "^0.5.0" + log-symbols "^4.0.0" + minimatch "^3.0.4" + mkdirp "^1.0.4" + string-env-interpolation "^1.0.1" + ts-log "^2.2.3" + tslib "~2.3.0" + valid-url "^1.0.9" + wrap-ansi "^7.0.0" + yaml "^1.10.0" + yargs "^17.0.0" + +"@graphql-codegen/core@1.17.10": + version "1.17.10" + resolved "https://registry.npmjs.org/@graphql-codegen/core/-/core-1.17.10.tgz" + integrity sha512-RA3umgVDs/RI/+ztHh+H4GfJxrJUfWJQqoAkMfX4qPTVO5qsy3R4vPudE0oP8w+kFbL8dFsRfAAPUZxI4jV/hQ== + dependencies: + "@graphql-codegen/plugin-helpers" "^1.18.7" + "@graphql-tools/merge" "^6.2.14" + "@graphql-tools/utils" "^7.9.1" + tslib "~2.2.0" + +"@graphql-codegen/plugin-helpers@^1.18.7": + version "1.18.7" + resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-1.18.7.tgz" + integrity sha512-8ICOrXlsvyL1dpVz8C9b7H31d4DJpDd75WfjMn6Xjqz81Ah8xDn1Bi+7YXRCCILCBmvI94k6fi8qpsIVhFBBjQ== + dependencies: + "@graphql-tools/utils" "^7.9.1" + common-tags "1.8.0" + import-from "3.0.0" + lodash "~4.17.0" + tslib "~2.2.0" + +"@graphql-codegen/plugin-helpers@^1.18.8": + version "1.18.8" + resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-1.18.8.tgz#39aac745b9e22e28c781cc07cf74836896a3a905" + integrity sha512-mb4I9j9lMGqvGggYuZ0CV+Hme08nar68xkpPbAVotg/ZBmlhZIok/HqW2BcMQi7Rj+Il5HQMeQ1wQ1M7sv/TlQ== + dependencies: + "@graphql-tools/utils" "^7.9.1" + common-tags "1.8.0" + import-from "4.0.0" + lodash "~4.17.0" + tslib "~2.3.0" + +"@graphql-codegen/typescript-operations@^1.18.2": + version "1.18.2" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-1.18.2.tgz" + integrity sha512-AF9OCNBq0HuW3C5nsO11+53fgFGE40lNUtjSIJocvMcstEKvHx4GrzYO0XIpZsjRPrnyds00Y5xTSynLqB0XxA== + dependencies: + "@graphql-codegen/plugin-helpers" "^1.18.7" + "@graphql-codegen/typescript" "^1.22.3" + "@graphql-codegen/visitor-plugin-common" "1.21.2" + auto-bind "~4.0.0" + tslib "~2.3.0" + +"@graphql-codegen/typescript-react-apollo@^2.2.7": + version "2.2.7" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript-react-apollo/-/typescript-react-apollo-2.2.7.tgz" + integrity sha512-s7j+ZCzNdkt/d6NxbSYKXAonFHWwcrYkFrGQ6N+FoCtsP/WaGf57glMyzpewuKGJiNugNsMjv/cpDKoc0j/QPw== + dependencies: + "@graphql-codegen/plugin-helpers" "^1.18.7" + "@graphql-codegen/visitor-plugin-common" "1.21.2" + auto-bind "~4.0.0" + change-case-all "1.0.14" + tslib "~2.3.0" + +"@graphql-codegen/typescript@^1.22.3": + version "1.22.3" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-1.22.3.tgz" + integrity sha512-qLSnVN2g/UxxzhRWHZcHw/Xkvx5wZh0RDzmg9MjAlPnDwAI89jg/ljKDwtTOfN+F6M8W4gQ9mjkWd6NxBQRgXw== + dependencies: + "@graphql-codegen/plugin-helpers" "^1.18.7" + "@graphql-codegen/visitor-plugin-common" "1.21.2" + auto-bind "~4.0.0" + tslib "~2.3.0" + +"@graphql-codegen/typescript@^1.23.0": + version "1.23.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-1.23.0.tgz#48a5372bcbe81a442c71c1bb032c312c6586a59a" + integrity sha512-ZfFgk5mGfuOy4kEpy+dcuvJMphigMfJ4AkiP1qWmWFufDW3Sg2yayTSNmzeFdcXMrWGgfNW2dKtuuTmbmQhS5g== + dependencies: + "@graphql-codegen/plugin-helpers" "^1.18.8" + "@graphql-codegen/visitor-plugin-common" "1.22.0" + auto-bind "~4.0.0" + tslib "~2.3.0" + +"@graphql-codegen/visitor-plugin-common@1.21.2": + version "1.21.2" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-1.21.2.tgz" + integrity sha512-Bb5P2Hw7f+lNWfazjcGwVcX434stNd7/EhgA+S2Ro0Bn1xVCK/WL0IHT2TGb+pf6/lWg3Y+J9wo2aOKkqDHT6A== + dependencies: + "@graphql-codegen/plugin-helpers" "^1.18.7" + "@graphql-tools/optimize" "^1.0.1" + "@graphql-tools/relay-operation-optimizer" "^6.3.0" + array.prototype.flatmap "^1.2.4" + auto-bind "~4.0.0" + change-case-all "1.0.14" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.3.0" + +"@graphql-codegen/visitor-plugin-common@1.22.0": + version "1.22.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-1.22.0.tgz#75fc8b580143bccbec411eb92d5fef715ed22e42" + integrity sha512-2afJGb6d8iuZl9KizYsexPwraEKO1lAvt5eVHNM5Xew4vwz/AUHeqDR2uOeQgVV+27EzjjzSDd47IEdH0dLC2w== + dependencies: + "@graphql-codegen/plugin-helpers" "^1.18.8" + "@graphql-tools/optimize" "^1.0.1" + "@graphql-tools/relay-operation-optimizer" "^6.3.0" + array.prototype.flatmap "^1.2.4" + auto-bind "~4.0.0" + change-case-all "1.0.14" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.3.0" + +"@graphql-tools/apollo-engine-loader@^6.2.5": + version "6.2.5" + resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-6.2.5.tgz" + integrity sha512-CE4uef6PyxtSG+7OnLklIr2BZZDgjO89ZXK47EKdY7jQy/BQD/9o+8SxPsgiBc+2NsDJH2I6P/nqoaJMOEat6g== + dependencies: + "@graphql-tools/utils" "^7.0.0" + cross-fetch "3.0.6" + tslib "~2.0.1" + +"@graphql-tools/batch-execute@^7.1.2": + version "7.1.2" + resolved "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-7.1.2.tgz" + integrity sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg== + dependencies: + "@graphql-tools/utils" "^7.7.0" + dataloader "2.0.0" + tslib "~2.2.0" + value-or-promise "1.0.6" + +"@graphql-tools/code-file-loader@^6.3.1": + version "6.3.1" + resolved "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-6.3.1.tgz" + integrity sha512-ZJimcm2ig+avgsEOWWVvAaxZrXXhiiSZyYYOJi0hk9wh5BxZcLUNKkTp6EFnZE/jmGUwuos3pIjUD3Hwi3Bwhg== + dependencies: + "@graphql-tools/graphql-tag-pluck" "^6.5.1" + "@graphql-tools/utils" "^7.0.0" + tslib "~2.1.0" + +"@graphql-tools/delegate@^7.0.1", "@graphql-tools/delegate@^7.1.5": + version "7.1.5" + resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-7.1.5.tgz" + integrity sha512-bQu+hDd37e+FZ0CQGEEczmRSfQRnnXeUxI/0miDV+NV/zCbEdIJj5tYFNrKT03W6wgdqx8U06d8L23LxvGri/g== + dependencies: + "@ardatan/aggregate-error" "0.0.6" + "@graphql-tools/batch-execute" "^7.1.2" + "@graphql-tools/schema" "^7.1.5" + "@graphql-tools/utils" "^7.7.1" + dataloader "2.0.0" + tslib "~2.2.0" + value-or-promise "1.0.6" + +"@graphql-tools/git-loader@^6.2.6": + version "6.2.6" + resolved "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-6.2.6.tgz" + integrity sha512-ooQTt2CaG47vEYPP3CPD+nbA0F+FYQXfzrB1Y1ABN9K3d3O2RK3g8qwslzZaI8VJQthvKwt0A95ZeE4XxteYfw== + dependencies: + "@graphql-tools/graphql-tag-pluck" "^6.2.6" + "@graphql-tools/utils" "^7.0.0" + tslib "~2.1.0" + +"@graphql-tools/github-loader@^6.2.5": + version "6.2.5" + resolved "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-6.2.5.tgz" + integrity sha512-DLuQmYeNNdPo8oWus8EePxWCfCAyUXPZ/p1PWqjrX/NGPyH2ZObdqtDAfRHztljt0F/qkBHbGHCEk2TKbRZTRw== + dependencies: + "@graphql-tools/graphql-tag-pluck" "^6.2.6" + "@graphql-tools/utils" "^7.0.0" + cross-fetch "3.0.6" + tslib "~2.0.1" + +"@graphql-tools/graphql-file-loader@^6.0.0", "@graphql-tools/graphql-file-loader@^6.2.7": + version "6.2.7" + resolved "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.7.tgz" + integrity sha512-5k2SNz0W87tDcymhEMZMkd6/vs6QawDyjQXWtqkuLTBF3vxjxPD1I4dwHoxgWPIjjANhXybvulD7E+St/7s9TQ== + dependencies: + "@graphql-tools/import" "^6.2.6" + "@graphql-tools/utils" "^7.0.0" + tslib "~2.1.0" + +"@graphql-tools/graphql-tag-pluck@^6.2.6", "@graphql-tools/graphql-tag-pluck@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-6.5.1.tgz" + integrity sha512-7qkm82iFmcpb8M6/yRgzjShtW6Qu2OlCSZp8uatA3J0eMl87TxyJoUmL3M3UMMOSundAK8GmoyNVFUrueueV5Q== + dependencies: + "@babel/parser" "7.12.16" + "@babel/traverse" "7.12.13" + "@babel/types" "7.12.13" + "@graphql-tools/utils" "^7.0.0" + tslib "~2.1.0" + +"@graphql-tools/import@^6.2.6": + version "6.3.1" + resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.3.1.tgz" + integrity sha512-1szR19JI6WPibjYurMLdadHKZoG9C//8I/FZ0Dt4vJSbrMdVNp8WFxg4QnZrDeMG4MzZc90etsyF5ofKjcC+jw== + dependencies: + resolve-from "5.0.0" + tslib "~2.2.0" + +"@graphql-tools/json-file-loader@^6.0.0", "@graphql-tools/json-file-loader@^6.2.6": + version "6.2.6" + resolved "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-6.2.6.tgz" + integrity sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA== + dependencies: + "@graphql-tools/utils" "^7.0.0" + tslib "~2.0.1" + +"@graphql-tools/load@^6.0.0", "@graphql-tools/load@^6.2.8": + version "6.2.8" + resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-6.2.8.tgz" + integrity sha512-JpbyXOXd8fJXdBh2ta0Q4w8ia6uK5FHzrTNmcvYBvflFuWly2LDTk2abbSl81zKkzswQMEd2UIYghXELRg8eTA== + dependencies: + "@graphql-tools/merge" "^6.2.12" + "@graphql-tools/utils" "^7.5.0" + globby "11.0.3" + import-from "3.0.0" + is-glob "4.0.1" + p-limit "3.1.0" + tslib "~2.2.0" + unixify "1.0.0" + valid-url "1.0.9" + +"@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.12", "@graphql-tools/merge@^6.2.14": + version "6.2.14" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.14.tgz" + integrity sha512-RWT4Td0ROJai2eR66NHejgf8UwnXJqZxXgDWDI+7hua5vNA2OW8Mf9K1Wav1ZkjWnuRp4ztNtkZGie5ISw55ow== + dependencies: + "@graphql-tools/schema" "^7.0.0" + "@graphql-tools/utils" "^7.7.0" + tslib "~2.2.0" + +"@graphql-tools/optimize@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.0.1.tgz" + integrity sha512-cRlUNsbErYoBtzzS6zXahXeTBZGPVlPHXCpnEZ0XiK/KY/sQL96cyzak0fM/Gk6qEI9/l32MYEICjasiBQrl5w== + dependencies: + tslib "~2.0.1" + +"@graphql-tools/prisma-loader@^6.3.0": + version "6.3.0" + resolved "https://registry.npmjs.org/@graphql-tools/prisma-loader/-/prisma-loader-6.3.0.tgz" + integrity sha512-9V3W/kzsFBmUQqOsd96V4a4k7Didz66yh/IK89B1/rrvy9rYj+ULjEqR73x9BYZ+ww9FV8yP8LasWAJwWaqqJQ== + dependencies: + "@graphql-tools/url-loader" "^6.8.2" + "@graphql-tools/utils" "^7.0.0" + "@types/http-proxy-agent" "^2.0.2" + "@types/js-yaml" "^4.0.0" + "@types/json-stable-stringify" "^1.0.32" + "@types/jsonwebtoken" "^8.5.0" + chalk "^4.1.0" + debug "^4.3.1" + dotenv "^8.2.0" + graphql-request "^3.3.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + isomorphic-fetch "^3.0.0" + js-yaml "^4.0.0" + json-stable-stringify "^1.0.1" + jsonwebtoken "^8.5.1" + lodash "^4.17.20" + replaceall "^0.1.6" + scuid "^1.1.0" + tslib "~2.1.0" + yaml-ast-parser "^0.0.43" + +"@graphql-tools/relay-operation-optimizer@^6.3.0": + version "6.3.0" + resolved "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.3.0.tgz" + integrity sha512-Or3UgRvkY9Fq1AAx7q38oPqFmTepLz7kp6wDHKyR0ceG7AvHv5En22R12mAeISInbhff4Rpwgf6cE8zHRu6bCw== + dependencies: + "@graphql-tools/utils" "^7.1.0" + relay-compiler "10.1.0" + tslib "~2.0.1" + +"@graphql-tools/schema@^7.0.0", "@graphql-tools/schema@^7.1.5": + version "7.1.5" + resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.5.tgz" + integrity sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA== + dependencies: + "@graphql-tools/utils" "^7.1.2" + tslib "~2.2.0" + value-or-promise "1.0.6" + +"@graphql-tools/url-loader@^6.0.0", "@graphql-tools/url-loader@^6.10.1", "@graphql-tools/url-loader@^6.8.2": + version "6.10.1" + resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz" + integrity sha512-DSDrbhQIv7fheQ60pfDpGD256ixUQIR6Hhf9Z5bRjVkXOCvO5XrkwoWLiU7iHL81GB1r0Ba31bf+sl+D4nyyfw== + dependencies: + "@graphql-tools/delegate" "^7.0.1" + "@graphql-tools/utils" "^7.9.0" + "@graphql-tools/wrap" "^7.0.4" + "@microsoft/fetch-event-source" "2.0.1" + "@types/websocket" "1.0.2" + abort-controller "3.0.0" + cross-fetch "3.1.4" + extract-files "9.0.0" + form-data "4.0.0" + graphql-ws "^4.4.1" + is-promise "4.0.0" + isomorphic-ws "4.0.1" + lodash "4.17.21" + meros "1.1.4" + subscriptions-transport-ws "^0.9.18" + sync-fetch "0.3.0" + tslib "~2.2.0" + valid-url "1.0.9" + ws "7.4.5" + +"@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.1.0", "@graphql-tools/utils@^7.1.2", "@graphql-tools/utils@^7.5.0", "@graphql-tools/utils@^7.7.0", "@graphql-tools/utils@^7.7.1", "@graphql-tools/utils@^7.8.1", "@graphql-tools/utils@^7.9.0", "@graphql-tools/utils@^7.9.1": + version "7.10.0" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz" + integrity sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w== + dependencies: + "@ardatan/aggregate-error" "0.0.6" + camel-case "4.1.2" + tslib "~2.2.0" + +"@graphql-tools/wrap@^7.0.4": + version "7.0.8" + resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz" + integrity sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg== + dependencies: + "@graphql-tools/delegate" "^7.1.5" + "@graphql-tools/schema" "^7.1.5" + "@graphql-tools/utils" "^7.8.1" + tslib "~2.2.0" + value-or-promise "1.0.6" + +"@graphql-typed-document-node/core@^3.0.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.0.tgz" + integrity sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg== + +"@iarna/toml@^2.2.5": + version "2.2.5" + resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" + integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^27.0.2": + version "27.0.2" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.0.2.tgz" + integrity sha512-/zYigssuHLImGeMAACkjI4VLAiiJznHgAl3xnFT19iWyct2LhrH3KXOjHRmxBGTkiPLZKKAJAgaPpiU9EZ9K+w== + dependencies: + "@jest/types" "^27.0.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.0.2" + jest-util "^27.0.2" + slash "^3.0.0" + +"@jest/core@^27.0.5": + version "27.0.5" + resolved "https://registry.npmjs.org/@jest/core/-/core-27.0.5.tgz" + integrity sha512-g73//jF0VwsOIrWUC9Cqg03lU3QoAMFxVjsm6n6yNmwZcQPN/o8w+gLWODw5VfKNFZT38otXHWxc6b8eGDUpEA== + dependencies: + "@jest/console" "^27.0.2" + "@jest/reporters" "^27.0.5" + "@jest/test-result" "^27.0.2" + "@jest/transform" "^27.0.5" + "@jest/types" "^27.0.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^27.0.2" + jest-config "^27.0.5" + jest-haste-map "^27.0.5" + jest-message-util "^27.0.2" + jest-regex-util "^27.0.1" + jest-resolve "^27.0.5" + jest-resolve-dependencies "^27.0.5" + jest-runner "^27.0.5" + jest-runtime "^27.0.5" + jest-snapshot "^27.0.5" + jest-util "^27.0.2" + jest-validate "^27.0.2" + jest-watcher "^27.0.2" + micromatch "^4.0.4" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.0.5": + version "27.0.5" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.0.5.tgz" + integrity sha512-IAkJPOT7bqn0GiX5LPio6/e1YpcmLbrd8O5EFYpAOZ6V+9xJDsXjdgN2vgv9WOKIs/uA1kf5WeD96HhlBYO+FA== + dependencies: + "@jest/fake-timers" "^27.0.5" + "@jest/types" "^27.0.2" + "@types/node" "*" + jest-mock "^27.0.3" + +"@jest/fake-timers@^27.0.5": + version "27.0.5" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.5.tgz" + integrity sha512-d6Tyf7iDoKqeUdwUKrOBV/GvEZRF67m7lpuWI0+SCD9D3aaejiOQZxAOxwH2EH/W18gnfYaBPLi0VeTGBHtQBg== + dependencies: + "@jest/types" "^27.0.2" + "@sinonjs/fake-timers" "^7.0.2" + "@types/node" "*" + jest-message-util "^27.0.2" + jest-mock "^27.0.3" + jest-util "^27.0.2" + +"@jest/globals@^27.0.5": + version "27.0.5" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.0.5.tgz" + integrity sha512-qqKyjDXUaZwDuccpbMMKCCMBftvrbXzigtIsikAH/9ca+kaae8InP2MDf+Y/PdCSMuAsSpHS6q6M25irBBUh+Q== + dependencies: + "@jest/environment" "^27.0.5" + "@jest/types" "^27.0.2" + expect "^27.0.2" + +"@jest/reporters@^27.0.5": + version "27.0.5" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.5.tgz" + integrity sha512-4uNg5+0eIfRafnpgu3jCZws3NNcFzhu5JdRd1mKQ4/53+vkIqwB6vfZ4gn5BdGqOaLtYhlOsPaL5ATkKzyBrJw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.0.2" + "@jest/test-result" "^27.0.2" + "@jest/transform" "^27.0.5" + "@jest/types" "^27.0.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^27.0.5" + jest-resolve "^27.0.5" + jest-util "^27.0.2" + jest-worker "^27.0.2" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.0.0" + +"@jest/source-map@^27.0.1": + version "27.0.1" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.1.tgz" + integrity sha512-yMgkF0f+6WJtDMdDYNavmqvbHtiSpwRN2U/W+6uztgfqgkq/PXdKPqjBTUF1RD/feth4rH5N3NW0T5+wIuln1A== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^27.0.2": + version "27.0.2" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.2.tgz" + integrity sha512-gcdWwL3yP5VaIadzwQtbZyZMgpmes8ryBAJp70tuxghiA8qL4imJyZex+i+USQH2H4jeLVVszhwntgdQ97fccA== + dependencies: + "@jest/console" "^27.0.2" + "@jest/types" "^27.0.2" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.0.5": + version "27.0.5" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.5.tgz" + integrity sha512-opztnGs+cXzZ5txFG2+omBaV5ge/0yuJNKbhE3DREMiXE0YxBuzyEa6pNv3kk2JuucIlH2Xvgmn9kEEHSNt/SA== + dependencies: + "@jest/test-result" "^27.0.2" + graceful-fs "^4.2.4" + jest-haste-map "^27.0.5" + jest-runtime "^27.0.5" + +"@jest/transform@^27.0.5": + version "27.0.5" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.0.5.tgz" + integrity sha512-lBD6OwKXSc6JJECBNk4mVxtSVuJSBsQrJ9WCBisfJs7EZuYq4K6vM9HmoB7hmPiLIDGeyaerw3feBV/bC4z8tg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.0.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^27.0.5" + jest-regex-util "^27.0.1" + jest-util "^27.0.2" + micromatch "^4.0.4" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jest/types@^27.0.2": + version "27.0.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.0.2.tgz" + integrity sha512-XpjCtJ/99HB4PmyJ2vgmN7vT+JLP7RW1FBT9RgnMFS4Dt7cvIyBee8O3/j98aUZ34ZpenPZFqmaaObWSeL65dg== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@microsoft/fetch-event-source@2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz" + integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.7" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz" + integrity sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@prettier/plugin-ruby@^1.5.5": + version "1.5.5" + resolved "https://registry.npmjs.org/@prettier/plugin-ruby/-/plugin-ruby-1.5.5.tgz" + integrity sha512-b387GdXU+LrnY+oaKWRUI5EnsUvrQ0G1jUSVPkvUTGzp/w+BB9/n4SICVPY3V9/wYsvWpAZq4LkE4FdBufXUtA== + dependencies: + prettier ">=1.10" + +"@rails/actioncable@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-6.1.4.tgz#c3c5a9f8302c429af9722b6c50ab48049016d2a3" + integrity sha512-0LmSKJTuo2dL6BQ+9xxLnS9lbkyfz2mBGeBnQ2J7o9Bn0l0q+ZC6VuoZMZZXPvABI4QT7Nfknv5WhfKYL+boew== + +"@rails/activestorage@^6.0.0": + version "6.1.3" + resolved "https://registry.npmjs.org/@rails/activestorage/-/activestorage-6.1.3.tgz" + integrity sha512-9it2rc+79E+GP4GWX/P2M9/INcp1SicJaiF5yqj+k40x/JY+/eVdSAGfRCgq2G/FwkUdGlaKnG2OoDcXchczlw== + dependencies: + spark-md5 "^3.0.0" + +"@rails/ujs@^6.0.3-7": + version "6.0.3-7" + resolved "https://registry.npmjs.org/@rails/ujs/-/ujs-6.0.3-7.tgz" + integrity sha512-J7dvCTkZ/zaQLge1mttypoE/1j5YDcSAuu4fun8CoTqVGkcbwZu4f4jy+HKxdomtrZzXWSHlSeIe9vOtLnhmeA== + +"@rails/webpacker@5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@rails/webpacker/-/webpacker-5.4.0.tgz" + integrity sha512-J973mzTUJbkbBu+sMwKgWRahoSfwdp5uHT80iDWr6hi8YAC7kj47HapQnn2SGPmv/onTT8WC3jFM62Hkh213yQ== + dependencies: + "@babel/core" "^7.14.3" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-object-rest-spread" "^7.14.2" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.13.17" + "@babel/plugin-transform-regenerator" "^7.13.15" + "@babel/plugin-transform-runtime" "^7.14.3" + "@babel/preset-env" "^7.14.2" + "@babel/runtime" "^7.14.0" + babel-loader "^8.2.2" + babel-plugin-dynamic-import-node "^2.3.3" + babel-plugin-macros "^2.8.0" + case-sensitive-paths-webpack-plugin "^2.4.0" + compression-webpack-plugin "^4.0.1" + core-js "^3.12.1" + css-loader "^3.6.0" + file-loader "^6.2.0" + flatted "^3.1.1" + glob "^7.1.7" + js-yaml "^3.14.1" + mini-css-extract-plugin "^0.9.0" + optimize-css-assets-webpack-plugin "^5.0.6" + path-complete-extname "^1.0.0" + pnp-webpack-plugin "^1.6.4" + postcss-flexbugs-fixes "^4.2.1" + postcss-import "^12.0.1" + postcss-loader "^3.0.0" + postcss-preset-env "^6.7.0" + postcss-safe-parser "^4.0.2" + regenerator-runtime "^0.13.7" + sass "^1.32.13" + sass-loader "10.1.1" + style-loader "^1.3.0" + terser-webpack-plugin "^4.2.3" + webpack "^4.46.0" + webpack-assets-manifest "^3.1.1" + webpack-cli "^3.3.12" + webpack-sources "^1.4.3" + +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.1" + resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz" + integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== + dependencies: + any-observable "^0.3.0" + +"@shopify/polaris-icons@^4.1.0": + version "4.6.1" + resolved "https://registry.npmjs.org/@shopify/polaris-icons/-/polaris-icons-4.6.1.tgz" + integrity sha512-a4sWG7G8QIk2h0YL5pEktPyKE78jIC6Du2IYsWgNns1Pc77uEUaWBArxjo4KkfK7qD7SOX8ZPe6pqkJVEG7zCA== + +"@shopify/polaris-icons@^4.6.2": + version "4.6.2" + resolved "https://registry.yarnpkg.com/@shopify/polaris-icons/-/polaris-icons-4.6.2.tgz#24f674338be4de22c38a05bc004c5e56348cd5d0" + integrity sha512-HvAB/mztV/6SUJhb76c1CydAtx0tSCiJakzu5+XbDY4Tl+BlFbyAJyoEnGqFcUioLbW0hXN/qk6F++eJcje7aw== + +"@shopify/polaris-tokens@^3.0.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@shopify/polaris-tokens/-/polaris-tokens-3.1.0.tgz" + integrity sha512-SQPNtoevLxD3y1/nhXkthzhEyWAdi1+muxBn/DCHir1/+R/+1v/hkXDLG5o2X3jxqpnxd1R/rJVh9fMKmfWTyw== + dependencies: + hsluv "^0.1.0" + tslib "^1.14.1" + +"@shopify/polaris@^6.5.0": + version "6.5.0" + resolved "https://registry.npmjs.org/@shopify/polaris/-/polaris-6.5.0.tgz" + integrity sha512-IX+DrqvOlIXeP+ZZsxc8RZBSc1kbPvy2MrXHXldJV+AultuGVtra3T4reTY9A76TleL15XzPEh9Qdf08Gy66tQ== + dependencies: + "@shopify/polaris-icons" "^4.1.0" + "@shopify/polaris-tokens" "^3.0.0" + "@types/react" "^16.9.12" + "@types/react-dom" "^16.9.4" + "@types/react-transition-group" "^4.4.0" + focus-visible "^5.2.0" + lodash "^4.17.4" + react-transition-group "^4.4.1" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^7.0.2": + version "7.1.2" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz" + integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@tailwindcss/forms@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.3.3.tgz" + integrity sha512-U8Fi/gq4mSuaLyLtFISwuDYzPB73YzgozjxOIHsK6NXgg/IWD1FLaHbFlWmurAMyy98O+ao74ksdQefsquBV1Q== + dependencies: + mini-svg-data-uri "^1.2.3" + +"@tailwindcss/typography@^0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.4.1.tgz" + integrity sha512-ovPPLUhs7zAIJfr0y1dbGlyCuPhpuv/jpBoFgqAc658DWGGrOBWBMpAWLw2KlzbNeVk4YBJMzue1ekvIbdw6XA== + dependencies: + lodash.castarray "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + lodash.uniq "^4.5.0" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.1.14" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz" + integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.2" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.0" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.14.0" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.0.tgz" + integrity sha512-IilJZ1hJBUZwMOVDNTdflOOLzJB/ZtljYVa7k3gEZN/jqIJIPkWHC6dvbX+DD2CwZDHB9wAKzZPzzqMIkW37/w== + dependencies: + "@babel/types" "^7.3.0" + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/http-proxy-agent@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@types/http-proxy-agent/-/http-proxy-agent-2.0.2.tgz" + integrity sha512-2S6IuBRhqUnH1/AUx9k8KWtY3Esg4eqri946MnxTG5HwehF1S5mqLln8fcyMiuQkY72p2gH3W+rIPqp5li0LyQ== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^26.0.23": + version "26.0.23" + resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz" + integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" + +"@types/js-yaml@^4.0.0": + version "4.0.1" + resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.1.tgz" + integrity sha512-xdOvNmXmrZqqPy3kuCQ+fz6wA0xU5pji9cd1nDrflWaAWtYLLGk5ykW0H6yg5TVyehHP1pfmuuSaZkhP+kspVA== + +"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7": + version "7.0.7" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + +"@types/json-stable-stringify@^1.0.32": + version "1.0.32" + resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz" + integrity sha512-q9Q6+eUEGwQkv4Sbst3J4PNgDOvpuVuKj79Hl/qnmBMEIPzB5QoFRUtjcgcg2xNUZyYUGXBk5wYIBKHt0A+Mxw== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/jsonwebtoken@^8.5.0": + version "8.5.2" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.2.tgz" + integrity sha512-X8BOCkp+WJVNYCYIBugREtVZa4Y09Or9HDx6xqRZem5F8jJV8FuJgNessXyMuv9+U8pjnvdezASwU28uw+1scw== + dependencies: + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz" + integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== + +"@types/node@*": + version "15.12.2" + resolved "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz" + integrity sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.1.5": + version "2.3.0" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.0.tgz" + integrity sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/react-dom@^16.9.4": + version "16.9.13" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.13.tgz" + integrity sha512-34Hr3XnmUSJbUVDxIw/e7dhQn2BJZhJmlAaPyPwfTQyuVS9mV/CeyghFcXyvkJXxI7notQJz8mF8FeCVvloJrA== + dependencies: + "@types/react" "^16" + +"@types/react-dom@^17.0.8": + version "17.0.8" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.8.tgz" + integrity sha512-0ohAiJAx1DAUEcY9UopnfwCE9sSMDGnY/oXjWMax6g3RpzmTt2GMyMVAXcbn0mo8XAff0SbQJl2/SBU+hjSZ1A== + dependencies: + "@types/react" "*" + +"@types/react-transition-group@^4.4.0": + version "4.4.1" + resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.1.tgz" + integrity sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^17.0.11": + version "17.0.11" + resolved "https://registry.npmjs.org/@types/react/-/react-17.0.11.tgz" + integrity sha512-yFRQbD+whVonItSk7ZzP/L+gPTJVBkL/7shLEF+i9GC/1cV3JmUxEQz6+9ylhUpWSDuqo1N9qEvqS6vTj4USUA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/react@^16", "@types/react@^16.9.12": + version "16.14.8" + resolved "https://registry.npmjs.org/@types/react/-/react-16.14.8.tgz" + integrity sha512-QN0/Qhmx+l4moe7WJuTxNiTsjBwlBGHqKGvInSQCBdo7Qio0VtOqwsC0Wq7q3PbJlB0cR4Y4CVo1OOe6BOsOmA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.1" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz" + integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== + +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + +"@types/websocket@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.2.tgz" + integrity sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "20.2.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + +"@types/yargs@^15.0.0": + version "15.0.13" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz" + integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^16.0.0": + version "16.0.3" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz" + integrity sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/zen-observable@^0.8.0": + version "0.8.2" + resolved "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.2.tgz" + integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== + +"@typescript-eslint/eslint-plugin@^4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.1.tgz#c045e440196ae45464e08e20c38aff5c3a825947" + integrity sha512-9yfcNpDaNGQ6/LQOX/KhUFTR1sCKH+PBr234k6hI9XJ0VP5UqGxap0AnNwBnWFk1MNyWBylJH9ZkzBXC+5akZQ== + dependencies: + "@typescript-eslint/experimental-utils" "4.28.1" + "@typescript-eslint/scope-manager" "4.28.1" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.28.1": + version "4.28.1" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.1.tgz" + integrity sha512-n8/ggadrZ+uyrfrSEchx3jgODdmcx7MzVM2sI3cTpI/YlfSm0+9HEUaWw3aQn2urL2KYlWYMDgn45iLfjDYB+Q== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.28.1" + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/typescript-estree" "4.28.1" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.1.tgz#5181b81658414f47291452c15bf6cd44a32f85bd" + integrity sha512-UjrMsgnhQIIK82hXGaD+MCN8IfORS1CbMdu7VlZbYa8LCZtbZjJA26De4IPQB7XYZbL8gJ99KWNj0l6WD0guJg== + dependencies: + "@typescript-eslint/scope-manager" "4.28.1" + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/typescript-estree" "4.28.1" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.28.1": + version "4.28.1" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.1.tgz" + integrity sha512-o95bvGKfss6705x7jFGDyS7trAORTy57lwJ+VsYwil/lOUxKQ9tA7Suuq+ciMhJc/1qPwB3XE2DKh9wubW8YYA== + dependencies: + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/visitor-keys" "4.28.1" + +"@typescript-eslint/types@4.28.1": + version "4.28.1" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.1.tgz" + integrity sha512-4z+knEihcyX7blAGi7O3Fm3O6YRCP+r56NJFMNGsmtdw+NCdpG5SgNz427LS9nQkRVTswZLhz484hakQwB8RRg== + +"@typescript-eslint/typescript-estree@4.28.1": + version "4.28.1" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.1.tgz" + integrity sha512-GhKxmC4sHXxHGJv8e8egAZeTZ6HI4mLU6S7FUzvFOtsk7ZIDN1ksA9r9DyOgNqowA9yAtZXV0Uiap61bIO81FQ== + dependencies: + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/visitor-keys" "4.28.1" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@4.28.1": + version "4.28.1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.1.tgz" + integrity sha512-K4HMrdFqr9PFquPu178SaSb92CaWe2yErXyPumc8cYWxFmhgJsNY9eSePmO05j0JhBvf2Cdhptd6E6Yv9HVHcg== + dependencies: + "@typescript-eslint/types" "4.28.1" + eslint-visitor-keys "^2.0.0" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@wry/context@^0.6.0": + version "0.6.0" + resolved "https://registry.npmjs.org/@wry/context/-/context-0.6.0.tgz" + integrity sha512-sAgendOXR8dM7stJw3FusRxFHF/ZinU0lffsA2YTyyIOfic86JX02qlPqPVqJNZJPAxFt+2EE8bvq6ZlS0Kf+Q== + dependencies: + tslib "^2.1.0" + +"@wry/equality@^0.1.2": + version "0.1.11" + resolved "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz" + integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA== + dependencies: + tslib "^1.9.3" + +"@wry/equality@^0.5.0": + version "0.5.1" + resolved "https://registry.npmjs.org/@wry/equality/-/equality-0.5.1.tgz" + integrity sha512-FZKbdpbcVcbDxQrKcaBClNsQaMg9nof1RKM7mReJe5DKUzM5u8S7T+PqwNqvib5O2j2xxF1R4p5O3+b6baTrbw== + dependencies: + tslib "^2.1.0" + +"@wry/trie@^0.3.0": + version "0.3.0" + resolved "https://registry.npmjs.org/@wry/trie/-/trie-0.3.0.tgz" + integrity sha512-Yw1akIogPhAT6XPYsRHlZZIS0tIGmAl9EYXHi2scf7LPKKqdqmow/Hu4kEqP2cJR3EjaU/9L0ZlAjFf3hFxmug== + dependencies: + tslib "^2.1.0" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +abort-controller@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn-node@^1.6.1: + version "1.8.2" + resolved "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0, acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4: + version "8.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz" + integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.6.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz" + integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apollo-link-http-common@^0.2.16: + version "0.2.16" + resolved "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz" + integrity sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg== + dependencies: + apollo-link "^1.2.14" + ts-invariant "^0.4.0" + tslib "^1.9.3" + +apollo-link-http@^1.5.17: + version "1.5.17" + resolved "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz" + integrity sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg== + dependencies: + apollo-link "^1.2.14" + apollo-link-http-common "^0.2.16" + tslib "^1.9.3" + +apollo-link@^1.2.14: + version "1.2.14" + resolved "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz" + integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== + dependencies: + apollo-utilities "^1.3.0" + ts-invariant "^0.4.0" + tslib "^1.9.3" + zen-observable-ts "^0.8.21" + +apollo-utilities@^1.3.0: + version "1.3.4" + resolved "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz" + integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== + dependencies: + "@wry/equality" "^0.1.2" + fast-json-stable-stringify "^2.0.0" + ts-invariant "^0.4.0" + tslib "^1.10.0" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +arg@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.0.tgz" + integrity sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-back@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.1, array-includes@^3.1.2, array-includes@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" + is-string "^1.0.5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +array.prototype.flatmap@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/async/-/async-2.6.3.tgz" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +auto-bind@~4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz" + integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== + +autoprefixer@^9, autoprefixer@^9.6.1: + version "9.8.6" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +axe-core@^4.0.2: + version "4.2.3" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.2.3.tgz" + integrity sha512-pXnVMfJKSIWU2Ml4JHP7pZEPIrgBO1Fd3WGx+fPBsS+KRGhE4vxooD8XBGWbQOIVSZsVK7pUDBBkCicNu80yzQ== + +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-jest@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.5.tgz" + integrity sha512-bTMAbpCX7ldtfbca2llYLeSFsDM257aspyAOpsdrdSrBqoLkWCy4HPYTXtXWaSLgFPjrJGACL65rzzr4RFGadw== + dependencies: + "@jest/transform" "^27.0.5" + "@jest/types" "^27.0.2" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^27.0.1" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + +babel-loader@^8.2.2: + version "8.2.2" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz" + integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^1.4.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.0.1: + version "27.0.1" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.1.tgz" + integrity sha512-sqBF0owAcCDBVEDtxqfYr2F36eSHdx7lAVGyYuOBRnKdD6gzcy0I0XrAYCZgOA3CRrLhmR+Uae9nogPzmAtOfQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-polyfill-corejs2@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz" + integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.2.2" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz" + integrity sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.2" + core-js-compat "^3.9.1" + +babel-plugin-polyfill-regenerator@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz" + integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.2" + +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-fbjs@^3.3.0: + version "3.4.0" + resolved "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz" + integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +babel-preset-jest@^27.0.1: + version "27.0.1" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.1.tgz" + integrity sha512-nIBIqCEpuiyhvjQs2mVNwTxQQa2xk70p9Dd/0obQGBf8FBzbnI8QhQKzLsWMN2i6q+5B0OcWDtrboBX5gmOLyA== + dependencies: + babel-plugin-jest-hoist "^27.0.1" + babel-preset-current-node-syntax "^1.0.0" + +backo2@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6, browserslist@^4.6.4: + version "4.16.6" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== + dependencies: + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= + +buffer-from@1.x, buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.7.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bugsnag-build-reporter@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/bugsnag-build-reporter/-/bugsnag-build-reporter-1.0.3.tgz" + integrity sha512-LErEX255NUXc7N4wf/soalOKjsQRzyA/63ZXEGWAbfs0K+NMFWqoAkoeIuJo3Qvi6Y6brpldhclkxc9AjPXMTg== + dependencies: + chalk "^2.3.0" + concat-stream "^1.6.0" + find-nearest-file "^1.1.0" + meow "^4.0.0" + minimist "^1.2.0" + once "^1.4.0" + pino "^4.10.3" + run-parallel "^1.1.6" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0, bytes@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^15.0.5: + version "15.2.0" + resolved "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz" + integrity sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@4.1.2, camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz" + integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: + version "1.0.30001237" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz" + integrity sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw== + +capital-case@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz" + integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + +chalk@^1.0.0, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0, chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-case-all@1.0.14: + version "1.0.14" + resolved "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz" + integrity sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA== + dependencies: + change-case "^4.1.2" + is-lower-case "^2.0.2" + is-upper-case "^2.0.2" + lower-case "^2.0.2" + lower-case-first "^2.0.2" + sponge-case "^1.0.1" + swap-case "^2.0.2" + title-case "^3.0.3" + upper-case "^2.0.2" + upper-case-first "^2.0.2" + +change-case@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz" + integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== + dependencies: + camel-case "^4.1.2" + capital-case "^1.0.4" + constant-case "^3.0.4" + dot-case "^3.0.4" + header-case "^2.0.4" + no-case "^3.0.4" + param-case "^3.0.4" + pascal-case "^3.1.2" + path-case "^3.0.4" + sentence-case "^3.0.4" + snake-case "^3.0.4" + tslib "^2.0.3" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1, chokidar@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^3.1.1: + version "3.2.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz" + integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +cjs-module-lexer@^1.0.0: + version "1.2.1" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz" + integrity sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^2.0.0, cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.4: + version "1.5.5" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz" + integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0, color@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/color/-/color-3.1.3.tgz" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + +colorette@^1.2.1, colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-line-args@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz" + integrity sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg== + dependencies: + array-back "^3.0.1" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.1" + resolved "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz" + integrity sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA== + dependencies: + array-back "^4.0.1" + chalk "^2.4.2" + table-layout "^1.0.1" + typical "^5.2.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^6.0.0: + version "6.2.1" + resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +common-tags@1.8.0, common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression-webpack-plugin@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-4.0.1.tgz" + integrity sha512-0mg6PgwTsUe5LEcUrOu3ob32vraDx2VdbMGAT1PARcOV+UJWDYZFdkSo6RbHoGQ061mmmkC7XpRKOlvwm/gzJQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + schema-utils "^2.7.0" + serialize-javascript "^4.0.0" + webpack-sources "^1.4.3" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0, concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +consola@^2.15.0: + version "2.15.3" + resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" + integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constant-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz" + integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case "^2.0.2" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.4.0, convert-source-map@^1.6.0: + version "1.8.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.14.0, core-js-compat@^3.9.1: + version "3.14.0" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.14.0.tgz" + integrity sha512-R4NS2eupxtiJU+VwgkF9WTpnSfZW4pogwKHd8bclWU2sp93Pr5S1uYJI84cMOubJRou7bcfL0vmwtLslWN5p3A== + dependencies: + browserslist "^4.16.6" + semver "7.0.0" + +core-js-pure@^3.15.0: + version "3.15.2" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.15.2.tgz" + integrity sha512-D42L7RYh1J2grW8ttxoY1+17Y4wXZeKe7uyplAI3FkNQyI5OgBIAjUfFiTPfL1rs0qLpxaabITNbjKl1Sp82tA== + +core-js@^3.12.1: + version "3.14.0" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.14.0.tgz" + integrity sha512-3s+ed8er9ahK+zJpp9ZtuVcDoFzHNiZsPbNAAE4KXgrRHbjSqqNN6xGSXq6bq7TZIbKj4NLrLb6bJ5i+vSVjHA== + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig-toml-loader@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz" + integrity sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA== + dependencies: + "@iarna/toml" "^2.2.5" + +cosmiconfig@7.0.0, cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@3.0.6: + version "3.0.6" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz" + integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== + dependencies: + node-fetch "2.6.1" + +cross-fetch@3.1.4, cross-fetch@^3.0.4, cross-fetch@^3.0.6: + version "3.1.4" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz" + integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== + dependencies: + node-fetch "2.6.1" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-unit-converter@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz" + integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.3" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.11" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.8" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2: + version "3.0.8" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz" + integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +damerau-levenshtein@^1.0.6: + version "1.0.7" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz" + integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +dataloader@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz" + integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== + +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +debounce@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decamelize-keys@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decimal.js@^10.2.1: + version "10.3.1" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@^0.6.0, deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/del/-/del-4.1.1.tgz" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +dependency-graph@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz" + integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detective@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz" + integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== + dependencies: + acorn-node "^1.6.1" + defined "^1.0.0" + minimist "^1.1.1" + +didyoumean@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.1.tgz" + integrity sha1-6S7f2tplN9SE1zwBcv0eugxJdv8= + +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + +diff-sequences@^27.0.1: + version "27.0.1" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.1.tgz" + integrity sha512-XPLijkfJUh/PIBnfkcSHgvD6tlYixmcMAn3osTk6jt+H0v/mgURto1XUiD9DKuGX5NDoVS6dSlA23gd9FUaCFg== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.2.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv@^8.2.0: + version "8.6.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.723: + version "1.3.752" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz" + integrity sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A== + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.0.0: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.2, error-stack-parser@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: + version "1.18.3" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz" + integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.10.3" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-airbnb-base@^14.2.1: + version "14.2.1" + resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz" + integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.2" + +eslint-config-airbnb@^18.2.1: + version "18.2.1" + resolved "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz" + integrity sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg== + dependencies: + eslint-config-airbnb-base "^14.2.1" + object.assign "^4.1.2" + object.entries "^1.1.2" + +eslint-config-prettier@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz" + integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== + +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz" + integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== + dependencies: + debug "^3.2.7" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.23.4: + version "2.23.4" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz" + integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== + dependencies: + array-includes "^3.1.3" + array.prototype.flat "^1.2.4" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.1" + find-up "^2.0.0" + has "^1.0.3" + is-core-module "^2.4.0" + minimatch "^3.0.4" + object.values "^1.1.3" + pkg-up "^2.0.0" + read-pkg-up "^3.0.0" + resolve "^1.20.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-jsx-a11y@^6.4.1: + version "6.4.1" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== + dependencies: + "@babel/runtime" "^7.11.2" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^4.0.2" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^3.1.0" + language-tags "^1.0.5" + +eslint-plugin-prettier@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz" + integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react-hooks@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz" + integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== + +eslint-plugin-react@^7.24.0: + version "7.24.0" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz" + integrity sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q== + dependencies: + array-includes "^3.1.3" + array.prototype.flatmap "^1.2.4" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.0.4" + object.entries "^1.1.4" + object.fromentries "^2.0.4" + object.values "^1.1.4" + prop-types "^15.7.2" + resolve "^2.0.0-next.3" + string.prototype.matchall "^4.0.5" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.29.0: + version "7.29.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.29.0.tgz#ee2a7648f2e729485e4d0bd6383ec1deabc8b3c0" + integrity sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^1.0.7: + version "1.1.0" + resolved "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz" + integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +expect@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/expect/-/expect-27.0.2.tgz" + integrity sha512-YJFNJe2+P2DqH+ZrXy+ydRQYO87oxRUonZImpDodR1G7qo3NYd3pL+NQ9Keqpez3cehczYwZDBC3A7xk3n7M/w== + dependencies: + "@jest/types" "^27.0.2" + ansi-styles "^5.0.0" + jest-get-type "^27.0.1" + jest-matcher-utils "^27.0.2" + jest-message-util "^27.0.2" + jest-regex-util "^27.0.1" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.npmjs.org/express/-/express-4.17.1.tgz" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-files@9.0.0, extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^3.1.1, fast-glob@^3.2.5: + version "3.2.5" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-parse@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz" + integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fast-safe-stringify@^1.0.8, fast-safe-stringify@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz" + integrity sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw== + +fastq@^1.6.0: + version "1.11.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz" + integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== + dependencies: + cross-fetch "^3.0.4" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-nearest-file@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/find-nearest-file/-/find-nearest-file-1.1.0.tgz" + integrity sha512-NMsS0ITOwpBPrHOyO7YUtDhaVEGUKS0kBJDVaWZPuCzO7JMW+uzFQQVts/gPyIV9ioyNWDb5LjhHWXVf1OnBDA== + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatstr@^1.0.5: + version "1.0.12" + resolved "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz" + integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== + +flatted@^3.1.0, flatted@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +focus-visible@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz" + integrity sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ== + +follow-redirects@^1.0.0, follow-redirects@^1.10.0: + version "1.14.1" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz" + integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +form-data@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz" + integrity sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: + version "7.1.7" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.6.0, globals@^13.9.0: + version "13.9.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz" + integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== + dependencies: + type-fest "^0.20.2" + +globby@11.0.3, globby@^11.0.3: + version "11.0.3" + resolved "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.6" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +graphql-config@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-3.3.0.tgz" + integrity sha512-mSQIsPMssr7QrgqhnjI+CyVH6oQgCrgS6irHsTvwf7RFDRnR2k9kqpQOQgVoOytBSn0DOYryS0w0SAg9xor/Jw== + dependencies: + "@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2" + "@graphql-tools/graphql-file-loader" "^6.0.0" + "@graphql-tools/json-file-loader" "^6.0.0" + "@graphql-tools/load" "^6.0.0" + "@graphql-tools/merge" "^6.0.0" + "@graphql-tools/url-loader" "^6.0.0" + "@graphql-tools/utils" "^7.0.0" + cosmiconfig "7.0.0" + cosmiconfig-toml-loader "1.0.0" + minimatch "3.0.4" + string-env-interpolation "1.0.1" + +graphql-request@^3.3.0: + version "3.4.0" + resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-3.4.0.tgz" + integrity sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg== + dependencies: + cross-fetch "^3.0.6" + extract-files "^9.0.0" + form-data "^3.0.0" + +graphql-tag@^2.11.0, graphql-tag@^2.12.0: + version "2.12.5" + resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.5.tgz" + integrity sha512-5xNhP4063d16Pz3HBtKprutsPrmHZi5IdUGOWRxA2B6VF7BIRGOHZ5WQvDmJXZuPcBg7rYwaFxvQYjqkSdR3TQ== + dependencies: + tslib "^2.1.0" + +graphql-ws@^4.4.1: + version "4.9.0" + resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.9.0.tgz" + integrity sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag== + +graphql@^15.5.1: + version "15.5.1" + resolved "https://registry.npmjs.org/graphql/-/graphql-15.5.1.tgz" + integrity sha512-FeTRX67T3LoE3LWAxxOlW2K3Bz+rMYAC18rRguK4wgXaTZMiJwSUwDmPFo3UadAKbzirKIg5Qy+sNJXbpPRnQw== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +header-case@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz" + integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== + dependencies: + capital-case "^1.0.4" + tslib "^2.0.3" + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +history@^4.9.0: + version "4.10.1" + resolved "https://registry.npmjs.org/history/-/history-4.10.1.tgz" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +hsluv@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/hsluv/-/hsluv-0.1.0.tgz" + integrity sha512-ERcanKLAszD2XN3Vh5r5Szkrv9q0oSTudmP0rkiKAGM/3NMc9FLmMZBB7TSqTaXJfSDBOreYTfjezCOYbRKqlw== + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-tags@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz" + integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.13, ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +immutable@~3.7.6: + version "3.7.6" + resolved "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz" + integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz" + integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== + dependencies: + import-from "^3.0.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@3.0.0, import-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" + +import-from@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-4.0.0.tgz#2710b8d66817d232e16f4166e319248d3d5492e2" + integrity sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ== + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@^7.3.3: + version "7.3.3" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + dependencies: + call-bind "^1.0.2" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== + dependencies: + ci-info "^3.1.1" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.2.0, is-core-module@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@4.0.1, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz" + integrity sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ== + dependencies: + tslib "^2.0.3" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + dependencies: + symbol-observable "^1.1.0" + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-promise@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz" + integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== + +is-promise@^2.1.0: + version "2.2.2" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-regex@^1.0.4, is-regex@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.2" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5, is-string@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz" + integrity sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ== + dependencies: + tslib "^2.0.3" + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +iserror@0.0.2, iserror@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/iserror/-/iserror-0.0.2.tgz" + integrity sha1-vVNFH+L2aLnyQCwZZnh6qix8C/U= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz" + integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== + dependencies: + node-fetch "^2.6.1" + whatwg-fetch "^3.4.1" + +isomorphic-ws@4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +iterall@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== + +jest-changed-files@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.2.tgz" + integrity sha512-eMeb1Pn7w7x3wue5/vF73LPCJ7DKQuC9wQUR5ebP9hDPpk5hzcT/3Hmz3Q5BOFpR3tgbmaWhJcMTVgC8Z1NuMw== + dependencies: + "@jest/types" "^27.0.2" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.5.tgz" + integrity sha512-p5rO90o1RTh8LPOG6l0Fc9qgp5YGv+8M5CFixhMh7gGHtGSobD1AxX9cjFZujILgY8t30QZ7WVvxlnuG31r8TA== + dependencies: + "@jest/environment" "^27.0.5" + "@jest/test-result" "^27.0.2" + "@jest/types" "^27.0.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.0.2" + is-generator-fn "^2.0.0" + jest-each "^27.0.2" + jest-matcher-utils "^27.0.2" + jest-message-util "^27.0.2" + jest-runtime "^27.0.5" + jest-snapshot "^27.0.5" + jest-util "^27.0.2" + pretty-format "^27.0.2" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.5.tgz" + integrity sha512-kZqY020QFOFQKVE2knFHirTBElw3/Q0kUbDc3nMfy/x+RQ7zUY89SUuzpHHJoSX1kX7Lq569ncvjNqU3Td/FCA== + dependencies: + "@jest/core" "^27.0.5" + "@jest/test-result" "^27.0.2" + "@jest/types" "^27.0.2" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + jest-config "^27.0.5" + jest-util "^27.0.2" + jest-validate "^27.0.2" + prompts "^2.0.1" + yargs "^16.0.3" + +jest-config@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.0.5.tgz" + integrity sha512-zCUIXag7QIXKEVN4kUKbDBDi9Q53dV5o3eNhGqe+5zAbt1vLs4VE3ceWaYrOub0L4Y7E9pGfM84TX/0ARcE+Qw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^27.0.5" + "@jest/types" "^27.0.2" + babel-jest "^27.0.5" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + is-ci "^3.0.0" + jest-circus "^27.0.5" + jest-environment-jsdom "^27.0.5" + jest-environment-node "^27.0.5" + jest-get-type "^27.0.1" + jest-jasmine2 "^27.0.5" + jest-regex-util "^27.0.1" + jest-resolve "^27.0.5" + jest-runner "^27.0.5" + jest-util "^27.0.2" + jest-validate "^27.0.2" + micromatch "^4.0.4" + pretty-format "^27.0.2" + +jest-diff@^26.0.0: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-diff@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.2.tgz" + integrity sha512-BFIdRb0LqfV1hBt8crQmw6gGQHVDhM87SpMIZ45FPYKReZYG5er1+5pIn2zKqvrJp6WNox0ylR8571Iwk2Dmgw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.0.1" + jest-get-type "^27.0.1" + pretty-format "^27.0.2" + +jest-docblock@^27.0.1: + version "27.0.1" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.1.tgz" + integrity sha512-TA4+21s3oebURc7VgFV4r7ltdIJ5rtBH1E3Tbovcg7AV+oLfD5DcJ2V2vJ5zFA9sL5CFd/d2D6IpsAeSheEdrA== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.0.2.tgz" + integrity sha512-OLMBZBZ6JkoXgUenDtseFRWA43wVl2BwmZYIWQws7eS7pqsIvePqj/jJmEnfq91ALk3LNphgwNK/PRFBYi7ITQ== + dependencies: + "@jest/types" "^27.0.2" + chalk "^4.0.0" + jest-get-type "^27.0.1" + jest-util "^27.0.2" + pretty-format "^27.0.2" + +jest-environment-jsdom@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.5.tgz" + integrity sha512-ToWhViIoTl5738oRaajTMgYhdQL73UWPoV4GqHGk2DPhs+olv8OLq5KoQW8Yf+HtRao52XLqPWvl46dPI88PdA== + dependencies: + "@jest/environment" "^27.0.5" + "@jest/fake-timers" "^27.0.5" + "@jest/types" "^27.0.2" + "@types/node" "*" + jest-mock "^27.0.3" + jest-util "^27.0.2" + jsdom "^16.6.0" + +jest-environment-node@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.5.tgz" + integrity sha512-47qqScV/WMVz5OKF5TWpAeQ1neZKqM3ySwNveEnLyd+yaE/KT6lSMx/0SOx60+ZUcVxPiESYS+Kt2JS9y4PpkQ== + dependencies: + "@jest/environment" "^27.0.5" + "@jest/fake-timers" "^27.0.5" + "@jest/types" "^27.0.2" + "@types/node" "*" + jest-mock "^27.0.3" + jest-util "^27.0.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-get-type@^27.0.1: + version "27.0.1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.1.tgz" + integrity sha512-9Tggo9zZbu0sHKebiAijyt1NM77Z0uO4tuWOxUCujAiSeXv30Vb5D4xVF4UR4YWNapcftj+PbByU54lKD7/xMg== + +jest-haste-map@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.5.tgz" + integrity sha512-3LFryGSHxwPFHzKIs6W0BGA2xr6g1MvzSjR3h3D8K8Uqy4vbRm/grpGHzbPtIbOPLC6wFoViRrNEmd116QWSkw== + dependencies: + "@jest/types" "^27.0.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^27.0.1" + jest-serializer "^27.0.1" + jest-util "^27.0.2" + jest-worker "^27.0.2" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.5.tgz" + integrity sha512-m3TojR19sFmTn79QoaGy1nOHBcLvtLso6Zh7u+gYxZWGcza4rRPVqwk1hciA5ZOWWZIJOukAcore8JRX992FaA== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^27.0.5" + "@jest/source-map" "^27.0.1" + "@jest/test-result" "^27.0.2" + "@jest/types" "^27.0.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.0.2" + is-generator-fn "^2.0.0" + jest-each "^27.0.2" + jest-matcher-utils "^27.0.2" + jest-message-util "^27.0.2" + jest-runtime "^27.0.5" + jest-snapshot "^27.0.5" + jest-util "^27.0.2" + pretty-format "^27.0.2" + throat "^6.0.1" + +jest-leak-detector@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.2.tgz" + integrity sha512-TZA3DmCOfe8YZFIMD1GxFqXUkQnIoOGQyy4hFCA2mlHtnAaf+FeOMxi0fZmfB41ZL+QbFG6BVaZF5IeFIVy53Q== + dependencies: + jest-get-type "^27.0.1" + pretty-format "^27.0.2" + +jest-matcher-utils@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.2.tgz" + integrity sha512-Qczi5xnTNjkhcIB0Yy75Txt+Ez51xdhOxsukN7awzq2auZQGPHcQrJ623PZj0ECDEMOk2soxWx05EXdXGd1CbA== + dependencies: + chalk "^4.0.0" + jest-diff "^27.0.2" + jest-get-type "^27.0.1" + pretty-format "^27.0.2" + +jest-message-util@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.2.tgz" + integrity sha512-rTqWUX42ec2LdMkoUPOzrEd1Tcm+R1KfLOmFK+OVNo4MnLsEaxO5zPDb2BbdSmthdM/IfXxOZU60P/WbWF8BTw== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.0.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + pretty-format "^27.0.2" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.0.3: + version "27.0.3" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.3.tgz" + integrity sha512-O5FZn5XDzEp+Xg28mUz4ovVcdwBBPfAhW9+zJLO0Efn2qNbYcDaJvSlRiQ6BCZUCVOJjALicuJQI9mRFjv1o9Q== + dependencies: + "@jest/types" "^27.0.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^27.0.1: + version "27.0.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.1.tgz" + integrity sha512-6nY6QVcpTgEKQy1L41P4pr3aOddneK17kn3HJw6SdwGiKfgCGTvH02hVXL0GU8GEKtPH83eD2DIDgxHXOxVohQ== + +jest-resolve-dependencies@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.5.tgz" + integrity sha512-xUj2dPoEEd59P+nuih4XwNa4nJ/zRd/g4rMvjHrZPEBWeWRq/aJnnM6mug+B+Nx+ILXGtfWHzQvh7TqNV/WbuA== + dependencies: + "@jest/types" "^27.0.2" + jest-regex-util "^27.0.1" + jest-snapshot "^27.0.5" + +jest-resolve@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.5.tgz" + integrity sha512-Md65pngRh8cRuWVdWznXBB5eDt391OJpdBaJMxfjfuXCvOhM3qQBtLMCMTykhuUKiBMmy5BhqCW7AVOKmPrW+Q== + dependencies: + "@jest/types" "^27.0.2" + chalk "^4.0.0" + escalade "^3.1.1" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^27.0.2" + jest-validate "^27.0.2" + resolve "^1.20.0" + slash "^3.0.0" + +jest-runner@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.5.tgz" + integrity sha512-HNhOtrhfKPArcECgBTcWOc+8OSL8GoFoa7RsHGnfZR1C1dFohxy9eLtpYBS+koybAHlJLZzNCx2Y/Ic3iEtJpQ== + dependencies: + "@jest/console" "^27.0.2" + "@jest/environment" "^27.0.5" + "@jest/test-result" "^27.0.2" + "@jest/transform" "^27.0.5" + "@jest/types" "^27.0.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-docblock "^27.0.1" + jest-environment-jsdom "^27.0.5" + jest-environment-node "^27.0.5" + jest-haste-map "^27.0.5" + jest-leak-detector "^27.0.2" + jest-message-util "^27.0.2" + jest-resolve "^27.0.5" + jest-runtime "^27.0.5" + jest-util "^27.0.2" + jest-worker "^27.0.2" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runtime@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.5.tgz" + integrity sha512-V/w/+VasowPESbmhXn5AsBGPfb35T7jZPGZybYTHxZdP7Gwaa+A0EXE6rx30DshHKA98lVCODbCO8KZpEW3hiQ== + dependencies: + "@jest/console" "^27.0.2" + "@jest/environment" "^27.0.5" + "@jest/fake-timers" "^27.0.5" + "@jest/globals" "^27.0.5" + "@jest/source-map" "^27.0.1" + "@jest/test-result" "^27.0.2" + "@jest/transform" "^27.0.5" + "@jest/types" "^27.0.2" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-haste-map "^27.0.5" + jest-message-util "^27.0.2" + jest-mock "^27.0.3" + jest-regex-util "^27.0.1" + jest-resolve "^27.0.5" + jest-snapshot "^27.0.5" + jest-util "^27.0.2" + jest-validate "^27.0.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^16.0.3" + +jest-serializer@^27.0.1: + version "27.0.1" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.1.tgz" + integrity sha512-svy//5IH6bfQvAbkAEg1s7xhhgHTtXu0li0I2fdKHDsLP2P2MOiscPQIENQep8oU2g2B3jqLyxKKzotZOz4CwQ== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-snapshot@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.5.tgz" + integrity sha512-H1yFYdgnL1vXvDqMrnDStH6yHFdMEuzYQYc71SnC/IJnuuhW6J16w8GWG1P+qGd3Ag3sQHjbRr0TcwEo/vGS+g== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/parser" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.0.5" + "@jest/types" "^27.0.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.0.2" + graceful-fs "^4.2.4" + jest-diff "^27.0.2" + jest-get-type "^27.0.1" + jest-haste-map "^27.0.5" + jest-matcher-utils "^27.0.2" + jest-message-util "^27.0.2" + jest-resolve "^27.0.5" + jest-util "^27.0.2" + natural-compare "^1.4.0" + pretty-format "^27.0.2" + semver "^7.3.2" + +jest-util@^27.0.0, jest-util@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.0.2.tgz" + integrity sha512-1d9uH3a00OFGGWSibpNYr+jojZ6AckOMCXV2Z4K3YXDnzpkAaXQyIpY14FOJPiUmil7CD+A6Qs+lnnh6ctRbIA== + dependencies: + "@jest/types" "^27.0.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^3.0.0" + picomatch "^2.2.3" + +jest-validate@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.2.tgz" + integrity sha512-UgBF6/oVu1ofd1XbaSotXKihi8nZhg0Prm8twQ9uCuAfo59vlxCXMPI/RKmrZEVgi3Nd9dS0I8A0wzWU48pOvg== + dependencies: + "@jest/types" "^27.0.2" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.0.1" + leven "^3.1.0" + pretty-format "^27.0.2" + +jest-watcher@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.2.tgz" + integrity sha512-8nuf0PGuTxWj/Ytfw5fyvNn/R80iXY8QhIT0ofyImUvdnoaBdT6kob0GmhXR+wO+ALYVnh8bQxN4Tjfez0JgkA== + dependencies: + "@jest/test-result" "^27.0.2" + "@jest/types" "^27.0.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.0.2" + string-length "^4.0.1" + +jest-worker@^26.5.0: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz" + integrity sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.0.5: + version "27.0.5" + resolved "https://registry.npmjs.org/jest/-/jest-27.0.5.tgz" + integrity sha512-4NlVMS29gE+JOZvgmSAsz3eOjkSsHqjTajlIsah/4MVSmKvf3zFP/TvgcLoWe2UVHiE9KF741sReqhF0p4mqbQ== + dependencies: + "@jest/core" "^27.0.5" + import-local "^3.0.2" + jest-cli "^27.0.5" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1, js-yaml@^3.14.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^16.6.0: + version "16.6.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz" + integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.5" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-to-pretty-yaml@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz" + integrity sha1-9M0L0KXo/h3yWq9boRiwmf2ZLVs= + dependencies: + remedial "^1.0.7" + remove-trailing-spaces "^1.0.6" + +json3@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@2.x, json5@^2.1.2: + version "2.2.0" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsonwebtoken@^8.5.1: + version "8.5.1" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz" + integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^5.6.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz" + integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== + +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +latest-version@5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lilconfig@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz" + integrity sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg== + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +listr@^0.14.3: + version "0.14.3" + resolved "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.castarray@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz" + integrity sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU= + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.get@^4, lodash.get@^4.0: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.has@^4.0: + version "4.5.2" + resolved "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz" + integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI= + +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" + integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" + integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" + integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" + integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= + +lodash.topath@^4.5.2: + version "4.5.2" + resolved "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz" + integrity sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak= + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@4.17.21, lodash@4.x, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.0: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + +loglevel@^1.6.8: + version "1.7.1" + resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz" + integrity sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg== + dependencies: + tslib "^2.0.3" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@1.x, make-error@^1, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-cache@^0.2.0, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz" + integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz" + integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist "^1.1.3" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +meros@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/meros/-/meros-1.1.4.tgz" + integrity sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.48.0, "mime-db@>= 1.43.0 < 2": + version "1.48.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz" + integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24: + version "2.1.31" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz" + integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== + dependencies: + mime-db "1.48.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.5.2" + resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== + dependencies: + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" + +mini-css-extract-plugin@^0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +mini-svg-data-uri@^1.2.3: + version "1.3.3" + resolved "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.3.3.tgz" + integrity sha512-+fA2oRcR1dJI/7ITmeQJDrYWks0wodlOz0pAEhKYJ2IVc1z0AnwJUsKY2fzFmPAM3Jo9J0rBx8JAA9QQSJ5PuA== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist-options@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@^0.5, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +modern-normalize@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz" + integrity sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-emoji@^1.8.1: + version "1.10.0" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + +node-fetch@2.6.1, node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-releases@^1.1.71: + version "1.1.73" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz" + integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + +object-inspect@^1.10.3, object-inspect@^1.9.0: + version "1.10.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.2, object.entries@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz" + integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + +object.fromentries@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz" + integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.3, object.values@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz" + integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimism@^0.16.0: + version "0.16.1" + resolved "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz" + integrity sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg== + dependencies: + "@wry/context" "^0.6.0" + "@wry/trie" "^0.3.0" + +optimize-css-assets-webpack-plugin@^5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.6.tgz" + integrity sha512-JAYw7WrIAIuHWoKeSBB3lJ6ZG9PSDK3JJduv/FMpIY060wvbA8Lqn/TCtxNGICNlg0X5AGshLzIhpYrkltdq+A== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/original/-/original-1.0.2.tgz" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@3.1.0, p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-filepath@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz" + integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +path-complete-extname@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/path-complete-extname/-/path-complete-extname-1.0.0.tgz" + integrity sha512-CVjiWcMRdGU8ubs08YQVzhutOR5DEfO97ipRIlOGMK5Bek5nQySknBpuxVAVJ36hseTNs+vdIcv57ZrWxH7zvg== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pino-std-serializers@^2.0.0: + version "2.5.0" + resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.5.0.tgz" + integrity sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg== + +pino@^4.10.3: + version "4.17.6" + resolved "https://registry.npmjs.org/pino/-/pino-4.17.6.tgz" + integrity sha512-LFDwmhyWLBnmwO/2UFbWu1jEGVDzaPupaVdx0XcZ3tIAx1EDEBauzxXf2S0UcFK7oe+X9MApjH0hx9U1XMgfCA== + dependencies: + chalk "^2.4.1" + fast-json-parse "^1.0.3" + fast-safe-stringify "^1.2.3" + flatstr "^1.0.5" + pino-std-serializers "^2.0.0" + pump "^3.0.0" + quick-format-unescaped "^1.1.2" + split2 "^2.2.0" + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +pnp-webpack-plugin@^1.6.4: + version "1.6.4" + resolved "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== + dependencies: + postcss "^7.0.26" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-functions@^3: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz" + integrity sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4= + dependencies: + glob "^7.1.2" + object-assign "^4.1.1" + postcss "^6.0.9" + postcss-value-parser "^3.3.0" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-import@^12.0.1: + version "12.0.1" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz" + integrity sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw== + dependencies: + postcss "^7.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-initial@^3.0.0: + version "3.0.4" + resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== + dependencies: + postcss "^7.0.2" + +postcss-js@^2: + version "2.0.3" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz" + integrity sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w== + dependencies: + camelcase-css "^2.0.1" + postcss "^7.0.18" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-load-config@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz" + integrity sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g== + dependencies: + import-cwd "^3.0.0" + lilconfig "^2.0.3" + yaml "^1.10.2" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nested@^4: + version "4.2.3" + resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz" + integrity sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw== + dependencies: + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@^6.7.0: + version "6.7.0" + resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== + dependencies: + postcss "^7.0.26" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.6: + version "6.0.6" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.1" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^6.0.9: + version "6.0.23" + resolved "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.36" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz" + integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^8.2.1: + version "8.3.4" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.3.4.tgz" + integrity sha512-/tZY0PXExXXnNhKv3TOvZAOUYRyuqcCbBm2c17YMDK0PlVII3K7/LKdt3ScHL+hhouddjUWi+1sKDf9xXW+8YA== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.23" + source-map-js "^0.6.2" + +postcss@^8.3.5: + version "8.3.5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.5.tgz#982216b113412bc20a86289e91eb994952a5b709" + integrity sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.23" + source-map-js "^0.6.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@>=1.10, prettier@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz" + integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== + +pretty-format@^26.0.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^27.0.2: + version "27.0.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.2.tgz" + integrity sha512-mXKbbBPnYTG7Yra9qFBtqj+IXcsvxsvOBco3QHxtxTl+hHKq6QdzMZ+q0CtL4ORHZgwGImRr2XZUX2EWzORxig== + dependencies: + "@jest/types" "^27.0.2" + ansi-regex "^5.0.0" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^2.0.1: + version "2.4.1" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz" + integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.5: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.33: + version "1.8.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +purgecss@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/purgecss/-/purgecss-3.1.3.tgz" + integrity sha512-hRSLN9mguJ2lzlIQtW4qmPS2kh6oMnA9RxdIYK8sz18QYqd6ePp4GNDl18oWHA1f2v2NEQIh51CO8s/E3YGckQ== + dependencies: + commander "^6.0.0" + glob "^7.0.0" + postcss "^8.2.1" + postcss-selector-parser "^6.0.2" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-format-unescaped@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz" + integrity sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg= + dependencies: + fast-safe-stringify "^1.0.8" + +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz" + integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-fast-compare@^3.1.1: + version "3.2.0" + resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + +react-helmet@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + +react-hook-form@^7.9.0: + version "7.9.0" + resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.9.0.tgz" + integrity sha512-1SazsTvsC5A4jLxc8fIf0bB92kEp4MGjP69k8s+2nI1spHPha5UkLwaebOXhO9vY95aGqcyBU67pRiv+6T5KZQ== + +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-router-dom@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz" + integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz" + integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.4.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-side-effect@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz" + integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== + +react-transition-group@^4.4.1: + version "4.4.2" + resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz" + integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +react_ujs@^2.6.0, react_ujs@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/react_ujs/-/react_ujs-2.6.1.tgz" + integrity sha512-9M33/A8cubStkZ2cpJSimcTD0RlCWiqXF6e90IQmMw/Caf/W0dtAzOtHtiQE3JjLbt/nhRR7NLPxMfnlm141ig== + dependencies: + react_ujs "^2.6.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" + integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + dependencies: + pify "^2.3.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= + dependencies: + indent-string "^3.0.0" + strip-indent "^2.0.0" + +reduce-css-calc@^2.1.8: + version "2.1.8" + resolved "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz" + integrity sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg== + dependencies: + css-unit-converter "^1.1.1" + postcss-value-parser "^3.3.0" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: + version "0.13.7" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +registry-auth-token@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== + dependencies: + rc "^1.2.8" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.9" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz" + integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== + dependencies: + jsesc "~0.5.0" + +relay-compiler@10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/relay-compiler/-/relay-compiler-10.1.0.tgz" + integrity sha512-HPqc3N3tNgEgUH5+lTr5lnLbgnsZMt+MRiyS0uAVNhuPY2It0X1ZJG+9qdA3L9IqKFUNwVn6zTO7RArjMZbARQ== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/parser" "^7.0.0" + "@babel/runtime" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.3.0" + chalk "^4.0.0" + fb-watchman "^2.0.0" + fbjs "^3.0.0" + glob "^7.1.1" + immutable "~3.7.6" + nullthrows "^1.1.1" + relay-runtime "10.1.0" + signedsource "^1.0.0" + yargs "^15.3.1" + +relay-runtime@10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/relay-runtime/-/relay-runtime-10.1.0.tgz" + integrity sha512-bxznLnQ1ST6APN/cFi7l0FpjbZVchWQjjhj9mAuJBuUqNNCh9uV+UTRhpQF7Q8ycsPp19LHTpVyGhYb0ustuRQ== + dependencies: + "@babel/runtime" "^7.0.0" + fbjs "^3.0.0" + +remedial@^1.0.7: + version "1.0.8" + resolved "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz" + integrity sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg== + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +remove-trailing-spaces@^1.0.6: + version "1.0.8" + resolved "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz" + integrity sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA== + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +replaceall@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/replaceall/-/replaceall-0.1.6.tgz" + integrity sha1-gdgax663LX9cSUKt8ml6MiBojY4= + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel-limit@^1.0.6: + version "1.1.0" + resolved "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +run-parallel@^1.1.6, run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rxjs@^6.3.3, rxjs@^6.6.0: + version "6.6.7" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-loader@10.1.1: + version "10.1.1" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz" + integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== + dependencies: + klona "^2.0.4" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + semver "^7.3.2" + +sass@^1.32.13: + version "1.34.1" + resolved "https://registry.npmjs.org/sass/-/sass-1.34.1.tgz" + integrity sha512-scLA7EIZM+MmYlej6sdVr0HRbZX5caX5ofDT9asWnUJj21oqgsC+1LuNfm0eg+vM0fCTZHhwImTiCU0sx9h9CQ== + dependencies: + chokidar ">=3.0.0 <4.0.0" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.5, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +scuid@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/scuid/-/scuid-1.1.0.tgz" + integrity sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg== + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.8: + version "1.10.11" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz" + integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== + dependencies: + node-forge "^0.10.0" + +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +sentence-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz" + integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +signedsource@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz" + integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz" + integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@^1.5.0: + version "1.5.1" + resolved "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz" + integrity sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ== + dependencies: + debug "^3.2.6" + eventsource "^1.0.7" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.5.1" + +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + dependencies: + faye-websocket "^0.11.3" + uuid "^3.4.0" + websocket-driver "^0.7.4" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: + version "0.5.19" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spark-md5@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz" + integrity sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.9" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz" + integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split2@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz" + integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== + dependencies: + through2 "^2.0.2" + +sponge-case@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz" + integrity sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA== + dependencies: + tslib "^2.0.3" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-generator@^2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.5.tgz" + integrity sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q== + dependencies: + stackframe "^1.1.1" + +stack-utils@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-env-interpolation@1.0.1, string-env-interpolation@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz" + integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz" + integrity sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + get-intrinsic "^1.1.1" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +style-loader@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.7.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +subscriptions-transport-ws@^0.9.18: + version "0.9.19" + resolved "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz" + integrity sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw== + dependencies: + backo2 "^1.0.2" + eventemitter3 "^3.1.0" + iterall "^1.2.1" + symbol-observable "^1.0.4" + ws "^5.2.0 || ^6.0.0 || ^7.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +swap-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz" + integrity sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw== + dependencies: + tslib "^2.0.3" + +symbol-observable@^1.0.4, symbol-observable@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +symbol-observable@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +sync-fetch@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/sync-fetch/-/sync-fetch-0.3.0.tgz" + integrity sha512-dJp4qg+x4JwSEW1HibAuMi0IIrBI3wuQr2GimmqB7OXR50wmwzfdusG+p39R9w3R6aFtZ2mzvxvWKQ3Bd/vx3g== + dependencies: + buffer "^5.7.0" + node-fetch "^2.6.1" + +table-layout@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +table@^6.0.9: + version "6.7.1" + resolved "https://registry.npmjs.org/table/-/table-6.7.1.tgz" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + +"tailwindcss@npm:@tailwindcss/postcss7-compat": + version "2.2.4" + resolved "https://registry.npmjs.org/@tailwindcss/postcss7-compat/-/postcss7-compat-2.2.4.tgz" + integrity sha512-lFIBdD1D2w3RgHFg7kNB7U5LOlfbd+KXTzcLyC/RlQ9eVko6GjNCKpN/kdmfF9wiGxbSDT/3mousXeMZdOOuBg== + dependencies: + "@fullhuman/postcss-purgecss" "^3.1.3" + arg "^5.0.0" + autoprefixer "^9" + bytes "^3.0.0" + chalk "^4.1.1" + chokidar "^3.5.2" + color "^3.1.3" + cosmiconfig "^7.0.0" + detective "^5.2.0" + didyoumean "^1.2.1" + dlv "^1.1.3" + fast-glob "^3.2.5" + fs-extra "^10.0.0" + glob-parent "^6.0.0" + html-tags "^3.1.0" + is-glob "^4.0.1" + lodash "^4.17.21" + lodash.topath "^4.5.2" + modern-normalize "^1.1.0" + node-emoji "^1.8.1" + normalize-path "^3.0.0" + object-hash "^2.2.0" + postcss "^7" + postcss-functions "^3" + postcss-js "^2" + postcss-load-config "^3.1.0" + postcss-nested "^4" + postcss-selector-parser "^6.0.6" + postcss-value-parser "^4.1.0" + pretty-hrtime "^1.0.3" + quick-lru "^5.1.1" + reduce-css-calc "^2.1.8" + resolve "^1.20.0" + tmp "^0.2.1" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^6.0.2: + version "6.1.0" + resolved "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz" + integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + +terser@^4.1.2: + version "4.8.0" + resolved "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^5.3.4: + version "5.7.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz" + integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + +through2@^2.0.0, through2@^2.0.2: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-invariant@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + +tiny-warning@^1.0.0, tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +title-case@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz" + integrity sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA== + dependencies: + tslib "^2.0.3" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz" + integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= + +ts-invariant@^0.4.0: + version "0.4.4" + resolved "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz" + integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== + dependencies: + tslib "^1.9.3" + +ts-invariant@^0.7.0: + version "0.7.5" + resolved "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.7.5.tgz" + integrity sha512-qfVyqTYWEqADMtncLqwpUdMjMSXnsqOeqGtj1LeJNFDjz8oqZ1YxLEp29YCOq65z0LgEiERqQ8ThVjnfibJNpg== + dependencies: + tslib "^2.1.0" + +ts-jest@^27.0.3: + version "27.0.3" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.3.tgz" + integrity sha512-U5rdMjnYam9Ucw+h0QvtNDbc5+88nxt7tbIvqaZUhFrfG4+SkWhMXjejCLVGcpILTPuV+H3W/GZDZrnZFpPeXw== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + jest-util "^27.0.0" + json5 "2.x" + lodash "4.x" + make-error "1.x" + mkdirp "1.x" + semver "7.x" + yargs-parser "20.x" + +ts-log@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/ts-log/-/ts-log-2.2.3.tgz" + integrity sha512-XvB+OdKSJ708Dmf9ore4Uf/q62AYDTzFcAdxc8KNML1mmAWywRFVt/dn1KYJH8Agt5UJNujfM3znU5PxgAzA2w== + +ts-node@^9: + version "9.1.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== + dependencies: + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.10.0, tslib@^1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2, tslib@^2.0.3, tslib@^2.1.0, tslib@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + +tslib@~2.0.1: + version "2.0.3" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz" + integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== + +tslib@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + +tslib@~2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" + integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +ua-parser-js@^0.7.18: + version "0.7.28" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz" + integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unixify@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz" + integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= + dependencies: + normalize-path "^2.1.1" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +upper-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz" + integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== + dependencies: + tslib "^2.0.3" + +upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz" + integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== + dependencies: + tslib "^2.0.3" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.4.3, url-parse@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz" + integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: + version "2.3.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-to-istanbul@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz" + integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +valid-url@1.0.9, valid-url@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz" + integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + +value-or-promise@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz" + integrity sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-assets-manifest@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz" + integrity sha512-JV9V2QKc5wEWQptdIjvXDUL1ucbPLH2f27toAY3SNdGZp+xSaStAgpoMcvMZmqtFrBc9a5pTS1058vxyMPOzRQ== + dependencies: + chalk "^2.0" + lodash.get "^4.0" + lodash.has "^4.0" + mkdirp "^0.5" + schema-utils "^1.0.0" + tapable "^1.0.0" + webpack-sources "^1.0.0" + +webpack-bugsnag-plugins@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/webpack-bugsnag-plugins/-/webpack-bugsnag-plugins-1.7.0.tgz" + integrity sha512-mIZ+edbuWj5HmZ9TzsPZ4d2jTnG2XZxIPAOyUapubxeIQY9U2EqFPmClxKU+MCfmVc6jrBoGe5WlwTVgdj4yxw== + dependencies: + "@bugsnag/source-maps" "^2.0.0" + bugsnag-build-reporter "^1.0.3" + run-parallel-limit "^1.0.6" + +webpack-cli@^3.3.12: + version "3.3.12" + resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== + dependencies: + chalk "^2.4.2" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" + import-local "^2.0.0" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.11.2: + version "3.11.2" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz" + integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.8" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "^0.3.21" + sockjs-client "^1.5.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.46.0: + version "4.46.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.5.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.4.1: + version "3.6.2" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.14, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@7.4.5: + version "7.4.5" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz" + integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== + +"ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.4.5: + version "7.5.0" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.0.tgz" + integrity sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw== + +ws@^6.2.1: + version "6.2.2" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml-ast-parser@^0.0.43: + version "0.0.43" + resolved "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz" + integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== + +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@20.x, yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^16.0.3: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.0.0: + version "17.0.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz" + integrity sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zen-observable-ts@^0.8.21: + version "0.8.21" + resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz" + integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== + dependencies: + tslib "^1.9.3" + zen-observable "^0.8.0" + +zen-observable@^0.8.0, zen-observable@^0.8.14: + version "0.8.15" + resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==