From 04fce0cddecd6a303f46f35c2aa673815eb2a575 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 3 Oct 2022 12:21:34 -0400 Subject: [PATCH 01/77] Add multi-phase download feature and fix a Webmock complain --- app/controllers/plan_exports_controller.rb | 16 +- app/controllers/plans_controller.rb | 5 +- app/javascript/src/plans/download.js | 12 +- app/views/shared/export/_plan.erb | 2 +- app/views/shared/export/_plan_txt.erb | 2 +- db/schema.rb | 692 ++++++--------------- spec/features/plans/exports_spec.rb | 165 +++-- spec/rails_helper.rb | 2 +- spec/spec_helper.rb | 4 +- 9 files changed, 347 insertions(+), 553 deletions(-) diff --git a/app/controllers/plan_exports_controller.rb b/app/controllers/plan_exports_controller.rb index b034aa6b51..235460b7f4 100644 --- a/app/controllers/plan_exports_controller.rb +++ b/app/controllers/plan_exports_controller.rb @@ -36,12 +36,18 @@ def show @hash = @plan.as_pdf(current_user, @show_coversheet) @formatting = export_params[:formatting] || @plan.settings(:export).formatting - @selected_phase = if params.key?(:phase_id) - @plan.phases.find(params[:phase_id]) - else - @plan.phases.order('phases.updated_at DESC') + if params.key?(:phase_id) + # order phases by phase number asc + @hash[:phases] = @hash[:phases].sort_by{|phase| phase[:number]} + if (params[:phase_id] == "All") + @hash[:all_phases] = true + else + @selected_phase = @plan.phases.find(params[:phase_id]) + end + else + @plan.phases.order("phases.updated_at DESC") .detect { |p| p.visibility_allowed?(@plan) } - end + end # Added contributors to coverage of plans. # Users will see both roles and contributor names if the role is filled diff --git a/app/controllers/plans_controller.rb b/app/controllers/plans_controller.rb index 623cf2477f..5d611d0e20 100644 --- a/app/controllers/plans_controller.rb +++ b/app/controllers/plans_controller.rb @@ -376,8 +376,11 @@ def download @plan = Plan.find(params[:id]) authorize @plan @phase_options = @plan.phases.order(:number).pluck(:title, :id) + if @phase_options.length > 1 + @phase_options.insert(0,["All phases", "All"]) + end @export_settings = @plan.settings(:export) - render 'download' + render "download" end # POST /plans/:id/duplicate diff --git a/app/javascript/src/plans/download.js b/app/javascript/src/plans/download.js index e772b83221..6e1440f04c 100644 --- a/app/javascript/src/plans/download.js +++ b/app/javascript/src/plans/download.js @@ -21,5 +21,15 @@ $(() => { } else { $('#download-settings').show(); } - }); + + if (frmt === 'csv') { + $('#phase_id').find('option[value="All"').hide(); + $('#phase_id option:eq(1)').attr('selected', 'selected'); + $('#phase_id').val($('#phase_id option:eq(1)').val()); + } else if (frmt === 'pdf' || frmt === 'html' || frmt === 'docx' || frmt === 'text') { + $('#phase_id').find('option[value="All"').show(); + $('#phase_id').val($('#phase_id option:first').val()); + $('#phase_id option:first').attr('selected', 'selected'); + } + }).trigger('change'); }); diff --git a/app/views/shared/export/_plan.erb b/app/views/shared/export/_plan.erb index dac27560f2..aae3b9b705 100644 --- a/app/views/shared/export/_plan.erb +++ b/app/views/shared/export/_plan.erb @@ -18,7 +18,7 @@ <% @hash[:phases].each do |phase| %> <%# Only render selected phase %> - <% if phase[:title] == @selected_phase.title %> + <% if @hash[:all_phases] || (@selected_phase.present? && phase[:title] == @selected_phase.title) %> <%# Page break before each phase %>

<%= download_plan_page_title(@plan, phase, @hash) %>

diff --git a/app/views/shared/export/_plan_txt.erb b/app/views/shared/export/_plan_txt.erb index 7a9c42b87f..ff8570c785 100644 --- a/app/views/shared/export/_plan_txt.erb +++ b/app/views/shared/export/_plan_txt.erb @@ -38,7 +38,7 @@ <% @hash[:phases].each do |phase| %> <%# Only render selected phase %> -<% if phase[:title] == @selected_phase.title %> +<% if @hash[:all_phases] || (@selected_phase.present? && phase[:title] == @selected_phase.title) %> <%= (@hash[:phases].length > 1 ? "#{phase[:title]}" : "") %> <% phase[:sections].each do |section| %> <% if display_section?(@hash[:customization], section, @show_custom_sections) && num_section_questions(@plan, section, phase) > 0 %> diff --git a/db/schema.rb b/db/schema.rb index 56dbfef7d4..fc2833ad17 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -2,207 +2,103 @@ # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. # -# Note that this schema.rb definition is the authoritative source for your -# database schema. If you need to create the application database on another -# system, you should be using db:schema:load, not running all the migrations -# from scratch. The latter is a flawed and unsustainable approach (the more migrations -# you'll amass, the slower it'll run and the greater likelihood for issues). +# 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: 2022_03_15_104737) do - create_table "annotations", id: :integer, force: :cascade do |t| - t.integer "question_id" - t.integer "org_id" - t.text "text" - t.integer "type", default: 0, null: false - t.datetime "created_at" - t.datetime "updated_at" - t.string "versionable_id", limit: 36 - t.index ["org_id"], name: "fk_rails_aca7521f72" - t.index ["question_id"], name: "index_annotations_on_question_id" - t.index ["versionable_id"], name: "index_annotations_on_versionable_id" - end +# Could not dump table "annotations" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "answers", id: :integer, force: :cascade do |t| - t.text "text" - t.integer "plan_id" - t.integer "user_id" - t.integer "question_id" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "lock_version", default: 0 - t.index ["plan_id"], name: "fk_rails_84a6005a3e" - t.index ["plan_id"], name: "index_answers_on_plan_id" - t.index ["question_id"], name: "fk_rails_3d5ed4418f" - t.index ["question_id"], name: "index_answers_on_question_id" - t.index ["user_id"], name: "fk_rails_584be190c2" +# Could not dump table "answers" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + + create_table "answers_options", id: false, force: :cascade do |t| + t.integer "answer_id", null: false + t.integer "option_id", null: false + t.index ["answer_id", "option_id"], name: "index_answers_options_on_answer_id_and_option_id" end create_table "answers_question_options", id: false, force: :cascade do |t| t.integer "answer_id", null: false t.integer "question_option_id", null: false t.index ["answer_id"], name: "index_answers_question_options_on_answer_id" + t.index ["question_option_id"], name: "fk_rails_01ba00b569" end - create_table "api_clients", id: :integer, force: :cascade do |t| - t.string "name", null: false - t.string "description" - t.string "homepage" - t.string "contact_name" - t.string "contact_email" - t.string "client_id", null: false - t.string "client_secret", null: false - t.datetime "last_access" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "org_id" - t.text "redirect_uri" - t.string "scopes", default: "", null: false - t.boolean "confidential", default: true - t.boolean "trusted", default: false - t.integer "callback_method" - t.string "callback_uri" - t.index ["name"], name: "index_oauth_applications_on_name" - end +# Could not dump table "api_clients" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "conditions", id: :integer, force: :cascade do |t| - t.integer "question_id" - t.text "option_list" - t.integer "action_type" - t.integer "number" - t.text "remove_data" - t.text "webhook_data" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["question_id"], name: "index_conditions_on_question_id" - end +# Could not dump table "comments" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "contributors", id: :integer, force: :cascade do |t| - t.string "name" - t.string "email" - t.string "phone" - t.integer "roles", null: false - t.integer "org_id" - t.integer "plan_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.index ["email"], name: "index_contributors_on_email" - t.index ["name", "id", "org_id"], name: "index_contrib_id_and_org_id" - t.index ["org_id"], name: "index_contributors_on_org_id" - t.index ["plan_id"], name: "index_contributors_on_plan_id" - t.index ["roles"], name: "index_contributors_on_roles" - end +# Could not dump table "conditions" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "departments", id: :integer, force: :cascade do |t| - t.string "name" - t.string "code" - t.integer "org_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["org_id"], name: "index_departments_on_org_id" - end +# Could not dump table "contributors" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "exported_plans", id: :integer, force: :cascade do |t| - t.integer "plan_id" - t.integer "user_id" - t.string "format" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "phase_id" - end +# Could not dump table "departments" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "external_api_access_tokens", force: :cascade do |t| - t.bigint "user_id", null: false - t.string "external_service_name", null: false - t.string "access_token", null: false - t.string "refresh_token" - t.datetime "expires_at" - t.datetime "revoked_at" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["expires_at"], name: "index_external_api_access_tokens_on_expires_at" - t.index ["external_service_name"], name: "index_external_api_access_tokens_on_external_service_name" - t.index ["user_id", "external_service_name"], name: "index_external_tokens_on_user_and_service" - t.index ["user_id"], name: "index_external_api_access_tokens_on_user_id" - end +# Could not dump table "dmptemplate_translations" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "guidance_groups", id: :integer, force: :cascade do |t| - t.string "name" - t.integer "org_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "optional_subset", default: false, null: false - t.boolean "published", default: false, null: false - t.index ["org_id"], name: "index_guidance_groups_on_org_id" - end +# Could not dump table "dmptemplates" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "guidances", id: :integer, force: :cascade do |t| - t.text "text" + create_table "dmptemplates_guidance_groups", id: false, force: :cascade do |t| + t.integer "dmptemplate_id" t.integer "guidance_group_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "published" - t.index ["guidance_group_id"], name: "index_guidances_on_guidance_group_id" end - create_table "identifier_schemes", id: :integer, force: :cascade do |t| - t.string "name" - t.string "description" - t.boolean "active" - t.datetime "created_at" - t.datetime "updated_at" - t.string "logo_url" - t.string "identifier_prefix" - t.integer "context" - t.string "external_service" - end +# Could not dump table "exported_plans" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "identifiers", id: :integer, force: :cascade do |t| - t.string "value", null: false - t.text "attrs" - t.integer "identifier_scheme_id" - t.integer "identifiable_id" - t.string "identifiable_type" - t.datetime "created_at" - t.datetime "updated_at" - t.index ["identifiable_type", "identifiable_id"], name: "index_identifiers_on_identifiable_type_and_identifiable_id" - t.index ["identifier_scheme_id", "identifiable_id", "identifiable_type"], name: "index_identifiers_on_scheme_and_type_and_id" - t.index ["identifier_scheme_id", "value"], name: "index_identifiers_on_identifier_scheme_id_and_value" - end +# Could not dump table "file_types" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "languages", id: :integer, force: :cascade do |t| - t.string "abbreviation" - t.string "description" - t.string "name" - t.boolean "default_language" - end +# Could not dump table "file_uploads" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "licenses", force: :cascade do |t| - t.string "name", null: false - t.string "identifier", null: false - t.string "uri", null: false - t.boolean "osi_approved", default: false - t.boolean "deprecated", default: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["identifier", "osi_approved", "deprecated"], name: "index_license_on_identifier_and_criteria" - t.index ["identifier"], name: "index_licenses_on_identifier" - t.index ["uri"], name: "index_licenses_on_uri" - end +# Could not dump table "friendly_id_slugs" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "metadata_standards", force: :cascade do |t| - t.string "title" - t.text "description" - t.string "rdamsc_id" - t.string "uri" - t.json "locations" - t.json "related_entities" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false +# Could not dump table "guidance_groups" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + + create_table "guidance_in_group", id: false, force: :cascade do |t| + t.integer "guidance_id", null: false + t.integer "guidance_group_id", null: false + t.index ["guidance_id", "guidance_group_id"], name: "index_guidance_in_group_on_guidance_id_and_guidance_group_id" end +# Could not dump table "guidance_translations" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "guidances" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "identifier_schemes" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "identifiers" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "languages" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "licenses" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "metadata_standards" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "metadata_standards_research_outputs", force: :cascade do |t| t.bigint "metadata_standard_id" t.bigint "research_output_id" @@ -210,17 +106,8 @@ t.index ["research_output_id"], name: "metadata_research_outputs_on_ro" end - create_table "notes", id: :integer, force: :cascade do |t| - t.integer "user_id" - t.text "text" - t.boolean "archived", default: false, null: false - t.integer "answer_id" - t.integer "archived_by" - t.datetime "created_at" - t.datetime "updated_at" - t.index ["answer_id"], name: "index_notes_on_answer_id" - t.index ["user_id"], name: "fk_rails_7f2323ad43" - end +# Could not dump table "notes" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 create_table "notification_acknowledgements", id: :integer, force: :cascade do |t| t.integer "user_id" @@ -231,18 +118,14 @@ t.index ["user_id"], name: "index_notification_acknowledgements_on_user_id" end - create_table "notifications", id: :integer, force: :cascade do |t| - t.integer "notification_type" - t.string "title" - t.integer "level" - t.text "body" - t.boolean "dismissable" - t.date "starts_at" - t.date "expires_at" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "enabled", default: true - end +# Could not dump table "notifications" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "option_warnings" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "options" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 create_table "org_token_permissions", id: :integer, force: :cascade do |t| t.integer "org_id" @@ -253,179 +136,97 @@ t.index ["token_permission_type_id"], name: "fk_rails_2aa265f538" end - create_table "orgs", id: :integer, force: :cascade do |t| - t.string "name" - t.string "abbreviation" - t.string "target_url" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "is_other", default: false, null: false - t.integer "region_id" - t.integer "language_id" - t.string "logo_uid" - t.string "logo_name" - t.string "contact_email" - t.integer "org_type", default: 0, null: false - t.text "links" - t.boolean "feedback_enabled", default: false - t.text "feedback_msg" - t.string "contact_name" - t.boolean "managed", default: false, null: false - t.string "api_create_plan_email_subject" - t.text "api_create_plan_email_body" - t.index ["language_id"], name: "fk_rails_5640112cab" - t.index ["region_id"], name: "fk_rails_5a6adf6bab" - t.string "helpdesk_email" - end +# Could not dump table "organisation_types" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "organisations" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "orgs" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "perms", id: :integer, force: :cascade do |t| - t.string "name" +# Could not dump table "perms" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "phase_translations" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "phases" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + + create_table "plan_sections", id: :integer, force: :cascade do |t| + t.integer "user_id" + t.integer "section_id" + t.integer "plan_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.datetime "release_time" end - create_table "phases", id: :integer, force: :cascade do |t| - t.string "title" - t.text "description" - t.integer "number" - t.integer "template_id" - t.datetime "created_at" - t.datetime "updated_at" - t.boolean "modifiable" - t.string "versionable_id", limit: 36 - t.index ["template_id"], name: "index_phases_on_template_id" - t.index ["versionable_id"], name: "index_phases_on_versionable_id" - end - - create_table "plans", id: :integer, force: :cascade do |t| - t.string "title" - t.integer "template_id" - t.datetime "created_at" - t.datetime "updated_at" - t.string "identifier" - t.text "description" - t.integer "visibility", default: 3, null: false - t.boolean "feedback_requested", default: false - t.boolean "complete", default: false - t.integer "org_id" - t.integer "funder_id" - t.integer "grant_id" - t.integer "api_client_id" - t.datetime "start_date" - t.datetime "end_date" - t.boolean "ethical_issues" - t.text "ethical_issues_description" - t.string "ethical_issues_report" - t.integer "funding_status" - t.bigint "research_domain_id" - t.index ["funder_id"], name: "index_plans_on_funder_id" - t.index ["grant_id"], name: "index_plans_on_grant_id" - t.index ["org_id"], name: "index_plans_on_org_id" - t.index ["research_domain_id"], name: "index_plans_on_fos_id" - t.index ["template_id"], name: "index_plans_on_template_id" - t.index ["api_client_id"], name: "index_plans_on_api_client_id" - end +# Could not dump table "plans" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 create_table "plans_guidance_groups", id: :integer, force: :cascade do |t| t.integer "guidance_group_id" t.integer "plan_id" t.index ["guidance_group_id", "plan_id"], name: "index_plans_guidance_groups_on_guidance_group_id_and_plan_id" - t.index ["guidance_group_id"], name: "fk_rails_ec1c5524d7" t.index ["plan_id"], name: "fk_rails_13d0671430" end - create_table "prefs", id: :integer, force: :cascade do |t| - t.text "settings" - t.integer "user_id" - end +# Could not dump table "prefs" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "question_format_labels", id: false, force: :cascade do |t| - t.integer "id" - t.string "description" - t.integer "question_id" - t.integer "number" - t.datetime "created_at" - t.datetime "updated_at" - end - - create_table "question_formats", id: :integer, force: :cascade do |t| - t.string "title" - t.text "description" + create_table "project_groups", id: :integer, force: :cascade do |t| + t.boolean "project_creator" + t.boolean "project_editor" + t.integer "user_id" + t.integer "project_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.boolean "option_based", default: false - t.integer "formattype", default: 0 + t.boolean "project_administrator" end - create_table "question_options", id: :integer, force: :cascade do |t| - t.integer "question_id" - t.string "text" - t.integer "number" - t.boolean "is_default" - t.datetime "created_at" - t.datetime "updated_at" - t.string "versionable_id", limit: 36 - t.index ["question_id"], name: "index_question_options_on_question_id" - t.index ["versionable_id"], name: "index_question_options_on_versionable_id" + create_table "project_guidance", id: false, force: :cascade do |t| + t.integer "project_id", null: false + t.integer "guidance_group_id", null: false + t.index ["project_id", "guidance_group_id"], name: "index_project_guidance_on_project_id_and_guidance_group_id" end - create_table "questions", id: :integer, force: :cascade do |t| - t.text "text" - t.text "default_value" - t.integer "number" - t.integer "section_id" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "question_format_id" - t.boolean "option_comment_display", default: true - t.boolean "modifiable" - t.string "versionable_id", limit: 36 - t.index ["question_format_id"], name: "fk_rails_4fbc38c8c7" - t.index ["section_id"], name: "index_questions_on_section_id" - t.index ["versionable_id"], name: "index_questions_on_versionable_id" - end +# Could not dump table "projects" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "question_format_translations" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "question_formats" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "question_options" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "question_translations" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "questions" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 create_table "questions_themes", id: false, force: :cascade do |t| t.integer "question_id", null: false t.integer "theme_id", null: false t.index ["question_id"], name: "index_questions_themes_on_question_id" + t.index ["theme_id"], name: "fk_rails_0489d5eeba" end - create_table "regions", id: :integer, force: :cascade do |t| - t.string "abbreviation" - t.string "description" - t.string "name" + create_table "region_groups", id: :integer, force: :cascade do |t| t.integer "super_region_id" + t.integer "region_id" end - create_table "related_identifiers", force: :cascade do |t| - t.bigint "identifier_scheme_id" - t.integer "identifier_type", null: false - t.integer "relation_type", null: false - t.bigint "identifiable_id" - t.string "identifiable_type" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "value", null: false - t.index ["identifiable_id", "identifiable_type", "relation_type"], name: "index_relateds_on_identifiable_and_relation_type" - t.index ["identifier_scheme_id"], name: "index_related_identifiers_on_identifier_scheme_id" - t.index ["identifier_type"], name: "index_related_identifiers_on_identifier_type" - t.index ["relation_type"], name: "index_related_identifiers_on_relation_type" - end +# Could not dump table "regions" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "repositories", force: :cascade do |t| - t.string "name", null: false - t.text "description", null: false - t.string "homepage" - t.string "contact" - t.string "uri", null: false - t.json "info" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["homepage"], name: "index_repositories_on_homepage" - t.index ["name"], name: "index_repositories_on_name" - t.index ["uri"], name: "index_repositories_on_uri" - end +# Could not dump table "repositories" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 create_table "repositories_research_outputs", force: :cascade do |t| t.bigint "research_output_id" @@ -434,36 +235,11 @@ t.index ["research_output_id"], name: "index_repositories_research_outputs_on_research_output_id" end - create_table "research_domains", force: :cascade do |t| - t.string "identifier", null: false - t.string "label", null: false - t.bigint "parent_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["parent_id"], name: "index_research_domains_on_parent_id" - end +# Could not dump table "research_domains" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "research_outputs", force: :cascade do |t| - t.integer "plan_id" - t.integer "output_type", default: 3, null: false - t.string "output_type_description" - t.string "title", null: false - t.string "abbreviation" - t.integer "display_order" - t.boolean "is_default" - t.text "description" - t.integer "access", default: 0, null: false - t.datetime "release_date" - t.boolean "personal_data" - t.boolean "sensitive_data" - t.bigint "byte_size" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.bigint "license_id" - t.index ["license_id"], name: "index_research_outputs_on_license_id" - t.index ["output_type"], name: "index_research_outputs_on_output_type" - t.index ["plan_id"], name: "index_research_outputs_on_plan_id" - end +# Could not dump table "research_outputs" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 create_table "roles", id: :integer, force: :cascade do |t| t.integer "user_id" @@ -476,89 +252,35 @@ t.index ["user_id"], name: "index_roles_on_user_id" end - create_table "sections", id: :integer, force: :cascade do |t| - t.string "title" - t.text "description" - t.integer "number" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "phase_id" - t.boolean "modifiable" - t.string "versionable_id", limit: 36 - t.index ["phase_id"], name: "index_sections_on_phase_id" - t.index ["versionable_id"], name: "index_sections_on_versionable_id" - end +# Could not dump table "section_translations" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "sessions", id: :integer, force: :cascade do |t| - t.string "session_id", limit: 64, null: false - t.text "data" - t.datetime "created_at" - t.datetime "updated_at" - t.index ["session_id"], name: "index_sessions_on_session_id", unique: true - t.index ["updated_at"], name: "index_sessions_on_updated_at" - end +# Could not dump table "sections" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "settings", id: :integer, force: :cascade do |t| - t.string "var" - t.text "value" - t.integer "target_id", null: false - t.string "target_type" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - end +# Could not dump table "sessions" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "stats", id: :integer, force: :cascade do |t| - t.bigint "count", default: 0 - t.date "date", null: false - t.string "type", null: false - t.integer "org_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.text "details" - t.boolean "filtered", default: false - end +# Could not dump table "settings" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "subscriptions", force: :cascade do |t| - t.bigint "plan_id" - t.integer "subscription_types", null: false - t.string "callback_uri" - t.bigint "subscriber_id" - t.string "subscriber_type" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.datetime "last_notified" - t.index ["plan_id"], name: "index_subscriptions_on_plan_id" - t.index ["subscriber_id", "subscriber_type", "plan_id"], name: "index_subscribers_on_identifiable_and_plan_id" - end +# Could not dump table "splash_logs" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "templates", id: :integer, force: :cascade do |t| - t.string "title" - t.text "description" - t.boolean "published" - t.integer "org_id" - t.string "locale" - t.boolean "is_default" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "version" - t.integer "visibility" - t.integer "customization_of" - t.integer "family_id" - t.boolean "archived" - t.text "links" - t.index ["family_id", "version"], name: "index_templates_on_family_id_and_version", unique: true - t.index ["family_id"], name: "index_templates_on_family_id" - t.index ["org_id", "family_id"], name: "template_organisation_dmptemplate_index" - t.index ["org_id"], name: "index_templates_on_org_id" - end +# Could not dump table "stats" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "themes", id: :integer, force: :cascade do |t| - t.string "title" - t.text "description" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "locale" - end +# Could not dump table "stylesheets" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "suggested_answers" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "templates" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "themes" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 create_table "themes_in_guidance", id: false, force: :cascade do |t| t.integer "theme_id" @@ -567,61 +289,23 @@ t.index ["theme_id"], name: "index_themes_in_guidance_on_theme_id" end - create_table "token_permission_types", id: :integer, force: :cascade do |t| - t.string "token_type" - t.text "text_description" - t.datetime "created_at" - t.datetime "updated_at" - end +# Could not dump table "token_permission_types" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "trackers", id: :integer, force: :cascade do |t| - t.integer "org_id" - t.string "code" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["org_id"], name: "index_trackers_on_org_id" - end +# Could not dump table "trackers" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - create_table "users", id: :integer, force: :cascade do |t| - t.string "firstname" - t.string "surname" - t.string "email", limit: 80, default: "", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "encrypted_password" - t.string "reset_password_token" - t.datetime "reset_password_sent_at" - t.datetime "remember_created_at" - t.integer "sign_in_count", default: 0 - 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 "invitation_token" - t.datetime "invitation_created_at" - t.datetime "invitation_sent_at" - t.datetime "invitation_accepted_at" - t.string "other_organisation" - t.boolean "accept_terms" - t.integer "org_id" - t.string "api_token" - t.integer "invited_by_id" - t.string "invited_by_type" - t.integer "language_id" - t.string "recovery_email" - t.string "ldap_password" - t.string "ldap_username" - t.boolean "active", default: true - t.integer "department_id" - t.datetime "last_api_access" - t.index ["department_id"], name: "fk_rails_f29bf9cdf2" - t.index ["email"], name: "index_users_on_email" - t.index ["language_id"], name: "fk_rails_45f4f12508" - t.index ["org_id"], name: "index_users_on_org_id" - end +# Could not dump table "user_role_types" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "user_statuses" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "user_types" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "users" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 create_table "users_perms", id: false, force: :cascade do |t| t.integer "user_id" @@ -630,11 +314,25 @@ t.index ["user_id"], name: "index_users_perms_on_user_id" end + create_table "users_roles", id: false, force: :cascade do |t| + t.integer "user_id" + t.integer "role_id" + t.index ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id" + end + +# Could not dump table "version_translations" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + +# Could not dump table "versions" because of following ActiveRecord::StatementInvalid +# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + add_foreign_key "annotations", "orgs" add_foreign_key "annotations", "questions" add_foreign_key "answers", "plans" add_foreign_key "answers", "questions" add_foreign_key "answers", "users" + add_foreign_key "answers_question_options", "answers" + add_foreign_key "answers_question_options", "question_options" add_foreign_key "conditions", "questions" add_foreign_key "guidance_groups", "orgs" add_foreign_key "guidances", "guidance_groups" @@ -654,6 +352,8 @@ add_foreign_key "question_options", "questions" add_foreign_key "questions", "question_formats" add_foreign_key "questions", "sections" + add_foreign_key "questions_themes", "questions" + add_foreign_key "questions_themes", "themes" add_foreign_key "research_domains", "research_domains", column: "parent_id" add_foreign_key "research_outputs", "licenses" add_foreign_key "roles", "plans" @@ -666,4 +366,6 @@ add_foreign_key "users", "departments" add_foreign_key "users", "languages" add_foreign_key "users", "orgs" + add_foreign_key "users_perms", "perms" + add_foreign_key "users_perms", "users" end diff --git a/spec/features/plans/exports_spec.rb b/spec/features/plans/exports_spec.rb index 4feec44845..85cd14a8d7 100644 --- a/spec/features/plans/exports_spec.rb +++ b/spec/features/plans/exports_spec.rb @@ -1,8 +1,9 @@ # frozen_string_literal: true -require 'rails_helper' +require "rails_helper" + +RSpec.describe "PlansExports", type: :feature, js: true do -RSpec.describe 'PlansExports', type: :feature, js: true do let!(:template) { create(:template, phases: 2) } let!(:org) { create(:org, managed: true, is_other: false) } let!(:user) { create(:user, org: org) } @@ -16,7 +17,7 @@ sign_in(user) end - scenario 'User downloads plan from organisational plans portion of the dashboard' do + scenario "User downloads plan from organisational plans portion of the dashboard" do new_plan = create(:plan, :publicly_visible, template: template) new_phase = create(:phase, template: template, sections: 2) new_phase.sections do |sect| @@ -34,99 +35,171 @@ find(:css, "a[href*=\"/#{new_plan.id}/export.pdf\"]", visible: false).click end - scenario 'User downloads public plan belonging to other User' do + scenario "User downloads public plan belonging to other User" do new_plan = create(:plan, :publicly_visible, template: template) create(:role, :creator, plan: new_plan) sign_in(user) within("#plan_#{plan.id}") do - click_button('Actions') - click_link 'Download' + click_button("Actions") + click_link "Download" end - select('html') - new_window = window_opened_by { click_button 'Download Plan' } + select("html") + new_window = window_opened_by { click_button "Download Plan" } within_window new_window do expect(page.source).to have_text(plan.title) end end - scenario 'User downloads org plan belonging to User in same org' do + scenario "User downloads org plan belonging to User in same org" do new_plan = create(:plan, :organisationally_visible, template: template) create(:role, :creator, plan: new_plan, user: create(:user, org: org)) sign_in(user) within("#plan_#{plan.id}") do - click_button('Actions') - click_link 'Download' + click_button("Actions") + click_link "Download" end - select('html') - new_window = window_opened_by { click_button 'Download Plan' } + select("html") + new_window = window_opened_by { click_button "Download Plan" } within_window new_window do expect(page.source).to have_text(plan.title) end end - scenario 'User downloads org plan belonging to User in other org' do + scenario "User downloads org plan belonging to User in other org" do new_plan = create(:plan, :organisationally_visible, template: template) create(:role, :creator, plan: new_plan) sign_in(create(:user)) expect(page).not_to have_text(new_plan.title) end - scenario 'User attempts to download private plan belonging to User in same' do + scenario "User attempts to download private plan belonging to User in same" do new_plan = create(:plan, :privately_visible, template: template) create(:role, :creator, plan: new_plan) sign_in(create(:user)) expect(page).not_to have_text(new_plan.title) end - scenario 'User downloads their plan as HTML' do + # Separate code to test all-phase-download for html since it requires operation in new window + scenario "User downloads their plan as HTML" do within("#plan_#{plan.id}") do - click_button('Actions') - click_link 'Download' + click_button("Actions") + click_link "Download" end - select('html') - new_window = window_opened_by { click_button 'Download Plan' } - within_window new_window do - expect(page.source).to have_text(plan.title) + select("html") + if plan.phases.present? + new_window = window_opened_by do + _select_option("phase_id", "All") + click_button "Download Plan" + end + within_window new_window do + expect(page.source).to have_text(plan.title) + plan.phases.each do |phase| + expect(page.source).to have_text(phase.title) + end + end + new_window = window_opened_by do + _select_option("phase_id", plan.phases[1].id) + click_button "Download Plan" + end + within_window new_window do + expect(page.source).to have_text(plan.title) + expect(page.source).to have_text(plan.phases[1].title) + expect(page.source).not_to have_text(plan.phases[2].title) if plan.phases.length > 2 + end + else + _regular_download("html") end end - scenario 'User downloads their plan as PDF' do + scenario "User downloads their plan as PDF" do within("#plan_#{plan.id}") do - click_button('Actions') - click_link 'Download' + click_button("Actions") + click_link "Download" + end + select("pdf") + if plan.phases.present? + _all_phase_download + _single_phase_download + else + _regular_download("pdf") end - select('pdf') - click_button 'Download Plan' - expect(page.source).to have_text(plan.title) end - scenario 'User downloads their plan as CSV' do + scenario "User downloads their plan as CSV" do within("#plan_#{plan.id}") do - click_button('Actions') - click_link 'Download' + click_button("Actions") + click_link "Download" end - select('csv') - click_button 'Download Plan' - expect(page.source).to have_text(plan.title) + select("csv") + _regular_download("csv") end - scenario 'User downloads their plan as text' do + scenario "User downloads their plan as text" do within("#plan_#{plan.id}") do - click_button('Actions') - click_link 'Download' + click_button("Actions") + click_link "Download" + end + select("text") + if plan.phases.present? + _all_phase_download + _single_phase_download + else + _regular_download("text") end - select('text') - click_button 'Download Plan' - expect(page.source).to have_text(plan.title) end - scenario 'User downloads their plan as docx' do + scenario "User downloads their plan as docx" do within("#plan_#{plan.id}") do - click_button('Actions') - click_link 'Download' + click_button("Actions") + click_link "Download" + end + select("docx") + if plan.phases.present? + _all_phase_download + _single_phase_download + else + _regular_download("docx") end - select('docx') - click_button 'Download Plan' + end + + # =========================== + # = Helper methods = + # =========================== + + def _regular_download(format) + if format == "html" + new_window = window_opened_by do + click_button "Download Plan" + end + within_window new_window do + expect(page.source).to have_text(plan.title) + end + else + click_button "Download Plan" + expect(page.source).to have_text(plan.title) + end + end + + def _all_phase_download + _select_option("phase_id", "All") + click_button "Download Plan" expect(page.source).to have_text(plan.title) + plan.phases.each do |phase| # All phase titles should be included in output + p phase.id + expect(page.source).to have_text(phase.title) + end end -end + + def _single_phase_download + _select_option("phase_id", plan.phases[1].id) + click_button "Download Plan" + expect(page.source).to have_text(plan.title) + expect(page.source).to have_text(plan.phases[1].title) + expect(page.source).not_to have_text(plan.phases[2].title) if plan.phases.length > 2 + end + + def _select_option(select_id, option_value) + find(:id, select_id).find("option[value='#{option_value}']").select_option + end + +end \ No newline at end of file diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 34cc24cd3f..5ace19dedb 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -65,4 +65,4 @@ config.include Devise::Test::ControllerHelpers, type: :controller config.include Devise::Test::ControllerHelpers, type: :view config.include Pundit::Matchers, type: :policy -end +end \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 8d1add27e0..ec34d2236a 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -117,7 +117,7 @@ # Enable Capybara webmocks if we are testing a feature config.before(:each) do |example| if example.metadata[:type] == :feature - Capybara::Webmock.start + # Capybara::Webmock.start # Allow Capybara to make localhost requests and also contact the # google api chromedriver store @@ -134,4 +134,4 @@ config.after(:suite) do |example| Capybara::Webmock.stop if example.metadata[:type] == :feature end -end +end \ No newline at end of file From 0383bcb186e005c5975b0a83553c1777703f3a31 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 3 Oct 2022 12:25:05 -0400 Subject: [PATCH 02/77] fix schema.rb back to DMPRoadmap version --- db/schema.rb | 692 +++++++++++++++++++++++++++++++------------ spec/rails_helper.rb | 2 +- spec/spec_helper.rb | 2 +- 3 files changed, 497 insertions(+), 199 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index fc2833ad17..56dbfef7d4 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -2,102 +2,206 @@ # 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. +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). # # It's strongly recommended that you check this file into your version control system. ActiveRecord::Schema.define(version: 2022_03_15_104737) do -# Could not dump table "annotations" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "answers" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "annotations", id: :integer, force: :cascade do |t| + t.integer "question_id" + t.integer "org_id" + t.text "text" + t.integer "type", default: 0, null: false + t.datetime "created_at" + t.datetime "updated_at" + t.string "versionable_id", limit: 36 + t.index ["org_id"], name: "fk_rails_aca7521f72" + t.index ["question_id"], name: "index_annotations_on_question_id" + t.index ["versionable_id"], name: "index_annotations_on_versionable_id" + end - create_table "answers_options", id: false, force: :cascade do |t| - t.integer "answer_id", null: false - t.integer "option_id", null: false - t.index ["answer_id", "option_id"], name: "index_answers_options_on_answer_id_and_option_id" + create_table "answers", id: :integer, force: :cascade do |t| + t.text "text" + t.integer "plan_id" + t.integer "user_id" + t.integer "question_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "lock_version", default: 0 + t.index ["plan_id"], name: "fk_rails_84a6005a3e" + t.index ["plan_id"], name: "index_answers_on_plan_id" + t.index ["question_id"], name: "fk_rails_3d5ed4418f" + t.index ["question_id"], name: "index_answers_on_question_id" + t.index ["user_id"], name: "fk_rails_584be190c2" end create_table "answers_question_options", id: false, force: :cascade do |t| t.integer "answer_id", null: false t.integer "question_option_id", null: false t.index ["answer_id"], name: "index_answers_question_options_on_answer_id" - t.index ["question_option_id"], name: "fk_rails_01ba00b569" end -# Could not dump table "api_clients" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "api_clients", id: :integer, force: :cascade do |t| + t.string "name", null: false + t.string "description" + t.string "homepage" + t.string "contact_name" + t.string "contact_email" + t.string "client_id", null: false + t.string "client_secret", null: false + t.datetime "last_access" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "org_id" + t.text "redirect_uri" + t.string "scopes", default: "", null: false + t.boolean "confidential", default: true + t.boolean "trusted", default: false + t.integer "callback_method" + t.string "callback_uri" + t.index ["name"], name: "index_oauth_applications_on_name" + end -# Could not dump table "comments" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "conditions", id: :integer, force: :cascade do |t| + t.integer "question_id" + t.text "option_list" + t.integer "action_type" + t.integer "number" + t.text "remove_data" + t.text "webhook_data" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["question_id"], name: "index_conditions_on_question_id" + end -# Could not dump table "conditions" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "contributors", id: :integer, force: :cascade do |t| + t.string "name" + t.string "email" + t.string "phone" + t.integer "roles", null: false + t.integer "org_id" + t.integer "plan_id", null: false + t.datetime "created_at" + t.datetime "updated_at" + t.index ["email"], name: "index_contributors_on_email" + t.index ["name", "id", "org_id"], name: "index_contrib_id_and_org_id" + t.index ["org_id"], name: "index_contributors_on_org_id" + t.index ["plan_id"], name: "index_contributors_on_plan_id" + t.index ["roles"], name: "index_contributors_on_roles" + end -# Could not dump table "contributors" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "departments", id: :integer, force: :cascade do |t| + t.string "name" + t.string "code" + t.integer "org_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["org_id"], name: "index_departments_on_org_id" + end -# Could not dump table "departments" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "exported_plans", id: :integer, force: :cascade do |t| + t.integer "plan_id" + t.integer "user_id" + t.string "format" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "phase_id" + end -# Could not dump table "dmptemplate_translations" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "external_api_access_tokens", force: :cascade do |t| + t.bigint "user_id", null: false + t.string "external_service_name", null: false + t.string "access_token", null: false + t.string "refresh_token" + t.datetime "expires_at" + t.datetime "revoked_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["expires_at"], name: "index_external_api_access_tokens_on_expires_at" + t.index ["external_service_name"], name: "index_external_api_access_tokens_on_external_service_name" + t.index ["user_id", "external_service_name"], name: "index_external_tokens_on_user_and_service" + t.index ["user_id"], name: "index_external_api_access_tokens_on_user_id" + end -# Could not dump table "dmptemplates" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "guidance_groups", id: :integer, force: :cascade do |t| + t.string "name" + t.integer "org_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "optional_subset", default: false, null: false + t.boolean "published", default: false, null: false + t.index ["org_id"], name: "index_guidance_groups_on_org_id" + end - create_table "dmptemplates_guidance_groups", id: false, force: :cascade do |t| - t.integer "dmptemplate_id" + create_table "guidances", id: :integer, force: :cascade do |t| + t.text "text" t.integer "guidance_group_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "published" + t.index ["guidance_group_id"], name: "index_guidances_on_guidance_group_id" end -# Could not dump table "exported_plans" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "file_types" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "file_uploads" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "friendly_id_slugs" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "guidance_groups" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - - create_table "guidance_in_group", id: false, force: :cascade do |t| - t.integer "guidance_id", null: false - t.integer "guidance_group_id", null: false - t.index ["guidance_id", "guidance_group_id"], name: "index_guidance_in_group_on_guidance_id_and_guidance_group_id" + create_table "identifier_schemes", id: :integer, force: :cascade do |t| + t.string "name" + t.string "description" + t.boolean "active" + t.datetime "created_at" + t.datetime "updated_at" + t.string "logo_url" + t.string "identifier_prefix" + t.integer "context" + t.string "external_service" end -# Could not dump table "guidance_translations" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "guidances" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "identifier_schemes" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "identifiers" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "identifiers", id: :integer, force: :cascade do |t| + t.string "value", null: false + t.text "attrs" + t.integer "identifier_scheme_id" + t.integer "identifiable_id" + t.string "identifiable_type" + t.datetime "created_at" + t.datetime "updated_at" + t.index ["identifiable_type", "identifiable_id"], name: "index_identifiers_on_identifiable_type_and_identifiable_id" + t.index ["identifier_scheme_id", "identifiable_id", "identifiable_type"], name: "index_identifiers_on_scheme_and_type_and_id" + t.index ["identifier_scheme_id", "value"], name: "index_identifiers_on_identifier_scheme_id_and_value" + end -# Could not dump table "languages" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "languages", id: :integer, force: :cascade do |t| + t.string "abbreviation" + t.string "description" + t.string "name" + t.boolean "default_language" + end -# Could not dump table "licenses" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "licenses", force: :cascade do |t| + t.string "name", null: false + t.string "identifier", null: false + t.string "uri", null: false + t.boolean "osi_approved", default: false + t.boolean "deprecated", default: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["identifier", "osi_approved", "deprecated"], name: "index_license_on_identifier_and_criteria" + t.index ["identifier"], name: "index_licenses_on_identifier" + t.index ["uri"], name: "index_licenses_on_uri" + end -# Could not dump table "metadata_standards" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "metadata_standards", force: :cascade do |t| + t.string "title" + t.text "description" + t.string "rdamsc_id" + t.string "uri" + t.json "locations" + t.json "related_entities" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end create_table "metadata_standards_research_outputs", force: :cascade do |t| t.bigint "metadata_standard_id" @@ -106,8 +210,17 @@ t.index ["research_output_id"], name: "metadata_research_outputs_on_ro" end -# Could not dump table "notes" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "notes", id: :integer, force: :cascade do |t| + t.integer "user_id" + t.text "text" + t.boolean "archived", default: false, null: false + t.integer "answer_id" + t.integer "archived_by" + t.datetime "created_at" + t.datetime "updated_at" + t.index ["answer_id"], name: "index_notes_on_answer_id" + t.index ["user_id"], name: "fk_rails_7f2323ad43" + end create_table "notification_acknowledgements", id: :integer, force: :cascade do |t| t.integer "user_id" @@ -118,14 +231,18 @@ t.index ["user_id"], name: "index_notification_acknowledgements_on_user_id" end -# Could not dump table "notifications" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "option_warnings" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "options" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "notifications", id: :integer, force: :cascade do |t| + t.integer "notification_type" + t.string "title" + t.integer "level" + t.text "body" + t.boolean "dismissable" + t.date "starts_at" + t.date "expires_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "enabled", default: true + end create_table "org_token_permissions", id: :integer, force: :cascade do |t| t.integer "org_id" @@ -136,97 +253,179 @@ t.index ["token_permission_type_id"], name: "fk_rails_2aa265f538" end -# Could not dump table "organisation_types" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "organisations" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "orgs" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "perms" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "phase_translations" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "phases" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "orgs", id: :integer, force: :cascade do |t| + t.string "name" + t.string "abbreviation" + t.string "target_url" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "is_other", default: false, null: false + t.integer "region_id" + t.integer "language_id" + t.string "logo_uid" + t.string "logo_name" + t.string "contact_email" + t.integer "org_type", default: 0, null: false + t.text "links" + t.boolean "feedback_enabled", default: false + t.text "feedback_msg" + t.string "contact_name" + t.boolean "managed", default: false, null: false + t.string "api_create_plan_email_subject" + t.text "api_create_plan_email_body" + t.index ["language_id"], name: "fk_rails_5640112cab" + t.index ["region_id"], name: "fk_rails_5a6adf6bab" + t.string "helpdesk_email" + end - create_table "plan_sections", id: :integer, force: :cascade do |t| - t.integer "user_id" - t.integer "section_id" - t.integer "plan_id" + create_table "perms", id: :integer, force: :cascade do |t| + t.string "name" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.datetime "release_time" end -# Could not dump table "plans" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "phases", id: :integer, force: :cascade do |t| + t.string "title" + t.text "description" + t.integer "number" + t.integer "template_id" + t.datetime "created_at" + t.datetime "updated_at" + t.boolean "modifiable" + t.string "versionable_id", limit: 36 + t.index ["template_id"], name: "index_phases_on_template_id" + t.index ["versionable_id"], name: "index_phases_on_versionable_id" + end + + create_table "plans", id: :integer, force: :cascade do |t| + t.string "title" + t.integer "template_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "identifier" + t.text "description" + t.integer "visibility", default: 3, null: false + t.boolean "feedback_requested", default: false + t.boolean "complete", default: false + t.integer "org_id" + t.integer "funder_id" + t.integer "grant_id" + t.integer "api_client_id" + t.datetime "start_date" + t.datetime "end_date" + t.boolean "ethical_issues" + t.text "ethical_issues_description" + t.string "ethical_issues_report" + t.integer "funding_status" + t.bigint "research_domain_id" + t.index ["funder_id"], name: "index_plans_on_funder_id" + t.index ["grant_id"], name: "index_plans_on_grant_id" + t.index ["org_id"], name: "index_plans_on_org_id" + t.index ["research_domain_id"], name: "index_plans_on_fos_id" + t.index ["template_id"], name: "index_plans_on_template_id" + t.index ["api_client_id"], name: "index_plans_on_api_client_id" + end create_table "plans_guidance_groups", id: :integer, force: :cascade do |t| t.integer "guidance_group_id" t.integer "plan_id" t.index ["guidance_group_id", "plan_id"], name: "index_plans_guidance_groups_on_guidance_group_id_and_plan_id" + t.index ["guidance_group_id"], name: "fk_rails_ec1c5524d7" t.index ["plan_id"], name: "fk_rails_13d0671430" end -# Could not dump table "prefs" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - - create_table "project_groups", id: :integer, force: :cascade do |t| - t.boolean "project_creator" - t.boolean "project_editor" + create_table "prefs", id: :integer, force: :cascade do |t| + t.text "settings" t.integer "user_id" - t.integer "project_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "project_administrator" end - create_table "project_guidance", id: false, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "guidance_group_id", null: false - t.index ["project_id", "guidance_group_id"], name: "index_project_guidance_on_project_id_and_guidance_group_id" + create_table "question_format_labels", id: false, force: :cascade do |t| + t.integer "id" + t.string "description" + t.integer "question_id" + t.integer "number" + t.datetime "created_at" + t.datetime "updated_at" end -# Could not dump table "projects" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "question_format_translations" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "question_formats" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "question_options" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "question_formats", id: :integer, force: :cascade do |t| + t.string "title" + t.text "description" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "option_based", default: false + t.integer "formattype", default: 0 + end -# Could not dump table "question_translations" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "question_options", id: :integer, force: :cascade do |t| + t.integer "question_id" + t.string "text" + t.integer "number" + t.boolean "is_default" + t.datetime "created_at" + t.datetime "updated_at" + t.string "versionable_id", limit: 36 + t.index ["question_id"], name: "index_question_options_on_question_id" + t.index ["versionable_id"], name: "index_question_options_on_versionable_id" + end -# Could not dump table "questions" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "questions", id: :integer, force: :cascade do |t| + t.text "text" + t.text "default_value" + t.integer "number" + t.integer "section_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "question_format_id" + t.boolean "option_comment_display", default: true + t.boolean "modifiable" + t.string "versionable_id", limit: 36 + t.index ["question_format_id"], name: "fk_rails_4fbc38c8c7" + t.index ["section_id"], name: "index_questions_on_section_id" + t.index ["versionable_id"], name: "index_questions_on_versionable_id" + end create_table "questions_themes", id: false, force: :cascade do |t| t.integer "question_id", null: false t.integer "theme_id", null: false t.index ["question_id"], name: "index_questions_themes_on_question_id" - t.index ["theme_id"], name: "fk_rails_0489d5eeba" end - create_table "region_groups", id: :integer, force: :cascade do |t| + create_table "regions", id: :integer, force: :cascade do |t| + t.string "abbreviation" + t.string "description" + t.string "name" t.integer "super_region_id" - t.integer "region_id" end -# Could not dump table "regions" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "related_identifiers", force: :cascade do |t| + t.bigint "identifier_scheme_id" + t.integer "identifier_type", null: false + t.integer "relation_type", null: false + t.bigint "identifiable_id" + t.string "identifiable_type" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "value", null: false + t.index ["identifiable_id", "identifiable_type", "relation_type"], name: "index_relateds_on_identifiable_and_relation_type" + t.index ["identifier_scheme_id"], name: "index_related_identifiers_on_identifier_scheme_id" + t.index ["identifier_type"], name: "index_related_identifiers_on_identifier_type" + t.index ["relation_type"], name: "index_related_identifiers_on_relation_type" + end -# Could not dump table "repositories" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "repositories", force: :cascade do |t| + t.string "name", null: false + t.text "description", null: false + t.string "homepage" + t.string "contact" + t.string "uri", null: false + t.json "info" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["homepage"], name: "index_repositories_on_homepage" + t.index ["name"], name: "index_repositories_on_name" + t.index ["uri"], name: "index_repositories_on_uri" + end create_table "repositories_research_outputs", force: :cascade do |t| t.bigint "research_output_id" @@ -235,11 +434,36 @@ t.index ["research_output_id"], name: "index_repositories_research_outputs_on_research_output_id" end -# Could not dump table "research_domains" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "research_domains", force: :cascade do |t| + t.string "identifier", null: false + t.string "label", null: false + t.bigint "parent_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["parent_id"], name: "index_research_domains_on_parent_id" + end -# Could not dump table "research_outputs" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "research_outputs", force: :cascade do |t| + t.integer "plan_id" + t.integer "output_type", default: 3, null: false + t.string "output_type_description" + t.string "title", null: false + t.string "abbreviation" + t.integer "display_order" + t.boolean "is_default" + t.text "description" + t.integer "access", default: 0, null: false + t.datetime "release_date" + t.boolean "personal_data" + t.boolean "sensitive_data" + t.bigint "byte_size" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.bigint "license_id" + t.index ["license_id"], name: "index_research_outputs_on_license_id" + t.index ["output_type"], name: "index_research_outputs_on_output_type" + t.index ["plan_id"], name: "index_research_outputs_on_plan_id" + end create_table "roles", id: :integer, force: :cascade do |t| t.integer "user_id" @@ -252,35 +476,89 @@ t.index ["user_id"], name: "index_roles_on_user_id" end -# Could not dump table "section_translations" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "sections" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "sessions" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "settings" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "sections", id: :integer, force: :cascade do |t| + t.string "title" + t.text "description" + t.integer "number" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "phase_id" + t.boolean "modifiable" + t.string "versionable_id", limit: 36 + t.index ["phase_id"], name: "index_sections_on_phase_id" + t.index ["versionable_id"], name: "index_sections_on_versionable_id" + end -# Could not dump table "splash_logs" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "sessions", id: :integer, force: :cascade do |t| + t.string "session_id", limit: 64, null: false + t.text "data" + t.datetime "created_at" + t.datetime "updated_at" + t.index ["session_id"], name: "index_sessions_on_session_id", unique: true + t.index ["updated_at"], name: "index_sessions_on_updated_at" + end -# Could not dump table "stats" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "settings", id: :integer, force: :cascade do |t| + t.string "var" + t.text "value" + t.integer "target_id", null: false + t.string "target_type" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end -# Could not dump table "stylesheets" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "stats", id: :integer, force: :cascade do |t| + t.bigint "count", default: 0 + t.date "date", null: false + t.string "type", null: false + t.integer "org_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.text "details" + t.boolean "filtered", default: false + end -# Could not dump table "suggested_answers" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "subscriptions", force: :cascade do |t| + t.bigint "plan_id" + t.integer "subscription_types", null: false + t.string "callback_uri" + t.bigint "subscriber_id" + t.string "subscriber_type" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.datetime "last_notified" + t.index ["plan_id"], name: "index_subscriptions_on_plan_id" + t.index ["subscriber_id", "subscriber_type", "plan_id"], name: "index_subscribers_on_identifiable_and_plan_id" + end -# Could not dump table "templates" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "templates", id: :integer, force: :cascade do |t| + t.string "title" + t.text "description" + t.boolean "published" + t.integer "org_id" + t.string "locale" + t.boolean "is_default" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "version" + t.integer "visibility" + t.integer "customization_of" + t.integer "family_id" + t.boolean "archived" + t.text "links" + t.index ["family_id", "version"], name: "index_templates_on_family_id_and_version", unique: true + t.index ["family_id"], name: "index_templates_on_family_id" + t.index ["org_id", "family_id"], name: "template_organisation_dmptemplate_index" + t.index ["org_id"], name: "index_templates_on_org_id" + end -# Could not dump table "themes" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "themes", id: :integer, force: :cascade do |t| + t.string "title" + t.text "description" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "locale" + end create_table "themes_in_guidance", id: false, force: :cascade do |t| t.integer "theme_id" @@ -289,23 +567,61 @@ t.index ["theme_id"], name: "index_themes_in_guidance_on_theme_id" end -# Could not dump table "token_permission_types" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "trackers" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "user_role_types" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "user_statuses" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "token_permission_types", id: :integer, force: :cascade do |t| + t.string "token_type" + t.text "text_description" + t.datetime "created_at" + t.datetime "updated_at" + end -# Could not dump table "user_types" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "trackers", id: :integer, force: :cascade do |t| + t.integer "org_id" + t.string "code" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["org_id"], name: "index_trackers_on_org_id" + end -# Could not dump table "users" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 + create_table "users", id: :integer, force: :cascade do |t| + t.string "firstname" + t.string "surname" + t.string "email", limit: 80, default: "", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.string "encrypted_password" + t.string "reset_password_token" + t.datetime "reset_password_sent_at" + t.datetime "remember_created_at" + t.integer "sign_in_count", default: 0 + 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 "invitation_token" + t.datetime "invitation_created_at" + t.datetime "invitation_sent_at" + t.datetime "invitation_accepted_at" + t.string "other_organisation" + t.boolean "accept_terms" + t.integer "org_id" + t.string "api_token" + t.integer "invited_by_id" + t.string "invited_by_type" + t.integer "language_id" + t.string "recovery_email" + t.string "ldap_password" + t.string "ldap_username" + t.boolean "active", default: true + t.integer "department_id" + t.datetime "last_api_access" + t.index ["department_id"], name: "fk_rails_f29bf9cdf2" + t.index ["email"], name: "index_users_on_email" + t.index ["language_id"], name: "fk_rails_45f4f12508" + t.index ["org_id"], name: "index_users_on_org_id" + end create_table "users_perms", id: false, force: :cascade do |t| t.integer "user_id" @@ -314,25 +630,11 @@ t.index ["user_id"], name: "index_users_perms_on_user_id" end - create_table "users_roles", id: false, force: :cascade do |t| - t.integer "user_id" - t.integer "role_id" - t.index ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id" - end - -# Could not dump table "version_translations" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - -# Could not dump table "versions" because of following ActiveRecord::StatementInvalid -# Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 - add_foreign_key "annotations", "orgs" add_foreign_key "annotations", "questions" add_foreign_key "answers", "plans" add_foreign_key "answers", "questions" add_foreign_key "answers", "users" - add_foreign_key "answers_question_options", "answers" - add_foreign_key "answers_question_options", "question_options" add_foreign_key "conditions", "questions" add_foreign_key "guidance_groups", "orgs" add_foreign_key "guidances", "guidance_groups" @@ -352,8 +654,6 @@ add_foreign_key "question_options", "questions" add_foreign_key "questions", "question_formats" add_foreign_key "questions", "sections" - add_foreign_key "questions_themes", "questions" - add_foreign_key "questions_themes", "themes" add_foreign_key "research_domains", "research_domains", column: "parent_id" add_foreign_key "research_outputs", "licenses" add_foreign_key "roles", "plans" @@ -366,6 +666,4 @@ add_foreign_key "users", "departments" add_foreign_key "users", "languages" add_foreign_key "users", "orgs" - add_foreign_key "users_perms", "perms" - add_foreign_key "users_perms", "users" end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 5ace19dedb..34cc24cd3f 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -65,4 +65,4 @@ config.include Devise::Test::ControllerHelpers, type: :controller config.include Devise::Test::ControllerHelpers, type: :view config.include Pundit::Matchers, type: :policy -end \ No newline at end of file +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index ec34d2236a..bda162c5c8 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -134,4 +134,4 @@ config.after(:suite) do |example| Capybara::Webmock.stop if example.metadata[:type] == :feature end -end \ No newline at end of file +end From d8f10606df65bd9e556e8b4d9afb85780e1c1438 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 3 Oct 2022 12:31:34 -0400 Subject: [PATCH 03/77] fix rubocup issue --- app/controllers/plan_exports_controller.rb | 8 +- app/controllers/plans_controller.rb | 6 +- spec/features/plans/exports_spec.rb | 106 ++++++++++----------- 3 files changed, 58 insertions(+), 62 deletions(-) diff --git a/app/controllers/plan_exports_controller.rb b/app/controllers/plan_exports_controller.rb index 235460b7f4..a0f8a362e2 100644 --- a/app/controllers/plan_exports_controller.rb +++ b/app/controllers/plan_exports_controller.rb @@ -38,15 +38,15 @@ def show @formatting = export_params[:formatting] || @plan.settings(:export).formatting if params.key?(:phase_id) # order phases by phase number asc - @hash[:phases] = @hash[:phases].sort_by{|phase| phase[:number]} - if (params[:phase_id] == "All") + @hash[:phases] = @hash[:phases].sort_by { |phase| phase[:number] } + if params[:phase_id] == 'All' @hash[:all_phases] = true else @selected_phase = @plan.phases.find(params[:phase_id]) end else - @plan.phases.order("phases.updated_at DESC") - .detect { |p| p.visibility_allowed?(@plan) } + @plan.phases.order('phases.updated_at DESC') + .detect { |p| p.visibility_allowed?(@plan) } end # Added contributors to coverage of plans. diff --git a/app/controllers/plans_controller.rb b/app/controllers/plans_controller.rb index 5d611d0e20..3f09ad0e34 100644 --- a/app/controllers/plans_controller.rb +++ b/app/controllers/plans_controller.rb @@ -376,11 +376,9 @@ def download @plan = Plan.find(params[:id]) authorize @plan @phase_options = @plan.phases.order(:number).pluck(:title, :id) - if @phase_options.length > 1 - @phase_options.insert(0,["All phases", "All"]) - end + @phase_options.insert(0, ['All phases', 'All']) if @phase_options.length > 1 @export_settings = @plan.settings(:export) - render "download" + render 'download' end # POST /plans/:id/duplicate diff --git a/spec/features/plans/exports_spec.rb b/spec/features/plans/exports_spec.rb index 85cd14a8d7..fe6bf244a1 100644 --- a/spec/features/plans/exports_spec.rb +++ b/spec/features/plans/exports_spec.rb @@ -1,9 +1,8 @@ # frozen_string_literal: true -require "rails_helper" - -RSpec.describe "PlansExports", type: :feature, js: true do +require 'rails_helper' +RSpec.describe 'PlansExports', type: :feature, js: true do let!(:template) { create(:template, phases: 2) } let!(:org) { create(:org, managed: true, is_other: false) } let!(:user) { create(:user, org: org) } @@ -17,7 +16,7 @@ sign_in(user) end - scenario "User downloads plan from organisational plans portion of the dashboard" do + scenario 'User downloads plan from organisational plans portion of the dashboard' do new_plan = create(:plan, :publicly_visible, template: template) new_phase = create(:phase, template: template, sections: 2) new_phase.sections do |sect| @@ -35,44 +34,44 @@ find(:css, "a[href*=\"/#{new_plan.id}/export.pdf\"]", visible: false).click end - scenario "User downloads public plan belonging to other User" do + scenario 'User downloads public plan belonging to other User' do new_plan = create(:plan, :publicly_visible, template: template) create(:role, :creator, plan: new_plan) sign_in(user) within("#plan_#{plan.id}") do - click_button("Actions") - click_link "Download" + click_button('Actions') + click_link 'Download' end - select("html") - new_window = window_opened_by { click_button "Download Plan" } + select('html') + new_window = window_opened_by { click_button 'Download Plan' } within_window new_window do expect(page.source).to have_text(plan.title) end end - scenario "User downloads org plan belonging to User in same org" do + scenario 'User downloads org plan belonging to User in same org' do new_plan = create(:plan, :organisationally_visible, template: template) create(:role, :creator, plan: new_plan, user: create(:user, org: org)) sign_in(user) within("#plan_#{plan.id}") do - click_button("Actions") - click_link "Download" + click_button('Actions') + click_link 'Download' end - select("html") - new_window = window_opened_by { click_button "Download Plan" } + select('html') + new_window = window_opened_by { click_button 'Download Plan' } within_window new_window do expect(page.source).to have_text(plan.title) end end - scenario "User downloads org plan belonging to User in other org" do + scenario 'User downloads org plan belonging to User in other org' do new_plan = create(:plan, :organisationally_visible, template: template) create(:role, :creator, plan: new_plan) sign_in(create(:user)) expect(page).not_to have_text(new_plan.title) end - scenario "User attempts to download private plan belonging to User in same" do + scenario 'User attempts to download private plan belonging to User in same' do new_plan = create(:plan, :privately_visible, template: template) create(:role, :creator, plan: new_plan) sign_in(create(:user)) @@ -80,16 +79,16 @@ end # Separate code to test all-phase-download for html since it requires operation in new window - scenario "User downloads their plan as HTML" do + scenario 'User downloads their plan as HTML' do within("#plan_#{plan.id}") do - click_button("Actions") - click_link "Download" + click_button('Actions') + click_link 'Download' end - select("html") + select('html') if plan.phases.present? new_window = window_opened_by do - _select_option("phase_id", "All") - click_button "Download Plan" + _select_option('phase_id', 'All') + click_button 'Download Plan' end within_window new_window do expect(page.source).to have_text(plan.title) @@ -98,8 +97,8 @@ end end new_window = window_opened_by do - _select_option("phase_id", plan.phases[1].id) - click_button "Download Plan" + _select_option('phase_id', plan.phases[1].id) + click_button 'Download Plan' end within_window new_window do expect(page.source).to have_text(plan.title) @@ -107,58 +106,58 @@ expect(page.source).not_to have_text(plan.phases[2].title) if plan.phases.length > 2 end else - _regular_download("html") + _regular_download('html') end end - scenario "User downloads their plan as PDF" do + scenario 'User downloads their plan as PDF' do within("#plan_#{plan.id}") do - click_button("Actions") - click_link "Download" + click_button('Actions') + click_link 'Download' end - select("pdf") + select('pdf') if plan.phases.present? _all_phase_download _single_phase_download else - _regular_download("pdf") + _regular_download('pdf') end end - scenario "User downloads their plan as CSV" do + scenario 'User downloads their plan as CSV' do within("#plan_#{plan.id}") do - click_button("Actions") - click_link "Download" + click_button('Actions') + click_link 'Download' end - select("csv") - _regular_download("csv") + select('csv') + _regular_download('csv') end - scenario "User downloads their plan as text" do + scenario 'User downloads their plan as text' do within("#plan_#{plan.id}") do - click_button("Actions") - click_link "Download" + click_button('Actions') + click_link 'Download' end - select("text") + select('text') if plan.phases.present? _all_phase_download _single_phase_download else - _regular_download("text") + _regular_download('text') end end - scenario "User downloads their plan as docx" do + scenario 'User downloads their plan as docx' do within("#plan_#{plan.id}") do - click_button("Actions") - click_link "Download" + click_button('Actions') + click_link 'Download' end - select("docx") + select('docx') if plan.phases.present? _all_phase_download _single_phase_download else - _regular_download("docx") + _regular_download('docx') end end @@ -167,22 +166,22 @@ # =========================== def _regular_download(format) - if format == "html" + if format == 'html' new_window = window_opened_by do - click_button "Download Plan" + click_button 'Download Plan' end within_window new_window do expect(page.source).to have_text(plan.title) end else - click_button "Download Plan" + click_button 'Download Plan' expect(page.source).to have_text(plan.title) end end def _all_phase_download - _select_option("phase_id", "All") - click_button "Download Plan" + _select_option('phase_id', 'All') + click_button 'Download Plan' expect(page.source).to have_text(plan.title) plan.phases.each do |phase| # All phase titles should be included in output p phase.id @@ -191,8 +190,8 @@ def _all_phase_download end def _single_phase_download - _select_option("phase_id", plan.phases[1].id) - click_button "Download Plan" + _select_option('phase_id', plan.phases[1].id) + click_button 'Download Plan' expect(page.source).to have_text(plan.title) expect(page.source).to have_text(plan.phases[1].title) expect(page.source).not_to have_text(plan.phases[2].title) if plan.phases.length > 2 @@ -201,5 +200,4 @@ def _single_phase_download def _select_option(select_id, option_value) find(:id, select_id).find("option[value='#{option_value}']").select_option end - -end \ No newline at end of file +end From a5c2e9cc5cfc68ae5eb7efb2f5a05b3680a33f8c Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 3 Oct 2022 13:00:22 -0400 Subject: [PATCH 04/77] add rubocup exception --- spec/features/plans/exports_spec.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/features/plans/exports_spec.rb b/spec/features/plans/exports_spec.rb index fe6bf244a1..38081afb3f 100644 --- a/spec/features/plans/exports_spec.rb +++ b/spec/features/plans/exports_spec.rb @@ -165,6 +165,8 @@ # = Helper methods = # =========================== + # rubocop:disable Metrics/AbcSize + # disable Rubocup metrics check to confirm both plan title and phase title on downloaded file def _regular_download(format) if format == 'html' new_window = window_opened_by do @@ -184,7 +186,6 @@ def _all_phase_download click_button 'Download Plan' expect(page.source).to have_text(plan.title) plan.phases.each do |phase| # All phase titles should be included in output - p phase.id expect(page.source).to have_text(phase.title) end end @@ -197,6 +198,7 @@ def _single_phase_download expect(page.source).not_to have_text(plan.phases[2].title) if plan.phases.length > 2 end + # rubocop:enable Metrics/AbcSize def _select_option(select_id, option_value) find(:id, select_id).find("option[value='#{option_value}']").select_option end From e7a9b65c70ed84e2292e7f24556e22d19c0c3b4c Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Wed, 5 Oct 2022 13:40:51 -0400 Subject: [PATCH 05/77] add missing translation and adjust variables --- app/controllers/plan_exports_controller.rb | 8 ++++---- db/schema.rb | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/controllers/plan_exports_controller.rb b/app/controllers/plan_exports_controller.rb index a0f8a362e2..2c692e9916 100644 --- a/app/controllers/plan_exports_controller.rb +++ b/app/controllers/plan_exports_controller.rb @@ -36,7 +36,7 @@ def show @hash = @plan.as_pdf(current_user, @show_coversheet) @formatting = export_params[:formatting] || @plan.settings(:export).formatting - if params.key?(:phase_id) + if params.key?(:phase_id) && params[:phase_id].length.positive? # order phases by phase number asc @hash[:phases] = @hash[:phases].sort_by { |phase| phase[:number] } if params[:phase_id] == 'All' @@ -45,8 +45,8 @@ def show @selected_phase = @plan.phases.find(params[:phase_id]) end else - @plan.phases.order('phases.updated_at DESC') - .detect { |p| p.visibility_allowed?(@plan) } + @selected_phase = @plan.phases.order('phases.updated_at DESC') + .detect { |p| p.visibility_allowed?(@plan) } end # Added contributors to coverage of plans. @@ -107,7 +107,7 @@ def show_pdf date: l(@plan.updated_at.to_date, format: :readable)), font_size: 8, spacing: (Integer(@formatting[:margin][:bottom]) / 2) - 4, - right: '[page] of [topage]', + right: _('[page] of [topage]'), encoding: 'utf8' } end diff --git a/db/schema.rb b/db/schema.rb index 56dbfef7d4..ae11e2f118 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -666,4 +666,4 @@ add_foreign_key "users", "departments" add_foreign_key "users", "languages" add_foreign_key "users", "orgs" -end +end \ No newline at end of file From 3483c22867d1a7a2d249091a53b21917ca2f1976 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Tue, 15 Nov 2022 13:38:49 -0500 Subject: [PATCH 06/77] add translation ability to funding status by creating corresponding enum --- app/models/plan.rb | 6 ++++++ app/views/plans/_project_details.html.erb | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/models/plan.rb b/app/models/plan.rb index 0cf221887b..41ca343fca 100644 --- a/app/models/plan.rb +++ b/app/models/plan.rb @@ -63,6 +63,12 @@ class Plan < ApplicationRecord privately_visible: _('private') }.freeze + FUNDING_STATUS = { + planned: _('Planned'), + funded: _('Funded'), + denied: _('Denied') + }.freeze + # ============== # = Attributes = # ============== diff --git a/app/views/plans/_project_details.html.erb b/app/views/plans/_project_details.html.erb index 125d3cabfc..fc31c278ae 100644 --- a/app/views/plans/_project_details.html.erb +++ b/app/views/plans/_project_details.html.erb @@ -167,7 +167,14 @@ ethics_report_tooltip = _("Link to a protocol from a meeting with an ethics comm <%= form.label(:funding_status, _("Funding status"), class: "control-label") %>
- <% funding_statuses = Plan.funding_statuses.map { |status| [status[0].capitalize, status[0]] } %> + <% funding_statuses = Plan::FUNDING_STATUS.map { |status| [_(status[0].to_s.capitalize), _(status[0].to_s)] } %> + <%= form.select :funding_status, + options_for_select(funding_statuses, form.object.funding_status), + { + include_blank: _("- Please select one -") + }, + { class: "form-control" } %> +
<%= form.select :funding_status, options_for_select(funding_statuses, form.object.funding_status), { include_blank: _("- Please select one -"), From 6a72efe177c7fa910b863b5e31ed8f75f09f51d5 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Tue, 15 Nov 2022 15:29:27 -0500 Subject: [PATCH 07/77] remove extra lines --- app/views/plans/_project_details.html.erb | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/app/views/plans/_project_details.html.erb b/app/views/plans/_project_details.html.erb index fc31c278ae..893ce29571 100644 --- a/app/views/plans/_project_details.html.erb +++ b/app/views/plans/_project_details.html.erb @@ -168,21 +168,13 @@ ethics_report_tooltip = _("Link to a protocol from a meeting with an ethics comm
<% funding_statuses = Plan::FUNDING_STATUS.map { |status| [_(status[0].to_s.capitalize), _(status[0].to_s)] } %> - <%= form.select :funding_status, - options_for_select(funding_statuses, form.object.funding_status), - { - include_blank: _("- Please select one -") - }, - { class: "form-control" } %> -
- <%= form.select :funding_status, options_for_select(funding_statuses, form.object.funding_status), + <%= form.select :funding_status, options_for_select(funding_statuses, form.object.funding_status), { include_blank: _("- Please select one -"), selected: form.object.funding_status }, { class: "form-control" } %> - <%= form.fields_for :grant, plan.grant do |grant_fields| %>
<%= grant_fields.label(:value, _("Grant number/url"), class: "control-label") %> From 71c9e5574ed1c41f5c6b2b734a44bc90e0a21ea5 Mon Sep 17 00:00:00 2001 From: John Pinto Date: Thu, 8 Dec 2022 12:49:24 +0000 Subject: [PATCH 08/77] Fix for bug #3214 which had noted there was no request rate limit to resetting the password. The Rack-Attack middleware for blocking & throttling abusive requests is being used. https://github.com/rack/rack-attack/blob/6-stable/README.md Changes: - Added rack-attack version 6.6.1 gem. https://rubygems.org/gems/rack-attack/versions/6.6.1 - Added config/initializers/rack_attack.rb: - The rack-attack functionality is enabled with Rack::Attack.enabled = true but may be switched off Rack::Attack.enabled = false. - Password reset requests are currently throttled from from an IP address for POSTs to path /users/passwords and is limited 2 requests every 30 seconds. ess - Login requests are throttled from an IP address for POSTs to path /users/sign_in and is limited 4 requests every 30 seconds. - A new html page public/429.html with title "Too Many Request" is added. --- CHANGELOG.md | 5 ++++- Gemfile | 3 +++ config/initializers/rack_attack.rb | 25 +++++++++++++++++++++++++ public/429.html | 29 +++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 config/initializers/rack_attack.rb create mode 100644 public/429.html diff --git a/CHANGELOG.md b/CHANGELOG.md index b64a2b09ad..7f95230bd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,12 @@ # Changelog -### Added +### Added - Added CHANGELOG.md and Danger Github Action [#3257](https://github.com/DMPRoadmap/roadmap/issues/3257) + - Added rack-attack version 6.6.1 gem. https://rubygems.org/gems/rack-attack/versions/6.6.1 + ### Fixed +- Using Rack-attack address vulnerabilities pointed out in password reset and login: there was no request rate limit.[#3214](https://github.com/DMPRoadmap/roadmap/issues/3214) ### Changed diff --git a/Gemfile b/Gemfile index b700dace31..197d98843a 100644 --- a/Gemfile +++ b/Gemfile @@ -119,6 +119,9 @@ gem 'jwt' # OO authorization for Rails (https://github.com/elabs/pundit) gem 'pundit' +# Gem for throttling malicious attacks +gem 'rack-attack', '~> 6.6', '>= 6.6.1' + # ========== # # UI / VIEWS # # ========== # diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb new file mode 100644 index 0000000000..712315de9b --- /dev/null +++ b/config/initializers/rack_attack.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +# NB: `req` is a Rack::Request object (basically an env hash with friendly accessor methods) + +# Enable/disable Rack::Attack +Rack::Attack.enabled = true + +# Cache store required to work. +Rack::Attack.cache.store = ActiveSupport::Cache::MemoryStore.new # defaults to Rails.cache + +# Throttle should send a 429 Error responsec code and display public/429.html +Rack::Attack.throttled_responder = lambda do |env| + html = ActionView::Base.empty.render(file: 'public/429.html') + [429, {'Content-Type' => 'text/html'}, [html]] +end + +# Throttle attempts to a particular path. 2 POSTs to /users/password every 30 seconds +Rack::Attack.throttle "password_resets/ip", limit: 2, period: 30.seconds do |req| + req.post? && req.path == "/users/password" && req.ip +end + +# Throttle attempts to a particular path. 4 POSTs to /users/sign_in every 30 seconds +Rack::Attack.throttle "logins/ip", limit: 4, period: 30.seconds do |req| + req.post? && req.path == "/users/sign_in" && req.ip +end diff --git a/public/429.html b/public/429.html new file mode 100644 index 0000000000..33324d5b6b --- /dev/null +++ b/public/429.html @@ -0,0 +1,29 @@ + + + + We're sorry, but something went wrong (500) + + + + + +
+

Too Many Requests

+ +

You have exceeded the number of requests for this resource. For security reasons access is limited to a fixed number in a given period. Retry later.

+ + +
+ + From 813ee0d58511561da7ba95cfcfd2c7c20b91110a Mon Sep 17 00:00:00 2001 From: briri Date: Wed, 1 Feb 2023 10:37:03 -0800 Subject: [PATCH 09/77] installed rubocop-performance gem and made necessary adjustments --- .rubocop.yml | 5 +++ CHANGELOG.md | 5 +++ Gemfile | 3 ++ Gemfile.lock | 7 +++- app/controllers/answers_controller.rb | 4 +- app/controllers/api/v0/plans_controller.rb | 2 +- .../api/v0/statistics_controller.rb | 2 +- app/controllers/api/v1/plans_controller.rb | 2 +- .../concerns/conditional_user_mailer.rb | 4 +- app/controllers/concerns/paginable.rb | 2 +- app/controllers/org_admin/plans_controller.rb | 2 +- .../org_admin/templates_controller.rb | 8 ++-- app/controllers/plan_exports_controller.rb | 2 +- app/controllers/plans_controller.rb | 2 +- app/controllers/public_pages_controller.rb | 2 +- app/helpers/conditions_helper.rb | 6 +-- app/models/concerns/exportable_plan.rb | 2 +- app/models/concerns/identifiable.rb | 2 +- app/models/exported_plan.rb | 2 +- app/models/identifier.rb | 2 +- app/models/language.rb | 2 +- app/models/plan.rb | 10 +++-- app/models/question.rb | 5 +-- app/models/settings/template.rb | 4 +- .../api/v1/contributor_presenter.rb | 6 +-- app/presenters/api/v1/org_presenter.rb | 4 +- app/presenters/api/v1/plan_presenter.rb | 2 +- .../api/v1/research_output_presenter.rb | 2 +- app/presenters/identifier_presenter.rb | 4 +- app/presenters/org_selection_presenter.rb | 2 +- app/presenters/research_output_presenter.rb | 6 +-- .../super_admin/orgs/merge_presenter.rb | 18 ++++----- app/services/api/v1/deserialization/org.rb | 3 +- app/services/api/v1/persistence_service.rb | 2 +- app/validators/email_validator.rb | 2 +- app/validators/url_validator.rb | 2 +- app/views/api/v0/plans/index.json.jbuilder | 2 +- app/views/api/v1/datasets/_show.json.jbuilder | 2 +- config/initializers/translation.rb | 2 +- lib/cleanup/deprecators/get_deprecator.rb | 2 +- .../deprecators/predicate_deprecator.rb | 2 +- lib/cleanup/deprecators/set_deprecator.rb | 2 +- lib/org_date_rangeable.rb | 7 +--- lib/tasks/data_cleanup.rake | 3 +- lib/tasks/migrate.rake | 2 +- lib/tasks/upgrade.rake | 37 ++++++++++--------- spec/controllers/usage_controller_spec.rb | 3 +- spec/mixins/versionable_model.rb | 2 +- spec/models/guidance_group_spec.rb | 4 +- spec/models/org_spec.rb | 20 +++++----- spec/models/template_spec.rb | 2 +- spec/rails_helper.rb | 6 +-- spec/requests/api/v1/plans_controller.rb | 4 +- .../external_apis/ror_service_spec.rb | 6 +-- .../org_selection/search_service_spec.rb | 2 +- spec/support/helpers/autocomplete_helper.rb | 4 +- spec/support/matchers/has_errors_matcher.rb | 2 +- .../api/v1/plans/_show.json.jbuilder_spec.rb | 2 +- 58 files changed, 135 insertions(+), 123 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 97624066f7..0ea4a8707f 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -23,6 +23,11 @@ # # Try to place any new Cops under their relevant section and in alphabetical order +require: +# - rubocop-rails +# - rubocop-rspec + - rubocop-performance + AllCops: # Show the name of the cops being voilated in the feedback DisplayCopNames: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c5a065ac8..d02eef1e8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## v4.0.3 + +### Maintenance +- Installed rubocop-performance gem and made suggested changes + ### Added - Added CHANGELOG.md and Danger Github Action [#3257](https://github.com/DMPRoadmap/roadmap/issues/3257) diff --git a/Gemfile b/Gemfile index c9990b6313..53968dffe5 100644 --- a/Gemfile +++ b/Gemfile @@ -336,6 +336,9 @@ group :ci, :development do # Thread-safety checks via static analysis. A plugin for the RuboCop code style # enforcing & linting tool. # gem 'rubocop-thread_safety' + + # Performance checks by Rubocop + gem 'rubocop-performance', require: false end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 2b2d5f5898..1b61ab7f44 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -437,6 +437,9 @@ GEM parser (>= 3.1.1.0) rubocop-i18n (3.0.0) rubocop (~> 1.0) + rubocop-performance (1.15.2) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) ruby-progressbar (1.11.0) ruby2_keywords (0.0.5) ruby_dig (0.0.2) @@ -540,6 +543,7 @@ GEM zeitwerk (2.6.6) PLATFORMS + arm64-darwin-21 arm64-darwin-22 x86_64-linux @@ -602,6 +606,7 @@ DEPENDENCIES rspec-rails rubocop rubocop-i18n + rubocop-performance sass-rails sassc-rails selenium-webdriver @@ -625,4 +630,4 @@ RUBY VERSION ruby 2.7.6p219 BUNDLED WITH - 2.3.26 + 2.4.2 diff --git a/app/controllers/answers_controller.rb b/app/controllers/answers_controller.rb index 4404505282..43ab3127fc 100644 --- a/app/controllers/answers_controller.rb +++ b/app/controllers/answers_controller.rb @@ -185,8 +185,8 @@ def permitted_params # rubocop:enable Metrics/AbcSize def check_answered(section, q_array, all_answers) - n_qs = section.questions.select { |question| q_array.include?(question.id) }.length - n_ans = all_answers.select { |ans| q_array.include?(ans.question.id) and ans.answered? }.length + n_qs = section.questions.count { |question| q_array.include?(question.id) } + n_ans = all_answers.count { |ans| q_array.include?(ans.question.id) and ans.answered? } [n_qs, n_ans] end end diff --git a/app/controllers/api/v0/plans_controller.rb b/app/controllers/api/v0/plans_controller.rb index 0ea43ba707..4e74ab2db9 100644 --- a/app/controllers/api/v0/plans_controller.rb +++ b/app/controllers/api/v0/plans_controller.rb @@ -88,7 +88,7 @@ def index if params['updated_after'].present? || params['updated_before'].present? @plans = @plans.where(updated_at: dates_to_range(params, 'updated_after', 'updated_before')) end - if params['remove_tests'].present? && params['remove_tests'].downcase == 'true' + if params['remove_tests'].present? && params['remove_tests'].casecmp('true').zero? @plans = @plans.where.not(visibility: Plan.visibilities[:is_test]) end # filter on funder (dmptemplate_id) diff --git a/app/controllers/api/v0/statistics_controller.rb b/app/controllers/api/v0/statistics_controller.rb index 2af50dfcb2..dffd03c67c 100644 --- a/app/controllers/api/v0/statistics_controller.rb +++ b/app/controllers/api/v0/statistics_controller.rb @@ -219,7 +219,7 @@ def plans raise Pundit::NotAuthorizedError unless Api::V0::StatisticsPolicy.new(@user, :statistics).plans? @org_plans = @user.org.plans - if params['remove_tests'].present? && params['remove_tests'].downcase == 'true' + if params['remove_tests'].present? && params['remove_tests'].casecmp('true').zero? @org_plans = @org_plans.where.not(visibility: Plan.visibilities[:is_test]) end if params['start_date'].present? || params['end_date'].present? diff --git a/app/controllers/api/v1/plans_controller.rb b/app/controllers/api/v1/plans_controller.rb index b1480437bd..3f83f5da93 100644 --- a/app/controllers/api/v1/plans_controller.rb +++ b/app/controllers/api/v1/plans_controller.rb @@ -108,7 +108,7 @@ def plan_exists?(json:) # Get the Plan's owner def determine_owner(client:, plan:) - contact = plan.contributors.select(&:data_curation?).first + contact = plan.contributors.find(&:data_curation?) # Use the contact if it was sent in and has an affiliation defined return contact if contact.present? && contact.org.present? diff --git a/app/controllers/concerns/conditional_user_mailer.rb b/app/controllers/concerns/conditional_user_mailer.rb index c83338347d..e7eddc58fe 100644 --- a/app/controllers/concerns/conditional_user_mailer.rb +++ b/app/controllers/concerns/conditional_user_mailer.rb @@ -12,14 +12,14 @@ module ConditionalUserMailer # # Returns Boolean def deliver_if(key:, recipients: [], &block) - return false unless block_given? + return false unless block Array(recipients).each do |recipient| email_hash = recipient.get_preferences('email').with_indifferent_access # Violation of rubocop's DoubleNegation check # preference_value = !!email_hash.dig(*key.to_s.split(".")) preference_value = email_hash.dig(*key.to_s.split('.')) - block.call(recipient) if preference_value + yield(recipient) if preference_value end true diff --git a/app/controllers/concerns/paginable.rb b/app/controllers/concerns/paginable.rb index ab3b0b8cee..aa9810dfb5 100644 --- a/app/controllers/concerns/paginable.rb +++ b/app/controllers/concerns/paginable.rb @@ -8,7 +8,7 @@ module Paginable ## # Regex to validate sort_field param is safe - SORT_COLUMN_FORMAT = /[\w_]+\.[\w_]+$/.freeze + SORT_COLUMN_FORMAT = /[\w_]+\.[\w_]+$/ PAGINATION_QUERY_PARAMS = %i[page sort_field sort_direction search controller action].freeze diff --git a/app/controllers/org_admin/plans_controller.rb b/app/controllers/org_admin/plans_controller.rb index 7537f39ff7..f673fc18cf 100644 --- a/app/controllers/org_admin/plans_controller.rb +++ b/app/controllers/org_admin/plans_controller.rb @@ -50,7 +50,7 @@ def download_plans raise Pundit::NotAuthorizedError unless current_user.present? && current_user.can_org_admin? org = current_user.org - file_name = org.name.gsub(/ /, '_') + file_name = org.name.tr(' ', '_') .gsub(/[.;,]/, '') header_cols = [ _('Project title').to_s, diff --git a/app/controllers/org_admin/templates_controller.rb b/app/controllers/org_admin/templates_controller.rb index 0e1dfcebd8..ce3b1b256e 100644 --- a/app/controllers/org_admin/templates_controller.rb +++ b/app/controllers/org_admin/templates_controller.rb @@ -15,7 +15,7 @@ class TemplatesController < ApplicationController def index authorize Template templates = Template.latest_version.where(customization_of: nil) - published = templates.select { |t| t.published? || t.draft? }.length + published = templates.count { |t| t.published? || t.draft? } @orgs = Org.includes(:identifiers).managed @title = _('All Templates') @@ -40,7 +40,7 @@ def organisational authorize Template templates = Template.latest_version_per_org(current_user.org.id) .where(customization_of: nil, org_id: current_user.org.id) - published = templates.select { |t| t.published? || t.draft? }.length + published = templates.count { |t| t.published? || t.draft? } @orgs = current_user.can_super_admin? ? Org.includes(:identifiers).all : nil @title = if current_user.can_super_admin? @@ -78,7 +78,7 @@ def customisable customizations = customizations.select do |t| funder_template_families.include?(t.customization_of) end - published = customizations.select { |t| t.published? || t.draft? }.length + published = customizations.count { |t| t.published? || t.draft? } @orgs = current_user.can_super_admin? ? Org.includes(:identifiers).all : [] @title = _('Customizable Templates') @@ -328,7 +328,7 @@ def template_export @formatting = Settings::Template::DEFAULT_SETTINGS[:formatting] begin - safe_title = @template.title.gsub(/[^a-zA-Z\d\s]/, '').gsub(/ /, '_') + safe_title = @template.title.gsub(/[^a-zA-Z\d\s]/, '').tr(' ', '_') file_name = "#{safe_title}_v#{@template.version}" respond_to do |format| format.docx do diff --git a/app/controllers/plan_exports_controller.rb b/app/controllers/plan_exports_controller.rb index 4a3d5c1bbb..f89458508f 100644 --- a/app/controllers/plan_exports_controller.rb +++ b/app/controllers/plan_exports_controller.rb @@ -116,7 +116,7 @@ def file_name # Sanitize bad characters and replace spaces with underscores ret = @plan.title ret = ret.strip.gsub(/\s+/, '_') - ret = ret.gsub(/"/, '') + ret = ret.delete('"') ret = ActiveStorage::Filename.new(ret).sanitized # limit the filename length to 100 chars. Windows systems have a MAX_PATH allowance # of 255 characters, so this should provide enough of the title to allow the user diff --git a/app/controllers/plans_controller.rb b/app/controllers/plans_controller.rb index 623cf2477f..72d0853f19 100644 --- a/app/controllers/plans_controller.rb +++ b/app/controllers/plans_controller.rb @@ -237,7 +237,7 @@ def edit .find(params[:id]) authorize plan phase_id = params[:phase_id].to_i - phase = plan.template.phases.select { |p| p.id == phase_id }.first + phase = plan.template.phases.find { |p| p.id == phase_id } raise ActiveRecord::RecordNotFound if phase.nil? guidance_groups = GuidanceGroup.where(published: true, id: plan.guidance_group_ids) diff --git a/app/controllers/public_pages_controller.rb b/app/controllers/public_pages_controller.rb index 3a19449b73..99fd1dcd1f 100644 --- a/app/controllers/public_pages_controller.rb +++ b/app/controllers/public_pages_controller.rb @@ -52,7 +52,7 @@ def template_export @formatting = Settings::Template::DEFAULT_SETTINGS[:formatting] begin - file_name = @template.title.gsub(/[^a-zA-Z\d\s]/, '').gsub(/ /, '_') + file_name = @template.title.gsub(/[^a-zA-Z\d\s]/, '').tr(' ', '_') file_name = "#{file_name}_v#{@template.version}" respond_to do |format| format.docx do diff --git a/app/helpers/conditions_helper.rb b/app/helpers/conditions_helper.rb index 8b6a956c14..9973efb975 100644 --- a/app/helpers/conditions_helper.rb +++ b/app/helpers/conditions_helper.rb @@ -89,11 +89,9 @@ def num_section_questions(plan, section, phase = nil) phase = plan.template .phases - .select { |ph| ph.number == phase[:number] } - .first + .find { |ph| ph.number == phase[:number] } section = phase.sections - .select { |s| s.phase_id == phase.id && s.title == section[:title] } - .first + .find { |s| s.phase_id == phase.id && s.title == section[:title] } end count = 0 plan_remove_list = remove_list(plan) diff --git a/app/models/concerns/exportable_plan.rb b/app/models/concerns/exportable_plan.rb index 6fa5c10278..e5410326ab 100644 --- a/app/models/concerns/exportable_plan.rb +++ b/app/models/concerns/exportable_plan.rb @@ -220,7 +220,7 @@ def prepare_research_outputs_for_csv(csv, _headings, hash) csv << [_('Research Outputs: ')] # Convert the hash keys to column headers - csv << hash[:research_outputs].first.keys.map { |key| key.to_s.capitalize.gsub('_', ' ') } + csv << hash[:research_outputs].first.keys.map { |key| key.to_s.capitalize.tr('_', ' ') } hash[:research_outputs].each do |research_output| csv << research_output.values end diff --git a/app/models/concerns/identifiable.rb b/app/models/concerns/identifiable.rb index e1f0e01eef..217d13b32b 100644 --- a/app/models/concerns/identifiable.rb +++ b/app/models/concerns/identifiable.rb @@ -54,7 +54,7 @@ def self.from_identifiers(array:) # gets the identifier for the scheme def identifier_for_scheme(scheme:) scheme = IdentifierScheme.by_name(scheme.downcase).first if scheme.is_a?(String) - identifiers.select { |id| id.identifier_scheme == scheme }.last + identifiers.reverse.find { |id| id.identifier_scheme == scheme } end # Combines the existing identifiers with the new ones diff --git a/app/models/exported_plan.rb b/app/models/exported_plan.rb index 66cd73f259..4321151683 100644 --- a/app/models/exported_plan.rb +++ b/app/models/exported_plan.rb @@ -67,7 +67,7 @@ def project_description end def owner - plan.roles.to_a.select(&:creator?).first.user + plan.roles.to_a.find(&:creator?)&.user end def funder diff --git a/app/models/identifier.rb b/app/models/identifier.rb index 8d8a6221ca..9b7236407a 100644 --- a/app/models/identifier.rb +++ b/app/models/identifier.rb @@ -96,7 +96,7 @@ def identifier_format return 'ark' if value.include?('ark:') doi_regex = %r{(doi:)?[0-9]{2}\.[0-9]+/.} - return 'doi' if value =~ doi_regex + return 'doi' if value.match?(doi_regex) return 'url' if value.starts_with?('http') diff --git a/app/models/language.rb b/app/models/language.rb index d08a701911..3755e29bac 100644 --- a/app/models/language.rb +++ b/app/models/language.rb @@ -19,7 +19,7 @@ class Language < ApplicationRecord ABBREVIATION_MAXIMUM_LENGTH = 5 - ABBREVIATION_FORMAT = /\A[a-z]{2}(-[A-Z]{2})?\Z/.freeze + ABBREVIATION_FORMAT = /\A[a-z]{2}(-[A-Z]{2})?\Z/ NAME_MAXIMUM_LENGTH = 20 diff --git a/app/models/plan.rb b/app/models/plan.rb index 0cf221887b..73c2fde7e6 100644 --- a/app/models/plan.rb +++ b/app/models/plan.rb @@ -54,6 +54,8 @@ class Plan < ApplicationRecord # = Constants = # ============= + DMP_ID_TYPES = %w[ark doi].freeze + # Returns visibility message given a Symbol type visibility passed, otherwise # nil VISIBILITY_MESSAGE = { @@ -290,7 +292,7 @@ def settings(key) # rubocop:disable Metrics/AbcSize, Style/OptionalBooleanParameter def answer(qid, create_if_missing = true) answer = answers.select { |a| a.question_id == qid } - .max { |a, b| a.created_at <=> b.created_at } + .max_by(&:created_at) if answer.nil? && create_if_missing question = Question.find(qid) answer = Answer.new @@ -440,7 +442,7 @@ def latest_update # Returns nil def owner r = roles.select { |rr| rr.active && rr.administrator } - .min { |a, b| a.created_at <=> b.created_at } + .min_by(&:created_at) r.nil? ? nil : r.user end @@ -510,7 +512,7 @@ def authors # # Returns Integer def num_answered_questions(phase = nil) - return answers.select(&:answered?).length unless phase.present? + return answers.count(&:answered?) unless phase.present? answered = answers.select do |answer| answer.answered? && phase.questions.include?(answer.question) @@ -577,7 +579,7 @@ def deactivate! # Returns the plan's identifier (either a DOI/ARK) def landing_page - identifiers.select { |i| %w[doi ark].include?(i.identifier_format) }.first + identifiers.find { |i| DMP_ID_TYPES.include?(i.identifier_format) } end # Since the Grant is not a normal AR association, override the getter and setter diff --git a/app/models/question.rb b/app/models/question.rb index f5f247bbc3..a0c0f6180f 100644 --- a/app/models/question.rb +++ b/app/models/question.rb @@ -167,7 +167,7 @@ def example_answers(org_ids) org_ids = Array(org_ids) annotations.select { |a| org_ids.include?(a.org_id) } .select(&:example_answer?) - .sort { |a, b| a.created_at <=> b.created_at } + .sort_by(&:created_at) end alias get_example_answers example_answers @@ -183,8 +183,7 @@ def example_answers(org_ids) # Returns Annotation def guidance_annotation(org_id) annotations.select { |a| a.org_id == org_id } - .select(&:guidance?) - .first + .find(&:guidance?) end alias get_guidance_annotation guidance_annotation diff --git a/app/models/settings/template.rb b/app/models/settings/template.rb index dbffe03c23..7a00ec970f 100644 --- a/app/models/settings/template.rb +++ b/app/models/settings/template.rb @@ -21,8 +21,8 @@ class Template < RailsSettings::SettingObject 'Roboto, Arial, Sans-Serif' ].freeze - VALID_FONT_SIZE_RANGE = (8..14).freeze - VALID_MARGIN_RANGE = (5..25).freeze + VALID_FONT_SIZE_RANGE = (8..14) + VALID_MARGIN_RANGE = (5..25) VALID_ADMIN_FIELDS = %w[project_name project_identifier grant_title principal_investigator project_data_contact diff --git a/app/presenters/api/v1/contributor_presenter.rb b/app/presenters/api/v1/contributor_presenter.rb index 4ed0c1ca68..185e98de56 100644 --- a/app/presenters/api/v1/contributor_presenter.rb +++ b/app/presenters/api/v1/contributor_presenter.rb @@ -8,13 +8,13 @@ class << self # Convert the specified role into a CRediT Taxonomy URL def role_as_uri(role:) return nil unless role.present? - return 'other' if role.to_s.downcase == 'other' + return 'other' if role.to_s.casecmp('other').zero? - "#{Contributor::ONTOLOGY_BASE_URL}/#{role.to_s.downcase.gsub('_', '-')}" + "#{Contributor::ONTOLOGY_BASE_URL}/#{role.to_s.downcase.tr('_', '-')}" end def contributor_id(identifiers:) - identifiers.select { |id| id.identifier_scheme.name == 'orcid' }.first + identifiers.find { |id| id.identifier_scheme.name == 'orcid' } end end end diff --git a/app/presenters/api/v1/org_presenter.rb b/app/presenters/api/v1/org_presenter.rb index 5ada0166b1..8e14483881 100644 --- a/app/presenters/api/v1/org_presenter.rb +++ b/app/presenters/api/v1/org_presenter.rb @@ -6,10 +6,10 @@ module V1 class OrgPresenter class << self def affiliation_id(identifiers:) - ident = identifiers.select { |id| id.identifier_scheme&.name == 'ror' }.first + ident = identifiers.find { |id| id.identifier_scheme&.name == 'ror' } return ident if ident.present? - identifiers.select { |id| id.identifier_scheme&.name == 'fundref' }.first + identifiers.find { |id| id.identifier_scheme&.name == 'fundref' } end end end diff --git a/app/presenters/api/v1/plan_presenter.rb b/app/presenters/api/v1/plan_presenter.rb index 291f3bb930..e871e2fa32 100644 --- a/app/presenters/api/v1/plan_presenter.rb +++ b/app/presenters/api/v1/plan_presenter.rb @@ -27,7 +27,7 @@ def initialize(plan:) # Extract the ARK or DOI for the DMP OR use its URL if none exists def identifier doi = @plan.identifiers.select do |id| - %w[ark doi].include?(id.identifier_format) + ::Plan::DMP_ID_TYPES.include?(id.identifier_format) end return doi.first if doi.first.present? diff --git a/app/presenters/api/v1/research_output_presenter.rb b/app/presenters/api/v1/research_output_presenter.rb index 28b7325312..885586045e 100644 --- a/app/presenters/api/v1/research_output_presenter.rb +++ b/app/presenters/api/v1/research_output_presenter.rb @@ -62,7 +62,7 @@ def fetch_q_and_a(themes:) ret = themes.map do |theme| qs = @plan.questions.select { |q| q.themes.collect(&:title).include?(theme) } descr = qs.map do |q| - a = @plan.answers.select { |ans| ans.question_id = q.id }.first + a = @plan.answers.find { |ans| ans.question_id = q.id } next unless a.present? && !a.blank? "Question: #{q.text}
Answer: #{a.text}" diff --git a/app/presenters/identifier_presenter.rb b/app/presenters/identifier_presenter.rb index 77e66d6bbe..00a86f9cc2 100644 --- a/app/presenters/identifier_presenter.rb +++ b/app/presenters/identifier_presenter.rb @@ -19,7 +19,7 @@ def id_for_scheme(scheme:) end def scheme_by_name(name:) - schemes.select { |scheme| scheme.name.downcase == name.downcase } + schemes.select { |scheme| scheme.name.casecmp(name).zero? } end private @@ -39,7 +39,7 @@ def load_schemes # a curated list of Orgs that can use institutional login if @identifiable.is_a?(Org) && !Rails.configuration.x.shibboleth.use_filtered_discovery_service - schemes = schemes.reject { |scheme| scheme.name.downcase == 'shibboleth' } + schemes = schemes.reject { |scheme| scheme.name.casecmp('shibboleth').zero? } end schemes end diff --git a/app/presenters/org_selection_presenter.rb b/app/presenters/org_selection_presenter.rb index 2d8820eecc..2f0b2ffc82 100644 --- a/app/presenters/org_selection_presenter.rb +++ b/app/presenters/org_selection_presenter.rb @@ -33,7 +33,7 @@ def select_list def crosswalk_entry_from_org_id(value:) return {}.to_json unless value.present? && value.to_s =~ /[0-9]+/ - entry = @crosswalk.select { |item| item[:id].to_s == value.to_s }.first + entry = @crosswalk.find { |item| item[:id].to_s == value.to_s } entry.present? ? entry.to_json : {}.to_json rescue StandardError {}.to_json diff --git a/app/presenters/research_output_presenter.rb b/app/presenters/research_output_presenter.rb index 3a77f1be80..4187b5d870 100644 --- a/app/presenters/research_output_presenter.rb +++ b/app/presenters/research_output_presenter.rb @@ -37,7 +37,7 @@ def selectable_metadata_standards(category:) # Returns the available licenses for a select tag def complete_licenses License.selectable - .sort { |a, b| a.identifier <=> b.identifier } + .sort_by(&:identifier) .map { |license| [license.identifier, license.id] } end @@ -71,7 +71,7 @@ def self.selectable_subjects '12-Social and Behavioural Sciences', '42-Thermal Engineering/Process Engineering' ].map do |subject| - [subject.split('-').last, subject.gsub('-', ' ')] + [subject.split('-').last, subject.tr('-', ' ')] end end @@ -111,7 +111,7 @@ def display_type # Return the user entered text for the type if they selected 'other' return @research_output.output_type_description if @research_output.other? - @research_output.output_type.gsub('_', ' ').capitalize + @research_output.output_type.tr('_', ' ').capitalize end # Returns the display name(s) of the repository(ies) diff --git a/app/presenters/super_admin/orgs/merge_presenter.rb b/app/presenters/super_admin/orgs/merge_presenter.rb index 7adad112c3..6966baa5de 100644 --- a/app/presenters/super_admin/orgs/merge_presenter.rb +++ b/app/presenters/super_admin/orgs/merge_presenter.rb @@ -22,7 +22,7 @@ def initialize(from_org:, to_org:) @from_org_entries = prepare_org(org: @from_org) @to_org_entries = prepare_org(org: @to_org) @mergeable_entries = prepare_mergeables - @categories = @from_org_entries.keys.sort { |a, b| a <=> b } + @categories = @from_org_entries.keys.sort # Specific Org columns @from_org_attributes = org_attributes(org: @from_org) @@ -39,19 +39,19 @@ def prepare_org(org:) return {} unless org.present? && org.is_a?(Org) { - annotations: org.annotations.sort { |a, b| a.text <=> b.text }, - departments: org.departments.sort { |a, b| a.name <=> b.name }, - funded_plans: org.funded_plans.sort { |a, b| a.title <=> b.title }, + annotations: org.annotations.sort_by(&:text), + departments: org.departments.sort_by(&:name), + funded_plans: org.funded_plans.sort_by(&:title), guidances: org.guidance_groups.collect(&:guidances).flatten, - identifiers: org.identifiers.sort { |a, b| a.value <=> b.value }, + identifiers: org.identifiers.sort_by(&:value), # TODO: Org.plans is overridden and does not clearly identify Orgs that 'own' # the plan (i.e. the one the user selected as the 'Research Org') # Loading them directly here until issue #2724 is resolved - plans: Plan.where(org: org).sort { |a, b| a.title <=> b.title }, - templates: org.templates.sort { |a, b| a.title <=> b.title }, - token_permission_types: org.token_permission_types.sort { |a, b| a.to_s <=> b.to_s }, + plans: Plan.where(org: org).sort_by(&:title), + templates: org.templates.sort_by(&:title), + token_permission_types: org.token_permission_types.sort_by(&:to_s), tracker: [org.tracker].compact, - users: org.users.sort { |a, b| a.email <=> b.email } + users: org.users.sort_by(&:email) } end # rubocop:enable Metrics/AbcSize diff --git a/app/services/api/v1/deserialization/org.rb b/app/services/api/v1/deserialization/org.rb index 65773951b6..3bbb252ab2 100644 --- a/app/services/api/v1/deserialization/org.rb +++ b/app/services/api/v1/deserialization/org.rb @@ -64,7 +64,8 @@ def find_by_name(json: {}) # Grab the closest match - only caring about results that 'contain' # the name with preference to those that start with the name - result = results.select { |r| %i[0 1].include?(r[:weight]) }.first + match_weights = %i[0 1] + result = results.find { |r| match_weights.include?(r[:weight]) } # If no good result was found just use the specified name result ||= { name: name } diff --git a/app/services/api/v1/persistence_service.rb b/app/services/api/v1/persistence_service.rb index 68c83f79da..55fe37d4b6 100644 --- a/app/services/api/v1/persistence_service.rb +++ b/app/services/api/v1/persistence_service.rb @@ -96,7 +96,7 @@ def deduplicate_contributors(contributors:) next unless contributor.is_a?(Contributor) # See if we've already processed this contributor - existing = out.select { |c| c == contributor }.first + existing = out.find { |c| c == contributor } out << contributor unless existing.present? next unless existing.present? diff --git a/app/validators/email_validator.rb b/app/validators/email_validator.rb index 6a3709a13b..ce69124dbb 100644 --- a/app/validators/email_validator.rb +++ b/app/validators/email_validator.rb @@ -3,7 +3,7 @@ # Validation for email format class EmailValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) - return if value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i + return if value.match?(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i) record.errors.add(attribute, options.fetch(:message, 'is not a valid email address')) end diff --git a/app/validators/url_validator.rb b/app/validators/url_validator.rb index 3f344b6ce7..5581bf6b7f 100644 --- a/app/validators/url_validator.rb +++ b/app/validators/url_validator.rb @@ -4,7 +4,7 @@ class UrlValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) reg = %r{https?://[-a-zA-Z0-9@:%_+.~#?&/=]{2,256}\.[a-z]{2,4}\b(/[-a-zA-Z0-9@:%_+.~#?&/=]*)?} - return unless value =~ reg + return unless value.match?(reg) record.errors.add(attribute, options.fetch(:message, 'is not a valid URL')) end diff --git a/app/views/api/v0/plans/index.json.jbuilder b/app/views/api/v0/plans/index.json.jbuilder index 516c9ef98d..056f828cdb 100644 --- a/app/views/api/v0/plans/index.json.jbuilder +++ b/app/views/api/v0/plans/index.json.jbuilder @@ -57,7 +57,7 @@ json.array! @plans.each do |plan| json.themes question.themes.each do |theme| json.theme theme.title end - answer = plan.answers.select { |a| a.question_id == question.id }.first + answer = plan.answers.find { |a| a.question_id == question.id } if answer.present? json.answered true json.answer do diff --git a/app/views/api/v1/datasets/_show.json.jbuilder b/app/views/api/v1/datasets/_show.json.jbuilder index 2aab9e3a7b..5b5b4e0863 100644 --- a/app/views/api/v1/datasets/_show.json.jbuilder +++ b/app/views/api/v1/datasets/_show.json.jbuilder @@ -46,7 +46,7 @@ if output.is_a?(ResearchOutput) end json.metadata output.metadata_standards do |metadata_standard| - website = metadata_standard.locations.select { |loc| loc["type"] == "website" }.first + website = metadata_standard.locations.find { |loc| loc["type"] == "website" } website = { url: "" } unless website.present? descr_array = [metadata_standard.title, metadata_standard.description, website["url"]] diff --git a/config/initializers/translation.rb b/config/initializers/translation.rb index 85e5e1c2eb..ba2ecc31df 100644 --- a/config/initializers/translation.rb +++ b/config/initializers/translation.rb @@ -66,7 +66,7 @@ def default_locale end def available_locales - SUPPORTED_LOCALES.sort { |a, b| a <=> b } + SUPPORTED_LOCALES end I18n.available_locales = SUPPORTED_LOCALES diff --git a/lib/cleanup/deprecators/get_deprecator.rb b/lib/cleanup/deprecators/get_deprecator.rb index 673ce28590..f59fd56943 100644 --- a/lib/cleanup/deprecators/get_deprecator.rb +++ b/lib/cleanup/deprecators/get_deprecator.rb @@ -13,7 +13,7 @@ class GetDeprecator # Default message to display to developer when deprecated method called. MESSAGE = '%{deprecated_method} is deprecated. ' \ 'Instead, you should use: %{new_method}. ' \ - "Read #{__FILE__} for more information." + "Read #{__FILE__} for more information.".freeze # Message printed to STDOUT when a deprecated method is called. def deprecation_warning(deprecated_method, _message, _backtrace = nil) diff --git a/lib/cleanup/deprecators/predicate_deprecator.rb b/lib/cleanup/deprecators/predicate_deprecator.rb index ee774fc559..8191363bec 100644 --- a/lib/cleanup/deprecators/predicate_deprecator.rb +++ b/lib/cleanup/deprecators/predicate_deprecator.rb @@ -12,7 +12,7 @@ class PredicateDeprecator # Default message to display to developer when deprecated method called. MESSAGE = '%{deprecated_method} is deprecated. ' \ 'Instead, you should use: %{new_method}. ' \ - "Read #{__FILE__} for more information." + "Read #{__FILE__} for more information.".freeze # Message printed to STDOUT when a deprecated method is called. def deprecation_warning(deprecated_method, _message, _backtrace = nil) diff --git a/lib/cleanup/deprecators/set_deprecator.rb b/lib/cleanup/deprecators/set_deprecator.rb index 28554e311e..33349e9e29 100644 --- a/lib/cleanup/deprecators/set_deprecator.rb +++ b/lib/cleanup/deprecators/set_deprecator.rb @@ -13,7 +13,7 @@ class SetDeprecator # Default message to display to developer when deprecated method called. MESSAGE = '%{deprecated_method} is deprecated. ' \ 'Instead, you should use: %{new_method}. ' \ - "Read #{__FILE__} for more information." + "Read #{__FILE__} for more information.".freeze # Message printed to STDOUT when a deprecated method is called. def deprecation_warning(deprecated_method, _message, _backtrace = nil) diff --git a/lib/org_date_rangeable.rb b/lib/org_date_rangeable.rb index b183eef68a..15b7dc8777 100644 --- a/lib/org_date_rangeable.rb +++ b/lib/org_date_rangeable.rb @@ -22,15 +22,10 @@ class << self def split_months_from_creation(org, &block) starts_at = org.created_at ends_at = starts_at.end_of_month - callable = if block.nil? - proc {} - else - ->(start_date, end_date) { block.call(start_date, end_date) } - end enumerable = [] until starts_at.future? || ends_at.future? - callable.call(starts_at, ends_at) + yield(starts_at, ends_at) if block enumerable << { start_date: starts_at, end_date: ends_at } starts_at = starts_at.next_month.beginning_of_month ends_at = starts_at.end_of_month diff --git a/lib/tasks/data_cleanup.rake b/lib/tasks/data_cleanup.rake index 81cbad941a..e4aa5eebd6 100644 --- a/lib/tasks/data_cleanup.rake +++ b/lib/tasks/data_cleanup.rake @@ -230,8 +230,9 @@ namespace :data_cleanup do def check_length(klass, filter) ids = [] shoulda = '' + skippable = %i[password logo] filter.attributes.each do |attr| - next if %i[password logo].include?(attr) + next if skippable.include?(attr) qry = '' if filter.options[:minimum].present? diff --git a/lib/tasks/migrate.rake b/lib/tasks/migrate.rake index 5bc08a9af3..8fac08aabf 100644 --- a/lib/tasks/migrate.rake +++ b/lib/tasks/migrate.rake @@ -301,7 +301,7 @@ namespace :migrate do unless scheme.nil? users.each do |u| - next unless u.orcid_id.gsub('orcid.org/', '').match(/^[\d-]+/) + next unless u.orcid_id.gsub('orcid.org/', '').match?(/^[\d-]+/) schemes = u.user_identifiers.collect(&:identifier_scheme_id) diff --git a/lib/tasks/upgrade.rake b/lib/tasks/upgrade.rake index 1b004a2120..66fc66998c 100644 --- a/lib/tasks/upgrade.rake +++ b/lib/tasks/upgrade.rake @@ -217,7 +217,7 @@ namespace :upgrade do puts "\t adding option answers.last.question_options.first.text" end end - answers.reverse.each do |answer| + answers.reverse_each do |answer| if num_text.zero? && answer.text.present? # case first present text new_answer.text = answer.text num_text += 1 @@ -832,9 +832,9 @@ namespace :upgrade do Parallel.map(identifiers, in_threads: 8) do |ui| # Parallel has trouble with ActiveRecord lazy loading - require 'org' unless Object.const_defined?('Org') - require 'identifier' unless Object.const_defined?('Identifier') - require 'identifier_scheme' unless Object.const_defined?('IdentifierScheme') + require 'org' unless Object.const_defined?(:Org) + require 'identifier' unless Object.const_defined?(:Identifier) + require 'identifier_scheme' unless Object.const_defined?(:IdentifierScheme) @reconnected ||= Identifier.connection.reconnect! || true lookup = Identifier.where(identifiable_id: ui.user_id, @@ -870,9 +870,9 @@ namespace :upgrade do Parallel.map(identifiers, in_threads: 8) do |oi| # Parallel has trouble with ActiveRecord lazy loading - require 'org' unless Object.const_defined?('Org') - require 'identifier' unless Object.const_defined?('Identifier') - require 'identifier_scheme' unless Object.const_defined?('IdentifierScheme') + require 'org' unless Object.const_defined?(:Org) + require 'identifier' unless Object.const_defined?(:Identifier) + require 'identifier_scheme' unless Object.const_defined?(:IdentifierScheme) @reconnected ||= Identifier.connection.reconnect! || true lookup = Identifier.where(identifiable_id: oi.org_id, @@ -933,7 +933,7 @@ namespace :upgrade do next unless rslts.any? # Just use the first match that contains the search term - rslt = rslts.select { |r| r[:weight] <= 1 }.first + rslt = rslts.find { |r| r[:weight] <= 1 } next unless rslt.present? ror_id = rslt[:ror] @@ -986,11 +986,12 @@ namespace :upgrade do # Unfortunately can't use the Parallel gem here because we can have collisions # when creating Orgs + common_domains = %w[gmail.com yahoo.com msn.com] users.each do |user| # First lookup by email domain term = user.email.split('@').last - unless %w[gmail.com yahoo.com msn.com].include?(term) + unless common_domains.include?(term) # Search the local Org table by its URL matches = Org.where('orgs.target_url LIKE ?', "%#{term}%") org = matches.first if matches.any? @@ -1116,10 +1117,10 @@ namespace :upgrade do next if plan.org_id.present? # Parallel has trouble with ActiveRecord lazy loading - require 'plan' unless Object.const_defined?('Plan') - require 'role' unless Object.const_defined?('Role') - require 'perm' unless Object.const_defined?('Perm') - require 'user' unless Object.const_defined?('User') + require 'plan' unless Object.const_defined?(:Plan) + require 'role' unless Object.const_defined?(:Role) + require 'perm' unless Object.const_defined?(:Perm) + require 'user' unless Object.const_defined?(:User) @reconnected ||= Plan.connection.reconnect! || true next unless plan.owner.present? && plan.owner.org.present? @@ -1132,9 +1133,9 @@ namespace :upgrade do next if plan.funder_id.present? # Parallel has trouble with ActiveRecord lazy loading - require 'plan' unless Object.const_defined?('Plan') - require 'template' unless Object.const_defined?('Template') - require 'org' unless Object.const_defined?('Org') + require 'plan' unless Object.const_defined?(:Plan) + require 'template' unless Object.const_defined?(:Template) + require 'org' unless Object.const_defined?(:Org) @reconnected ||= Plan.connection.reconnect! || true next unless plan.funder_name.present? || plan.template.org.funder? @@ -1166,7 +1167,7 @@ namespace :upgrade do # Parallel.map(plans, in_threads: 8) do |plan| plans.each do |plan| # Parallel has trouble with ActiveRecord lazy loading - require 'plan' unless Object.const_defined?('Plan') + require 'plan' unless Object.const_defined?(:Plan) @reconnected ||= Plan.connection.reconnect! || true identifier = Identifier.find_or_create_by( @@ -1299,7 +1300,7 @@ namespace :upgrade do org = user.org_id unless org.present? unless identifier.present? - ident = user.identifiers.select { |i| i.identifier_scheme == orcid }.first + ident = user.identifiers.find { |i| i.identifier_scheme == orcid } identifier = ident.value if ident.present? end end diff --git a/spec/controllers/usage_controller_spec.rb b/spec/controllers/usage_controller_spec.rb index 603292410b..05d7b979fd 100644 --- a/spec/controllers/usage_controller_spec.rb +++ b/spec/controllers/usage_controller_spec.rb @@ -52,8 +52,7 @@ it 'returns the expected data' do # Controller returns results in date ascending order so resort the # records after extracting the ones we want first - expected = @annual[0..months - 1].sort { |a, b| a.date <=> b.date } - .map { |stat| obj_to_hash(obj: stat) } + expected = @annual[0..months - 1].sort_by(&:date).map { |stat| obj_to_hash(obj: stat) } expect(assigns(:plans_per_month)).to eql(expected.flatten) end end diff --git a/spec/mixins/versionable_model.rb b/spec/mixins/versionable_model.rb index 66c6ce883f..aa6ed1c9c1 100644 --- a/spec/mixins/versionable_model.rb +++ b/spec/mixins/versionable_model.rb @@ -2,7 +2,7 @@ require 'rails_helper' -UUID_REGEX = /\A[\w\d]{8}(-[\w\d]{4}){3}-[\w\d]{12}\Z/i.freeze +UUID_REGEX = /\A[\w\d]{8}(-[\w\d]{4}){3}-[\w\d]{12}\Z/i shared_examples_for 'VersionableModel' do context 'attributes' do diff --git a/spec/models/guidance_group_spec.rb b/spec/models/guidance_group_spec.rb index 9e6912080d..429243f195 100644 --- a/spec/models/guidance_group_spec.rb +++ b/spec/models/guidance_group_spec.rb @@ -197,12 +197,12 @@ end it 'merges associated :plans' do expected = @guidance_group.plans.length + @to_be_merged.plans.length - @guidance_group.merge!(to_be_merged: @to_be_merged) + @guidance_group[:to_be_merged] = @to_be_merged expect(@guidance_group.plans.length).to eql(expected) end it 'merges associated :guidances' do expected = @guidance_group.guidances.length + @to_be_merged.guidances.length - @guidance_group.merge!(to_be_merged: @to_be_merged) + @guidance_group[:to_be_merged] = @to_be_merged expect(@guidance_group.guidances.length).to eql(expected) end it 'removes the :to_be_merged GuidanceGroup' do diff --git a/spec/models/org_spec.rb b/spec/models/org_spec.rb index 00c090c4d6..06d0f36297 100644 --- a/spec/models/org_spec.rb +++ b/spec/models/org_spec.rb @@ -498,53 +498,53 @@ end it 'merges associated :annotations' do expected = @org.annotations.length + @to_be_merged.annotations.length - @org.merge!(to_be_merged: @to_be_merged) + @org[:to_be_merged] = @to_be_merged expect(@org.annotations.length).to eql(expected) end it 'merges associated :departments' do expected = @org.departments.length + @to_be_merged.departments.length - @org.merge!(to_be_merged: @to_be_merged) + @org[:to_be_merged] = @to_be_merged expect(@org.departments.length).to eql(expected) end it 'merges associated :funded_plans' do expected = @org.funded_plans.length + @to_be_merged.funded_plans.length - @org.merge!(to_be_merged: @to_be_merged) + @org[:to_be_merged] = @to_be_merged expect(@org.funded_plans.length).to eql(expected) end it 'merges associated :guidances' do expected = (@org.guidance_groups.first&.guidances&.length || 0) + @to_be_merged.guidance_groups.first.guidances.length - @org.merge!(to_be_merged: @to_be_merged) + @org[:to_be_merged] = @to_be_merged expect(@org.guidance_groups.first.guidances.length).to eql(expected) end it 'merges associated :identifiers' do expected = @org.identifiers.length + @to_be_merged.identifiers.length - @org.merge!(to_be_merged: @to_be_merged) + @org[:to_be_merged] = @to_be_merged expect(@org.identifiers.length).to eql(expected) end it 'merges associated :plans' do expected = @org.plans.length + @to_be_merged.plans.length - @org.merge!(to_be_merged: @to_be_merged) + @org[:to_be_merged] = @to_be_merged expect(@org.plans.length).to eql(expected) end it 'merges associated :templates' do expected = @org.templates.length + @to_be_merged.templates.length - @org.merge!(to_be_merged: @to_be_merged) + @org[:to_be_merged] = @to_be_merged expect(@org.templates.length).to eql(expected) end it 'merges associated :token_permission_types' do expected = (@org.token_permission_types | @to_be_merged.token_permission_types).length - @org.merge!(to_be_merged: @to_be_merged) + @org[:to_be_merged] = @to_be_merged expect(@org.token_permission_types.length).to eql(expected) end it 'merges associated :tracker' do expected = @to_be_merged.tracker.code - @org.merge!(to_be_merged: @to_be_merged) + @org[:to_be_merged] = @to_be_merged expect(@org.tracker.code).to eql(expected) end it 'merges associated :users' do expected = @org.users.length + @to_be_merged.users.length - @org.merge!(to_be_merged: @to_be_merged) + @org[:to_be_merged] = @to_be_merged expect(@org.users.length).to eql(expected) end it 'removes the :to_be_merged Org' do diff --git a/spec/models/template_spec.rb b/spec/models/template_spec.rb index dd598b189a..eebc68fe45 100644 --- a/spec/models/template_spec.rb +++ b/spec/models/template_spec.rb @@ -741,7 +741,7 @@ end it "doesn't set template_id on phases" do - expect(subject.phases.map(&:template_id).compact).to be_empty + expect(subject.phases.filter_map).to be_empty end end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 34cc24cd3f..b2e186392b 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -24,11 +24,9 @@ # directory. Alternatively, in the individual `*_spec.rb` files, manually # require only the support files necessary. # -Dir[Rails.root.join('spec/support/**/*.rb')].sort { |a, b| a <=> b } - .each { |f| require f } +Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } -Dir[Rails.root.join('spec/mixins/*.rb')].sort { |a, b| a <=> b } - .each { |f| require f } +Dir[Rails.root.join('spec/mixins/*.rb')].each { |f| require f } # Checks for pending migrations and applies them before tests are run. # If you are not using ActiveRecord, you can remove this line.s diff --git a/spec/requests/api/v1/plans_controller.rb b/spec/requests/api/v1/plans_controller.rb index 1d44946068..052468d6a7 100644 --- a/spec/requests/api/v1/plans_controller.rb +++ b/spec/requests/api/v1/plans_controller.rb @@ -126,7 +126,7 @@ end it 'set the Template id' do app = ApplicationService.application_name.split('-').first - tmplt = @original[:extension].select { |i| i[app].present? }.first + tmplt = @original[:extension].find { |i| i[app].present? } expected = tmplt[app][:template][:id] expect(@plan.template_id).to eql(expected) end @@ -325,7 +325,7 @@ it 'set the Template id' do app = ApplicationService.application_name.split('-').first - tmplt = @original[:extension].select { |i| i[app].present? }.first + tmplt = @original[:extension].find { |i| i[app].present? } expected = tmplt[app][:template][:id] expect(@plan.template_id).to eql(expected) end diff --git a/spec/services/external_apis/ror_service_spec.rb b/spec/services/external_apis/ror_service_spec.rb index 8b0dc3b1ad..a559686954 100644 --- a/spec/services/external_apis/ror_service_spec.rb +++ b/spec/services/external_apis/ror_service_spec.rb @@ -203,7 +203,7 @@ expect(rslts.length).to eql(0) end it 'properly manages results with only one page' do - items = 4.times.map do + items = Array.new(4).map do { id: Faker::Internet.unique.url, name: Faker::Lorem.word, @@ -222,7 +222,7 @@ expect(rslts.length).to eql(4) end it 'properly manages results with multiple pages' do - items = 7.times.map do + items = Array.new(7).map do { id: Faker::Internet.unique.url, name: Faker::Lorem.word, @@ -244,7 +244,7 @@ expect(rslts.length).to eql(7) end it 'does not go beyond the max_pages' do - items = 12.times.map do + items = Array.new(12).map do { id: Faker::Internet.unique.url, name: Faker::Lorem.word, diff --git a/spec/services/org_selection/search_service_spec.rb b/spec/services/org_selection/search_service_spec.rb index bf8f4b739e..e4039ed70d 100644 --- a/spec/services/org_selection/search_service_spec.rb +++ b/spec/services/org_selection/search_service_spec.rb @@ -181,7 +181,7 @@ it 'handles non-Org models' do rslts = described_class.send(:prepare, search_term: 'Foo', records: @records) - rec = rslts.select { |item| item[:name].include?('Ireland') }.first + rec = rslts.find { |item| item[:name].include?('Ireland') } expect(rec[:name]).to eql('Foo University (Ireland)') end end diff --git a/spec/support/helpers/autocomplete_helper.rb b/spec/support/helpers/autocomplete_helper.rb index 0f1c782ac0..61b26f1dbc 100644 --- a/spec/support/helpers/autocomplete_helper.rb +++ b/spec/support/helpers/autocomplete_helper.rb @@ -8,7 +8,7 @@ def select_an_org(autocomplete_id, org) # The controllers are expecting the org_id though, so lets # populate it - hidden_id = autocomplete_id.gsub('_name', '_id').gsub('#', '') + hidden_id = autocomplete_id.gsub('_name', '_id').delete('#') hash = { id: org.id, name: org.name }.to_json js = "document.getElementById('#{hidden_id}').value = '#{hash}'" @@ -24,7 +24,7 @@ def choose_suggestion(typeahead_id, org) # and the Super Admin merge orgs tab id = id.gsub('org_org_', 'org_').gsub('funder_org_', 'funder_') # Excape any single quotes so it doesn't blow up our JS - hash = { id: org.id, name: org.name.gsub("'", '') } + hash = { id: org.id, name: org.name.delete("'") } # Capybara/Selenium can't interact with a hidden field because the user can't, # so use some JS to set the value page.execute_script "document.getElementById('#{id}').value = '#{hash.to_json}';" diff --git a/spec/support/matchers/has_errors_matcher.rb b/spec/support/matchers/has_errors_matcher.rb index 30ea22fa7d..bc0969bc81 100644 --- a/spec/support/matchers/has_errors_matcher.rb +++ b/spec/support/matchers/has_errors_matcher.rb @@ -4,7 +4,7 @@ RSpec::Matchers.define :have_errors do |_expected| match do - actual.body.match(/Error:/) + actual.body.include?('Error:') end failure_message do |_actual| diff --git a/spec/views/api/v1/plans/_show.json.jbuilder_spec.rb b/spec/views/api/v1/plans/_show.json.jbuilder_spec.rb index 69a49af5b0..199537e909 100644 --- a/spec/views/api/v1/plans/_show.json.jbuilder_spec.rb +++ b/spec/views/api/v1/plans/_show.json.jbuilder_spec.rb @@ -77,7 +77,7 @@ expect(@json[:extension].length).to eql(1) end it 'includes the :template in :extension' do - @section = @json[:extension].select { |hash| hash.keys.first == 'dmproadmap' }.first + @section = @json[:extension].find { |hash| hash.keys.first == 'dmproadmap' } expect(@section[:dmproadmap].present?).to eql(true) tmplt = @plan.template expect(@section[:dmproadmap][:template][:id]).to eql(tmplt.id) From f48d01bc73622cb9053e087f63f189210aec0717 Mon Sep 17 00:00:00 2001 From: briri Date: Wed, 1 Feb 2023 11:00:59 -0800 Subject: [PATCH 10/77] fix for rubocop in ci for frozen mutables --- app/controllers/concerns/paginable.rb | 2 +- app/models/language.rb | 2 +- app/models/settings/template.rb | 4 ++-- lib/cleanup/deprecators/get_deprecator.rb | 2 +- lib/cleanup/deprecators/predicate_deprecator.rb | 2 +- lib/cleanup/deprecators/set_deprecator.rb | 2 +- spec/mixins/versionable_model.rb | 2 +- spec/rails_helper.rb | 4 ++-- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/controllers/concerns/paginable.rb b/app/controllers/concerns/paginable.rb index aa9810dfb5..ab3b0b8cee 100644 --- a/app/controllers/concerns/paginable.rb +++ b/app/controllers/concerns/paginable.rb @@ -8,7 +8,7 @@ module Paginable ## # Regex to validate sort_field param is safe - SORT_COLUMN_FORMAT = /[\w_]+\.[\w_]+$/ + SORT_COLUMN_FORMAT = /[\w_]+\.[\w_]+$/.freeze PAGINATION_QUERY_PARAMS = %i[page sort_field sort_direction search controller action].freeze diff --git a/app/models/language.rb b/app/models/language.rb index 3755e29bac..d08a701911 100644 --- a/app/models/language.rb +++ b/app/models/language.rb @@ -19,7 +19,7 @@ class Language < ApplicationRecord ABBREVIATION_MAXIMUM_LENGTH = 5 - ABBREVIATION_FORMAT = /\A[a-z]{2}(-[A-Z]{2})?\Z/ + ABBREVIATION_FORMAT = /\A[a-z]{2}(-[A-Z]{2})?\Z/.freeze NAME_MAXIMUM_LENGTH = 20 diff --git a/app/models/settings/template.rb b/app/models/settings/template.rb index 7a00ec970f..dbffe03c23 100644 --- a/app/models/settings/template.rb +++ b/app/models/settings/template.rb @@ -21,8 +21,8 @@ class Template < RailsSettings::SettingObject 'Roboto, Arial, Sans-Serif' ].freeze - VALID_FONT_SIZE_RANGE = (8..14) - VALID_MARGIN_RANGE = (5..25) + VALID_FONT_SIZE_RANGE = (8..14).freeze + VALID_MARGIN_RANGE = (5..25).freeze VALID_ADMIN_FIELDS = %w[project_name project_identifier grant_title principal_investigator project_data_contact diff --git a/lib/cleanup/deprecators/get_deprecator.rb b/lib/cleanup/deprecators/get_deprecator.rb index f59fd56943..673ce28590 100644 --- a/lib/cleanup/deprecators/get_deprecator.rb +++ b/lib/cleanup/deprecators/get_deprecator.rb @@ -13,7 +13,7 @@ class GetDeprecator # Default message to display to developer when deprecated method called. MESSAGE = '%{deprecated_method} is deprecated. ' \ 'Instead, you should use: %{new_method}. ' \ - "Read #{__FILE__} for more information.".freeze + "Read #{__FILE__} for more information." # Message printed to STDOUT when a deprecated method is called. def deprecation_warning(deprecated_method, _message, _backtrace = nil) diff --git a/lib/cleanup/deprecators/predicate_deprecator.rb b/lib/cleanup/deprecators/predicate_deprecator.rb index 8191363bec..ee774fc559 100644 --- a/lib/cleanup/deprecators/predicate_deprecator.rb +++ b/lib/cleanup/deprecators/predicate_deprecator.rb @@ -12,7 +12,7 @@ class PredicateDeprecator # Default message to display to developer when deprecated method called. MESSAGE = '%{deprecated_method} is deprecated. ' \ 'Instead, you should use: %{new_method}. ' \ - "Read #{__FILE__} for more information.".freeze + "Read #{__FILE__} for more information." # Message printed to STDOUT when a deprecated method is called. def deprecation_warning(deprecated_method, _message, _backtrace = nil) diff --git a/lib/cleanup/deprecators/set_deprecator.rb b/lib/cleanup/deprecators/set_deprecator.rb index 33349e9e29..28554e311e 100644 --- a/lib/cleanup/deprecators/set_deprecator.rb +++ b/lib/cleanup/deprecators/set_deprecator.rb @@ -13,7 +13,7 @@ class SetDeprecator # Default message to display to developer when deprecated method called. MESSAGE = '%{deprecated_method} is deprecated. ' \ 'Instead, you should use: %{new_method}. ' \ - "Read #{__FILE__} for more information.".freeze + "Read #{__FILE__} for more information." # Message printed to STDOUT when a deprecated method is called. def deprecation_warning(deprecated_method, _message, _backtrace = nil) diff --git a/spec/mixins/versionable_model.rb b/spec/mixins/versionable_model.rb index aa6ed1c9c1..66c6ce883f 100644 --- a/spec/mixins/versionable_model.rb +++ b/spec/mixins/versionable_model.rb @@ -2,7 +2,7 @@ require 'rails_helper' -UUID_REGEX = /\A[\w\d]{8}(-[\w\d]{4}){3}-[\w\d]{12}\Z/i +UUID_REGEX = /\A[\w\d]{8}(-[\w\d]{4}){3}-[\w\d]{12}\Z/i.freeze shared_examples_for 'VersionableModel' do context 'attributes' do diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index b2e186392b..a1e9af9e67 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -24,9 +24,9 @@ # directory. Alternatively, in the individual `*_spec.rb` files, manually # require only the support files necessary. # -Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } +Dir[Rails.root.join('spec/support/**/*.rb')].sort.each { |f| require f } -Dir[Rails.root.join('spec/mixins/*.rb')].each { |f| require f } +Dir[Rails.root.join('spec/mixins/*.rb')].sort.each { |f| require f } # Checks for pending migrations and applies them before tests are run. # If you are not using ActiveRecord, you can remove this line.s From b99fb38ff992e72216e30c4d1199722d5281ba12 Mon Sep 17 00:00:00 2001 From: briri Date: Wed, 1 Feb 2023 11:14:01 -0800 Subject: [PATCH 11/77] updates to specs to work with changed rubocop-performance criteria --- app/validators/email_validator.rb | 2 +- app/validators/url_validator.rb | 2 +- spec/models/guidance_group_spec.rb | 6 ++++-- spec/models/org_spec.rb | 22 ++++++++++++---------- spec/models/template_spec.rb | 2 +- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/app/validators/email_validator.rb b/app/validators/email_validator.rb index ce69124dbb..bf7242740a 100644 --- a/app/validators/email_validator.rb +++ b/app/validators/email_validator.rb @@ -3,7 +3,7 @@ # Validation for email format class EmailValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) - return if value.match?(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i) + return if value&.match?(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i) record.errors.add(attribute, options.fetch(:message, 'is not a valid email address')) end diff --git a/app/validators/url_validator.rb b/app/validators/url_validator.rb index 5581bf6b7f..2ba9ebb561 100644 --- a/app/validators/url_validator.rb +++ b/app/validators/url_validator.rb @@ -4,7 +4,7 @@ class UrlValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) reg = %r{https?://[-a-zA-Z0-9@:%_+.~#?&/=]{2,256}\.[a-z]{2,4}\b(/[-a-zA-Z0-9@:%_+.~#?&/=]*)?} - return unless value.match?(reg) + return unless value&.match?(reg) record.errors.add(attribute, options.fetch(:message, 'is not a valid URL')) end diff --git a/spec/models/guidance_group_spec.rb b/spec/models/guidance_group_spec.rb index 429243f195..1f5e523440 100644 --- a/spec/models/guidance_group_spec.rb +++ b/spec/models/guidance_group_spec.rb @@ -174,6 +174,7 @@ end end + # rubocop:disable Performance/RedundantMerge context ':merge!(to_be_merged:)' do before(:each) do org = create(:org) @@ -197,12 +198,12 @@ end it 'merges associated :plans' do expected = @guidance_group.plans.length + @to_be_merged.plans.length - @guidance_group[:to_be_merged] = @to_be_merged + @guidance_group.merge!(to_be_merged: @to_be_merged) expect(@guidance_group.plans.length).to eql(expected) end it 'merges associated :guidances' do expected = @guidance_group.guidances.length + @to_be_merged.guidances.length - @guidance_group[:to_be_merged] = @to_be_merged + @guidance_group.merge!(to_be_merged: @to_be_merged) expect(@guidance_group.guidances.length).to eql(expected) end it 'removes the :to_be_merged GuidanceGroup' do @@ -212,5 +213,6 @@ expect(GuidanceGroup.find_by(id: original_id).present?).to eql(false) end end + # rubocop:enable Performance/RedundantMerge end end diff --git a/spec/models/org_spec.rb b/spec/models/org_spec.rb index 06d0f36297..7299c18e2a 100644 --- a/spec/models/org_spec.rb +++ b/spec/models/org_spec.rb @@ -457,6 +457,7 @@ end end + # rubocop:disable Performance/RedundantMerge context ':merge!(to_be_merged:)' do before(:each) do @scheme = create(:identifier_scheme) @@ -498,53 +499,53 @@ end it 'merges associated :annotations' do expected = @org.annotations.length + @to_be_merged.annotations.length - @org[:to_be_merged] = @to_be_merged + @org.merge!(to_be_merged: @to_be_merged) expect(@org.annotations.length).to eql(expected) end it 'merges associated :departments' do expected = @org.departments.length + @to_be_merged.departments.length - @org[:to_be_merged] = @to_be_merged + @org.merge!(to_be_merged: @to_be_merged) expect(@org.departments.length).to eql(expected) end it 'merges associated :funded_plans' do expected = @org.funded_plans.length + @to_be_merged.funded_plans.length - @org[:to_be_merged] = @to_be_merged + @org.merge!(to_be_merged: @to_be_merged) expect(@org.funded_plans.length).to eql(expected) end it 'merges associated :guidances' do expected = (@org.guidance_groups.first&.guidances&.length || 0) + @to_be_merged.guidance_groups.first.guidances.length - @org[:to_be_merged] = @to_be_merged + @org.merge!(to_be_merged: @to_be_merged) expect(@org.guidance_groups.first.guidances.length).to eql(expected) end it 'merges associated :identifiers' do expected = @org.identifiers.length + @to_be_merged.identifiers.length - @org[:to_be_merged] = @to_be_merged + @org.merge!(to_be_merged: @to_be_merged) expect(@org.identifiers.length).to eql(expected) end it 'merges associated :plans' do expected = @org.plans.length + @to_be_merged.plans.length - @org[:to_be_merged] = @to_be_merged + @org.merge!(to_be_merged: @to_be_merged) expect(@org.plans.length).to eql(expected) end it 'merges associated :templates' do expected = @org.templates.length + @to_be_merged.templates.length - @org[:to_be_merged] = @to_be_merged + @org.merge!(to_be_merged: @to_be_merged) expect(@org.templates.length).to eql(expected) end it 'merges associated :token_permission_types' do expected = (@org.token_permission_types | @to_be_merged.token_permission_types).length - @org[:to_be_merged] = @to_be_merged + @org.merge!(to_be_merged: @to_be_merged) expect(@org.token_permission_types.length).to eql(expected) end it 'merges associated :tracker' do expected = @to_be_merged.tracker.code - @org[:to_be_merged] = @to_be_merged + @org.merge!(to_be_merged: @to_be_merged) expect(@org.tracker.code).to eql(expected) end it 'merges associated :users' do expected = @org.users.length + @to_be_merged.users.length - @org[:to_be_merged] = @to_be_merged + @org.merge!(to_be_merged: @to_be_merged) expect(@org.users.length).to eql(expected) end it 'removes the :to_be_merged Org' do @@ -553,6 +554,7 @@ expect(Org.find_by(id: original_id).present?).to eql(false) end end + # rubocop:enable Performance/RedundantMerge context 'private methods' do describe ':merge_attributes!(to_be_merged:)' do diff --git a/spec/models/template_spec.rb b/spec/models/template_spec.rb index eebc68fe45..f25c3a28b3 100644 --- a/spec/models/template_spec.rb +++ b/spec/models/template_spec.rb @@ -741,7 +741,7 @@ end it "doesn't set template_id on phases" do - expect(subject.phases.filter_map).to be_empty + expect(subject.phases.filter_map(&:template_id)).to be_empty end end end From 4a503972f9f21fb9996110ddc3a206e20baa28f4 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Fri, 17 Feb 2023 11:44:04 -0500 Subject: [PATCH 12/77] disable debugger check in rubocop --- .rubocop.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index 97624066f7..6545b2b98e 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -104,6 +104,10 @@ Lint/UnexpectedBlockArity: # new in 1.5 Enabled: true Lint/UnmodifiedReduceAccumulator: # new in 1.1 Enabled: true +Lint/Debugger: # new in 1.45.0 +Description: 'Check for debugger calls.' +Enabled: false + # ----------- # - METRICS - From f423998653bf7123f42b488b5a9ae0831059f8d0 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Fri, 17 Feb 2023 11:54:53 -0500 Subject: [PATCH 13/77] fix rubocop.yml syntax and update rubocop to 1.45.1 --- .rubocop.yml | 4 ++-- Gemfile.lock | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 6545b2b98e..7ab81a9f95 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -105,8 +105,8 @@ Lint/UnexpectedBlockArity: # new in 1.5 Lint/UnmodifiedReduceAccumulator: # new in 1.1 Enabled: true Lint/Debugger: # new in 1.45.0 -Description: 'Check for debugger calls.' -Enabled: false + Description: 'Check for debugger calls.' + Enabled: false # ----------- diff --git a/Gemfile.lock b/Gemfile.lock index 3a254d4c6f..0a7b7e6d55 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -330,7 +330,7 @@ GEM options (2.3.2) orm_adapter (0.5.0) parallel (1.22.1) - parser (3.2.0.0) + parser (3.2.1.0) ast (~> 2.4.1) pg (1.4.5) prime (0.1.2) @@ -397,7 +397,7 @@ GEM rchardet (1.8.0) recaptcha (5.12.3) json - regexp_parser (2.6.2) + regexp_parser (2.7.0) responders (3.0.1) actionpack (>= 5.0) railties (>= 5.0) @@ -422,7 +422,7 @@ GEM rspec-mocks (~> 3.11) rspec-support (~> 3.11) rspec-support (3.12.0) - rubocop (1.44.1) + rubocop (1.45.1) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) @@ -432,8 +432,8 @@ GEM rubocop-ast (>= 1.24.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.24.1) - parser (>= 3.1.1.0) + rubocop-ast (1.26.0) + parser (>= 3.2.1.0) rubocop-i18n (3.0.0) rubocop (~> 1.0) ruby-progressbar (1.11.0) @@ -623,4 +623,4 @@ RUBY VERSION ruby 2.7.6p219 BUNDLED WITH - 2.4.3 + 2.3.25 From 6567485ab5aaa5060b93d7968a295cd361a88452 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Tue, 21 Feb 2023 11:54:25 -0500 Subject: [PATCH 14/77] add exclude to rubocop.yml so that debugger will run but except lib tasks --- .rubocop.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.rubocop.yml b/.rubocop.yml index 7ab81a9f95..7826ae749d 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -106,7 +106,9 @@ Lint/UnmodifiedReduceAccumulator: # new in 1.1 Enabled: true Lint/Debugger: # new in 1.45.0 Description: 'Check for debugger calls.' - Enabled: false + Enabled: true + Exclude: + - 'lib/tasks/**/*' # ----------- From b8828cec9b6765a53dc3cab746b07c66eba7bddd Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Tue, 21 Feb 2023 12:22:44 -0500 Subject: [PATCH 15/77] add node 16 version specification to github actions --- .github/workflows/eslint.yml | 2 ++ .github/workflows/mysql.yml | 1 + .github/workflows/postgres.yml | 1 + CHANGELOG.md | 3 +++ 4 files changed, 7 insertions(+) diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index ac13cdc40a..ac8e1797d2 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -15,6 +15,8 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 + # Run yarn install for JS dependencies - name: 'Yarn Install' diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index 722690cc6c..3305b14109 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -26,6 +26,7 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 # Copy all of the example configs over - name: 'Setup the application' diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 1a866315b3..166951069e 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -42,6 +42,7 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 # Install the Postgres developer packages - name: 'Install Postgresql Packages' diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c5a065ac8..a4acca134f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Added CHANGELOG.md and Danger Github Action [#3257](https://github.com/DMPRoadmap/roadmap/issues/3257) - Added validation with custom error message in research_output.rb to ensure a user does not enter a very large value as 'Anticipated file size'. [#3161](https://github.com/DMPRoadmap/roadmap/issues/3161) - Added popover for org profile page and added explanation for public plan + ### Fixed - Froze mail gem version [#3254](https://github.com/DMPRoadmap/roadmap/issues/3254) @@ -19,3 +20,5 @@ - Added scss files to EditorConfig - Change csv file name for statistics from 'Completed' to 'Created' +- Added lib tasks as exclusive from debugger rubocop check after rubocop upgrading to >= v1.45 [#3291](https://github.com/DMPRoadmap/roadmap/issues/3291) +- Added node version specification (v16) to eslint, PostgreSQL and MySQL github action to eliminate `digital routine enveloped` error [#319](https://github.com/portagenetwork/roadmap/issues/319) From 706f0e6649c815fb43cce43b18b857cc5079dd33 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Tue, 21 Feb 2023 13:32:07 -0500 Subject: [PATCH 16/77] update Gemfile --- Gemfile.lock | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 575e507936..993eeec238 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -268,6 +268,8 @@ GEM mysql2 (0.5.4) nenv (0.3.0) nio4r (2.5.8) + nokogiri (1.13.9-arm64-darwin) + racc (~> 1.4) nokogiri (1.13.9-x86_64-linux) racc (~> 1.4) notiffany (0.1.3) @@ -498,6 +500,7 @@ GEM zeitwerk (2.6.1) PLATFORMS + arm64-darwin-22 x86_64-linux DEPENDENCIES @@ -580,4 +583,4 @@ RUBY VERSION ruby 2.7.6p219 BUNDLED WITH - 2.3.15 + 2.3.25 From ed12c2ecbbf45b1c102de26492cc02367688818e Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Tue, 21 Feb 2023 14:46:42 -0500 Subject: [PATCH 17/77] merge development --- Gemfile.lock | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 575e507936..993eeec238 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -268,6 +268,8 @@ GEM mysql2 (0.5.4) nenv (0.3.0) nio4r (2.5.8) + nokogiri (1.13.9-arm64-darwin) + racc (~> 1.4) nokogiri (1.13.9-x86_64-linux) racc (~> 1.4) notiffany (0.1.3) @@ -498,6 +500,7 @@ GEM zeitwerk (2.6.1) PLATFORMS + arm64-darwin-22 x86_64-linux DEPENDENCIES @@ -580,4 +583,4 @@ RUBY VERSION ruby 2.7.6p219 BUNDLED WITH - 2.3.15 + 2.3.25 From 5272dc5b85d1e0b31409a2b2d02d13b77d1d66c7 Mon Sep 17 00:00:00 2001 From: briri Date: Tue, 21 Feb 2023 13:29:15 -0800 Subject: [PATCH 18/77] update to allow the research_outputs.byte_size field to be blank --- app/models/research_output.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/research_output.rb b/app/models/research_output.rb index 7059cfb38e..4165f0b7ea 100644 --- a/app/models/research_output.rb +++ b/app/models/research_output.rb @@ -65,6 +65,7 @@ class ResearchOutput < ApplicationRecord message: UNIQUENESS_MESSAGE } validates_numericality_of :byte_size, greater_than: 0, less_than_or_equal_to: 2**63, + allow_blank: true, message: '(Anticipated file size) is too large. Please enter a smaller value.' # Ensure presence of the :output_type_description if the user selected 'other' validates_presence_of :output_type_description, if: -> { other? }, message: PRESENCE_MESSAGE From 8568644428fadc710a978129a1fc9d3ca5e2351e Mon Sep 17 00:00:00 2001 From: briri Date: Tue, 21 Feb 2023 13:47:39 -0800 Subject: [PATCH 19/77] updated changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c5a065ac8..c886a58298 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,10 @@ - Added CHANGELOG.md and Danger Github Action [#3257](https://github.com/DMPRoadmap/roadmap/issues/3257) - Added validation with custom error message in research_output.rb to ensure a user does not enter a very large value as 'Anticipated file size'. [#3161](https://github.com/DMPRoadmap/roadmap/issues/3161) - Added popover for org profile page and added explanation for public plan + ### Fixed +- Fixed an issue that was preventing uses from leaving the research output byte_size field blank - Froze mail gem version [#3254](https://github.com/DMPRoadmap/roadmap/issues/3254) - Updated the CSV export so that it now includes research outputs - Updated sans-serif font used in PDF downloads to Roboto since Google API no longer offers Helvetica From 8b179e2e807600891b2823c079283e5ff850f27d Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Fri, 24 Feb 2023 15:01:05 -0500 Subject: [PATCH 20/77] use --openssl-legacy-provider instead of set node 16 --- .github/workflows/eslint.yml | 1 - .github/workflows/mysql.yml | 2 +- .github/workflows/postgres.yml | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index ac8e1797d2..819b26f86b 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -15,7 +15,6 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' - node-version: 16 # Run yarn install for JS dependencies diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index 3305b14109..d8607f6220 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' - node-version: 16 + - run: echo 'NODE_OPTIONS="--openssl-legacy-provider"' >> $GITHUB_ENV # Copy all of the example configs over - name: 'Setup the application' diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 166951069e..81a8e08f7b 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -42,7 +42,7 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' - node-version: 16 + - run: echo 'NODE_OPTIONS="--openssl-legacy-provider"' >> $GITHUB_ENV # Install the Postgres developer packages - name: 'Install Postgresql Packages' From 3d82147e48224f70da66491d05b4d5dc541b810c Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Fri, 24 Feb 2023 15:20:25 -0500 Subject: [PATCH 21/77] test node_options run in github action --- .github/workflows/postgres.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 81a8e08f7b..65f7293fda 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -42,7 +42,9 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' - - run: echo 'NODE_OPTIONS="--openssl-legacy-provider"' >> $GITHUB_ENV + - run: node --version + env: + NODE_OPTIONS: "--openssl-legacy-provider" # Install the Postgres developer packages - name: 'Install Postgresql Packages' From e07ae8cd5228ca0729923686430afb3507b409bd Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 27 Feb 2023 11:36:04 -0500 Subject: [PATCH 22/77] test if loop for node-version --- .github/workflows/postgres.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 65f7293fda..566b952ea4 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -42,9 +42,9 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' - - run: node --version - env: - NODE_OPTIONS: "--openssl-legacy-provider" + - name: Override NODE options for the most recent version + if: matrix.node-version >= '17' + run: echo "NODE_OPTIONS=--openssl-legacy-provider" >> $GITHUB_ENV # Install the Postgres developer packages - name: 'Install Postgresql Packages' From 17770df940ea9270e8e79ebfe0ab9ae2a133a3a4 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 27 Feb 2023 11:43:44 -0500 Subject: [PATCH 23/77] test node_options result --- .github/workflows/eslint.yml | 3 +++ .github/workflows/postgres.yml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index 819b26f86b..8ff3025731 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -15,6 +15,9 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' + - run: node --version + env: + NODE_OPTIONS: "--openssl-legacy-provider" # Run yarn install for JS dependencies diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 566b952ea4..852586ad12 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -43,7 +43,7 @@ jobs: with: cache: 'yarn' - name: Override NODE options for the most recent version - if: matrix.node-version >= '17' + if: matrix.node-version == '18' run: echo "NODE_OPTIONS=--openssl-legacy-provider" >> $GITHUB_ENV # Install the Postgres developer packages From 5e8c875580e92175d18306d72b05cfd33bf6086c Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 27 Feb 2023 11:54:46 -0500 Subject: [PATCH 24/77] test post-action --- .github/workflows/mysql.yml | 4 +++- .github/workflows/postgres.yml | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index d8607f6220..426e3753e2 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -26,7 +26,9 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' - - run: echo 'NODE_OPTIONS="--openssl-legacy-provider"' >> $GITHUB_ENV + - run: node --version + env: + NODE_OPTIONS: "--openssl-legacy-provider" # Copy all of the example configs over - name: 'Setup the application' diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 852586ad12..2b72725ce8 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -42,9 +42,9 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' - - name: Override NODE options for the most recent version - if: matrix.node-version == '18' - run: echo "NODE_OPTIONS=--openssl-legacy-provider" >> $GITHUB_ENV + - run: node --version + env: + NODE_OPTIONS: "--openssl-legacy-provider" # Install the Postgres developer packages - name: 'Install Postgresql Packages' From 26470a8c4877485e8bf1ab8dcd7b1f2c9114bc43 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 27 Feb 2023 11:59:51 -0500 Subject: [PATCH 25/77] adjust env as the first step --- .github/workflows/mysql.yml | 4 +--- .github/workflows/postgres.yml | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index 426e3753e2..d83664eb72 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -23,12 +23,10 @@ jobs: bundler-cache: true # Install Node + - run: echo 'NODE_OPTIONS="--openssl-legacy-provider"' >> $GITHUB_ENV - uses: actions/setup-node@v2 with: cache: 'yarn' - - run: node --version - env: - NODE_OPTIONS: "--openssl-legacy-provider" # Copy all of the example configs over - name: 'Setup the application' diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 2b72725ce8..810fd5a395 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -39,6 +39,7 @@ jobs: bundler-cache: true # Install Node + - run: echo 'NODE_OPTIONS="--openssl-legacy-provider"' >> $GITHUB_ENV - uses: actions/setup-node@v2 with: cache: 'yarn' From a56787abe94678c892a46ae0f0658f163299d08a Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 27 Feb 2023 12:00:21 -0500 Subject: [PATCH 26/77] adjust env before setup-node action --- .github/workflows/postgres.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 810fd5a395..aa99e1e1c7 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -43,9 +43,6 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' - - run: node --version - env: - NODE_OPTIONS: "--openssl-legacy-provider" # Install the Postgres developer packages - name: 'Install Postgresql Packages' From e149fd4b12dd28d3a8486670bb9675771476f9f8 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 27 Feb 2023 12:06:14 -0500 Subject: [PATCH 27/77] change back to use node 16 due to NODE_OPTION issue --- .github/workflows/eslint.yml | 5 +---- .github/workflows/mysql.yml | 4 ++-- .github/workflows/postgres.yml | 7 +++++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index 8ff3025731..b43a8776f0 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -15,11 +15,8 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' - - run: node --version - env: - NODE_OPTIONS: "--openssl-legacy-provider" + node-version: 16 - # Run yarn install for JS dependencies - name: 'Yarn Install' run: yarn install diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index d83664eb72..9f3bd6f90b 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -21,12 +21,12 @@ jobs: with: ruby-version: 2.7.6 bundler-cache: true - + # Install Node - - run: echo 'NODE_OPTIONS="--openssl-legacy-provider"' >> $GITHUB_ENV - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 # Copy all of the example configs over - name: 'Setup the application' diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index aa99e1e1c7..08aa5e1f7e 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -37,12 +37,15 @@ jobs: with: ruby-version: 2.7.6 bundler-cache: true - + + ## - run: echo 'NODE_OPTIONS="--openssl-legacy-provider"' >> $GITHUB_ENV + ## /home/runner/runners/2.301.1/externals/node12/bin/node: --openssl-legacy-provider is not allowed in NODE_OPTIONS + # Install Node - - run: echo 'NODE_OPTIONS="--openssl-legacy-provider"' >> $GITHUB_ENV - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 # Install the Postgres developer packages - name: 'Install Postgresql Packages' From 35efe04c2b58157ef6fea845223cb985e24d0d76 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 27 Feb 2023 14:05:10 -0500 Subject: [PATCH 28/77] update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c5a065ac8..7e55862ab6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ - Added CHANGELOG.md and Danger Github Action [#3257](https://github.com/DMPRoadmap/roadmap/issues/3257) - Added validation with custom error message in research_output.rb to ensure a user does not enter a very large value as 'Anticipated file size'. [#3161](https://github.com/DMPRoadmap/roadmap/issues/3161) - Added popover for org profile page and added explanation for public plan +- Added enum to the funding status attribute of plan model to make the dropdown of 'funding status' being translatable + ### Fixed - Froze mail gem version [#3254](https://github.com/DMPRoadmap/roadmap/issues/3254) From 28fe16fdabca82431422e482f2e6ef4d1499ef0b Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 27 Feb 2023 14:12:52 -0500 Subject: [PATCH 29/77] add node16 version to Github actions to get tests pass --- .github/workflows/eslint.yml | 1 + .github/workflows/mysql.yml | 1 + .github/workflows/postgres.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index ac13cdc40a..1910be2d94 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -15,6 +15,7 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 # Run yarn install for JS dependencies - name: 'Yarn Install' diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index 722690cc6c..3305b14109 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -26,6 +26,7 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 # Copy all of the example configs over - name: 'Setup the application' diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 1a866315b3..166951069e 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -42,6 +42,7 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 # Install the Postgres developer packages - name: 'Install Postgresql Packages' From 8ef22ee749b40f30de2bb5a926cf049028882423 Mon Sep 17 00:00:00 2001 From: pengyin-shan Date: Mon, 27 Feb 2023 15:09:40 -0500 Subject: [PATCH 30/77] Update changelog and github actions to use node 16 only --- .github/workflows/eslint.yml | 1 + .github/workflows/mysql.yml | 1 + .github/workflows/postgres.yml | 1 + CHANGELOG.md | 2 ++ 4 files changed, 5 insertions(+) diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index ac13cdc40a..1910be2d94 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -15,6 +15,7 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 # Run yarn install for JS dependencies - name: 'Yarn Install' diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index 722690cc6c..3305b14109 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -26,6 +26,7 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 # Copy all of the example configs over - name: 'Setup the application' diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 1a866315b3..166951069e 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -42,6 +42,7 @@ jobs: - uses: actions/setup-node@v2 with: cache: 'yarn' + node-version: 16 # Install the Postgres developer packages - name: 'Install Postgresql Packages' diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c5a065ac8..7f30d56577 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ - Added CHANGELOG.md and Danger Github Action [#3257](https://github.com/DMPRoadmap/roadmap/issues/3257) - Added validation with custom error message in research_output.rb to ensure a user does not enter a very large value as 'Anticipated file size'. [#3161](https://github.com/DMPRoadmap/roadmap/issues/3161) - Added popover for org profile page and added explanation for public plan +- Allow users to download both single phase and in PDF, TEXT and DOCX format. CSV file can only download single phase instead of all phases. + ### Fixed - Froze mail gem version [#3254](https://github.com/DMPRoadmap/roadmap/issues/3254) From ee7b3f0a6370f4c7f0f74078ea1a8672509a4ca2 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 08:59:13 -0700 Subject: [PATCH 31/77] patched issue that was causing template visibility to get set to organisationally_visible when the admin saved --- CHANGELOG.md | 1 + app/views/org_admin/templates/_form.html.erb | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c5a065ac8..998b282ace 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Added popover for org profile page and added explanation for public plan ### Fixed +- Patched issue that was causing template visibility to default to organizationally visible after saving - Froze mail gem version [#3254](https://github.com/DMPRoadmap/roadmap/issues/3254) - Updated the CSV export so that it now includes research outputs - Updated sans-serif font used in PDF downloads to Roboto since Google API no longer offers Helvetica diff --git a/app/views/org_admin/templates/_form.html.erb b/app/views/org_admin/templates/_form.html.erb index 29c17a05a1..0a6ec2db62 100644 --- a/app/views/org_admin/templates/_form.html.erb +++ b/app/views/org_admin/templates/_form.html.erb @@ -26,6 +26,12 @@ <% end %>
+<% else %> + <% + visibility = f.object.visibility + visibility = f.object.funder? ? 'publicly_visible' : 'organisationally_visible' if visibility.nil? + %> + <%= f.hidden_field :visibility, value: visibility %> <% end %>
From 866e480c83eed1a17646115640a6d0e0218eb310 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 09:16:56 -0700 Subject: [PATCH 32/77] bump node version in github action to try and fix build issue --- .github/workflows/mysql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index 722690cc6c..a880d1e16c 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -23,7 +23,7 @@ jobs: bundler-cache: true # Install Node - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: cache: 'yarn' From 8775bab62c8d9d0056970a4ee7d5e89dc53fdeaa Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 09:20:27 -0700 Subject: [PATCH 33/77] bump node version in github action to try and fix build issue --- .github/workflows/mysql.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index a880d1e16c..df82b9d87f 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -25,6 +25,7 @@ jobs: # Install Node - uses: actions/setup-node@v3 with: + node-version: '19.6.0' cache: 'yarn' # Copy all of the example configs over From abba4da3e14cec9a44641c83117f5f9d632279e4 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 09:27:39 -0700 Subject: [PATCH 34/77] bump node version in github action checkout version --- .github/workflows/mysql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index df82b9d87f..81a7fc7dfe 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -14,7 +14,7 @@ jobs: steps: # Checkout the repo - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # Install Ruby and run bundler - uses: ruby/setup-ruby@v1 From 12af702493460de9eef00e7cd7604a0e2015fd56 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 09:33:21 -0700 Subject: [PATCH 35/77] add node options to github action to use legacy openssl version --- .github/workflows/mysql.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index 81a7fc7dfe..3d6a80449f 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -11,6 +11,8 @@ jobs: DB_ADAPTER: mysql2 MYSQL_PWD: root RAILS_ENV: test + # Added to handle issue compiling assets that was causing OpenSSL to throw: ERR_OSSL_EVP_UNSUPPORTED + NODE_OPTIONS: --openssl-legacy-provider steps: # Checkout the repo From 21d6267e4c0bf3723f65554b80d0f053d7f9a658 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 09:34:44 -0700 Subject: [PATCH 36/77] revert to node 16.6 --- .github/workflows/mysql.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml index 3d6a80449f..db04917d34 100644 --- a/.github/workflows/mysql.yml +++ b/.github/workflows/mysql.yml @@ -11,8 +11,6 @@ jobs: DB_ADAPTER: mysql2 MYSQL_PWD: root RAILS_ENV: test - # Added to handle issue compiling assets that was causing OpenSSL to throw: ERR_OSSL_EVP_UNSUPPORTED - NODE_OPTIONS: --openssl-legacy-provider steps: # Checkout the repo @@ -27,7 +25,7 @@ jobs: # Install Node - uses: actions/setup-node@v3 with: - node-version: '19.6.0' + node-version: '16.6.0' cache: 'yarn' # Copy all of the example configs over From 160c0f8004e3ef8a0cce48cc4d95a94f14fcfc39 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 09:39:31 -0700 Subject: [PATCH 37/77] added github action node fix to postgres action --- .github/workflows/postgres.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/postgres.yml b/.github/workflows/postgres.yml index 1a866315b3..6c04c3fc3e 100644 --- a/.github/workflows/postgres.yml +++ b/.github/workflows/postgres.yml @@ -30,7 +30,7 @@ jobs: steps: # Checkout the repo - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # Install Ruby and run bundler - uses: ruby/setup-ruby@v1 @@ -39,8 +39,9 @@ jobs: bundler-cache: true # Install Node - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: + node-version: '16.6.0' cache: 'yarn' # Install the Postgres developer packages From 58a16776fa475ceca5eb827df0193b48140ca8fc Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 10:43:27 -0700 Subject: [PATCH 38/77] really wish it would stop losing the linux-x86 platform :/ --- Gemfile.lock | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Gemfile.lock b/Gemfile.lock index 179e43917c..c37f7faafc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -297,6 +297,8 @@ GEM no_proxy_fix (0.1.2) nokogiri (1.14.2-arm64-darwin) racc (~> 1.4) + nokogiri (1.14.2-x86_64-linux) + racc (~> 1.4) notiffany (0.1.3) nenv (~> 0.1) shellany (~> 0.0) @@ -522,6 +524,7 @@ GEM PLATFORMS arm64-darwin-21 + x86_64-linux DEPENDENCIES activerecord_json_validator From c35d421c2b5e95582cdd084210464836f9d6ea74 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 10:49:08 -0700 Subject: [PATCH 39/77] fixed performance issue --- app/models/plan.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/plan.rb b/app/models/plan.rb index e71a1b232e..4da6e0e9d4 100644 --- a/app/models/plan.rb +++ b/app/models/plan.rb @@ -442,7 +442,7 @@ def latest_update # Returns nil def owner r = roles.select { |rr| rr.active && rr.administrator } - .min { |a, b| a.created_at <=> b.created_at } + .min_by(&:created_at) r&.user end From c50b3ef1264fb1a873a7f3dd5a52d062b7e921ba Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 11:14:56 -0700 Subject: [PATCH 40/77] readded x86_64 to the bundle --- Gemfile.lock | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Gemfile.lock b/Gemfile.lock index 179e43917c..c37f7faafc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -297,6 +297,8 @@ GEM no_proxy_fix (0.1.2) nokogiri (1.14.2-arm64-darwin) racc (~> 1.4) + nokogiri (1.14.2-x86_64-linux) + racc (~> 1.4) notiffany (0.1.3) nenv (~> 0.1) shellany (~> 0.0) @@ -522,6 +524,7 @@ GEM PLATFORMS arm64-darwin-21 + x86_64-linux DEPENDENCIES activerecord_json_validator From f20aa6182b53275e0de2aa82ee08515e02c969a6 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 11:36:41 -0700 Subject: [PATCH 41/77] added helper rake task for updating dependencies that always adds x86_64 platform to the bundle --- lib/tasks/utils/update.rake | 23 +++ yarn.lock | 271 +++++++++++++++++++----------------- 2 files changed, 165 insertions(+), 129 deletions(-) create mode 100644 lib/tasks/utils/update.rake diff --git a/lib/tasks/utils/update.rake b/lib/tasks/utils/update.rake new file mode 100644 index 0000000000..0ffe56ec39 --- /dev/null +++ b/lib/tasks/utils/update.rake @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +namespace :update do + desc 'Updates all dependencies' + task all: :environment do + Rake::Task['update:gems'].execute + Rake::Task['update:js'].execute + end + + desc 'Updates all Gem dependencies' + task gems: :environment do + puts 'Updating Gems' + system('bundle update') + puts 'Ensuring that the x86_65 platform is enabled for CI' + system('bundle lock --add-platform x86_64-linux') + end + + desc 'Updates all JS dependencies' + task js: :environment do + puts 'Updating JS' + system('yarn upgrade') + end +end diff --git a/yarn.lock b/yarn.lock index f1f698f4f3..5f967e1591 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,32 +23,32 @@ integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== "@babel/core@^7.20.12": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" - integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.3.tgz#cf1c877284a469da5d1ce1d1e53665253fae712e" + integrity sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.0" + "@babel/generator" "^7.21.3" "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-module-transforms" "^7.21.0" + "@babel/helper-module-transforms" "^7.21.2" "@babel/helpers" "^7.21.0" - "@babel/parser" "^7.21.0" + "@babel/parser" "^7.21.3" "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.0" - "@babel/types" "^7.21.0" + "@babel/traverse" "^7.21.3" + "@babel/types" "^7.21.3" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@^7.21.0", "@babel/generator@^7.21.1": - version "7.21.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd" - integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA== +"@babel/generator@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.3.tgz#232359d0874b392df04045d72ce2fd9bb5045fce" + integrity sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA== dependencies: - "@babel/types" "^7.21.0" + "@babel/types" "^7.21.3" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -154,7 +154,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.0", "@babel/helper-module-transforms@^7.21.2": +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== @@ -266,10 +266,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" - integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== +"@babel/parser@^7.20.7", "@babel/parser@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.3.tgz#1d285d67a19162ff9daa358d4cb41d50c06220b3" + integrity sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -575,9 +575,9 @@ "@babel/template" "^7.20.7" "@babel/plugin-transform-destructuring@^7.20.2": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" - integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" + integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -693,9 +693,9 @@ "@babel/helper-replace-supers" "^7.18.6" "@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" - integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" + integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -897,26 +897,26 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75" - integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw== +"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.3.tgz#4747c5e7903d224be71f90788b06798331896f67" + integrity sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.1" + "@babel/generator" "^7.21.3" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.21.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.2" - "@babel/types" "^7.21.2" + "@babel/parser" "^7.21.3" + "@babel/types" "^7.21.3" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.4.4": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1" - integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw== +"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.3", "@babel/types@^7.4.4": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.3.tgz#4865a5357ce40f64e3400b0f3b737dc6d4f64d05" + integrity sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" @@ -932,14 +932,26 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@eslint/eslintrc@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.0.tgz#943309d8697c52fc82c076e90c1c74fbbe69dbff" - integrity sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A== +"@eslint-community/eslint-utils@^4.2.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz#a556790523a351b4e47e9d385f47265eaaf9780a" + integrity sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.4.1.tgz#087cb8d9d757bb22e9c9946c9c0c2bf8806830f1" + integrity sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw== + +"@eslint/eslintrc@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.1.tgz#7888fe7ec8f21bc26d646dbd2c11cd776e21192d" + integrity sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.4.0" + espree "^9.5.0" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -947,10 +959,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.35.0": - version "8.35.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.35.0.tgz#b7569632b0b788a0ca0e438235154e45d42813a7" - integrity sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw== +"@eslint/js@8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.36.0.tgz#9837f768c03a1e4a30bd304a64fb8844f0e72efe" + integrity sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg== "@fortawesome/fontawesome-free@^5.15.4": version "5.15.4" @@ -1106,9 +1118,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.21.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.1.tgz#110b441a210d53ab47795124dbc3e9bb993d1e7c" - integrity sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ== + version "8.21.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.3.tgz#5794b3911f0f19e34e3a272c49cbdf48d6f543f2" + integrity sha512-fa7GkppZVEByMWGbTtE5MbmXWJTVbrjjaS8K6uQj+XtuuUv1fsuPAxhygfqLmsb/Ufb3CV8deFCpiMfAgi00Sw== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1142,9 +1154,9 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/node@*", "@types/node@>=10.0.0": - version "18.14.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.6.tgz#ae1973dd2b1eeb1825695bb11ebfb746d27e3e93" - integrity sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA== + version "18.15.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.5.tgz#3af577099a99c61479149b716183e70b5239324a" + integrity sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1391,6 +1403,14 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-includes@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" @@ -1580,9 +1600,9 @@ callsites@^3.0.0: integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== caniuse-lite@^1.0.30001449: - version "1.0.30001464" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001464.tgz#888922718df48ce5e33dcfe1a2af7d42676c5eb7" - integrity sha512-oww27MtUmusatpRpCGSOneQk2/l5czXANDSFvsc7VuOQ86s3ANhZetpwXNf1zY/zdfP63Xvjz325DAdAoES13g== + version "1.0.30001469" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz#3dd505430c8522fdc9f94b4a19518e330f5c945a" + integrity sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g== chalk@^2.0.0: version "2.4.2" @@ -1724,16 +1744,16 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.25.1: - version "3.29.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.29.0.tgz#1b8d9eb4191ab112022e7f6364b99b65ea52f528" - integrity sha512-ScMn3uZNAFhK2DGoEfErguoiAHhV2Ju+oJo/jK08p7B3f3UhocUrCCkTvnZaiS+edl5nlIoiBXKcwMc6elv4KQ== + version "3.29.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.29.1.tgz#15c0fb812ea27c973c18d425099afa50b934b41b" + integrity sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA== dependencies: browserslist "^4.21.5" core-js@^3.6.5: - version "3.29.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.29.0.tgz#0273e142b67761058bcde5615c503c7406b572d6" - integrity sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg== + version "3.29.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.29.1.tgz#40ff3b41588b091aaed19ca1aa5cb111803fa9a6" + integrity sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw== cors@~2.8.5: version "2.8.5" @@ -1852,9 +1872,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.284: - version "1.4.325" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.325.tgz#7b97238a61192d85d055d97f3149832b3617d37b" - integrity sha512-K1C03NT4I7BuzsRdCU5RWkgZxtswnKDYM6/eMhkEXqKu4e5T+ck610x3FPzu1y7HVFSiQKZqP16gnJzPpji1TQ== + version "1.4.337" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.337.tgz#710168240b2dc5fe5eb5f8e4ef9c16d70aedc0ba" + integrity sha512-W8gdzXG86mVPoc56eM8YA+QiLxaAxJ8cmDjxZgfhLLWVvZQxyA918w5tX2JEWApZta45T1/sYcmFHTsTOUE3nw== emoji-regex@^8.0.0: version "8.0.0" @@ -1918,17 +1938,17 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" - integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== dependencies: + array-buffer-byte-length "^1.0.0" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function-bind "^1.1.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.0" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" @@ -1936,8 +1956,8 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.4" - is-array-buffer "^3.0.1" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" @@ -1945,11 +1965,12 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: is-string "^1.0.7" is-typed-array "^1.1.10" is-weakref "^1.0.2" - object-inspect "^1.12.2" + object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.4.3" safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" string.prototype.trimend "^1.0.6" string.prototype.trimstart "^1.0.6" typed-array-length "^1.0.4" @@ -2069,18 +2090,6 @@ eslint-scope@^7.1.1: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - eslint-visitor-keys@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" @@ -2099,12 +2108,14 @@ eslint-webpack-plugin@^2.6.0: schema-utils "^3.1.1" eslint@^8.18.0: - version "8.35.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.35.0.tgz#fffad7c7e326bae606f0e8f436a6158566d42323" - integrity sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw== - dependencies: - "@eslint/eslintrc" "^2.0.0" - "@eslint/js" "8.35.0" + version "8.36.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.36.0.tgz#1bd72202200a5492f91803b113fb8a83b11285cf" + integrity sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.1" + "@eslint/js" "8.36.0" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -2115,9 +2126,8 @@ eslint@^8.18.0: doctrine "^3.0.0" escape-string-regexp "^4.0.0" eslint-scope "^7.1.1" - eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" - espree "^9.4.0" + espree "^9.5.0" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -2139,15 +2149,14 @@ eslint@^8.18.0: minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" - regexpp "^3.2.0" strip-ansi "^6.0.1" strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" - integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== +espree@^9.5.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.0.tgz#3646d4e3f58907464edba852fa047e6a27bdf113" + integrity sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" @@ -2425,9 +2434,9 @@ gopd@^1.0.1: get-intrinsic "^1.1.3" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== grapheme-splitter@^1.0.4: version "1.0.4" @@ -2513,9 +2522,9 @@ ignore@^5.2.0: integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== immutable@^4.0.0: - version "4.2.4" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.4.tgz#83260d50889526b4b531a5e293709a77f7c55a2a" - integrity sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w== + version "4.3.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" + integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" @@ -2551,7 +2560,7 @@ inherits@2, inherits@2.0.4: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -internal-slot@^1.0.4: +internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== @@ -2565,7 +2574,7 @@ interpret@^3.1.1: resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== -is-array-buffer@^3.0.1: +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== @@ -2728,18 +2737,18 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -jasmine-core@^4.1.0, jasmine-core@^4.2.0, jasmine-core@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-4.5.0.tgz#1a6bd0bde3f60996164311c88a0995d67ceda7c3" - integrity sha512-9PMzyvhtocxb3aXJVOPqBDswdgyAeSB81QnLop4npOpbqnheaTEwPc9ZloQeVswugPManznQBjD8kWDTjlnHuw== +jasmine-core@^4.1.0, jasmine-core@^4.2.0, jasmine-core@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-4.6.0.tgz#6884fc3d5b66bf293e422751eed6d6da217c38f5" + integrity sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ== jasmine@^4.2.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-4.5.0.tgz#8d3c0d0a33a61e4d05c9f9747ee5dfaf6f7b5d3d" - integrity sha512-9olGRvNZyADIwYL9XBNBst5BTU/YaePzuddK+YRslc7rI9MdTIE4r3xaBKbv2GEmzYYUfMOdTR8/i6JfLZaxSQ== + version "4.6.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-4.6.0.tgz#2ecde288da25815c67897bb9b9b91f6709880ce1" + integrity sha512-iq7HQ5M8ydNUspjd9vbFW9Lu+6lQ1QLDIqjl0WysEllF5EJZy8XaUyNlhCJVwOx2YFzqTtARWbS56F/f0PzRFw== dependencies: glob "^7.1.6" - jasmine-core "^4.5.0" + jasmine-core "^4.6.0" jest-worker@^27.4.5, jest-worker@^27.5.1: version "27.5.1" @@ -2773,9 +2782,9 @@ js-cookie@^3.0.1: integrity sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw== js-sdsl@^4.1.4: - version "4.3.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" - integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" + integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== js-tokens@^4.0.0: version "4.0.0" @@ -3111,7 +3120,7 @@ object-assign@^4: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.12.2, object-inspect@^1.9.0: +object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== @@ -3388,15 +3397,10 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - regexpu-core@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.1.tgz#66900860f88def39a5cb79ebd9490e84f17bcdfb" - integrity sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ== + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" @@ -3497,9 +3501,9 @@ safe-regex-test@^1.0.0: integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sass@^1.57.1: - version "1.58.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.58.3.tgz#2348cc052061ba4f00243a208b09c40e031f270d" - integrity sha512-Q7RaEtYf6BflYrQ+buPudKR26/lH+10EmO9bBqbmPh/KeLqv8bjpTNqxe71ocONqXq+jYiCbpPUmQMS+JJPk4A== + version "1.59.3" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.59.3.tgz#a1ddf855d75c70c26b4555df4403e1bbf8e4403f" + integrity sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -3647,6 +3651,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimend@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" @@ -3938,9 +3951,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.75.0: - version "5.76.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.0.tgz#f9fb9fb8c4a7dbdcd0d56a98e56b8a942ee2692c" - integrity sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA== + version "5.76.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.3.tgz#dffdc72c8950e5b032fddad9c4452e7787d2f489" + integrity sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" From 328908811e90f85c4f9f287a168d2fc2c2258b3e Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 11:47:30 -0700 Subject: [PATCH 42/77] fixed issue with CHANGELOG so that Wendy's latest PR is listed in the correct release --- CHANGELOG.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 490d4c28fa..03e0ae7e4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,9 +51,12 @@ For more detailed explanation, please refer to this video : https://www.youtube. - Cleaned up `spec/rails_helper.rb` and `spec/spec_helper.rb` - Simplified the `spec/support/capybara.rb` helper to work with the latest version of Capybara and use its built in headless Chrome driver -### Added Rubocop performance gem +### Rubocop updates - Installed rubocop-performance gem and made suggested changes +- Added lib tasks as exclusive from debugger rubocop check after rubocop upgrading to >= v1.45 [#3291](https://github.com/DMPRoadmap/roadmap/issues/3291) +### GitHub actions updates +- Added node version specification (v16) to eslint, PostgreSQL and MySQL github action to eliminate `digital routine enveloped` error [#319](https://github.com/portagenetwork/roadmap/issues/319) ### Bug Fixes @@ -81,5 +84,3 @@ For more detailed explanation, please refer to this video : https://www.youtube. - Added scss files to EditorConfig - Change csv file name for statistics from 'Completed' to 'Created' -- Added lib tasks as exclusive from debugger rubocop check after rubocop upgrading to >= v1.45 [#3291](https://github.com/DMPRoadmap/roadmap/issues/3291) -- Added node version specification (v16) to eslint, PostgreSQL and MySQL github action to eliminate `digital routine enveloped` error [#319](https://github.com/portagenetwork/roadmap/issues/319) From b3519f4a9b3c089fa120613074d821b906146bae Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 11:48:46 -0700 Subject: [PATCH 43/77] added Gemfile lock --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 770e12d7b7..a37af87091 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -538,7 +538,7 @@ GEM zeitwerk (2.6.6) PLATFORMS - arm64-darwin-22 + arm64-darwin-21 arm64-darwin-22 x86_64-linux @@ -624,4 +624,4 @@ RUBY VERSION ruby 2.7.6p219 BUNDLED WITH - 2.4.3 + 2.4.6 From 3c215e0e3bff95fa7a814ea7cdbaa97598bd3cad Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 11:51:55 -0700 Subject: [PATCH 44/77] moved entry in CHANGELOG to 4.1.0 release --- CHANGELOG.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bde4c06d55..9262551021 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,17 +57,18 @@ For more detailed explanation, please refer to this video : https://www.youtube. ### GitHub actions updates - Added node version specification (v16) to eslint, PostgreSQL and MySQL github action to eliminate `digital routine enveloped` error [#319](https://github.com/portagenetwork/roadmap/issues/319) -### Bug Fixes +### Enhancements +- Added enum to the funding status attribute of plan model to make the dropdown of 'funding status' being translatable + +### Bug Fixes ## v4.0.2 ### Added - - Added CHANGELOG.md and Danger Github Action [#3257](https://github.com/DMPRoadmap/roadmap/issues/3257) - Added validation with custom error message in research_output.rb to ensure a user does not enter a very large value as 'Anticipated file size'. [#3161](https://github.com/DMPRoadmap/roadmap/issues/3161) - Added popover for org profile page and added explanation for public plan -- Added enum to the funding status attribute of plan model to make the dropdown of 'funding status' being translatable ### Fixed From da29c129ff1a3c4e5b8920d0b7e0276f777b9a38 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 11:57:14 -0700 Subject: [PATCH 45/77] ran new rails update:all to update dependencies and add linux to available bundle platforms --- Gemfile.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/Gemfile.lock b/Gemfile.lock index 179e43917c..e4093c8147 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -522,6 +522,7 @@ GEM PLATFORMS arm64-darwin-21 + x86_64-linux DEPENDENCIES activerecord_json_validator From ae0aec92711ab3ed38e8daa2df116196bbfda71d Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 12:12:37 -0700 Subject: [PATCH 46/77] Add Gemfile.lock change --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 770e12d7b7..56af38fc36 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -538,7 +538,7 @@ GEM zeitwerk (2.6.6) PLATFORMS - arm64-darwin-22 + arm64-darwin-21 arm64-darwin-22 x86_64-linux @@ -624,4 +624,4 @@ RUBY VERSION ruby 2.7.6p219 BUNDLED WITH - 2.4.3 + 2.4.8 From 1b849cc99fb0c2811a1d7a3c76b6859a66d04c04 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 12:36:29 -0700 Subject: [PATCH 47/77] added x86_64 to bundle --- Gemfile.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/Gemfile.lock b/Gemfile.lock index 179e43917c..e4093c8147 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -522,6 +522,7 @@ GEM PLATFORMS arm64-darwin-21 + x86_64-linux DEPENDENCIES activerecord_json_validator From 2918fb6e79253d9b1fec4ee4c67fe9b0e55ece98 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 14:21:30 -0700 Subject: [PATCH 48/77] fix issue with template visibility setting when creating new templates --- app/controllers/org_admin/templates_controller.rb | 4 ++++ app/views/org_admin/templates/_form.html.erb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/controllers/org_admin/templates_controller.rb b/app/controllers/org_admin/templates_controller.rb index 0e1dfcebd8..c682e8e4e4 100644 --- a/app/controllers/org_admin/templates_controller.rb +++ b/app/controllers/org_admin/templates_controller.rb @@ -157,6 +157,10 @@ def edit def new authorize Template @template = current_org.templates.new + # If the Org is a funder set the visibility to Public otherwise set to Organizational + # for Orgs that are both, the admin will see controls on the page to let them choose. + # The default is already 'organisationally_visible' so change it if this is a funder + @template.visibility = Template.visibilities[:publicly_visible] if current_org.funder? end # POST /org_admin/templates diff --git a/app/views/org_admin/templates/_form.html.erb b/app/views/org_admin/templates/_form.html.erb index 0a6ec2db62..abf6569b17 100644 --- a/app/views/org_admin/templates/_form.html.erb +++ b/app/views/org_admin/templates/_form.html.erb @@ -29,7 +29,7 @@ <% else %> <% visibility = f.object.visibility - visibility = f.object.funder? ? 'publicly_visible' : 'organisationally_visible' if visibility.nil? + visibility = f.object.org.funder? ? 'publicly_visible' : 'organisationally_visible' if visibility.nil? %> <%= f.hidden_field :visibility, value: visibility %> <% end %> From eba5520df62ef83b1d88bfe4049044457b84da54 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 15:22:14 -0700 Subject: [PATCH 49/77] make rubocop happy --- app/controllers/org_admin/templates_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/org_admin/templates_controller.rb b/app/controllers/org_admin/templates_controller.rb index c682e8e4e4..bd2da603ad 100644 --- a/app/controllers/org_admin/templates_controller.rb +++ b/app/controllers/org_admin/templates_controller.rb @@ -2,6 +2,7 @@ module OrgAdmin # Controller that handles templates + # rubocop:disable Metrics/ClassLength class TemplatesController < ApplicationController include Paginable include Versionable @@ -414,4 +415,5 @@ def get_referrer(template, referrer) end end end + # rubocop:enable Metrics/ClassLength end From 057496ae31ee3ae8c298d8a6c30d932549d9a7f6 Mon Sep 17 00:00:00 2001 From: briri Date: Thu, 23 Mar 2023 15:34:06 -0700 Subject: [PATCH 50/77] commit gemfile lock --- Gemfile.lock | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Gemfile.lock b/Gemfile.lock index c37f7faafc..5f3cc02127 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -352,6 +352,8 @@ GEM rspec-rails (>= 3.0.0) racc (1.6.2) rack (2.2.6.4) + rack-attack (6.6.1) + rack (>= 1.0, < 3) rack-mini-profiler (3.0.0) rack (>= 1.2.0) rack-protection (3.0.5) @@ -576,6 +578,7 @@ DEPENDENCIES puma pundit pundit-matchers + rack-attack (~> 6.6, >= 6.6.1) rack-mini-profiler rails (~> 6.1) rails-controller-testing From 668b67d824cb0d5072959f19900b25143ad1b451 Mon Sep 17 00:00:00 2001 From: briri Date: Fri, 24 Mar 2023 08:11:19 -0700 Subject: [PATCH 51/77] fix rubocop warning in rack_attack initializer --- config/initializers/rack_attack.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb index 712315de9b..6a26816d6f 100644 --- a/config/initializers/rack_attack.rb +++ b/config/initializers/rack_attack.rb @@ -9,9 +9,9 @@ Rack::Attack.cache.store = ActiveSupport::Cache::MemoryStore.new # defaults to Rails.cache # Throttle should send a 429 Error responsec code and display public/429.html -Rack::Attack.throttled_responder = lambda do |env| +Rack::Attack.throttled_responder = lambda do |_env| html = ActionView::Base.empty.render(file: 'public/429.html') - [429, {'Content-Type' => 'text/html'}, [html]] + [429, { 'Content-Type' => 'text/html' }, [html]] end # Throttle attempts to a particular path. 2 POSTs to /users/password every 30 seconds From 2d55c17da94cb481ba24827131930730b7073b9b Mon Sep 17 00:00:00 2001 From: Benjamin FAURE Date: Wed, 5 Apr 2023 10:15:37 +0200 Subject: [PATCH 52/77] Added missing import in application.scss for fontawesome brand icons --- app/assets/stylesheets/application.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index b46be33b67..5e6d597552 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -15,5 +15,7 @@ $fa-font-path: '.'; @import '@fortawesome/fontawesome-free/scss/fontawesome'; +// Uncomment this line if you plan on using brand icons (Twitter, Github ...) +// @import '@fortawesome/fontawesome-free/scss/brands'; @import '@fortawesome/fontawesome-free/scss/regular'; @import '@fortawesome/fontawesome-free/scss/solid'; From 9c0a08f34d0f8dbc9f2db33d08c14b39ee572edd Mon Sep 17 00:00:00 2001 From: briri Date: Wed, 5 Apr 2023 13:02:06 -0700 Subject: [PATCH 53/77] synced translations --- config/locale/app.pot | 200 ++++++++++---------- config/locale/de/LC_MESSAGES/app.mo | Bin 154840 -> 154897 bytes config/locale/de/app.po | 234 +++++++++++++----------- config/locale/en/LC_MESSAGES/app.mo | Bin 143439 -> 143625 bytes config/locale/en/app.po | 234 +++++++++++++----------- config/locale/en_CA/LC_MESSAGES/app.mo | Bin 634 -> 634 bytes config/locale/en_CA/app.po | 200 ++++++++++---------- config/locale/en_GB/LC_MESSAGES/app.mo | Bin 1920 -> 1920 bytes config/locale/en_GB/app.po | 200 ++++++++++---------- config/locale/en_US/LC_MESSAGES/app.mo | Bin 21177 -> 23799 bytes config/locale/en_US/app.po | 229 +++++++++++++---------- config/locale/es/LC_MESSAGES/app.mo | Bin 151782 -> 151839 bytes config/locale/es/app.po | 234 +++++++++++++----------- config/locale/fi/LC_MESSAGES/app.mo | Bin 146574 -> 146629 bytes config/locale/fi/app.po | 234 +++++++++++++----------- config/locale/fr_CA/LC_MESSAGES/app.mo | Bin 129045 -> 129045 bytes config/locale/fr_CA/app.po | 226 ++++++++++++----------- config/locale/fr_FR/LC_MESSAGES/app.mo | Bin 155334 -> 155524 bytes config/locale/fr_FR/app.po | 242 ++++++++++++------------ config/locale/pt_BR/LC_MESSAGES/app.mo | Bin 150141 -> 151013 bytes config/locale/pt_BR/app.po | 244 +++++++++++++------------ config/locale/sv_FI/LC_MESSAGES/app.mo | Bin 146178 -> 146232 bytes config/locale/sv_FI/app.po | 234 +++++++++++++----------- config/locale/tr_TR/LC_MESSAGES/app.mo | Bin 151935 -> 151989 bytes config/locale/tr_TR/app.po | 234 +++++++++++++----------- config/locales/.translation_io | 2 +- 26 files changed, 1587 insertions(+), 1360 deletions(-) diff --git a/config/locale/app.pot b/config/locale/app.pot index c5e051c1e7..8cb2d7df0e 100644 --- a/config/locale/app.pot +++ b/config/locale/app.pot @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: roadmap 1.0\n" "Report-Msgid-Bugs-To: contact@translation.io\n" -"POT-Creation-Date: 2023-02-03 09:02+0100\n" -"PO-Revision-Date: 2023-02-03 09:02+0100\n" +"POT-Creation-Date: 2023-04-05 13:01-0700\n" +"PO-Revision-Date: 2023-04-05 13:01-0700\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -47,21 +47,21 @@ msgstr "" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "" @@ -438,7 +438,7 @@ msgstr "" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -450,7 +450,7 @@ msgstr "" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -540,7 +540,7 @@ msgid "Unable to delete this version of the template." msgstr "" #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "" @@ -602,10 +602,14 @@ msgstr "" msgid "Your organisation does not seem to be properly configured." msgstr "" -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "" @@ -639,33 +643,33 @@ msgstr "" msgid "template with customisations by the" msgstr "" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" msgstr "" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "" -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "" @@ -891,7 +895,7 @@ msgstr "" msgid "merge" msgstr "" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "" @@ -950,19 +954,19 @@ msgid "" "ot to duplicate too much text." msgstr "" -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "" @@ -1108,7 +1112,7 @@ msgid "Public" msgstr "" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "" @@ -1121,7 +1125,7 @@ msgid "Public: anyone can view." msgstr "" #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "" @@ -1498,23 +1502,35 @@ msgstr "" msgid "can't be larger than 500KB" msgstr "" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "" @@ -1570,39 +1586,39 @@ msgstr "" msgid "Copy of %{template}" msgstr "" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "" -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "" -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "" -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "" -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "" -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "" @@ -1791,11 +1807,11 @@ msgstr "" msgid "invalid JSON" msgstr "" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1871,7 +1887,7 @@ msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1908,11 +1924,11 @@ msgid " by %{user_name}" msgstr "" #: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " +msgid " questions from your plan." msgstr "" #: ../../app/views/answers/_status.html.erb:15 -msgid " questions from your plan." +msgid "This answer removes " msgstr "" #: ../../app/views/answers/_status.html.erb:21 @@ -2517,7 +2533,7 @@ msgid "" msgstr "" #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -2834,87 +2850,87 @@ msgstr "" msgid "%{application_name}" msgstr "" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" +#: ../../app/views/layouts/application.html.erb:92 +msgid "Notice:" msgstr "" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Notice:" +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" msgstr "" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "" -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "" -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "" -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "" -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "" -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." msgstr "" -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "" -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "" -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "" -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "" -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" "ons." msgstr "" -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "" -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "" @@ -3251,11 +3267,11 @@ msgid "Feedback requested" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" +msgid "Notify the plan owner that I have finished providing feedback" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Notify the plan owner that I have finished providing feedback" +msgid "Complete" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:39 @@ -3291,11 +3307,11 @@ msgid "" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:4 -msgid "Question %{number}:" +msgid "New question:" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:4 -msgid "New question:" +msgid "Question %{number}:" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:15 @@ -3475,7 +3491,7 @@ msgstr "" msgid "for internal %{org_name} use only" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:32 +#: ../../app/views/org_admin/templates/_form.html.erb:38 #: ../../app/views/org_admin/templates/_show.html.erb:13 #: ../../app/views/paginable/guidance_groups/_index.html.erb:7 #: ../../app/views/paginable/guidances/_index.html.erb:9 @@ -3485,7 +3501,7 @@ msgstr "" msgid "Status" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:37 +#: ../../app/views/org_admin/templates/_form.html.erb:43 #: ../../app/views/org_admin/templates/_row.html.erb:16 #: ../../app/views/org_admin/templates/_show.html.erb:26 #: ../../app/views/paginable/guidance_groups/_index.html.erb:24 @@ -3495,17 +3511,17 @@ msgstr "" msgid "Unpublished" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:39 +#: ../../app/views/org_admin/templates/_form.html.erb:45 #: ../../app/views/paginable/templates/_history.html.erb:19 msgid "Draft" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:46 +#: ../../app/views/org_admin/templates/_form.html.erb:52 #: ../../app/views/org_admin/templates/_show.html.erb:41 msgid "Created at" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:52 +#: ../../app/views/org_admin/templates/_form.html.erb:58 #: ../../app/views/org_admin/templates/_show.html.erb:43 #: ../../app/views/paginable/guidance_groups/_index.html.erb:9 #: ../../app/views/paginable/guidances/_index.html.erb:10 @@ -3513,22 +3529,22 @@ msgstr "" msgid "Last updated" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:64 +#: ../../app/views/org_admin/templates/_form.html.erb:70 #: ../../app/views/paginable/templates/_publicly_visible.html.erb:10 msgid "Funder Links" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:67 +#: ../../app/views/org_admin/templates/_form.html.erb:73 msgid "" "Add links to funder websites that provide additional information about the req" "uirements for this template" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:73 +#: ../../app/views/org_admin/templates/_form.html.erb:79 msgid "Sample Plan Links" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:76 +#: ../../app/views/org_admin/templates/_form.html.erb:82 msgid "Add links to sample plans if provided by the funder." msgstr "" @@ -4207,11 +4223,11 @@ msgid "Create a new plan" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:13 -msgid "Sample Plans" +msgid "(if available)" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:13 -msgid "(if available)" +msgid "Sample Plans" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:47 @@ -4515,15 +4531,15 @@ msgstr "" msgid "Funding status" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:181 +#: ../../app/views/plans/_project_details.html.erb:180 msgid "Grant number/url" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:195 +#: ../../app/views/plans/_project_details.html.erb:194 msgid "Grant number:" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:199 +#: ../../app/views/plans/_project_details.html.erb:198 msgid "" "Provide a URL to the award's landing page if possible, if not please provide t" "he award/grant number." @@ -5530,11 +5546,11 @@ msgid "New API Client" msgstr "" #: ../../app/views/super_admin/api_clients/refresh_credentials.js.erb:1 -msgid "Successfully regenerated the client credentials." +msgid "Unable to regenerate the client credentials." msgstr "" #: ../../app/views/super_admin/api_clients/refresh_credentials.js.erb:1 -msgid "Unable to regenerate the client credentials." +msgid "Successfully regenerated the client credentials." msgstr "" #: ../../app/views/super_admin/notifications/_form.html.erb:20 @@ -5957,19 +5973,19 @@ msgid "Hello %{recipient_name}," msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " is creating a Data Management Plan and has answered " +msgid " to " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " to " +msgid " based on the template " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " in a plan called " +msgid " is creating a Data Management Plan and has answered " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " based on the template " +msgid " in a plan called " msgstr "" #: ../../app/views/user_mailer/sharing_notification.html.erb:5 @@ -6109,11 +6125,11 @@ msgid "Download users" msgstr "" #: ../../app/views/users/refresh_token.js.erb:1 -msgid "Successfully regenerate your API token." +msgid "Unable to regenerate your API token." msgstr "" #: ../../app/views/users/refresh_token.js.erb:1 -msgid "Unable to regenerate your API token." +msgid "Successfully regenerate your API token." msgstr "" #: i18n_placeholders.rb:4 diff --git a/config/locale/de/LC_MESSAGES/app.mo b/config/locale/de/LC_MESSAGES/app.mo index 4b9343d91c5626f010db3ee7461af16ea2395a5c..feeae1771ccf9122733678fcde5a8388c3528a65 100644 GIT binary patch delta 20622 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 B>y`ij diff --git a/config/locale/de/app.po b/config/locale/de/app.po index aa1343a7a8..1c14610ba2 100644 --- a/config/locale/de/app.po +++ b/config/locale/de/app.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: roadmap 1.0\n" "Report-Msgid-Bugs-To: contact@translation.io\n" -"POT-Creation-Date: 2023-02-03 09:02+0100\n" -"PO-Revision-Date: 2023-02-03 09:02+0100\n" +"POT-Creation-Date: 2023-04-05 13:01-0700\n" +"PO-Revision-Date: 2023-04-05 22:01+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: German\n" "Language: de\n" @@ -51,21 +51,21 @@ msgstr "Schlechte Parameter" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Monat" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "Nein. Benutzer sind beigetreten" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "Gesamt" @@ -454,7 +454,7 @@ msgstr "Es kann keine neue Version dieser Vorlage erstellt werden.
" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -466,7 +466,7 @@ msgstr "aktualisiert" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -562,7 +562,7 @@ msgid "Unable to delete this version of the template." msgstr "Diese Version der Vorlage kann nicht gelöscht werden." #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "Kopieren" @@ -626,10 +626,14 @@ msgstr "Bitte wählen Sie eine Organisation" msgid "Your organisation does not seem to be properly configured." msgstr "Ihre Organisation scheint nicht ordnungsgemäß konfiguriert zu sein." -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "Erstellt mit %{application_name}. Zuletzt geändert am %{date}" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "[Seite] von [Toppage]" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "Das ist ein" @@ -663,11 +667,11 @@ msgstr "Dieser Plan basiert auf dem" msgid "template with customisations by the" msgstr "Vorlage mit Anpassungen durch die" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "Kopiert" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" @@ -675,23 +679,23 @@ msgstr "" "Der Status des Plans konnte nicht geändert werden, da mindestens %{percentage}" " Prozentsatz angefordert wurde" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "Plan-ID konnte nicht gefunden werden %{plan_id}" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "Ihr Projekt ist jetzt ein Test." -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "Ihr Projekt ist kein Test mehr." -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "Der Teststatus des Plans konnte nicht geändert werden" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "ID %{ ist kein Plan zugeordnet S" @@ -945,7 +949,7 @@ msgstr "zusammengeführt" msgid "merge" msgstr "Verschmelzen" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "" @@ -1012,19 +1016,19 @@ msgstr "" "Sie auch Hilfestellungen nach Themen angeben, werden diese mit angezeigt; Sie " "sollten deshalb möglichst wenig Text kopieren." -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "Antworten" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "sendet eine E-Mail mit dem Betreff %{subject_name}" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "wird die Frage entfernen" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "wird Fragen entfernen" @@ -1177,7 +1181,7 @@ msgid "Public" msgstr "Öffentlichkeit" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "Private" @@ -1190,7 +1194,7 @@ msgid "Public: anyone can view." msgstr "Öffentlich: Jeder kann sehen." #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "Privat: beschränkt auf mich und Leute, die ich einlade." @@ -1578,23 +1582,35 @@ msgstr "muss eines der folgenden Formate sein: jpeg, jpg, png, gif, bmp" msgid "can't be larger than 500KB" msgstr "kann nicht größer als 500KB sein" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "organisatorisch" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "öffentlich" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "Test" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "privat" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "muss nach dem Startdatum liegen" @@ -1650,41 +1666,41 @@ msgstr "generate_copy! erfordert ein Organisationsziel" msgid "Copy of %{template}" msgstr "Kopie von %{template}" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "generate_version! benötigt eine veröffentlichte Vorlage" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "customize! erfordert ein Organisationsziel" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "customize! benötigt eine Vorlage von einem Forschungsförderer" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "Sie können keine bereits veröffentlichte Vorlage erneut veröffentlichen." -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "Sie können keine veraltete Version dieser Vorlage veröffentlichen." -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "Sie können keine Vorlage ohne Phasen veröffentlichen." -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "" "Sie können keine Vorlage veröffentlichen, deren Phasen keine Abschnitte enthal" "ten." -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "Sie können keine Vorlage veröffentlichen, die Abschnitte ohne Fragen enthält." -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "Die Bedingungen in der Vorlage beziehen sich rückwärts" @@ -1883,11 +1899,11 @@ msgstr ": title ist für jeden: Datensatz erforderlich" msgid "invalid JSON" msgstr "Ungültiger JSON" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "upgrade_customization! erfordert eine benutzerdefinierte Vorlage" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1967,7 +1983,7 @@ msgstr "Bitte warten Sie, die Standards werden geladen" #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -2003,14 +2019,14 @@ msgstr "Beantwortet" msgid " by %{user_name}" msgstr " von %{user_name}" -#: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " -msgstr "Diese Antwort wird entfernt" - #: ../../app/views/answers/_status.html.erb:15 msgid " questions from your plan." msgstr " Fragen aus Ihrem Plan." +#: ../../app/views/answers/_status.html.erb:15 +msgid "This answer removes " +msgstr "Diese Antwort wird entfernt" + #: ../../app/views/answers/_status.html.erb:21 msgid "This answer triggers email(s) to " msgstr "Diese Antwort löst E-Mail (s) an aus" @@ -2676,7 +2692,7 @@ msgstr "" "erstellen'-Assistenten auswählen." #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -3017,50 +3033,50 @@ msgstr "Abmelden" msgid "%{application_name}" msgstr "%{application_name}" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" -msgstr "Error:" - -#: ../../app/views/layouts/application.html.erb:91 +#: ../../app/views/layouts/application.html.erb:92 msgid "Notice:" msgstr "Beachten:" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" +msgstr "Error:" + +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "Laden..." -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "Dieses Feld wird benötigt." -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "Passwort anzeigen" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "Wählen Sie eine Organisation aus der Liste aus." -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "Meine Organisation ist nicht aufgeführt" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "N / A" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "Liste ausblenden" -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "Siehe die vollständige Liste der Partnereinrichtungen." -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." @@ -3068,27 +3084,27 @@ msgstr "" "Es konnte keine geeignete Vorlage für die von Ihnen ausgewählte Forschungsorga" "nisation und den ausgewählten Geldgeber gefunden werden." -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "Bitte wählen Sie eine Forschungsorganisation und Förderer, um fortzufahren." -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "Laden ..." -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "Der Inhalt des Abschnitts konnte zu diesem Zeitpunkt nicht geladen werden." -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "Der Inhalt der Frage konnte zu diesem Zeitpunkt nicht geladen werden." -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "Wird in einem neuen Fenster geöffnet" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" @@ -3099,11 +3115,11 @@ msgstr "" "en Vorschlag auszuwählen, oder die Escape-Taste, um die Vorschläge zu schließe" "n." -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "Für Ihren Eintrag sind keine Ergebnisse verfügbar." -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "Suchen ..." @@ -3453,16 +3469,16 @@ msgstr "Aktionen" msgid "Feedback requested" msgstr "Feedback wurde angefordert." -#: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" -msgstr "Vollständig" - #: ../../app/views/org_admin/plans/index.html.erb:29 msgid "Notify the plan owner that I have finished providing feedback" msgstr "" "Benachrichtigen Sie den Eigentümer des Plans, dass ich mit der Bereitstellung " "von Feedback fertig bin" +#: ../../app/views/org_admin/plans/index.html.erb:29 +msgid "Complete" +msgstr "Vollständig" + #: ../../app/views/org_admin/plans/index.html.erb:39 msgid "" "Download plans (new window)Info: Simple information message, displayed in blue.
)HhZ?tOhWEGeaC0`-#+eJ{;?)I9EW2$P5_n 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 y@)-|cr|KGjZ#s5EV$eX$V delta 26337 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

H4Tgx7&|E1_HxT70pN8XbI|F5R2;B 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 vVPOgD*2z=9!+^7?uZsT%d`5Ba diff --git a/config/locale/en/app.po b/config/locale/en/app.po index 9da8429aae..a8eaea4746 100644 --- a/config/locale/en/app.po +++ b/config/locale/en/app.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: roadmap 1.0\n" "Report-Msgid-Bugs-To: contact@translation.io\n" -"POT-Creation-Date: 2023-02-03 09:02+0100\n" -"PO-Revision-Date: 2023-02-03 09:02+0100\n" +"POT-Creation-Date: 2023-04-05 13:01-0700\n" +"PO-Revision-Date: 2023-04-05 13:01-0700\n" "Last-Translator: FULL NAME \n" "Language-Team: English\n" "Language: en\n" @@ -49,21 +49,21 @@ msgstr "Bad Parameters" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Month" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "No. Users joined" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "Total" @@ -444,7 +444,7 @@ msgstr "Unable to create a new version of this template.
" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -456,7 +456,7 @@ msgstr "updated" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -546,7 +546,7 @@ msgid "Unable to delete this version of the template." msgstr "Unable to delete this version of the template." #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "copy" @@ -608,10 +608,14 @@ msgstr "Please choose an organisation" msgid "Your organisation does not seem to be properly configured." msgstr "Your organisation does not seem to be properly configured." -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "Created using %{application_name}. Last modified %{date}" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "[page] of [topage]" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "This is a" @@ -645,11 +649,11 @@ msgstr "This plan is based on the" msgid "template with customisations by the" msgstr "template with customisations by the" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "copied" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" @@ -657,23 +661,23 @@ msgstr "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "Unable to find plan id %{plan_id}" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "Your project is now a test." -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "Your project is no longer a test." -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "Unable to change the plan's test status" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "There is no plan associated with id %{s" @@ -924,7 +928,7 @@ msgstr "merged" msgid "merge" msgstr "merge" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "No. Created Plans" @@ -990,19 +994,19 @@ msgstr "" "emes too, this will be pulled in based on your selections below so it's best n" "ot to duplicate too much text." -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "Answering" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr " will send an email with subject %{subject_name}" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr " will remove question " -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr " will remove questions " @@ -1157,7 +1161,7 @@ msgid "Public" msgstr "Public" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "Private" @@ -1170,7 +1174,7 @@ msgid "Public: anyone can view." msgstr "Public: anyone can view." #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "Private: restricted to me and people I invite." @@ -1559,23 +1563,35 @@ msgstr "must be one of the following formats: jpeg, jpg, png, gif, bmp" msgid "can't be larger than 500KB" msgstr "can't be larger than 500KB" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "organisational" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "public" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "test" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "private" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "Planned" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "Funded" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "Denied" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "must be after the start date" @@ -1631,39 +1647,39 @@ msgstr "generate_copy! requires an organisation target" msgid "Copy of %{template}" msgstr "Copy of %{template}" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "generate_version! requires a published template" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "customize! requires an organisation target" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "customize! requires a template from a funder" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "You can not publish a published template. " -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "You can not publish a historical version of this template. " -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "You can not publish a template without phases. " -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "You can not publish a template without sections in a phase. " -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "You can not publish a template without questions in a section. " -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "Conditions in the template refer backwards" @@ -1859,11 +1875,11 @@ msgstr ":title is required for each :dataset" msgid "invalid JSON" msgstr "invalid JSON" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "upgrade_customization! requires a customised template" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1943,7 +1959,7 @@ msgstr "Please wait, Standards are loading" #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1979,14 +1995,14 @@ msgstr "Answered" msgid " by %{user_name}" msgstr " by %{user_name}" -#: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " -msgstr "This answer removes " - #: ../../app/views/answers/_status.html.erb:15 msgid " questions from your plan." msgstr " questions from your plan." +#: ../../app/views/answers/_status.html.erb:15 +msgid "This answer removes " +msgstr "This answer removes " + #: ../../app/views/answers/_status.html.erb:21 msgid "This answer triggers email(s) to " msgstr "This answer triggers email(s) to " @@ -2642,7 +2658,7 @@ msgstr "" "this subset guidance when answering questions in the 'create plan' wizard." #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -2977,50 +2993,50 @@ msgstr "Logout" msgid "%{application_name}" msgstr "%{application_name}" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" -msgstr "Error:" - -#: ../../app/views/layouts/application.html.erb:91 +#: ../../app/views/layouts/application.html.erb:92 msgid "Notice:" msgstr "Notice:" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" +msgstr "Error:" + +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "Loading..." -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "This field is required." -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "Show password" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "Select an organisation from the list." -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "My organisation isn't listed" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "N/A" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "Hide list." -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "See the full list of partner institutions." -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." @@ -3028,27 +3044,27 @@ msgstr "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "Please select a research organisation and funder to continue." -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "Loading ..." -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "Unable to load the section's content at this time." -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "Unable to load the question's content at this time." -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "Opens in a new window" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" @@ -3058,11 +3074,11 @@ msgstr "" "e the Enter key to select a suggestion or the Escape key to close the suggesti" "ons." -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "No results are available for your entry." -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "Searching ..." @@ -3409,14 +3425,14 @@ msgstr "Actions" msgid "Feedback requested" msgstr "Feedback requested" -#: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" -msgstr "Complete" - #: ../../app/views/org_admin/plans/index.html.erb:29 msgid "Notify the plan owner that I have finished providing feedback" msgstr "Notify the plan owner that I have finished providing feedback" +#: ../../app/views/org_admin/plans/index.html.erb:29 +msgid "Complete" +msgstr "Complete" + #: ../../app/views/org_admin/plans/index.html.erb:39 msgid "" "Download plans (new window)Info: Simple information message, displayed in blue.
Lp{{|sfdN;5ziv=!S!Qu&ex9yNVo9o%f{}rdv91AF Roskhxowk9|=4eKFMgU#d5YYet delta 66 zcmeyx@{47I8l$O^u7R\n" "Language-Team: English\n" "Language: en_CA\n" @@ -47,21 +47,21 @@ msgstr "" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Month" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "" @@ -438,7 +438,7 @@ msgstr "" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -450,7 +450,7 @@ msgstr "" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -540,7 +540,7 @@ msgid "Unable to delete this version of the template." msgstr "" #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "" @@ -602,10 +602,14 @@ msgstr "" msgid "Your organisation does not seem to be properly configured." msgstr "" -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "" @@ -639,33 +643,33 @@ msgstr "" msgid "template with customisations by the" msgstr "" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" msgstr "" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "" -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "" @@ -891,7 +895,7 @@ msgstr "" msgid "merge" msgstr "" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "" @@ -950,19 +954,19 @@ msgid "" "ot to duplicate too much text." msgstr "" -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "" @@ -1108,7 +1112,7 @@ msgid "Public" msgstr "" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "" @@ -1121,7 +1125,7 @@ msgid "Public: anyone can view." msgstr "" #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "" @@ -1499,23 +1503,35 @@ msgstr "" msgid "can't be larger than 500KB" msgstr "" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "" @@ -1571,39 +1587,39 @@ msgstr "" msgid "Copy of %{template}" msgstr "" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "" -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "" -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "" -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "" -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "" -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "" @@ -1792,11 +1808,11 @@ msgstr "" msgid "invalid JSON" msgstr "" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1872,7 +1888,7 @@ msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1909,11 +1925,11 @@ msgid " by %{user_name}" msgstr "" #: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " +msgid " questions from your plan." msgstr "" #: ../../app/views/answers/_status.html.erb:15 -msgid " questions from your plan." +msgid "This answer removes " msgstr "" #: ../../app/views/answers/_status.html.erb:21 @@ -2518,7 +2534,7 @@ msgid "" msgstr "" #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -2835,87 +2851,87 @@ msgstr "" msgid "%{application_name}" msgstr "" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" +#: ../../app/views/layouts/application.html.erb:92 +msgid "Notice:" msgstr "" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Notice:" +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" msgstr "" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "" -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "" -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "" -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "" -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "" -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." msgstr "" -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "" -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "" -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "" -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "" -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" "ons." msgstr "" -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "" -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "" @@ -3252,11 +3268,11 @@ msgid "Feedback requested" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" +msgid "Notify the plan owner that I have finished providing feedback" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Notify the plan owner that I have finished providing feedback" +msgid "Complete" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:39 @@ -3292,11 +3308,11 @@ msgid "" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:4 -msgid "Question %{number}:" +msgid "New question:" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:4 -msgid "New question:" +msgid "Question %{number}:" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:15 @@ -3476,7 +3492,7 @@ msgstr "" msgid "for internal %{org_name} use only" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:32 +#: ../../app/views/org_admin/templates/_form.html.erb:38 #: ../../app/views/org_admin/templates/_show.html.erb:13 #: ../../app/views/paginable/guidance_groups/_index.html.erb:7 #: ../../app/views/paginable/guidances/_index.html.erb:9 @@ -3486,7 +3502,7 @@ msgstr "" msgid "Status" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:37 +#: ../../app/views/org_admin/templates/_form.html.erb:43 #: ../../app/views/org_admin/templates/_row.html.erb:16 #: ../../app/views/org_admin/templates/_show.html.erb:26 #: ../../app/views/paginable/guidance_groups/_index.html.erb:24 @@ -3496,17 +3512,17 @@ msgstr "" msgid "Unpublished" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:39 +#: ../../app/views/org_admin/templates/_form.html.erb:45 #: ../../app/views/paginable/templates/_history.html.erb:19 msgid "Draft" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:46 +#: ../../app/views/org_admin/templates/_form.html.erb:52 #: ../../app/views/org_admin/templates/_show.html.erb:41 msgid "Created at" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:52 +#: ../../app/views/org_admin/templates/_form.html.erb:58 #: ../../app/views/org_admin/templates/_show.html.erb:43 #: ../../app/views/paginable/guidance_groups/_index.html.erb:9 #: ../../app/views/paginable/guidances/_index.html.erb:10 @@ -3514,22 +3530,22 @@ msgstr "" msgid "Last updated" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:64 +#: ../../app/views/org_admin/templates/_form.html.erb:70 #: ../../app/views/paginable/templates/_publicly_visible.html.erb:10 msgid "Funder Links" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:67 +#: ../../app/views/org_admin/templates/_form.html.erb:73 msgid "" "Add links to funder websites that provide additional information about the req" "uirements for this template" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:73 +#: ../../app/views/org_admin/templates/_form.html.erb:79 msgid "Sample Plan Links" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:76 +#: ../../app/views/org_admin/templates/_form.html.erb:82 msgid "Add links to sample plans if provided by the funder." msgstr "" @@ -4208,11 +4224,11 @@ msgid "Create a new plan" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:13 -msgid "Sample Plans" +msgid "(if available)" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:13 -msgid "(if available)" +msgid "Sample Plans" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:47 @@ -4516,15 +4532,15 @@ msgstr "" msgid "Funding status" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:181 +#: ../../app/views/plans/_project_details.html.erb:180 msgid "Grant number/url" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:195 +#: ../../app/views/plans/_project_details.html.erb:194 msgid "Grant number:" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:199 +#: ../../app/views/plans/_project_details.html.erb:198 msgid "" "Provide a URL to the award's landing page if possible, if not please provide t" "he award/grant number." @@ -5531,11 +5547,11 @@ msgid "New API Client" msgstr "" #: ../../app/views/super_admin/api_clients/refresh_credentials.js.erb:1 -msgid "Successfully regenerated the client credentials." +msgid "Unable to regenerate the client credentials." msgstr "" #: ../../app/views/super_admin/api_clients/refresh_credentials.js.erb:1 -msgid "Unable to regenerate the client credentials." +msgid "Successfully regenerated the client credentials." msgstr "" #: ../../app/views/super_admin/notifications/_form.html.erb:20 @@ -5958,19 +5974,19 @@ msgid "Hello %{recipient_name}," msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " is creating a Data Management Plan and has answered " +msgid " to " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " to " +msgid " based on the template " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " in a plan called " +msgid " is creating a Data Management Plan and has answered " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " based on the template " +msgid " in a plan called " msgstr "" #: ../../app/views/user_mailer/sharing_notification.html.erb:5 @@ -6110,11 +6126,11 @@ msgid "Download users" msgstr "" #: ../../app/views/users/refresh_token.js.erb:1 -msgid "Successfully regenerate your API token." +msgid "Unable to regenerate your API token." msgstr "" #: ../../app/views/users/refresh_token.js.erb:1 -msgid "Unable to regenerate your API token." +msgid "Successfully regenerate your API token." msgstr "" #: i18n_placeholders.rb:4 diff --git a/config/locale/en_GB/LC_MESSAGES/app.mo b/config/locale/en_GB/LC_MESSAGES/app.mo index 44a5207f927a1d78a931aa77bb5d4a4467fd5471..d7d9f0fc73ec9ca4e8735e9e0f6e937468b96a8e 100644 GIT binary patch delta 66 zcmZqRZ{XjM$zp1vYhbEiXl!L*sB2(uV89jNuN#zFmRX#cpQr1RSdwa`U}RuqtZM*P RXJiCar)^-gc^=CnCIC3A5kmj~ delta 66 zcmZqRZ{XjM$zp1xYhbKkU}\n" "Language-Team: English\n" "Language: en_GB\n" @@ -47,21 +47,21 @@ msgstr "" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Month" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "" @@ -438,7 +438,7 @@ msgstr "" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -450,7 +450,7 @@ msgstr "" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -540,7 +540,7 @@ msgid "Unable to delete this version of the template." msgstr "" #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "" @@ -602,10 +602,14 @@ msgstr "" msgid "Your organisation does not seem to be properly configured." msgstr "" -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "" @@ -639,33 +643,33 @@ msgstr "" msgid "template with customisations by the" msgstr "" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" msgstr "" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "" -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "" @@ -891,7 +895,7 @@ msgstr "" msgid "merge" msgstr "" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "" @@ -950,19 +954,19 @@ msgid "" "ot to duplicate too much text." msgstr "" -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "" @@ -1108,7 +1112,7 @@ msgid "Public" msgstr "" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "" @@ -1121,7 +1125,7 @@ msgid "Public: anyone can view." msgstr "" #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "" @@ -1499,23 +1503,35 @@ msgstr "" msgid "can't be larger than 500KB" msgstr "" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "" @@ -1571,39 +1587,39 @@ msgstr "" msgid "Copy of %{template}" msgstr "" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "" -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "" -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "" -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "" -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "" -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "" @@ -1792,11 +1808,11 @@ msgstr "" msgid "invalid JSON" msgstr "" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1872,7 +1888,7 @@ msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1909,11 +1925,11 @@ msgid " by %{user_name}" msgstr "" #: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " +msgid " questions from your plan." msgstr "" #: ../../app/views/answers/_status.html.erb:15 -msgid " questions from your plan." +msgid "This answer removes " msgstr "" #: ../../app/views/answers/_status.html.erb:21 @@ -2518,7 +2534,7 @@ msgid "" msgstr "" #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -2835,87 +2851,87 @@ msgstr "" msgid "%{application_name}" msgstr "" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" +#: ../../app/views/layouts/application.html.erb:92 +msgid "Notice:" msgstr "" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Notice:" +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" msgstr "" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "" -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "" -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "" -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "" -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "" -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." msgstr "" -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "" -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "" -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "" -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "" -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" "ons." msgstr "" -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "" -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "" @@ -3252,11 +3268,11 @@ msgid "Feedback requested" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" +msgid "Notify the plan owner that I have finished providing feedback" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Notify the plan owner that I have finished providing feedback" +msgid "Complete" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:39 @@ -3292,11 +3308,11 @@ msgid "" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:4 -msgid "Question %{number}:" +msgid "New question:" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:4 -msgid "New question:" +msgid "Question %{number}:" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:15 @@ -3476,7 +3492,7 @@ msgstr "" msgid "for internal %{org_name} use only" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:32 +#: ../../app/views/org_admin/templates/_form.html.erb:38 #: ../../app/views/org_admin/templates/_show.html.erb:13 #: ../../app/views/paginable/guidance_groups/_index.html.erb:7 #: ../../app/views/paginable/guidances/_index.html.erb:9 @@ -3486,7 +3502,7 @@ msgstr "" msgid "Status" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:37 +#: ../../app/views/org_admin/templates/_form.html.erb:43 #: ../../app/views/org_admin/templates/_row.html.erb:16 #: ../../app/views/org_admin/templates/_show.html.erb:26 #: ../../app/views/paginable/guidance_groups/_index.html.erb:24 @@ -3496,17 +3512,17 @@ msgstr "" msgid "Unpublished" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:39 +#: ../../app/views/org_admin/templates/_form.html.erb:45 #: ../../app/views/paginable/templates/_history.html.erb:19 msgid "Draft" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:46 +#: ../../app/views/org_admin/templates/_form.html.erb:52 #: ../../app/views/org_admin/templates/_show.html.erb:41 msgid "Created at" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:52 +#: ../../app/views/org_admin/templates/_form.html.erb:58 #: ../../app/views/org_admin/templates/_show.html.erb:43 #: ../../app/views/paginable/guidance_groups/_index.html.erb:9 #: ../../app/views/paginable/guidances/_index.html.erb:10 @@ -3514,22 +3530,22 @@ msgstr "" msgid "Last updated" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:64 +#: ../../app/views/org_admin/templates/_form.html.erb:70 #: ../../app/views/paginable/templates/_publicly_visible.html.erb:10 msgid "Funder Links" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:67 +#: ../../app/views/org_admin/templates/_form.html.erb:73 msgid "" "Add links to funder websites that provide additional information about the req" "uirements for this template" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:73 +#: ../../app/views/org_admin/templates/_form.html.erb:79 msgid "Sample Plan Links" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:76 +#: ../../app/views/org_admin/templates/_form.html.erb:82 msgid "Add links to sample plans if provided by the funder." msgstr "" @@ -4210,11 +4226,11 @@ msgid "Create a new plan" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:13 -msgid "Sample Plans" +msgid "(if available)" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:13 -msgid "(if available)" +msgid "Sample Plans" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:47 @@ -4518,15 +4534,15 @@ msgstr "" msgid "Funding status" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:181 +#: ../../app/views/plans/_project_details.html.erb:180 msgid "Grant number/url" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:195 +#: ../../app/views/plans/_project_details.html.erb:194 msgid "Grant number:" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:199 +#: ../../app/views/plans/_project_details.html.erb:198 msgid "" "Provide a URL to the award's landing page if possible, if not please provide t" "he award/grant number." @@ -5533,11 +5549,11 @@ msgid "New API Client" msgstr "" #: ../../app/views/super_admin/api_clients/refresh_credentials.js.erb:1 -msgid "Successfully regenerated the client credentials." +msgid "Unable to regenerate the client credentials." msgstr "" #: ../../app/views/super_admin/api_clients/refresh_credentials.js.erb:1 -msgid "Unable to regenerate the client credentials." +msgid "Successfully regenerated the client credentials." msgstr "" #: ../../app/views/super_admin/notifications/_form.html.erb:20 @@ -5960,19 +5976,19 @@ msgid "Hello %{recipient_name}," msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " is creating a Data Management Plan and has answered " +msgid " to " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " to " +msgid " based on the template " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " in a plan called " +msgid " is creating a Data Management Plan and has answered " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " based on the template " +msgid " in a plan called " msgstr "" #: ../../app/views/user_mailer/sharing_notification.html.erb:5 @@ -6112,11 +6128,11 @@ msgid "Download users" msgstr "" #: ../../app/views/users/refresh_token.js.erb:1 -msgid "Successfully regenerate your API token." +msgid "Unable to regenerate your API token." msgstr "" #: ../../app/views/users/refresh_token.js.erb:1 -msgid "Unable to regenerate your API token." +msgid "Successfully regenerate your API token." msgstr "" #: i18n_placeholders.rb:4 diff --git a/config/locale/en_US/LC_MESSAGES/app.mo b/config/locale/en_US/LC_MESSAGES/app.mo index 861e3c45fa1caab72102d7377e956075214ef2c1..f156a585f1d24478f84728a6c703eb01d15b1912 100644 GIT binary patch delta 5163 zcmcJQ3vg6d8Gz3M36Ky&CRa_=tN zK+&;OtQl@o^p*G~jeZ%r8WxMB<$p$_{3O4;xT z>tBykYB4;Jr&Iwv2hYG?W!B&Nm{KO|@59f+@_c{&0<2^`nM3Q9N~z^cYT4KYo8Wg~ z1AGT2U?rzdf=|ORJOKyb^a)B`fzQBoaPSVL_P{q`4%{|TsTr^vvZW5dBKQp`7d;85 zp|%1CSeU+%FFUy0=@%S0C zY9EZUo;X>lyWs$whJN)DlTvsIPJw@eqNtFsN5k1r6xP55Tma<;Mi8&$Cz_y~e?t6U#^jZ0{(ob@ISVyE3gIr6E==uey37rSr3vBqHi6K>;MLrrIdP#jXmW` z&4e0{S+E(_!9KVN9)_b~fFHBrSct7^JZy$@A%E&29_Ug}!#Ch*_y~M*wo;#i#l+_# zJPbb#ccrL>gIIC_@{WpD`C0x1yukVfd>+1D?Yn;WTyDhr%TN@Zha2IaA$h1)5rsc84vNAH5Zx*V>zm*`P%e_ z7==0Tk5C%O-=Vm$lxvDh>mUiOTHrJohGXG=m=6y?@xUP{@1KGb;3X*MT!m83QW~ew zudC zQFt7RM}7e10(HxHR~kqw6N%9}D6#H>o8e<{GW-LSSdUrm$9@tN1v8+8>TW1~pasfJ zw`TTjIF>srGcD*qIhw$ zU(an&6eS_iQjbH@LcI9^ zv#j%0`3f&XX&?bkdy4%rt$zRbCY;6kRaghF!%eWV%@4&O%x3*XI1N6LVuF$CMJONM zfKt~pAMhJU3w(t2^fi71IRr1Vu3YOkkN}x0{i7YuX8+oHKg&xt`2Axqe4hP{bQ^K~ z$c=vgD2AdZwSftLY9|kI`31;j)!R@$sBiaUy#h)D*#>LiQHU<}3n(|7&!Yi;2}-V< zg%Yx#!wUF2SPctFEa@N1An&DA8xtx*ZG-jjYj8Te2)USwBP6UM=~WjZVJSwE$N+*P zyfK3(m-Q|o8#F|3Br>#NA0iczi|jx|zt@K)Ci{^2h*&E_!XiW5GzB4NyfKQWxVpz* zst%|lL1Y2akHiqEkgZ4wQj3g4h^}}0Zum(=^m~~)2JS?}wG_k9*u!iP!5Qk~NG~Fp zjyKgdWD&9*nTa$a^AHmmKIX8H(1=%MNLXc1)hhL{H&x1l5;rQ#3&Z5hep!Z1Fe@{c z5|WXR6e5ziE0Ko~^404lAs9yFf}cSiL}XA9DuPJv5cZT>#Y7S%2a&PZhxe2clF^Ag zDig*CA71%nrm8A4A!k)NvMaNml%b#?GjAWZw_D6BWuqFA#zA!{4Ur*bw*;v~Wbpq- zIo`~FY{|^`LaCU$GHWVP8OQ`=EFx7SV?Pr0W<0c|2`6s#nCYgR-GNOpBdHm&xZSTM z&1h8XFtm_u=y9V{>#}Su9x*h_4(l<~(c`8S)B3H17SVSYT1@ZZ9lgWaVN`3aQA2kO ztb<>&Zfj=DJ1=TFahdCy6E(w;c(h;ZG`qSC8#6>{ zPj&iat~SzLlQ+S%jU6Ti_D1!XqdAF=9y2bcb@bn2l^)d+j$u2hDW(~=jonr#l(22y zOh!yB;(BH*ti>&@$FRe!xz_4o*K(@eH|yrOS^1siM$}4brh|2!omQ8Bv}PM&?8ZpX zG49J1Q_6C*%y29_?w#4G$8|Bz&_fZe%QT{$)#-44BrrOn$HG|PzB~JlV$aXE;UuD- z8^o5VnplPyOTG9~lv%xWq7 z25n}e6Su8c_};Qz{IFG$Zg=C{%-&45t*Om@w&c>32mCY{{w>b&vL>CH`drpVtH!xHs2RVsdUZ;npW3L_Hd0t2Jw^>BV^K?| zw6vvb){}O{e@rB?KS7$G}^$bZL3^nEH8D!FsKxt|3@c z6*49-8z4vNsd9N~9n{Kb(GUB#-$Ry;Gezv?ikUqEK?W}(R DD6~)H delta 2871 zcmZwJe@sZ8MQXTnQ0*AA7_2pgk5YG7|H!)ge-fvp7C7TqGLr;Yo~&u#fw( ziQ_-;HCz&DAOC_AI4+J7$;DRmiv*;HPCF-l#z(MXgvcwn4hQiXGNydTTV&t`jK%vH zk1@Q3zIZ04U?mDc|RuOT-58Ukujwsc)kk*dZCw&509bF{1)o@ z3`W(p&O??@He&}fe-(9r2c+XsjAoiT&@`NZ)tH9{=HqEB$DyoKH7>_9_+b+HFQv1E zZx=X8Kc3bb)9eTLV<-dO!*0%pq>GHlz39PjFb8j;rg+>~?#GF!OOcC@V-@QC-N>zS z0{ijmSn|Jv&KK;gAF+(->|sFnIF^Cq!;IF5gLqD_^OOUa#zjr#w^)F`qCPlxf zuoQ=36KXwgM4eG5#^ZjB!6T^8`5v{*2JtvvMc!R{r`g{dz_T1{%_eC5|3F9U`6f1V z{w4BGSFWMHz}V?_Jr^PySyrQNwwF-{+J-vgov1JFWJ72>Cwc`qj8EY$0@7>^r*=eGyX_aLh%M^I;eBX~ZQjiF0D z1tYNy16t2p>F5A|b5-j(VzxbyANj6Spw@F2>Zbe}wVp%f*!5hAXE;89rTAi@UCt-) zwBA>2Klco3Ip4u<&fhN~|5TQ|JI}7qFOhvCH!uv{6tC8ECZ?bd`IB-!Joq+h*&V}v zyn;LMv-$QWF5zvooRiAza{hRMUCsk|j{8a$lK%sA5*OL2{0hmwTtt2F7^bQ9T!5PL zw~%MaLDbaWLEUsw6?Q$Rqo%wCm*QSriFZ*mSGCwK(>G9;;JpByEIPe75znLUh0rDT zjj_n;NIFs|Qjc!jgG|g?9zAA4)&S39HKA>!jZ6)yn@*pt6IdNQ7kG*eKXz8rRC|dH zgzjLi@Bi95Iw3?fp}So-lGeBG7j3MV)#~^hPt*|Egf`t1RGrmGtjr1a`4tWbOJz0P zU~7psVm849t<=Fot%D;f?SI?C;8|Tdeq5~95HvBUW^pu8Ni=HxYts}@wtAEYCK1mQ zx`w(=MZ_jT_rMyWiqNK;aul(dC?Qr5^+Y@oMK}rl@zNGfBwIcH3&N*~)ZqBmKNfmT z_rP%CIfBh>wc4O*xSp6xv=A;r_s$5SiI_xW63dA~LL2+e+Q1u8f7F_ZRfLc55LWhw z($S_nU)z&5)~BD(Rw9O2MzG<9J!+MymZ&zZfM?9w;oBYNuE^vNBRjgwOpjUXFze$! zaT$F@D~$5UFmq=@s>3{*m@~xirMZp5(nUtN`-1tv-QzNyo^FS+ud>E`AuG&b)K#}x zU#QOR49oR|%gOs>8BxnZjqCZV%)aSs9Y%dzftfwC)n)b-ZE={z#nwAT8z<+FGz&|| gJB$ZzpLwXP!(})\n" "Language-Team: English\n" "Language: en_US\n" @@ -47,21 +47,21 @@ msgstr "" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Month" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "" @@ -438,7 +438,7 @@ msgstr "" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -450,7 +450,7 @@ msgstr "" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -540,7 +540,7 @@ msgid "Unable to delete this version of the template." msgstr "" #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "" @@ -602,10 +602,14 @@ msgstr "Please choose an organization" msgid "Your organisation does not seem to be properly configured." msgstr "Your organization does not seem to be properly configured." -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "" @@ -639,33 +643,33 @@ msgstr "" msgid "template with customisations by the" msgstr "" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" msgstr "" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "" -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "" @@ -683,7 +687,7 @@ msgstr "" #: ../../app/controllers/registrations_controller.rb:61 msgid "Please select an organisation from the list, or choose Other." -msgstr "" +msgstr "Please select an organization from the list, or choose Other." #: ../../app/controllers/registrations_controller.rb:74 msgid "That email address is already registered." @@ -863,7 +867,7 @@ msgstr "" #: ../../app/controllers/super_admin/orgs_controller.rb:137 msgid "An error occurred while trying to merge the Organisations." -msgstr "" +msgstr "An error occurred while trying to merge the Organizations." #: ../../app/controllers/super_admin/orgs_controller.rb:141 msgid "Unable to merge the two Organisations at this time." @@ -895,7 +899,7 @@ msgstr "" msgid "merge" msgstr "" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "" @@ -954,19 +958,19 @@ msgid "" "ot to duplicate too much text." msgstr "" -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "" @@ -1082,7 +1086,7 @@ msgstr "Grant API to organizations" #: ../../app/helpers/perms_helper.rb:17 msgid "Review organisational plans" -msgstr "" +msgstr "Review organizational plans" #: ../../app/helpers/plans_helper.rb:8 #: ../../app/views/paginable/plans/_index.html.erb:8 @@ -1112,7 +1116,7 @@ msgid "Public" msgstr "" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "" @@ -1125,7 +1129,7 @@ msgid "Public: anyone can view." msgstr "" #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "" @@ -1503,23 +1507,35 @@ msgstr "" msgid "can't be larger than 500KB" msgstr "" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "organizational" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "" @@ -1575,39 +1591,39 @@ msgstr "generate_copy! requires an organization target" msgid "Copy of %{template}" msgstr "" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "customize! requires an organization target" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "" -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "" -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "" -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "" -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "" -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "" @@ -1796,11 +1812,11 @@ msgstr "" msgid "invalid JSON" msgstr "" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "upgrade_customization! requires a customized template" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1876,7 +1892,7 @@ msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1913,11 +1929,11 @@ msgid " by %{user_name}" msgstr "" #: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " +msgid " questions from your plan." msgstr "" #: ../../app/views/answers/_status.html.erb:15 -msgid " questions from your plan." +msgid "This answer removes " msgstr "" #: ../../app/views/answers/_status.html.erb:21 @@ -2424,6 +2440,8 @@ msgid "" "Changing your organisation will result in the loss of your administrative priv" "ileges." msgstr "" +"Changing your organization will result in the loss of your administrative priv" +"ileges." #: ../../app/views/devise/registrations/_personal_details.html.erb:43 #: ../../app/views/org_admin/users/edit.html.erb:31 @@ -2529,7 +2547,7 @@ msgid "" msgstr "" #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -2853,50 +2871,50 @@ msgstr "" msgid "%{application_name}" msgstr "" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" +#: ../../app/views/layouts/application.html.erb:92 +msgid "Notice:" msgstr "" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Notice:" +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" msgstr "" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "" -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "" -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "Select an organization from the list." -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "My organization isn't listed" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "" -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "" -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." @@ -2904,38 +2922,38 @@ msgstr "" "Unable to find a suitable template for the research organization and funder yo" "u selected." -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "Please select a research organization and funder to continue." -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "" -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "" -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "" -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" "ons." msgstr "" -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "" -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "" @@ -3272,11 +3290,11 @@ msgid "Feedback requested" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" +msgid "Notify the plan owner that I have finished providing feedback" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Notify the plan owner that I have finished providing feedback" +msgid "Complete" msgstr "" #: ../../app/views/org_admin/plans/index.html.erb:39 @@ -3312,11 +3330,11 @@ msgid "" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:4 -msgid "Question %{number}:" +msgid "New question:" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:4 -msgid "New question:" +msgid "Question %{number}:" msgstr "" #: ../../app/views/org_admin/questions/_form.html.erb:15 @@ -3428,6 +3446,8 @@ msgid "" "Click the links below to view organisational guidance\n" " related to the themes associated with this question." msgstr "" +"Click the links below to view organizational guidance\n" +" related to the themes associated with this question." #: ../../app/views/org_admin/questions/_show.html.erb:169 msgid "" @@ -3441,6 +3461,8 @@ msgid "" "There is no organisational guidance related to the themes associated with this" " question." msgstr "" +"There is no organizational guidance related to the themes associated with this" +" question." #: ../../app/views/org_admin/questions/_show.html.erb:182 #: ../../app/views/org_admin/questions/_show.html.erb:194 @@ -3502,7 +3524,7 @@ msgstr "" msgid "for internal %{org_name} use only" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:32 +#: ../../app/views/org_admin/templates/_form.html.erb:38 #: ../../app/views/org_admin/templates/_show.html.erb:13 #: ../../app/views/paginable/guidance_groups/_index.html.erb:7 #: ../../app/views/paginable/guidances/_index.html.erb:9 @@ -3512,7 +3534,7 @@ msgstr "" msgid "Status" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:37 +#: ../../app/views/org_admin/templates/_form.html.erb:43 #: ../../app/views/org_admin/templates/_row.html.erb:16 #: ../../app/views/org_admin/templates/_show.html.erb:26 #: ../../app/views/paginable/guidance_groups/_index.html.erb:24 @@ -3522,17 +3544,17 @@ msgstr "" msgid "Unpublished" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:39 +#: ../../app/views/org_admin/templates/_form.html.erb:45 #: ../../app/views/paginable/templates/_history.html.erb:19 msgid "Draft" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:46 +#: ../../app/views/org_admin/templates/_form.html.erb:52 #: ../../app/views/org_admin/templates/_show.html.erb:41 msgid "Created at" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:52 +#: ../../app/views/org_admin/templates/_form.html.erb:58 #: ../../app/views/org_admin/templates/_show.html.erb:43 #: ../../app/views/paginable/guidance_groups/_index.html.erb:9 #: ../../app/views/paginable/guidances/_index.html.erb:10 @@ -3540,22 +3562,22 @@ msgstr "" msgid "Last updated" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:64 +#: ../../app/views/org_admin/templates/_form.html.erb:70 #: ../../app/views/paginable/templates/_publicly_visible.html.erb:10 msgid "Funder Links" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:67 +#: ../../app/views/org_admin/templates/_form.html.erb:73 msgid "" "Add links to funder websites that provide additional information about the req" "uirements for this template" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:73 +#: ../../app/views/org_admin/templates/_form.html.erb:79 msgid "Sample Plan Links" msgstr "" -#: ../../app/views/org_admin/templates/_form.html.erb:76 +#: ../../app/views/org_admin/templates/_form.html.erb:82 msgid "Add links to sample plans if provided by the funder." msgstr "" @@ -3706,7 +3728,7 @@ msgstr "" #: ../../app/views/orgs/_external_identifiers.html.erb:50 msgid "Organisation Lookup" -msgstr "" +msgstr "Organization Lookup" #: ../../app/views/orgs/_external_identifiers.html.erb:69 msgid "" @@ -3737,13 +3759,15 @@ msgstr "" #: ../../app/views/orgs/_merge_form.html.erb:3 msgid "Merge Organisations" -msgstr "" +msgstr "Merge Organizations" #: ../../app/views/orgs/_merge_form.html.erb:7 msgid "" "Please select the Organisation that will replace the current organisation: '%{org_name}'." msgstr "" +"Please select the Organization that will replace the current organisation: '%{org_name}'." #: ../../app/views/orgs/_merge_form.html.erb:8 msgid "" @@ -4245,11 +4269,11 @@ msgid "Create a new plan" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:13 -msgid "Sample Plans" +msgid "(if available)" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:13 -msgid "(if available)" +msgid "Sample Plans" msgstr "" #: ../../app/views/paginable/templates/_publicly_visible.html.erb:47 @@ -4560,15 +4584,15 @@ msgstr "" msgid "Funding status" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:181 +#: ../../app/views/plans/_project_details.html.erb:180 msgid "Grant number/url" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:195 +#: ../../app/views/plans/_project_details.html.erb:194 msgid "Grant number:" msgstr "" -#: ../../app/views/plans/_project_details.html.erb:199 +#: ../../app/views/plans/_project_details.html.erb:198 msgid "" "Provide a URL to the award's landing page if possible, if not please provide t" "he award/grant number." @@ -5143,6 +5167,9 @@ msgid "" "double check that your organisation does not appear in the list in a slightly " "different form." msgstr "" +"A new entry will be created for the organization you have named above. Please " +"double check that your organization does not appear in the list in a slightly " +"different form." #: ../../app/views/shared/org_selectors/_local_only.html.erb:48 msgid "The name you entered was not one of the listed suggestions!" @@ -5620,11 +5647,11 @@ msgid "New API Client" msgstr "" #: ../../app/views/super_admin/api_clients/refresh_credentials.js.erb:1 -msgid "Successfully regenerated the client credentials." +msgid "Unable to regenerate the client credentials." msgstr "" #: ../../app/views/super_admin/api_clients/refresh_credentials.js.erb:1 -msgid "Unable to regenerate the client credentials." +msgid "Successfully regenerated the client credentials." msgstr "" #: ../../app/views/super_admin/notifications/_form.html.erb:20 @@ -5755,6 +5782,8 @@ msgid "" "Something went wrong and we were unable to analyze a merge between these two o" "rganisations." msgstr "" +"Something went wrong and we were unable to analyze a merge between these two o" +"rganizations." #: ../../app/views/super_admin/orgs/new.html.erb:4 msgid "New organisation" @@ -5853,6 +5882,8 @@ msgid "" "The graphs display new users and plans for your organisation over the past yea" "r. You can download a CSV report for each graph." msgstr "" +"The graphs display new users and plans for your organization over the past yea" +"r. You can download a CSV report for each graph." #: ../../app/views/usage/_user_statistics.html.erb:12 msgid "" @@ -6049,19 +6080,19 @@ msgid "Hello %{recipient_name}," msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " is creating a Data Management Plan and has answered " +msgid " to " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " to " +msgid " based on the template " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " in a plan called " +msgid " is creating a Data Management Plan and has answered " msgstr "" #: ../../app/views/user_mailer/question_answered.html.erb:5 -msgid " based on the template " +msgid " in a plan called " msgstr "" #: ../../app/views/user_mailer/sharing_notification.html.erb:5 @@ -6129,7 +6160,7 @@ msgstr "" #: ../../app/views/users/_admin_grant_permissions.html.erb:39 msgid "Allows the user to review plans submitted by organisational users" -msgstr "" +msgstr "Allows the user to review plans submitted by organizational users" #: ../../app/views/users/_admin_grant_permissions.html.erb:41 msgid "Review plans" @@ -6201,17 +6232,19 @@ msgid "" "Below is a list of users registered for your organisation. You can\n" " sort the data by each field." msgstr "" +"Below is a list of users registered for your organization. You can\n" +" sort the data by each field." #: ../../app/views/users/admin_index.html.erb:22 msgid "Download users" msgstr "" #: ../../app/views/users/refresh_token.js.erb:1 -msgid "Successfully regenerate your API token." +msgid "Unable to regenerate your API token." msgstr "" #: ../../app/views/users/refresh_token.js.erb:1 -msgid "Unable to regenerate your API token." +msgid "Successfully regenerate your API token." msgstr "" #: i18n_placeholders.rb:4 diff --git a/config/locale/es/LC_MESSAGES/app.mo b/config/locale/es/LC_MESSAGES/app.mo index 8efd84aaa617f53c970fc491ab982a877467407d..45f8cb15151a94436349e653516ff8a4939f0b61 100644 GIT binary patch delta 20618 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 C4DH4M delta 20582 zcmY-1b$k^^+yC+1gNEQ9B!WXo2niBG&_HnsPJ##5V#PVdTCCXO?ogyy3q^{{4HOC# zDOO5>qNTXY^ZB0H-ygreUOexaIlHqn*IYAu61blw%l-aY=I8x0bMjdh|NWBOvhrZ^ zLYCDyrDZ*;qgKm`?qpdbY|AQ#b8$y!%Sums!>*Q<8{1+=9EN@Qd@|0X{;8W~<-ob! z&F7mj8}$R2882ZC%ko+eD3qolvWI2m!mh|ztTC7u$73L_#HGq$p1=IGltdkgw zlNi7wtVn%uZ_7%9J8%Xb#I4x0k7cdH)L&{~Ud!4>Ar%dWQ62w^0eBVt@Fixz&zKQ2 z^tG&|7>t?l0BUBxqh@yBt$)DO)HC<9tQ43V>tP7i!alg1=UY1|_+zX7=7z4Q(DlWf zI01Lyax8-h11zfwPDc&wcg%#hFa}>@0gM=ESp~5v&cI>#9j5<^WyOW)Weuzg6dq&V zL4@8zNC%rpWEx7D_F&A8VW2uwre&}vi!4`CEu$7Gmkn7Kb2mZn~C z81av#kVu0DG8fC@U#J=69Bx_RSOG_2PfSgy9^)A5ufMgd{WxsAnLz9W6WY*;Bp~er zQ8OJd$+Et{jaUg^U>+VWM#-DIKUU%Ck5I5B~qdI6c#U$lIEJA%Z zD%ozMKmO;|-@B%qYL+sSYcWjAb#Yz_N{)u8kTr8Z_!84oAK}&~V@m4tFcmI!>uXUD z+=RM*H!2rSpdN6|^}gHw3bk~prPfu-=E z+x{9g^Au!QCd`QCF&}CP+n{o13>L%rs0klIwzbzfNg)dj4^RX6gb|q4F*B=<8bCa1 zhHc$?Z`2HjqXsqsNdxOShN^w0XQ9g{TJ;y2f!{%I z4jP_Q$c+Ar%m;y(fqHRN$YXIF)w=8sK{(WZP)FX5u=xIIAJZ+ z=V41NYY>)NO8nK~1{ySgORf(vEA@|90W&Y-6vKwt5m#e<^j~gS%`pLW{Z<@;$52UG zWd&i!x)_dqummnf<;3X~#D6q}cQoX|5i5=JQAxN1wTAalYyAwBz1AwT<|#3aO|(!; zmTR?X&xcv4hr0DjsEO9ZudqMr`UhSLzK&7ZY^^aPPlsyHi3PBb+g`_QZ-%^4hJZ_}=714pe9h zVG*o_%9(x`griZrWjSh~KcKRIH>Se#rrm2@qoB3AZyKx@7){+?XF?f+e$?Yo*VRMi zN()qS^+3&VIBE$UR0KAo?)wcju*(>N_fgmTuh&Fa|9liQ!;)AKE1@3H2{rP;s9i7) z{c)!2Qn!5rYDT-=`XN+*=P)Jyh3e-nrok7eWc`dqc)pc&gZZXY0sW~bqDI;U)8Yiw z17>4tT#Q9=4d%zQZu?8rQhvg!n0ce=uPFvoZ;vN&G#119Kd}GPQ5Zs@5`K$%z%f*a z&fs9Yi)pdlCUcVY!t~U~ptjo#)Y+eQvuO{+6x72|ITD46L^D*fwnp{WVKebp^7NrW zA)kwy!Fp7v_PL%w-EaYwq<^D2{D_KJ@-1eD8BzU|bghO8b#qj|Jy8St8kM9gwh(`H zbchCx_yj5v@a;q(B!roC7^q_C?9L{j-oqje+^d;)S+pqxsjNy14Gh*7ECMWWuW)_7VY~Gx1 zeGy^M(yc`0))rLm>_WDw*E&u?BfW>}@C~XXzujgjGNOliAm+pn)O9hK3+tdB(Al*= zDuQ35uA7Bg($%O3|A-pMA?5P}hA%%{cX5 z6PawN&vT-7LtY$(MX?sH$GZ3u|G}#JI3@M@e&S!6!Y>rkvu4jRhPvmV`AMY$cB4KC zJK;+lgNcXCKyTm_?u$EYSq*4EcZ4m5`Hq?&!KR{?;xuZBZ(#vF2Q|=~|0Didn*#qc z-+m)eGpmc)uq7&_ecbl(s8G&A-S@p)-+>D4N!RPBUGN{OAJ1`<3pr8u6~$02dz|=d zgh@0^!NI5jq&i{Dim9oGph8>>we}@Y9aVI#>zd%&)%7d%+3+nof7>(P|A0J^Fe1j>` zo9tKfx=e$LL{Zd$Dq;}U$K2Q(HS&q5tY3f{$W~Mi?ZV&i3AV!hr`%*bZI-quYL~>J z`boqH?f;$>^ngXE5%0wGxDU0~r%|E)8@a)Hf_iWWPxB2Jwbm6;4~R!y-woB@AXKDA z;6VHq7vo0^(*9p~#)Ntgs-xqW2d|+zdW*?0)mgI?{-};KVtUN(S`af*FNJBbx@#lM zK)tQ|c^}uW^*PVCrc=;^7Ncgo0X5?NsI@k_%d!RQngpUh2=>&og>2o9$E(^+7D^#srMOK3Ec$y6xw% z67{>NP#3;JhI6ErMm>1rRr7seA8NpNP}eu*u#z-LsXy#CkREJmGl1+f5zqaxE7 zbwf8SjssDz-Q}oA{DOMWY1D(xqayM*mdF24ITCu^3@`$9UsYsDy;friO1eZ;2c1w4 z>W>9+DJn;fx}RS_J>V8;9is|PoyppL&pZL`rBjuTyXVkGr@*c5aBW3s(3>cQhsxiTAb;0DyLIgHAk z^Qfi$%k?qpz7PKpe{GL+#7h?hV@C{k>kcMRUxq311FFMh_c*jL1D?ebsF^RkZz8u3 zHL-V?3bQ;g1Imql)I(9ZQThS#PeY+L4MnjjDpX$7ejbmS$wIfj0TsgisF_}JKmQLk zqtB>`WPE7eA%Um|mPbXnx?69Ky1u=af0@ZQKfBAh7{p7$j)Ym>X_iaN>=pa@^?>P#(A=7_mM)^?n7}Ut?V0vuo zws*t~)CZzMI1Y>9d{hLFU|ReSQ{V?oj-Dr`o(k1pI%L3JD-Q+T5RSF6JnDvTP#sJ{ zEyZ*!j;runJck-!!c$I74|#(c(6Z;|`t7I)oj@(gSyV3Ezzld71GWEOQ_z}ce_=)z zgr}&7<7WJT3hl<1=9fqNP&57y^?+Qj%=ICtj{id?-)GdW$obj~JRG$YiC7RjV@d7* z$rMtuR(o*~^&@Xg2T5G7`O7i^&vp;{sHOR$~DEfT8$5xBUg`K_9R?+V7bS_C(F}f2arki5kFd)Y85| zC3A`oW@7nJ11bN3`0IgH-G6vI3}&a^1H*ANY6-WXX1WX2 z?@_n?GzL$Z z9(7%1)P1!v7Mr4W#|+d`?m-<`cf1rXQb=vtz7XEP-PB*=7II>XZTprWDVgnixlF}q zKHrb!@huj>(#dUK#|e0b`WPIEO;Xs_MEo6fUmFrl_szi|`uF}$K{I-u%JzL#icM|% z&ibvW5#PbKn8DAsE?^(rhSmACCwXYS#W;NKZ~L;pY+Bp5wlz>Mnfj<1_roAufO?ng z#**6qk10gZ5S-3@5RWaWk40tqb^HR;a4ZhMc$~w?kD?yjCZqX$IhLk=AG2amCfoNV zwG`%{-V8@$Z`2Y!#Q^R9_Y@k?kS((bbtlw}r=uS56f0rrEVgeg2VyzuTTu~ugi5;X zS#4kT=R+l55oC3&2<$?=R5sf>j|)))>6_iQzUTSY3ku4{#W}bEH=wrBW>m-9T@Rv? z?lda*?5Y z8c;se07`k?LLJo1JD{?4IO?0xOw>zd4eF@gfjU}`qO$l3=EU2m1Lq^^{?x&?@9%tr zu{-r`SOEh=Oj5VP$JD(`DQL!1^Vz;5at^A4?WiR=jsL^vsN~s`-}e2U@HXzDzJp)r z+{OU~ZL1l!EM%5yGghX41vRkTg^h(!6Do-$t=FnTLEEc3ZpCrf8KaAsEM0=?_!=f) zR8iAD1(mEPu?kwnY~Q=0Dr(zqLT$6>sQbSPHA#F5L#cnjR@(nXirc=wlNpD@^#Llo zhlCL#_V0RBa?LMc`+g3%jM_d{gz2aPYWH-*$~Yet>Z{lq14`Ofb@~~EYX2qDO!&Rj z{x2V8&gx-UmHIo>3@Vhetx-4%HGpLNt)Wi1s#p#OV@KSI>NrOk+xL6ErkJ1la@0hQ zVlRAyO480{%~JG0-}nEoC}>TlqC&L<%i=2>gyGTV-LM*aP|s7&EY*0dPQ84L?fZqo zDAZD(LA_HlmNyY=iNVyr#zb6(G5E1O`+q!z=vZ@r9KhVvZ(#@gj7_jZ1+%Sopt62H zY7I}IBJ~Q(U`$05nZ8($`g%-;Z&BO%BWkxKt7Q7iQ^{+xzo6R?hRXUfs9lhV+IIa> z**_W!;W|{r&Y}*Wo2ctQp!R>(%I2ufi`reqP}fJI&V#C`^QMKDg4U$1+t3kpLl4Y@ z{ZR+bG}M{C7>nUa)V6wsI??PZ=Du{OjO?(^n)xM6 z<9q*8(1=sANp+z=YUH_4p$$fLSlqP~YRzL&Gi&a)w?XAjXVilxq1Jpc=EEOQ6FQ4Z z;^&xK`~M>abrkT0c~CIwT~Guyv#O{8HbxDs1?s?Q<9toq^l2 zVr|-N+$yXZLTxlik{|Ce$>%KEmooQ5?G%r>gs(1fr9YFiCNCE0h_374Ug zDOJ3AjmDw&c>*d|+Mv#n;aCOdqL%gwYUcOxH9n8`@^za5JZxl6vNcW2_V^baE_j0{ zadK1JI*l!wnI$RQ+(alE)p2Fi!O{TrfUc;u?}u8#(RdjhRBrTYVFv!Smx5+C2Q}jL zr~~8}YOT+pPO^*G5DT>AOCt_MC1+5Axjq!LQ!j<;rw;DNE~uAPkwnu^C)5D8xq6RM zP>3$0j?mn#jE!&s^$9o+3$`{dr+rwRx~C2Mm&nz`5$wB8ZOy*E)!xkfEov$JI+(RC zj2c)hMqvx&bFVd-LO~kVVF;eVI`|B=rWKP+gsP%mF3qq8&c=BB6E*ONjwT7apk6NX zaSUF-bA+m8C)=7!y?9^SI)O*mQ4N3W7^F9jvfIaCMtQAhGS zR92@QYDQiVHJ}=(>pP%kG6e7AQjErl!^{H?;V9}Cu{O3CZrWF%2E2VZ`(GU$r9nw` z9V0OR2=jm@Sdw}V)D4R;3^$_Ag{!CmJxAq0`jI9=)lm_RM@^^=>cHuPdYg{LkvL-{ z`(N3e35()-9EKOL1jc`D)_RodL2N>MvQZ|O=)OII+H_ zREWo;l4>66{k{Pg;z88Xw4G>Mvv4*hVDU-5Wb|6!Qc!kI!D%=LwN^zY6B%Y)0rh#E z?|8Xj6I8AoMkQ~WDJE9}T}xve?RBvkPQw9s7u#T~skZOmjO|9>@Bgw)v#p=_AQCmh zdsqbDU{ws6Zq~LV#!z2|8}SGVLT%60sF44RO0tt~`z6#s@1r7DV77U1m}@Mi zpuG-ybz?jQ?c>&{(2qrB={y{WTd*}2o?{+74)x$U7>w&sNqQ2sBo9$Z{n@Rjn`;Ib zf+4hrVP$MEm;JAfrqQ68uRz_n7qtt1MJ3r~R0v<8uK$RNP{w(to(n5e4@1qkH)?wg zavhDD*mtOYm!qDyX&(DLAB7V%Xf6MBFUUOKoP0r8nD%JY4ed}59)?=Wai{}oCTd_u zQ3u*(R0N;6?Wq@->vN+{)MBW}$9XAaqtF1grkzkT9fXR+NYscYqdK04<#019NgueM zXIW^LFc>wE8mLGlpaz_TVb}|Guq|*u_nxGnj?ZIFe25BNsYT`ojY@ckdUwV^Hl?F+@XYNI`4W&vhaOP+#uW z_n>Be9`oZz)PO>kn`|$F%Ia9uE@*?1I1;sVTksC<#lg68h1pekSK8KZ3WYcH`=F-sAM5!8#I?rVu!`*v6yr(jXsjb3H_ z9SXjqbglUrE)ca=6|frCM)UJ#5x`oE5we602@Cdg)6*bc3r~zz49Y{M-FRPo_4WFX2I&rhv zMcq&l>4)lX2r6QeP?4F1>eoA$f;##hN8?Uxhp}7q>oLA^;d^|Cqwv*M^OhUDjbA#k zWItoH+J7|Pl1uz#e%n0=lW4zz<1uc#>F-y(&3#38_+I1u`;VQr)sG9B;1_rdwN~kO znGqJk=G;&g6~d{z%}f`fmSUY-KZXkF1=P9l2$iI%_L%;%qb3@TTB3@WOZ&e$1+95M z)Ys`Lt{YIvbOIH^8(0jVq6V1f7xSZ7Db&*a>G~8E`s91fZt+Lmp9K~2g05wx_J0kx zp#|!~Zm5%R7-~ji-S!2p8{PJOs5QTcTHD)h`(wABVxP&G45cq`P#xaJ%J>Ww@~Hi0TUJJev@R<2iKs{nMh$ct7R5DK9M8J#pD-WwYzNGCjmBow z;|{R@pHrAmLrYzw<$ZW5|sBKdVW3Vk2!uhCeb^tZAqo@I0LM_RESQ0&l z%~F&?^%INAfkubD=B)2QgJw1kli^I%Qp`nV{W?5|#gCZp3ICxEo~%dBgMzRi^+;5b zwLopxuBcq-?bZjP`W@!_otJ`+!X>ByY(sT$(7oWC`}u9ujNYJ5NdIHzx*Qlny)bG( zwNPu_1U=Xqbz-(d&De{2yUs-|iT4zRh7_J)I9Bz=LmdtC-r=T@ikDB=bR1%&=W%UizHoTA8 zrk_x2o$I7+ZNgC8hgWeoF8I|%s`)9?Pj}R|9*m0cY^;x~FopL23krJRJJ-~wZQnmI z$d1Z|#i&p&M`isg*Mq2m-$2diB`Rq@q6VDzH53GQ?uQis%K^TpjPy@b)H8I6m6M_18o)fh-dUZkM z?0LWU6;WD)Z1Wl{2kk3sQ0p2vq|`jhC`?<-hRdWTCU$!b5#C_!L<8dGizELwSQ}2 zUF?bVa3_|*RM*XK$10+7V;XkDbyyv<{%IoUO`xC%^hWLDm8cVH6KV|)pw|2ZDgrlA zM{LR)rsF_V_D5q0tc*&+FHt$M78CIb>b^36nWe6eMAmC1QOL~)BT=EBk6N?Ms5L%- z%8d)I4^Y>AcI(-0+P?pBS~1kXH)Cf!h?+przs+`w#PifEqiyptx}_Xo|K+%Ce&JXJ zwVl30-MA4oknO00=oo4sXHm)c4@Tf~)b$1Km;r~mRzc-XQ`F4AbRCb1=u*ta^Q|2e z)bT0QcKjRlz|W`%`2AyMkQa4hC~9C;QA^esOERN2sGOK~*PNu=Q2ic4oqT_wlKd`e zTR%pxI(kPz+r|H$ZE<>9fv5`}-Zuky?dt!)_Wh5?f>2A)4?}RgTVIE|Z$E10zoH^~ z7nOvm9-3Vdf;FgDf5`sV0r4FT8sTnKGMzvjEazPRKn?IuRD_`vJ~vC2gjcBd_EJ#CwO*J|wnv>%V^C-KGSm`X z!J_yOOJTN`>>8G;HhxdN^DA?I#@FV7k*IT^E9yX6g2nMFs{hn)Or*SpC}^$1P-|5a zHM6d$2lqoI*%(wvr=XH*IVwUsP!T$e`l4|PHNZ!xenQ@wr3uAB)T1yS*CRRMwLVf% z2RYu^Rxk#m9$W=Aphj+cKh)YfsF%llx4s0!sjo(5{{?K1Z%_wT!h3Tdc`=0g4pbyB zV`}aHWFO4T(xL_ujCxQ}48;i46175YzX5K25++bzf%?Yt3F~5xk7mXlQIYG38qgrr z#4e-ye}E}?zV(!XLiHMTgZ;^TB}g2Q`Bw7>5^81I(4)x4G4y=XOaW)pt;Ia7fWbH*AJX11x z%-^bI@_Kv+M1jm6UnrZS_Gxd_nl8nSxD&NBU9xz5xzG=rP@jmp{ss=fOj$j?FPGn- z26zFr{Q|Oid~e037(x9z%!GTr6m)W(K_%ZGn2(X(#KF{)=kQqfa0E`l&N)5Setd~K zF}DYp`;MSa%+sj$^QdIIh02i^sNLY7%RDavlTr6ZQwX6Di#m$ipbnnN*bR@MMqDDd z30*tX7l^f379XQ#SSXK)SO?SzISiw41?sv>t{L)reE-^}2F7at?==PMJt}LX13kW9 zqjz*&i4|zSjrB1fDXs_hMGbf(>YZ>EbzZ!|N|-a)^w$FYsgFe+P}5M?ZNetn|G!bt z+o?c^$M?706;W@uIj9>qqLyYS>Kr(T`a$IiD&!AP*F8an^aJXIwDOtzvY}pHfo{E| zYYZmi`Bt3UPy=-oH$=^-2P*r=yRLNG_q$$4Mc^GO>x<+!OHdzmRChtG{V>#oW}wcQ zwWuZEioW0fpQoS){)MOTBaX$B15t#Dp(k5vUNg%K!#%#A6RM+<*cO4qQ&YbbHU2ot}+Ka?^e7{3pfr`{~ z)PPEq_gEdUH?~0USqi-<6pJ-UF&8zHUDy?$A``L_Dwu3;joLXm&bsMlIZ;R_m`qGlFd#hg?lFogPY)KVNq&7^2m zk2MuLVKBaQ%^v5mzNTIl+vCrulQma0Gw^(44hLJyBUd%Kdz@`}s`NiMJTD<5ASR<2q{TUZIvY_6xI1hGIVIGtu|&e|At%w*QVg zyKkZ%^aOQqyhoh_>1&vQ6~h$NBVD6WUnnY~I@_d~7S5Vw6iDv6f5?HkhwmWa@B-)LfrgeAN!<=;W*7%JjvhTTMjq^*r z2I+pLHh?v1os6$rPC)(g_5`PC{XzCZ=T!YTzb~~4{MXb8Xpq~lzgrvZRA`XHuH`gs z&^%jx+J5MPtJdF z-5$Gh??nDApq_^{p`s?GwH_L5Lb$T_6vzIwrn(ek%I=z~Q+OwQ_%_rHr zoq{cz+q;|*Ey@Pe<*qZ_krMSI#yxtP!=FXYsTNV0zNK|HH4jeX&m<>P%Ugb}D5cSL z&c~Md^VX)egg^CY>5lrZH|1u`r>|2Xp|IV->6DOUk93YF1ld11_Y(@I8^v`YT-O{M zJ9!g>LV8hZ&7WDcc0v6YOE3TLzv)iv#KQJ>&bY+T6b<-%obyv+P`b91{P}a2XKitA zCT6iGJ1-NH?Cnm=R^{!b&a76u?L;TOb(~)lt}4l&dCsENx$PgEovriRBb@7$lbpA$ zhxu*gvrhc!;f!e0!yfJ2ZxiIVnfe}Lvd78P)@yfjrngP9$2c$BHn3+q)!UV@$2$Yt zeQU39KDJA=r#LO!C)&%MpW4USj`OyCb34I_?@+^T=gjL6YHxCmbSP|hb^hfa*|u~_ zCJjorfxh`c*lNNYJ3BumCE0DZ1$1nAdB?a4_BsF3kzo;0!4c(RA|gX0N=8JaY1kmF rQKzrE_3zfFcUZOd13JY7M@B?Og+=^-*X@{G%Wm*)$J01Zc)I@s+0z6L diff --git a/config/locale/es/app.po b/config/locale/es/app.po index 93de083a58..762dd9226a 100644 --- a/config/locale/es/app.po +++ b/config/locale/es/app.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: roadmap 1.0\n" "Report-Msgid-Bugs-To: contact@translation.io\n" -"POT-Creation-Date: 2023-02-03 09:02+0100\n" -"PO-Revision-Date: 2023-02-03 09:02+0100\n" +"POT-Creation-Date: 2023-04-05 13:01-0700\n" +"PO-Revision-Date: 2023-04-05 22:01+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: Spanish\n" "Language: es\n" @@ -49,21 +49,21 @@ msgstr "Parámetros erróneos" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Mes" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "No. Usuarios unidos" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "Total" @@ -446,7 +446,7 @@ msgstr "No se puede crear una nueva versión de esta plantilla.
" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -458,7 +458,7 @@ msgstr "Actualizado" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -550,7 +550,7 @@ msgid "Unable to delete this version of the template." msgstr "No se puede eliminar esta versión de la plantilla." #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "Dupdo" @@ -614,10 +614,14 @@ msgstr "Por favor elige una organización" msgid "Your organisation does not seem to be properly configured." msgstr "Su organización no parece estar correctamente configurada." -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "Creado usando %{application_name}. Última modificación %{date}" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "[página] de [topage]" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "Esto es un" @@ -651,11 +655,11 @@ msgstr "Este plan se basa en el" msgid "template with customisations by the" msgstr "plantilla con personalizaciones por el" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "copiado" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" @@ -663,23 +667,23 @@ msgstr "" "No se puede cambiar el estado del plan ya que se necesita al menos el porcenta" "je %{percentage} respondido" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "No se puede encontrar la identificación del plan %{plan_id}" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "Tu proyecto es ahora una prueba." -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "Tu proyecto ya no es una prueba." -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "No se puede cambiar el estado de prueba del plan" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "No hay plan asociado con id %{ s" @@ -932,7 +936,7 @@ msgstr "fusionado" msgid "merge" msgstr "Unir" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "" @@ -999,19 +1003,19 @@ msgstr "" "as, se eligirán en función de su slección, por lo que es preferible no duplica" "r mucho texto." -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "Respondiendo" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "enviará un correo electrónico con asunto %{subject_name}" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "eliminará la pregunta" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "eliminará preguntas" @@ -1164,7 +1168,7 @@ msgid "Public" msgstr "Público" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "Privado" @@ -1177,7 +1181,7 @@ msgid "Public: anyone can view." msgstr "Público: cualquiera puede ver." #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "Privado: restringido a mí y a las personas que invito." @@ -1565,23 +1569,35 @@ msgstr "debe ser uno de los siguientes formatos: jpeg, jpg, png, gif, bmp" msgid "can't be larger than 500KB" msgstr "no puede ser más grande que 500KB" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "organizativo" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "Público" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "Prueba" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "Privado" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "debe ser posterior a la fecha de inicio" @@ -1639,39 +1655,39 @@ msgstr "generar_copia! requiere un objetivo de organización" msgid "Copy of %{template}" msgstr "Copia de %{template}" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "generar_versión! requiere una plantilla publicada" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "personalizar requiere un objetivo de organización" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "personalizar requiere una plantilla de un financiador" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "No se puede publicar una plantilla publicada." -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "No se puede publicar una versión histórica de esta plantilla." -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "No puedes publicar una plantilla sin fases." -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "No se puede publicar una plantilla sin secciones en una fase." -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "No se puede publicar una plantilla sin preguntas en una sección." -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "Las condiciones en la plantilla se refieren al revés" @@ -1870,11 +1886,11 @@ msgstr ": se requiere título para cada: conjunto de datos" msgid "invalid JSON" msgstr "JSON inválido" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "actualización de personalización! requiere una plantilla personalizada" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1954,7 +1970,7 @@ msgstr "Por favor espere, los estándares se están cargando." #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1990,14 +2006,14 @@ msgstr "Contestada" msgid " by %{user_name}" msgstr " por %{user_name}" -#: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " -msgstr "Esta respuesta elimina" - #: ../../app/views/answers/_status.html.erb:15 msgid " questions from your plan." msgstr " preguntas de tu plan." +#: ../../app/views/answers/_status.html.erb:15 +msgid "This answer removes " +msgstr "Esta respuesta elimina" + #: ../../app/views/answers/_status.html.erb:21 msgid "This answer triggers email(s) to " msgstr "Esta respuesta activa los correos electrónicos a" @@ -2656,7 +2672,7 @@ msgstr "" "n del plan." #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -2994,50 +3010,50 @@ msgstr "Cerrar Sesión" msgid "%{application_name}" msgstr "DMPonline" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" -msgstr "Error:" - -#: ../../app/views/layouts/application.html.erb:91 +#: ../../app/views/layouts/application.html.erb:92 msgid "Notice:" msgstr "Darse cuenta:" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" +msgstr "Error:" + +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "Cargando..." -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "Este campo es requerido." -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "Mostrar contraseña" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "Seleccione una organización de la lista." -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "Mi organización no está en la lista" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "N / A" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "Ocultar lista" -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "Vea la lista completa de instituciones asociadas." -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." @@ -3045,29 +3061,29 @@ msgstr "" "No se puede encontrar una plantilla adecuada para la organización de investiga" "ción y el financiador que seleccionó." -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "" "Por favor seleccione una organización de investigación y financiador para cont" "inuar." -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "Cargando ..." -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "No se puede cargar el contenido de la sección en este momento." -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "No se puede cargar el contenido de la pregunta en este momento." -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "Se abre en una nueva ventana" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" @@ -3077,11 +3093,11 @@ msgstr "" " abajo para navegar por las sugerencias. Use la tecla Intro para seleccionar u" "na sugerencia o la tecla Escape para cerrar las sugerencias." -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "No hay resultados disponibles para su entrada." -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "Buscando ..." @@ -3427,14 +3443,14 @@ msgstr "Acciones" msgid "Feedback requested" msgstr "Feedback solicitado" -#: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" -msgstr "Completar" - #: ../../app/views/org_admin/plans/index.html.erb:29 msgid "Notify the plan owner that I have finished providing feedback" msgstr "Notificar al propietario del plan que he terminado de proporcionar comentarios" +#: ../../app/views/org_admin/plans/index.html.erb:29 +msgid "Complete" +msgstr "Completar" + #: ../../app/views/org_admin/plans/index.html.erb:39 msgid "" "Download plans (new window)Info: Simple information message, displayed in blue.
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 diff --git a/config/locale/fi/app.po b/config/locale/fi/app.po index 2c3379e9dd..5f009cd9b0 100644 --- a/config/locale/fi/app.po +++ b/config/locale/fi/app.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: roadmap 1.0\n" "Report-Msgid-Bugs-To: contact@translation.io\n" -"POT-Creation-Date: 2023-02-03 09:02+0100\n" -"PO-Revision-Date: 2023-02-03 09:02+0100\n" +"POT-Creation-Date: 2023-04-05 13:01-0700\n" +"PO-Revision-Date: 2023-04-05 22:01+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: Finnish\n" "Language: fi\n" @@ -51,21 +51,21 @@ msgstr "Virheelliset parametrit" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Kuukausi" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "Liittyneet käyttäjät" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "Yhteensä" @@ -446,7 +446,7 @@ msgstr "Tästä mallista ei voi luoda uutta versiota.
" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -458,7 +458,7 @@ msgstr "päivitetty" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -548,7 +548,7 @@ msgid "Unable to delete this version of the template." msgstr "Tätä mallin versiota ei voi poistaa." #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "kopio" @@ -612,10 +612,14 @@ msgstr "Valitse organisaatio" msgid "Your organisation does not seem to be properly configured." msgstr "Organisaatiotasi määrittelyssä on ongelmia." -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "Luotu käyttäen DMPTuulia. " +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "[sivu] / [toppage]" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "Tämä on" @@ -649,11 +653,11 @@ msgstr "Suunnitelma perustuu" msgid "template with customisations by the" msgstr "malli asiakassuhteiden mukauttamisella" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "kopionti" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" @@ -661,23 +665,23 @@ msgstr "" "Suunnitelman tilan muuttaminen ei onnistunut, koska vähintään %{percentage}:a " "vastauksista pitää olla vastattuna" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "Suunnitelman tunnistetta %{plan_id} ei löydy" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "Projektisi on nyt testimuodossa." -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "Projektisi ei ole enää testimuodossa." -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "Suunnitelman testistatuksen muuttaminen ei onnistu" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "Tunnukseen %{ ei liity suunnitelmaa s" @@ -922,7 +926,7 @@ msgstr "yhdistyivät" msgid "merge" msgstr "yhdistää" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "" @@ -988,19 +992,19 @@ msgstr "" " lteemojen mukaan, nämä tuodaan esiin valintojesi perusteella, joten ei kannat" "a toistaa liikaa tekstiä." -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "Vastaaminen" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "lähettää sähköpostin aiheella %{subject_name}" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "poistaa kysymyksen" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "poistaa kysymyksiä" @@ -1152,7 +1156,7 @@ msgid "Public" msgstr "Julkinen" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "Yksityinen" @@ -1165,7 +1169,7 @@ msgid "Public: anyone can view." msgstr "Avattu: näkyvissä kaikille ilman DMPTuuli-kirjautumista" #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "Yksityinen: rajattu minulle ja kutsumilleni henkilöille." @@ -1552,23 +1556,35 @@ msgstr "täytyy olla yksi seuraavista tiedostomuodoista: jpeg, jpg, png, gif, bm msgid "can't be larger than 500KB" msgstr "ei voi olla suurempi kuin 500KB" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "organisaatiokohtainen" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "julkinen" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "testi" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "yksityinen" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "on oltava alkamispäivän jälkeen" @@ -1624,39 +1640,39 @@ msgstr "kopion_tuottaminen! vaatii organisaatiokohteen." msgid "Copy of %{template}" msgstr "%{template}:n kopio" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "version_tuottaminen! vaatii julkaistun mallipohjan" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "mukauta! vaatii kohteeksi organisaation" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "mukauta! vaatii rahoittajan mallipohjan" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "Et voi julkaista julkaistua mallia." -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "Et voi julkaista tämän mallin historiallista versiota." -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "Et voi julkaista mallia ilman vaiheita." -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "Et voi julkaista mallia ilman osioita vaiheessa." -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "Et voi julkaista mallipohjaa ilman kysymyksiä." -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "Mallin ehdot viittaavat taaksepäin" @@ -1858,11 +1874,11 @@ msgstr ": otsikko vaaditaan jokaiselle: tietojoukolle" msgid "invalid JSON" msgstr "Virheellinen JSON" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "upgrade_customization! vaatii mukautetun mallipohjan" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1942,7 +1958,7 @@ msgstr "Odota, standardit latautuvat" #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1978,14 +1994,14 @@ msgstr "Vastattu" msgid " by %{user_name}" msgstr "%{user_name}" -#: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " -msgstr "Tämä vastaus poistuu" - #: ../../app/views/answers/_status.html.erb:15 msgid " questions from your plan." msgstr " kysymyksiä suunnitelmasi." +#: ../../app/views/answers/_status.html.erb:15 +msgid "This answer removes " +msgstr "Tämä vastaus poistuu" + #: ../../app/views/answers/_status.html.erb:21 msgid "This answer triggers email(s) to " msgstr "Tämä vastaus laukaisee sähköpostit osoitteeseen" @@ -2642,7 +2658,7 @@ msgstr "" "je näkyy, kun he vastaavat kysymyksiin 'Luo suunnitelma' -kohdassa." #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -2977,50 +2993,50 @@ msgstr "Kirjaudu ulos" msgid "%{application_name}" msgstr "%{application_name}" -#: ../../app/views/layouts/application.html.erb:91 +#: ../../app/views/layouts/application.html.erb:92 +msgid "Notice:" +msgstr "Huom!" + +#: ../../app/views/layouts/application.html.erb:92 msgid "Error:" msgstr "Virhe:" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Notice:" -msgstr "Hei!" - -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "Ladataan ..." -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "Tämä kenttä on pakollinen." -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "Näytä salasana" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "Valitse organisaatio listalta." -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "Organisaationi puuttuu listasta" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "Ei käytettävissä" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "Piilota lista." -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "Katso lista partneri-instituutioista." -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." @@ -3028,27 +3044,27 @@ msgstr "" "Valitsemallesi tutkimusorganisaatiolle ja rahoittajalle ei löydy sopivaa malli" "pohjaa." -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "Valitse tutkimusorganisaatio ja rahoittaja ennen kuin jatkat." -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "Latautuu ..." -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "Osion sisällön lataaminen ei onnistu tällä hetkellä." -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "Kysymyksen sisällön lataaminen ei onnistu tällä hetkellä." -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "Avautuu uuteen ikkunaan" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" @@ -3058,11 +3074,11 @@ msgstr "" "ksiin. Käytä Enter-näppäintä valitaksesi ehdotuksen tai Escape-näppäintä sulke" "aksesi ehdotukset." -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "Tuloillesi ei ole tuloksia." -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "Etsitään ..." @@ -3407,14 +3423,14 @@ msgstr "Toiminnot" msgid "Feedback requested" msgstr "Pyydetty palautetta" -#: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" -msgstr "Valmis" - #: ../../app/views/org_admin/plans/index.html.erb:29 msgid "Notify the plan owner that I have finished providing feedback" msgstr "Ilmoita suunnitelman omistajalle, että olen antanut loppupalautteen" +#: ../../app/views/org_admin/plans/index.html.erb:29 +msgid "Complete" +msgstr "Valmis" + #: ../../app/views/org_admin/plans/index.html.erb:39 msgid "" "Download plans (new window)Info: Simple information message, displayed in blue.
b9@pVa$9D0Q-LwUH||9 diff --git a/config/locale/fr_CA/app.po b/config/locale/fr_CA/app.po index 179af06aa9..975026e41b 100644 --- a/config/locale/fr_CA/app.po +++ b/config/locale/fr_CA/app.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: roadmap 1.0\n" "Report-Msgid-Bugs-To: contact@translation.io\n" -"POT-Creation-Date: 2023-02-03 09:02+0100\n" -"PO-Revision-Date: 2023-02-03 09:02+0100\n" +"POT-Creation-Date: 2023-04-05 13:01-0700\n" +"PO-Revision-Date: 2023-04-05 22:01+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: French\n" "Language: fr_CA\n" @@ -51,21 +51,21 @@ msgstr "Mauvais paramètres" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Mois" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "Nombre d’utilisateurs joints" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "Total" @@ -454,7 +454,7 @@ msgstr "" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -466,7 +466,7 @@ msgstr "mis à jour" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -560,7 +560,7 @@ msgid "Unable to delete this version of the template." msgstr "" #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "copier" @@ -624,10 +624,14 @@ msgstr "Veuillez choisir un organisme" msgid "Your organisation does not seem to be properly configured." msgstr "Votre organisme ne semble pas être correctement configuré." -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "Créé(e) avec %{application_name}. Dernière modification : %{date}" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "Il s’agit d’un(e)" @@ -661,11 +665,11 @@ msgstr "Ce plan est fondé sur " msgid "template with customisations by the" msgstr "modèle avec des personnalisations par le" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "copié" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" @@ -673,23 +677,23 @@ msgstr "" "Il est impossible de modifier l’état du plan, car il est nécessaire d’obtenir " "un taux de réponse d’au moins %{percentage}" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "Il est impossible de trouver l’ID du plan %{plan_id}" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "Votre projet est maintenant à l’état d’essai." -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "Votre projet n’est plus à l’état d’essai." -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "Il est impossible de modifier l’état d’essai du plan" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "" @@ -928,7 +932,7 @@ msgstr "fusionné" msgid "merge" msgstr "fusionner" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "" @@ -996,19 +1000,19 @@ msgstr "" "de vos sélections ci-dessous. Il est donc préférable de ne pas dupliquer trop " "de texte." -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "Répondre" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "supprimera la question" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "supprimera les questions" @@ -1161,7 +1165,7 @@ msgid "Public" msgstr "Public" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "Privé" @@ -1174,7 +1178,7 @@ msgid "Public: anyone can view." msgstr "Public : Tous peuvent consulter le plan." #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "Privé : usage réservé à moi et aux personnes que j’invite." @@ -1562,23 +1566,35 @@ msgstr "doit être dans l’un des formats suivants: jpeg, jpg, png, gif, bmp" msgid "can't be larger than 500KB" msgstr "ne peut pas dépasser 500 Ko" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "organisationnel" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "public" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "essai" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "privé" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "doit être postérieur à la date de début" @@ -1636,43 +1652,43 @@ msgstr "un organisme cible est exigé pour generate_copy!" msgid "Copy of %{template}" msgstr "Copie de %{template}" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "un modèle publié est exigé pour generate_version!" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "organisme cible exiger pour personnaliser!" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "un modèle d’un bailleur de fonds est exigé pour personnaliser!" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "Vous ne pouvez pas publier un modèle déjà publié." -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "Vous ne pouvez pas publier une version historique de ce modèle." -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "Vous ne pouvez pas publier un modèle ne contenant pas de phases." -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "" "Vous ne pouvez pas publier un modèle dont une phase ne contient pas de section" "s." -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "" "Vous ne pouvez pas publier un modèle dont certaines sections ne contiennent pa" "s de questions." -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "Les conditions du modèle sont associées à une référence antérieure" @@ -1871,11 +1887,11 @@ msgstr "" msgid "invalid JSON" msgstr "" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "un modèle personnalisé est exigé pour upgrade_customization!" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1956,7 +1972,7 @@ msgstr "Veuillez patienter. Le chargement des normes est en cours." #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1992,14 +2008,14 @@ msgstr "Répondu" msgid " by %{user_name}" msgstr " par %{user_name}" -#: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " -msgstr "Cette réponse entraîne le retrait de" - #: ../../app/views/answers/_status.html.erb:15 msgid " questions from your plan." msgstr " aux questions de votre plan." +#: ../../app/views/answers/_status.html.erb:15 +msgid "This answer removes " +msgstr "Cette réponse entraîne le retrait de" + #: ../../app/views/answers/_status.html.erb:21 msgid "This answer triggers email(s) to " msgstr "Cette réponse déclenche l’envoi de courriels à" @@ -2660,7 +2676,7 @@ msgstr "" "u’ils répondront aux questions de l’assistant « Créer un plan »." #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -3001,50 +3017,50 @@ msgstr "Se déconnecter" msgid "%{application_name}" msgstr "%{application_name}" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" -msgstr "Erreur :" - -#: ../../app/views/layouts/application.html.erb:91 +#: ../../app/views/layouts/application.html.erb:92 msgid "Notice:" msgstr "Remarque :" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" +msgstr "Erreur :" + +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "" -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "Ce champ est requis." -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "Afficher le mot de passe" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "Sélectionnez un organisme dans la liste." -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "Mon organisme n’est pas répertorié" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "S. o." -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "Masquer la liste." -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "Consulter la liste complète des établissements partenaires." -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." @@ -3052,29 +3068,29 @@ msgstr "" "Il est impossible de trouver un modèle approprié pour l’organisme de recherche" " et le bailleur de fonds que vous avez sélectionnés." -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "" "Veuillez sélectionner un organisme de recherche et un bailleur de fonds pour c" "ontinuer." -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "Chargement en cours..." -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "Il est impossible de charger le contenu de la question pour le moment." -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "Il est impossible de charger le contenu de la question pour le moment." -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "S’ouvre dans une nouvelle fenêtre" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" @@ -3084,11 +3100,11 @@ msgstr "" "bas pour parcourir les suggestions. Utilisez la touche Entrée pour sélectionne" "r une suggestion ou la touche Échap pour fermer les suggestions." -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "Votre entrée n’a donné aucun résultat." -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "" @@ -3437,14 +3453,14 @@ msgstr "Actions" msgid "Feedback requested" msgstr "Rétroaction demandée" -#: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" -msgstr "Achevé" - #: ../../app/views/org_admin/plans/index.html.erb:29 msgid "Notify the plan owner that I have finished providing feedback" msgstr "Aviser le propriétaire du plan que j’ai terminé de fournir des commentaires" +#: ../../app/views/org_admin/plans/index.html.erb:29 +msgid "Complete" +msgstr "Achevé" + #: ../../app/views/org_admin/plans/index.html.erb:39 msgid "" "Download plans (new window)jRucTDR325aw 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 Z((TD_dwO;I*3K3!|6e;NRQE>2{Xf&@+z$W% delta 26358 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\n" "Language-Team: French\n" "Language: fr_FR\n" @@ -52,21 +52,21 @@ msgstr "Paramètres erronés" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Mois" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "Nombre d'utilisateurs inscrits" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "Total" @@ -241,7 +241,7 @@ msgstr "L'espace de recherche n'a aucun élément associé" #: ../../app/controllers/contact_us/contacts_controller.rb:13 msgid "Captcha verification failed, please retry." -msgstr "la vérificatio du CAPTCHA a échouée, veuillez réessayer." +msgstr "la vérification du CAPTCHA a échouée, veuillez réessayer." #: ../../app/controllers/contact_us/contacts_controller.rb:18 msgid "Contact email was successfully sent." @@ -453,7 +453,7 @@ msgstr "Impossible de créer une nouvelle version de ce modèle.
" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -465,7 +465,7 @@ msgstr "mis à jour" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -559,7 +559,7 @@ msgid "Unable to delete this version of the template." msgstr "Impossible de supprimer cette version du modèle." #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "copier" @@ -621,10 +621,14 @@ msgstr "Veuillez choisir un organisme" msgid "Your organisation does not seem to be properly configured." msgstr "Votre organisme ne semble pas être correctement configurée." -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "Créé avec %{application_name}. Dernière modification %{date}" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "[page] de [topage]" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "C'est un" @@ -658,11 +662,11 @@ msgstr "Ce plan est basé sur le" msgid "template with customisations by the" msgstr "modèle personnalisé par" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "copié" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" @@ -670,23 +674,23 @@ msgstr "" "Impossible de changer le statut du plan, au moins %{percentage} % de questions" " répondues sont nécessaires" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "Impossible de trouver le plan avec l'identifiant %{plan_id}" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "Votre projet est maintenant un test." -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "Votre projet n'est plus un test." -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "Impossible de changer le statut du plan" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "Il n'y a pas de forfait associé à l'identifiant %{ s" @@ -939,7 +943,7 @@ msgstr "fusionné" msgid "merge" msgstr "fusionner" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "Nombre de plans créés" @@ -1006,19 +1010,19 @@ msgstr "" "e que sélectionnez ci-dessous, aussi mieux vaut éviter de dupliquer trop dextr" "aits." -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "Répondre" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "enverra un e-mail avec l'objet %{subject_name}" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "supprimera la question" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "supprimera les questions" @@ -1171,7 +1175,7 @@ msgid "Public" msgstr "Public" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "Privé" @@ -1184,7 +1188,7 @@ msgid "Public: anyone can view." msgstr "Public : visible par tous." #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "Privé : accès restreint aux personnes que j'invite." @@ -1573,23 +1577,35 @@ msgstr "doit être dans l'un des formats suivants : jpeg, jpg, png, gif, bmp" msgid "can't be larger than 500KB" msgstr "ne peut peser plus de 500ko" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "organisme" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "public" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "test" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "privé" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "Planifié" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "Financé" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "Refusé" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "doit être postérieur à la date de début" @@ -1647,39 +1663,39 @@ msgstr "generate_copy! nécessite un organisme cible" msgid "Copy of %{template}" msgstr "Copie de %{template}" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "generate_version! nécessite un modèle publie" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "customize! nécessite un organisme cible" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "customize! nécessite le modèle d'un financeur" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "Vous ne pouvez pas publier un modèle publié." -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "Vous ne pouvez pas publier une ancienne version de ce modèle." -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "Vous ne pouvez pas publier un modèle sans phases." -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "Vous ne pouvez pas publier un modèle sans sections dans une phase." -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "Vous ne pouvez pas publier un modèle sans questions dans une section." -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "" "Les conditions du modèle s'appliquent à une question positionnée avant celle-c" @@ -1878,11 +1894,11 @@ msgstr ":title est requis pour chaque :dataset" msgid "invalid JSON" msgstr "JSON non valide" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "upgrade_customization! nécessite un modèle personnalisé" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1962,7 +1978,7 @@ msgstr "Merci de patienter, les standards sont en cours de chargement" #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1998,14 +2014,14 @@ msgstr "Répondu" msgid " by %{user_name}" msgstr " par %{user_name}" -#: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " -msgstr "Cette réponse supprime" - #: ../../app/views/answers/_status.html.erb:15 msgid " questions from your plan." msgstr " questions de votre plan." +#: ../../app/views/answers/_status.html.erb:15 +msgid "This answer removes " +msgstr "Cette réponse supprime" + #: ../../app/views/answers/_status.html.erb:21 msgid "This answer triggers email(s) to " msgstr "Cette réponse déclenche l'envoi d'e-mail(s) à" @@ -2665,7 +2681,7 @@ msgstr "" "lorsqu'ils répondront aux questions dans l'onglet 'créer un plan'." #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -3004,50 +3020,50 @@ msgstr "Déconnexion" msgid "%{application_name}" msgstr "%{application_name}" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" -msgstr "Erreur :" - -#: ../../app/views/layouts/application.html.erb:91 +#: ../../app/views/layouts/application.html.erb:92 msgid "Notice:" msgstr "Note :" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" +msgstr "Erreur :" + +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "Chargement..." -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "Ce champ est obligatoire." -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "Afficher le mot de passe" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "Sélectionner un organisme dans la liste." -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "Mon organisme n'est pas dans la liste" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "N/D" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "Cacher la liste." -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "Voir la liste des institutions partenaires." -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." @@ -3055,29 +3071,29 @@ msgstr "" "Impossible de trouver un modèle approprié à l'organisme de recherche et au fin" "anceur que vous avez sélectionnés." -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "" "Veuillez sélectionner un organisme de recherche et un financeur pour continuer" "." -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "Chargement ..." -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "Impossible de charger le contenu de la section pour le moment." -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "Impossible de charger le contenu de la question pour le moment." -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "Ouvre une nouvelle fenêtre" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" @@ -3087,11 +3103,11 @@ msgstr "" "ir les suggestions. Utilisez la touche Entrée pour sélectionner une suggestion" " ou la touche Échap pour fermer les suggestions." -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "Aucun résultat n'est disponible pour votre recherche." -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "Recherche..." @@ -3439,16 +3455,16 @@ msgstr "Actions" msgid "Feedback requested" msgstr "Demande d'assistance conseil" -#: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" -msgstr "Terminé" - #: ../../app/views/org_admin/plans/index.html.erb:29 msgid "Notify the plan owner that I have finished providing feedback" msgstr "" "Avertir le propriétaire du plan que j'ai fini de fournir une assistance consei" "l" +#: ../../app/views/org_admin/plans/index.html.erb:29 +msgid "Complete" +msgstr "Terminé" + #: ../../app/views/org_admin/plans/index.html.erb:39 msgid "" "Download plans (new window)Info: Simple information message, displayed in blue.
uEi>j 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

{it1V8h!i!0RcVu z6tm(B)DR}gV1~LRh7s?Ax$z8YalXeYSTv)ViUC-Z_^+su`2+Q_`x&*}vSxDmz7f?% zP2rGCF0a#+z$Owj$D`){kd42`P~!Qsn1*&nt>zi17w^H$contk z-=XR&#LCskHbqT!SXQsg_uZ}+31vu_fZ9%Hu?9Xw?eidyne&RMA+3!X!e%z!9kqA| zqFyizH3g$l=f*^vz6do{t8D&uug%ztIuMRxJUoeN;U!dqp4zyR%`_-AssXvJWl%kD zh+4E!s5Aa&)Mv{~)RDasb;54P_~<=FKu7Bp)WP!#Rlz?v5mRP&`OfU6Sekh99A;J5 z!573Qp?W-o-{a_{9Eo~<1!_w6<1u`Qxp8eym+$wBS8$j1|H@o0=RO%7a=V;HSTm2A zt3?<}{1mETN%9)gqk80zTC_z`+p8FEz&_X>^XD^*bRw$WGuRAsC0z*|0HPolEB_=B3aw<{L52*BYMNN-iSObF1k=+%`lm8rb z@C1J6at31zssZmX7=uI10n`b-;Up{}po$X|bNPNTSQT>+pMvVicI<-BP>Zx_aWfUI zP-`a=H6=q(BQ+62@Co+DY$eQR#0>02JZVWYRsBn{|0|IYP|D@|`@9&`TpmPyxcHSe zLsk<##G_GP942E4e1#)0e;IRrY{HDhFJoJLgW3fR%etHf*b%k6cB5ARk+NR@$9cp`m7odZRwy*P|BOSJb}tD`$EhA5~#?)Go+x<3&)bzZ7aWgrT-yU(_xbfw^#< zmw<-u3TD7Zs0ZBTO~n~dXLb(M3j$H)i=obis;Gmf6>4fCZ2SjQ`Rsi>oU zG3G<>IRe^VpHU}U+zRHwl&Fd`+IV&w&xh(sVbpV>sI^i9vtbkl-~=p$`%r7(73#T; z70r8kBPXlZ8A?DsoPs);7NQQ4EvOz{LJj$KRD4LWOJeF3$m8L4BG$Y38-f+ZALh1@pMMLXaZ`^7h`tZgzC{1)GGdnTJ?Ta zO+8srFUp1bOb9@AtSV|mo1z-l3cdOY6>bYm!M?MH*woXuw{jZa+NjNMlG6)7=mw5bDOWec|mdflXxwhO9M(YFpKkAL$fAQH*)#@$(09pP;L!w#>mEI zO0s&Jm>~*8Ra^{pq*g%U@lP;4e&r|Dp#|HFr6mFc?EIu!YO_<92t{(C$Jtrx+d*EnH-pVv!E;iHtzfC|dDBhY+JN8}CHg+4fH7C|0)KsiT?f0{&6Y?SE z$1kW6%h%53``NDoYL`T!7V&7*(R~6n!e=lPZ(}v>|E%HWV>1$U_OC|G^*tkf9xmU%Zux@ciT@GJl(80avVzrsU{+=wjKSJ?2-WbEy*PKY z|H~2xz`>{?T!%OCPb`SXdb^z2_zs)mq&{Z)|Cwi&%z90v&K06B(QWcN`O{cVli&+O;asQsJ?^_)LyO7dAlQB%KJrZy?+Q!+nthB;MH4ff6&W_ng;xEadYs5uV9 zo*0R0`5jctGyh~7)(i_1ABX*Lzm1pr+2xEU-W99kSL}qiJ~UZdrt?Cv-F)HuShL zY9w2XF>5ITi)jB}AfS^h?pR}b)LiGsDp(Th<4}yoE7%Tej5GUsEvf@wQA3)6U#Dv5 zccVWZ$6$Pc>VW?Q^L4*5F3|oTLBNCgCfcu3Sb}&IYED<8w$nD$$La}G1J7eKdiDpZ zXQd~bp{-wnAkZ!1{>W6yYYSa`Lm_l5uxhMfuSP9kghN$!~%!@s2`fOB#mRq-= z8gvLX^e0d~zK%KZxYr3Smp)i%1whI%0V zOfy6UP(xV`H3E&T9c+4U)Lf21P1zLG6fH&dbQ7wfJ8k?Z>cyu~4e{O}pcC&6YOV{+ zG7mJuY{c85UOWsnB9l=gHV5N2#SO!&L3)IkuqeiSJ>I=#=>snNUkJ|Wc z%tibiderjF3rvg3pgvYBp?Xro+6uLJx}zF08BgPU+=@{P%?RXP1do3|jwhvTGYPHk9uJxEQ;Tw9{dS40;5o?eFbXuA47fq zKS$LUXPL>*fLi3mu_RVSjli&F?0?PCDiSoboA50ju<l({1Ks!* zRna@tT&G@b=Dr|m4b`zmppN4Hr~_y^YAtNC`6s*t)RNy(1z*^Vguj}TFdHr>y&S6I zr>H4#))-@>MlJy=KOO1?0jP#mLQQc?)JS!+@gb-Vd8ZK2&@M#{;cC=e?ZX&6gWCTU z*P4-OfQq+9m5V}kU=V6#MxjP*EUMfT9F0q`9tN#*Ic;z_X4blWNMH&Hu{M|kV4dLY-#`~zx^EarTCEjUvLk7%ByeO*Y4Nybf4%O3sHa^nE7oh4{kDA(( zs9p2K=EvQ|bLvrA0y;`_qbjV2i!c&3cZqi!J*c5Af?DMzP;*)y)uRU12x~7?Lw~mM zsi>oS8EUPpN3SY4Nn+P$S|# zXckvO)JXZGUQhzn!3L-fwna^82keXeyaaX<_zShT)*UiEK8yN_^a$1S&!`vYIBb5J z4MtU195u9MPz|hTZGw7HXH)~csH1!gYOTybmG`bBpn`i)C*L_#k8h$@?=#fU#yMho znhf>g^r#P|EU2j}hu>jS^x$}`gX=LET}NF`Hw;02mMllMx7WEvpgIW|j+u%gP#+=# zQHyG-brI?aU59$%Ni2x>F(;-tZsNsIi?cmyTXsS9cpz#7$J+GyKG}ck2x!jsp54F@BymgxEJgqMNMTE zRDFf8GFCv|38dfF^Bg5HUg^PCaNJ1 zP>bgSYEioHnITJyTJ70UVYZ$64juusCrU9G*gxfb(9C7>M4n8K+T8j zf4=@Xt!#m$k4*)cP%RC_CRhno;at=zUvJ|VQ4M;8dcj-N+&fRqNTfy8QwTNp6|n@i z#vq*e#A{ahDH1eyFHoQR|Dq0v*iTJ7A*yF7QQzTmqZ(8RdtnpQzCL5UjOytvEP^j^ z3ub?2rtTUpbn`{VOF%6i{=&3)HtNNjPz~CFYS3|11J0p_`~hkW#C>TFuw;0bcmdpn ziC>um<~Ix`eisX4n%8D6RmFS6z4ZyG0U>Wp#kEoUy&D$Caj3O$9Cc7#Lsj?{b1`+n zZ_N*(E&ejkrTW`^Gb(~wtl?M^CtJ^=rXtZh--vmg+ys1!1GN}S+ISPx5J#Yn;y%`& zP$M%L_1q%V(62)s)mu@Y6{l?e2h<40es6xDNsNt&55dg(iQ+l|RrCS%SrGe!nY(PL zkqAO9y6;ghia}M_A2kI-Q7;^gDz_CI;B_p3g+7{-uLWu`PR2l7fpN9}uM^PR{(-)a zN7Rd)Pv)~AE-Jqes^=9@Q&tbFU?gg!)?+0+glbrVe@sJDVpHN7Q6t$CwZ?{`@Av<| z5KzVAtaGs#@n6w{4>1qM{cJuP0`Ug%2B;wq{FlEO!OEDDRh{*V>3I=;BGhL_8!U=* zQETS{=EnFgH~;+yfx<4g^EWofQTV;v?F`0SSPonJnFkkOV;0>NtWA2M*lyo1p9kT0 z#6MyV42UxsSnS?r5h6S*C}?m08C0`c}q+`fOvu+mFF ziy=-@w{LNTpcYY0)MAXnc{mDZVE$xo^9u^p(R>#5q9>>q7fbH;{dId7>SOvEmc=Y7 z%v7|(;>2g87OnR(0iDGzCQhq5CC0;yn3xv(V+`@2RBq=1F2iX!CbiqyhdI-@eQW0- z#v=YVYH@u+of}SCw{LMKL#>q@=)vMhd9TxqfFB91ZALrP**pw&R&T}T_y#ovwbPlN z{fPC6A4aXA^y%HcgQfy{hU@YAs*D-Ui<+ZW z>liG82T>KgM{T>{Om5#dnt>QVd^39RK5A%VXEyZ(qNcbT>YQ1Cn%Xs(oA*1v5omyK zY(|wVZl^WzcBs$ugQ!or8<+$iVS0Rrn!03J&5&ou1jO^8Mzjd(!zu(dr43Q%NGsGi z(*u3~{(k@gJunPaa0Kcoo`5>5*I+h0jyiarp?cu<7_(pw;w8|7tuPgOQ3umx)N{*h zd=IJt=RE9xweSWB8k&!&c${o*{v|An52Nus*2K!$-M)X8Hwojp_)95NMUQis7r#O6 zij@9t--lHJ97Mbx>ci+9{*JDkZf8H<%ju=1RJ0_Q+xOe49l6ciCC+2!yclZ8J6rps zhI}My#Ac%w>3rOSH!u=s<~3_1RzA1y>vv6TL;89Q#T5D7z7w{-mq29_Mq@X;fLeqV z3z(Jyx<3d5yD7om>q>Y;Am_k}JPL3}jo#CwDE)QMNlY|}8*N!tN^|NbwEfQE7w>SVfu zI-}E+cl-X$MqN~o=c4xaa#Y0|QRl*ORE3vNaXF+Yxf;L_PRdF@cc@cs7!qOFW_V={${+NUK5Y#SOiUGJ8 z3*h~V?0>a5c_q`cjHrUSP(2E^mPWmx66yr2i7M9ybu>qzrf3mrpC3cL-~;x;oR!Up z%|;za8!#CjuFU>dMVCp?!SMj~o$m{(XPK**hU7xU1F$@Xphm7A=ENzeb73cH_nbnF zV1lY{->>g7poe%l%!+MMQ$55>K-*$Fs%P(!ZR;egX67;p>N{IH^oHq=ym_YzRgZdxCphVlh!s8Uup4a`w)SB9l8krOL171e0m2$OA1AAg_?f*dpw7QpKVcduucup)o z{@@ygHDhtWaO?8;{-j5wcOjg@meUT>^_-h8Kh7j>H8>9WaqP3Tsko;tUx4s>{rmeC z6l}!(?PBfu{sY0>6ih@oF86%yUAB^_>DV^^h1=L#2v}qgIiZoo_T13zCXXC zY+3Ga7bmw<{Em%H!8P{5&Gtpgn#A4Prr*T+Haufew%RGZoG`v?9#6P!)oCcPf%G-x zTq7-lyCC;=?sKFCVSoEv1Ij)itqm@>Z%sh{3SX@p4EAk`wkJH0GJF$u22p0PRu6}| z^9Pv;u@ASF>`DBY!up0#fd^*bDsEksxyO^XihQjy{WPExqo95Hc;eTI>xxU-UgGH} z%V&c#-`1hLj)XJt+Y9F^fld_AHH-%q5}!-qKe@kM5d;?Ywa^#?SnUox3}SFY(km;&&B(l<|O8!f*H632Xgy!*CFpbHl&ils2@|lUE3-9 z)xNA7i51CzgN10!AB3wB-idc86G+5*5A3s5iPxZP4IGXyDR+u{E8&Nf=}&!^2yZmcd3|SL6(Xa! zhmqNi%%&#u+q-2?zG(e zs>FBkmCSdw$JQq3`){yxdO7j!!?kUO=*NRcNKcQ;Z2AyencB$@i_QWYA5Q!z@zmT) z2|wn!P5&9edc=!y$K}?QgZl_&^Kk3^PEP`rsVockOdjMLr!&YFZb4cz(k|j)?m6Vu zCGQm0`Oiy!BOXY6HD!YEA60CxoRsGqk+Yh(i@brj1wZTkiOAF`e}D&fa%Ur)jLctn zAQZonU!8jf@p|M{;-1G{koZe(U5^b;G|&G@SYHHmwc`1UJR6U4I|=_xek{CUpWDK> z7iX)D=z-~Eo~Dp~64*^TzXo*@;|MHA-hZzgRIIB%F6Gw$e{&P@l9XM>9ju$QWwzWW z>lVz%eT90n>eJ&Xk(CrKXhzD}VCr{T+?2L(QJcK&yQnnRkLP%>#xIJmPaUH+CawbrC5gBPn%x51`-I3h< z%F}oK$e&}$e@G?Yt^z8=6~NuuhS%Ei9VyGVAK$loDw%)nKk8Zg8ls(O}X~}Csn)fOZ{V0(a8*|Skyn=_uP%s;J2x%|4bu}TbU-{I-vD}jgXR{S& z!BxcnpzKTX^o31VDCvtx`v?EEW&gxpq&3z08)Ylc%R_^x;GiwE5_40*2GVs^$DP=b zJCtXNPx5#PU3()*q3JiMDqHjp!bLREMm zmVN00(k_tZ=H5!WuG6H&<37i&D;i61=Ow(-m%=wp%1@_`AE;MXal)6lXAsU~>mEcI zz26BVVIKv*5}r=t55yM{AC9GM1raLzpQ{dePr1Kco74bXb_r$Alc%r3-;@4<@GP6h zPfNZlt$kMS_g!}>sOu*R<|OkcTW~(Fy?PV>mGD{0 zzp~Hdr=AU@z4%rLkCJvC|Dt?%-}n;=BGHeB_LHcqtyST)_QigbxlFt-PQ^8pZ$!C! z#LHs~CA{4tYOuZ>MZo?r)cVo~loJam+>fI?8V%eo*xh_s#$JR5Xx; z41Y_>uC>$=CG@_Zq@& zZDT6havO=iC4GpE&!pU8y?-GOcd><4!3rDRMtV+LSm~ei2Uj!l(~*~iTUSGa^V-Ir z{iiNpzHQhn((~D}Ic?b~ntxqq$Sh3wv&~RiC0>5l=8qztoO_&Y&|bpxcxE;6$CUX( z_T3`p7nO+g$0$P!rc9cx3e!P`JabWB#OLWZJy%% z&8PDNW!`Z|60X6$fcz7-6Jzc3{QaF%ggZUy6-cXtA$Y@&@t;OTrEI0`D5R?do~O`g z%xf!A`X|zg+W1QQ%zR~V6}IUwP@k&Vxu@AO%CBp~d&u`EJOE>2{ond?{3(<~CAp^Z z;^nq6itp!M$U{|anxCyK54I(53HJr^Zg9^btn0lkJCa5xr(7^;z3g*)dHHzm8{gjl z!WJ$^;&vX;)th@R4>ZCb$=^eIF!_V=B59Mkb)7N%@6SN;^YI+Nqw`(G2tVSvmBi!z zuM~@$u7P zw-8Q69j|Z%c_}F~hxDX`w_!>QBR?5oUB7d;rc4L@{CASbB_ba&D~3~OD-V3T`Vz>* z!@6dXA3**A6LtC$?@rn0sH+)yt+*!=-v6IE`VmfG<6-38RAF7;=D($hI-Pj9xGlJV zv@yJRzpY$FUK77-i2s z>d)Pj^a1+*&)-Hm>xt-UVS9d@@LFFABS3yb($ivgDhS8glpl*3iJ#)`NccYGf5c+; zB@vVFIeO zJ02n}4&mN7lDu!%I2*`Fx~?c}z+K(Ovy#@9@HG35*F5W6f7NV(+Eyhlu@&c{mo8^|T>>8|nRR0}6aAh-+=R7|Ny7@Ba={ zXf=`9wgHoQxR5P08P9SrCM}Y3T?yB;<=WUveP8u=@zGbw&g zT5kLDY?OU#U+N~DnY758KCOm|^UF2=% zo1kXKSf?k%KS=LS1tSeE&PWv->#O#8~oq; z=i`xw-tf=`N_55SxR^o*NpDU39(P}EUG=Hx7U2TqCFUN?{eZImq~#~9E1EL1h*u?i z5O9 z)*)i!o+tZa$FI{frd!XL=n|euF)xRtjOx)LtZQU+SWIM8*Ral>Zk@xrZhZdoc(xQd z`$zZe)-9?>OzVg)VUe8&dLk#?J(zmh_2jP1TVs;DUgS^FTy?heM78%ckBRbyw}zE= zT}YU?Xu-f>PvIgZ0t*)m44GE0nk%D83JM}Ae_+to$ZD=8b>h^H=nxhjwRPWgSFdCV zDo1t=>)I|-3BfB|Eix|~cEpt^eqEXq@q-eFo_F0$yfyV**DrC>){BVl**S*PXis>U zr&~mH_n!2i#I!jNU5hhBct}<^z;v!(SUYtta%+i4t_3;sMu$avBD=Pa>d__a;If08 zBceUg2RC}UMTJLn@kB@T@Pu`aiRcj)9u_^#o!A{x>i;(m(Gi}Q$X*l-Ke(e;B;`C& tJw4G;jC5p7*tf?`&0DV|avu*&-Mrhu1s&*LOHX*j|BcnW((c=d{vQ={FdP5? delta 26284 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 SU}Uhb`)EjH>=N$V@%{&x%%rUV diff --git a/config/locale/pt_BR/app.po b/config/locale/pt_BR/app.po index aea40ecce0..c3b8b60381 100644 --- a/config/locale/pt_BR/app.po +++ b/config/locale/pt_BR/app.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: roadmap 1.0\n" "Report-Msgid-Bugs-To: contact@translation.io\n" -"POT-Creation-Date: 2023-02-03 09:02+0100\n" -"PO-Revision-Date: 2023-02-03 09:02+0100\n" +"POT-Creation-Date: 2023-04-05 13:01-0700\n" +"PO-Revision-Date: 2023-04-05 22:01+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: Portuguese\n" "Language: pt_BR\n" @@ -49,21 +49,21 @@ msgstr "Parâmetros Inválidos" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Mês" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "Núm. usuários ingressados" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "Total" @@ -450,7 +450,7 @@ msgstr "Não foi possível criar uma nova versão deste modelo.
" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -462,7 +462,7 @@ msgstr "Atualizado" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -552,7 +552,7 @@ msgid "Unable to delete this version of the template." msgstr "Não foi possível excluir esta versão do modelo." #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "cópia" @@ -614,10 +614,14 @@ msgstr "Por favor, escolha uma organização." msgid "Your organisation does not seem to be properly configured." msgstr "Parece que sua organização não está configurada corretamente." -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "Criado usando %{application_name}. Última modificação %{date}" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "[página] de [topage]" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "Isto é um" @@ -651,11 +655,11 @@ msgstr "Este plano é baseado no" msgid "template with customisations by the" msgstr "modelo com personalizações pelo" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "copieado" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" @@ -663,23 +667,23 @@ msgstr "" "Não conseguimos mudar o status do plano. É preciso pelo menos %{percentage} de" " respostas." -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "Não conseguimos encontrar o plano com id %{plan_id}" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "Seu projeto agora é um teste." -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "Seu projeto não é mais um teste." -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "Não conseguimos mudar o status de teste do plano" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "Não há plano associado ao id %{ s" @@ -928,9 +932,9 @@ msgstr "mesclado" msgid "merge" msgstr "mesclar" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" -msgstr "" +msgstr "Núm. Planos" #: ../../app/controllers/users/invitations_controller.rb:33 msgid "" @@ -995,19 +999,19 @@ msgstr "" "m instruções por tema, elas serão incluídas com base na sua seleção abaixo; po" "r isso, é melhor não duplicar muito texto." -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "Respondendo" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "enviará um e-mail com o assunto %{subject_name}" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "irá remover a pergunta" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "irá remover perguntas" @@ -1129,7 +1133,7 @@ msgstr "Autorizar API para organizações" #: ../../app/helpers/perms_helper.rb:17 msgid "Review organisational plans" -msgstr "" +msgstr "Revise os planos organizacionais" #: ../../app/helpers/plans_helper.rb:8 #: ../../app/views/paginable/plans/_index.html.erb:8 @@ -1159,7 +1163,7 @@ msgid "Public" msgstr "Público" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "Privado" @@ -1172,7 +1176,7 @@ msgid "Public: anyone can view." msgstr "Público: qualquer pessoa pode ver." #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "Privado: restrito a mim e a meus convidados." @@ -1479,7 +1483,7 @@ msgstr "" #: ../../app/models/concerns/exportable_plan.rb:221 msgid "Research Outputs: " -msgstr "" +msgstr "Resultados da pesquisa:" #: ../../app/models/concerns/exportable_plan.rb:244 msgid "Not Answered" @@ -1560,23 +1564,35 @@ msgstr "deve ser um dos seguintes formatos: jpeg, jpg, png, gif, bmp" msgid "can't be larger than 500KB" msgstr "não pode ser maior que 500KB" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "organizacional" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "público" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "teste" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "privado" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "Planejado" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "Financiado" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "Negado" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "deve ser posterior à data de início" @@ -1634,39 +1650,39 @@ msgstr "generate_copy! requer uma meta de organização" msgid "Copy of %{template}" msgstr "Cópia do %{template}" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "generate_version! requer um modelo publicado" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "customizar! requer uma meta de organização" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "customizar! requer um modelo de um financiador" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "Você não pode publicar um modelo publicado." -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "Você não pode publicar uma versão histórica deste modelo." -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "Você não pode publicar um modelo sem fases." -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "Você não pode publicar um modelo sem seções em uma fase." -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "Você não pode publicar um modelo sem perguntas em uma seção." -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "As condições no modelo se referem ao contrário" @@ -1862,11 +1878,11 @@ msgstr ": o título é necessário para cada: conjunto de dados" msgid "invalid JSON" msgstr "JSON inválido" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "upgrade_customization! requer um modelo customizado" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1946,7 +1962,7 @@ msgstr "Por favor, espere enquanto os Padrões são carregados." #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1982,14 +1998,14 @@ msgstr "Respondido" msgid " by %{user_name}" msgstr " por %{user_name}" -#: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " -msgstr "Esta resposta remove" - #: ../../app/views/answers/_status.html.erb:15 msgid " questions from your plan." msgstr " perguntas do seu plano." +#: ../../app/views/answers/_status.html.erb:15 +msgid "This answer removes " +msgstr "Esta resposta remove" + #: ../../app/views/answers/_status.html.erb:21 msgid "This answer triggers email(s) to " msgstr "Esta resposta aciona email(s) para" @@ -2647,7 +2663,7 @@ msgstr "" "o as questões no wizard 'criar plano'." #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -2984,50 +3000,50 @@ msgstr "Sair" msgid "%{application_name}" msgstr "%{application_name}" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" -msgstr "Erro" - -#: ../../app/views/layouts/application.html.erb:91 +#: ../../app/views/layouts/application.html.erb:92 msgid "Notice:" msgstr "Nota:" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" +msgstr "Erro" + +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "Carregando..." -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "Este campo é obrigatório." -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "Mostrar senha" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "Selecione uma organização da lista." -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "Minha organização não está listada" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "N/A" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "Esconder lista." -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "Veja a lista completa de instituições parceiras" -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." @@ -3035,29 +3051,29 @@ msgstr "" "Não conseguimos encontrar um modelo adequado para a instituição de pesquisa e " "o órgão financiador que você selecionou." -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "" "Por favor, selecione uma instituição de pesquisa e um órgão financiador para c" "ontinuar." -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "Carregando ..." -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "Não carregar o conteúdo da seção neste momento." -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "Não foi carregar o conteúdo da pergunta no momento." -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "Abre em uma nova janela" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" @@ -3067,11 +3083,11 @@ msgstr "" " navegar pelas sugestões. Use a tecla Enter para selecionar uma sugestão ou a " "tecla Escape para fechar as sugestões." -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "Nenhum resultado está disponível para sua entrada." -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "Procurando ..." @@ -3418,14 +3434,14 @@ msgstr "Ações" msgid "Feedback requested" msgstr "Feedback solicitado" -#: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" -msgstr "Completar" - #: ../../app/views/org_admin/plans/index.html.erb:29 msgid "Notify the plan owner that I have finished providing feedback" msgstr "Notificar o proprietário do plano de que eu acabei de dar feedback" +#: ../../app/views/org_admin/plans/index.html.erb:29 +msgid "Complete" +msgstr "Completar" + #: ../../app/views/org_admin/plans/index.html.erb:39 msgid "" "Download plans (new window)Info: Simple information message, displayed in blue.
lyF2AKWzPxm8TTxB&$D3v^=xV9JN!AA)^YM< z#^R2Xl+JNpHBqVKH0Ok0gjuVdg@f615 z$8_Ko)+9frzvG1Bah!|ia69%G;5ZvF_ds>b?>NUuq^IBls^VWT58lHN3>xG(nK3hF z!3bP|v6vOlqDGdA8re&m&p6m|g2@-gAdJCg7>A9}kE>|kIYA-=zW2U)-~&|X#$s+< zjJt6=R>VF-947%+qB@p}>d0fPia|pirzqCOV%P)c;>S1x3l4Lf%D55z%z<;8!~-ln zoY4CS=?5kfg+{U-D38UQSOe8yD^v%&V-XyUIdBDP4edfj@I02o`SDSx{NoZBqLCs+j9>?COk;Tnnt6_WWjqhT4JZH<( zv$8bu9GDd&u^Pssrm#P1?RZ!cH=qW55!u#$=PHSC3jRfPAd|;}!=k8>wMKQI3u=S| zY<>)Cgws(STZ}9NC(S&zn#xh-du+b&e6#49V?5;(FhTo&H;Gadyu>)EwTxUYK#2orz5&Ty=^g7~Y#{S;)wKdk>^cJg5>xfu&%YwV2OaThkne5)L%E%rg(e-uaHPpC!N z@-v>r4p;{LSQa;<*2wkG{Ejn@MCj+{K$v0OfLesdQFHhL6&c@ZvwE|j<~%2cy1Wxm zQ&w_~DUZi+^3`m<1!|!0;4mDIy8mB4i9p3`&1%kq>UjZFc{CQqincu2miI)h{vnta z$D%qq2@B$ER0prh@8RbLN`#6frp=VD3hxS1UhMq(<7TDTC^z)z?U z{e~albIgbXx0sXcL(D|pLv6QJsIx!+R#RREgUHuFt&zH@Nc2Q4)_$n^25%+)T0DLV z6!LYb#kda@svoUaP!HTjEz*Bb6^3myBg~GGhTp+M1HeAKrO0Qs1D`XZbDcT*-6eLd>aGb-K@k=w6r|~QD_fQAenw@5C z-9oh&y30f?tDl5IS;QKT>Tv?9!8WKx*##B4$(R$T+w#w_IQbK(jy^&~AZ)i;^^vH^ z#bO-RK&`C-r~&)ukWfPl@f@zQ`JsEvBKio`@G&fk-(eZNk6AGPUb7}jqefO2ySi*! zo8Lqj)PXNiYwHMVz$cMy>UVx7k(q)Qs0xGknTqnDrXmu3SO#-r9O}Ntm=}{#4Ggo6 zM@4Wp>b}*edUl~2{u*k8*a-JwQw%!9hZjslPuC9mgb20#FOo)`KHngdvpC0 z?14eY%m<6UsE$6wnLL;DHK!)|o8R!s7~{V+U%{56rs6tkiXUT9wR7BbH2OQ@uMn62 z&V2f7R6xlai}?~ikkacsEV3fJ6QWzKd?^15bm3Ys&^S`QGQ{s@As2X zXij1%UO_!@8}-0LRKu@Oi_ql&*P2L=x-T|P;-pHj+hU}pnARpwd%h>b>t{&4V}av(K*fZ!5LJ8rGGF}TLraC zl2G;Z#aQkC(InKsCRC44U?%(#HP_csq5cPXAkc~$j-$0ehf#Cg9MwP<)cqq+^-V@a zY6cF)g}4mE&S-$l|3(rSDfk{$(a)G4|3Xz1a+Vc~xlmJ)4^?p_s-wlN6)+3=dZ_wZ zTf1Ur@&oL3zjd~*)4sEkgc{n68u5NqkI$eQyn@>2zoMq(CaPiIIrDixD;6eS3u|Im zEQu>oQ}I1UV~O*|L~Kre6#BD~I7uQLub~?L8#R*uP}?Wt1yf;R)REf^3*oz{4o*Xj zcou3POHm!%V9WQ~{I{rjFJd12{Q~jVjm|~p1v2AWT#M_l#U=B=3)Gy4{AA99tf+=c zVhyZ}nv!9t)jire8HbXei<-jV%O;W;Q60&AnfT`*5lMj}P!ZE%W6X^$QFGS^)xb#9 zgCC(PoP!$qeAM%+Fe~oD?D!oj!q;s1BP>AP_p`Yk=_jG>Q~`CNslCt#W6A4!9B#Gc zH?bD^=cou&y24)PNUe`*_`p^3dErM?ho7SE`_JY>elgoJGb&R4d?Yjl#Zf0+1uTj+ zQIY9}+Q%cX6i!5~f$gYBoJKWt9o5h+R7C#4YWN1VMyg#i9juLdE)khhztfF`7F}Od z1w&B{jmKiR71hB@_WEs91CLQ1aju)G%7@w=oZWhWfSJp{y#%P z75#-8dHP??1Eo+EHpb%E2le0_?1*1tISl`eFQ(W4HD&AY5BwP?;E@~Vlhj)`&0?L3 z`6xe*x%?zjN#w@=unJ~RHLv03ScCjjY=Os7bDZlIoxu{=2IDSPw0?*Pex8W<>F*d}CD4lQ9$a zu;oKAGx>?A5YESvxB(Txi*o%$yfT z^{gzO#+tYlGd?w;J%DA&|A-p#8&m@&pPBpPP!+#HExydp&8~<>b-X5OD*9qE9ENe) z|4T`vW3GO{Psv|=VJdk4rTJm>bd09_ODu=iP!(qV*SuV6q9WE3)j%5z$1bP{4n?hz zQK$}2Mnz;M`ZeOEB=q1Hs1WVKJa`ae@UksW`=4njBle*@D<CLn^>6_yGFMTH?RRX5k5D74^2S8u zEo&3heQ%?lYme2j2Woe$LQUoOr~~V%pTs2+xg9qU!iTtze30up+gKAvP*d=J8aMEA zS&o&-pTTMvlGY8pwCbZO?t^F0!!g)B$aSV+D(boZEHpj079*(NpGra_N)zk`J}Nau zo%KgiJ${OvFe1d&r!>cpJFqoB_GBG8AsJk!E~d%o23CIq)ZDg3y<|F~IyMd?@C#J^ zr!Y?Y|22tN3Sz^|g)aCG`FW^Sejne$yc~-|unR7v=a*0o_s?RkZ^sJcUt)GFo7D|` zNUevt$oIr?I0iLEZZ?-i?q|V}XhA_SRH%odM!XW$fE(@xK62GZ&E-U_f=5vidWBka z#k0GC)gO;qe3g+|a%y8Q^7V4K&IR0v>d4rfuCt!@owT{!z<%6}X~^$KZKK1eiodm< zLoK@NsMUWDweNko&2#BdAh zzd^0iJbB%~Hmi<0fcl~;UXJbXEEd9;d}a!op&~OLb^j*RoZqnd?D<`%Hu;A6UCw_J zQzf@-R^%81CcQH3UK^-_@k>>f_IG21Z z_Q7LV1IrXLi~2o$K;FNVghsr)up2lc*P=S`Eow@x<9C>*h*><}<2mwAa6cX|>N>Y@ zLNV8AgT0HJsXC0c$=^kFEGEiW5jCI$WU>35mLzIX&>FYneC&x0qs=Paf~xp0Y>#zI znDS+)#d;MJFiS}{@UBQiZQDbrZI&j+JUpoPd?_mm-h;yC#)H4}XemdR^I72zq z{%=A;XZ6Qe2Sdx75j4ZGV!+gDmVqZ<55(_Q5D_5&-r>_5%Swn+w>Cl z!{AD0kq$#m$tVnb{+~obbFv&2>Md9a(^Yl@|4vsEhmzlgeX&#(GgXVQKKUk9-M|kN z=AfqXH`F^NvYLrlZ;T{A8iRD?Efhw8df(4$XU!s{xNpN%r(p|7>upRPeg66 zE2!0aA?^wQRltY9P%~&-qhGXtBJD zg>X7*n{39icnybRSRM1=MAQ*F4|S5QK#g!a>R>vA1@Sy;K>wgl(&wlS{SWm4ByHV5 z1pH2I5*lF}RE6)OR{KO$PrpWW>^v60r#2s6&n(gkm_T_y3>?+yBYzkbiDRe^oAgwLz_`^ zegq5SS=4}@V2JjA&bQ2}k3>~e9o0}>)H|UGYGgf79UO-0*eKM&GuB?;jw8q)Lq)Jg z1G5N6qo#Nw>Ls)uRnI~6Ya1Q27fz${H&Gq=3)PXwsE=g-p$?!{4NV2pP$QXz3h_3K z$AdW7<;y9K#qNz=XEpxb#4O_J%}nH$G-LlO)H^9y&JADV9`fB=n8j4!Z4Kv zZLl%3$>q9QIUCth0xd1Y{#P5fP8gSdlOKL)obZ@oo`62rQkz4&@a)f&U;B_ zO+>Y#=Uk7+ukkW2#ZOzCDXH4VM5qa>;v`f@x}qXE3N`l=QByb{58)cr+UV(TYZ4<+ zJ(_M^fjU6GM2+YG>Lfdc37GXAH}I3vB-G;k4|RX~cIJac7Su@^g-5V1>O>4`Z;tF* zsNLqDXcG%jXYzV1gSV{V$*wb>d>veXm$5z$=wRH556J(A<=A(3Q%uDLJDZWmq9Rfo zb7DJ;#DPY?GlxXr072b&2-Wk;sI&bE>gfCsPWwihE4mA;IWNm{wkh-B3O@Gum z;I}SDMQjIZksU^b_9W^ZaRaru9@@Nbm{}WHQ1#|PZSSHO`2C+45_+I6s-ZTh?KTiq z@kG>=EJdB|dr(vL6Y9Q4SO|lLyUsrth2=5t2d3T@*o%Butcxd6&t)3H{#S!VMwo_c zU@h`(QFFf#_4+-AI>D}@w%HpjhM7j1*JycEM;l{2c0rAF9%^?iM{UC|YO4Nb$18M+y#+b#~4mCxe zpr&j!>ge5$>fmla2_3OV?F}bUJ^l%`?^97DyMyYnLx-EPIP>5HvOPaC72iWe<^}4x z^kdDZ-!Rl?!`Z0U?hjZIL&uqc`V&Zupz%^#o|ikoO& z$F)&wq9f`+`4F|1W})VI6;8t4sFzjENv6F4*qq@w4@juTH71)?Sr_M$Z;bkgbPZGS zF)EZlO)+23Z=fnnm}(jxjJkhbz| zelGhzio^>Fw0I&t^An7C)b>b3jVJ|m4)j5tT;pu{RMdS7Yac$*35|3!Y6^B?1N;tEVU~ra!u)uKd@WQ3Sr(ZQR>TDI^-v8= z!bqHrAL2GtN6IcXYpEt`ZM=hQKEKnOg!b(nR0rOmdYpBM`G%7h6^Z(&@}{Uo)EZ;4 z2P&isQ1xuE*AJr_K4bI0qNesCs-t0_s2;kIi-h)V6l!jpSi7Ps9D!OJv#=Dd#Ynt> zs^}@IgKto4BHdEc!En^cSOm33>fjx0hKgjRPx<<;6DfF^Dd>mlVa?@k;P>=8V14q@ zD@-K%V_NcyQ6XH0YH*8nKWh7(Kuzg&jKkk;KKDv91(B#JtcrepRO(DZBOi|n*%H($ zUXNP+`>`^f#3)R&%8WP$H6`(QAFJ7XiOiQbgTyI5%_G^1R71hy4sHu338c5I@^Vu;w>g|~uHLy60 zz?*d9lq8n}R(nj5GN+(oU4 z2dDu(Lm&Es)|(rGQ4z?9i!d)X#vRxUUtOL>`%=JP|xP3BYX z5*);HH?SWjZFU3ynsx-cksrK;4=6eUE|I80LAz~c1RmBS{{R)4a@)3XZX_G7m3-l|I3ijjR~j++XOD~ui~gF8Ht+P zIj9C!V=V5l<+t!N@-OW5r8~`i8&FfV2ZQhsYCzwh+Pf;X{~y_cpk1Z|c~Ns7gIe`9 zY`y_%^|rJ5_fTtMjCCgJ{$=+1I@B8Y3e|yQs1BV#-FF84HAq|`p#vfJZZp?4QHy0d zYTwU8jr=q!lvhy||B2d$f1@IlWsk8aYQI-T9cam@MK=O<{}fdHYxl7KHTPR6c#d~a ztN6xV(_rb&?H6`@zCHIaFriDXIC{nb(T4MI)9=zZ*e zJurs?ebV_HHNu0aP@O`B_#F1fo45^I?l-U9GzUzFidm~*B-fjv)>3~|=>4dZa3ZSS zX{da=6>iK9?L-DBnUj-HV z8mN(Xz!K;mL_#6_1RLQYtcW3p%;)~vScd#sEQOa)+cV8!)3JuAUD6IUfPtu^cC;;@ zk9uw+>d5^WWAG&s8NXBPh^Z(BwLPk%rX&#+nI87~`>2smKs7keUjG7Dli!P*u+vf3 z*^FVwOnv)NYvvqkihoB2&nZ2qXtU$*&ssD|Bd&HV*Y zAuW%Eu$3(zhMKbJSQhu8URL)|+d2Jlvvz8ue=tXC3ldrsN53--{DfLOPf&CEpUtN~ zVIq?W6{&(YA8qrMF`Du^sF3$XO`#ukV$MKq%Y*j%&nMXb3dMa2G$((f9(av4G2=>bc3NeLf!}@g!bqiT|`YawnsD zei5Hw=nv*=_#0ID>>tg?@^4Tb3p-;hh8lSdtb|Qa_m9U4xCgaeAD|XvxwGaVtA`2X z{X0nL!c){aknWrbX-Nz`VDt4*4K+jU?_|^gGz2vz<56qIL(TOPREJJs9Hu#M{t2f7 z>g6^K*~WfnDG7ymhbeGQpc?)SRq@}bwc%bci!l>w|K~+TBF>gK!gtBHM(v`5*bdL4 z7HiB!)8PtufqXsuP5VF3C9{40#Rgo+|C8CL-BAyY!R$B%wZA__b$A_WcN|2G@FXe% zuTUdQbJ;{J2P#rUP|wAq7IQ;gr+udb2|dsUHR92z)j1ut%GaVgum#oN*EW9!Rq<`q zE_i}P*v|jMLgWiwF_El`s<)NRcSqGb6#Z)WLwmz4)Z8vdUUbeL)Qv-aF%6AIb>L&H ziwjX5yNY`5kczW7it^%QHyUkYMUNKy;gt6bWBzF@8;KX^8R6-{{hQzJr!dx+n?q{t%=Hi zh?+Y8dJ+otLDV+;2DQD;+58<;sGgyE?7L$|6l~3fT71Q=Wl@W_GOD2@RLA|O2u{QI zaV~bE*hzQSyq$WY8W@Lx?S|^mr>F`yphEr)s=`~S`yZkP@DxkqD^!F^-ZR^|Icl*j zK$UMrMfL*5Yyba6Lfa$aFEi4zs5z~MS_Ab_tGh9(L)}m#9*8;-M__%NZ1blvf&5ie z2MgRc9V~*)$(KY$Vgv?h|Bof1h9;vzJss77MW~8aVFcbng*5F0Gm==mOTHEAK&kc6 ztbruV%%V>J$h>rN{bM3i3oCP9Kdg>x(65lDlF-}A_t^ZXH4>+gPy2*_mctpS2TDIR zpAGw9D;C{KY)JXDXXd+Jt>cjl_J17;a{gzw zRXbG3`k-E;12GHGaYAi^P#pEP9nbz*VAz2 z*XGOZ%{T0Sji5B2@KnJtR4CVAQTz%Op3o4- zzxflj2v?`~1=i3GR6To8*HKfIKhziaPFWpwfOSPhVhQRf{soB~zyF=Vgl-V3f~Ba2 zub__1Oc_nc8euK+K*e9s)Ija;P-!0NvPph_J(v>eSz0xZX8be0o1mukj)o3!TRHGDo2fES-3B7w5~@* z<}{YTyZA9?&u-Sj3cN`ETU>%mbNKwu-y|yK^ab{9iCpHviKsQO1=T>R^#SVh!An%c zf^(ax%7A;xx5NGzp2w~g>`DG8_Q4W)eNJthhZ@kuynbKc?9P;rP*BhcwQn!rNX(bt z7x+IISb*x#1JuY07w`psx2q}kBfkMZ#oPtWqTPiYs?Oi2hHgdr07I8;9sp8;!rADj#{KSikb@AV{P*Da0Xt)I@qn4aSe_oe+RW)`xZC# zu0yr+D{7$r+)<|DPS}cq&r$D!m#7MJMf(CjuWOGwFb<;D%2Cu}`yTblClwR%8Af5F z628E{84W^3=stGGgPtw^j{ zTq&qU_yy|0U8oKnM!meH;mop>DhT4V^sF9RGRoEK!q4Xo`CLBfn3hMqg<&8a12hou7 z?0~s1Dw;`G;7O{BzW2x{4J{h~Gw?a05{9kO`<0@F;3+oW~;g zpEaVQc_-AZ$o|)Rc?1Ot^-feMkJZSuU=tiv#eASRfVs&ZMLl>GRZ%Lcp*yGs{y~j2 zsH!n5YU&DLAB;vVKF^jPL)J{V^8*Qm_$9_+x@z9tChgrMuYS|r?r86SP1lA@Ov}`9 zX`Q#JS&Oi}K$laH)If3^{0&&(js5T5Sts}m2Q#C zZS2)=(Kbg5%0}{RJ#%B=f4h3yS{!QBh${;6WE{dBo9rELXib0iP_8dq6S&rt^iIkO zkuFQwBOkxINLe?^=6ieJj&Q&9e&*Lm6TLhwtGR2u)-5B#zTi4PW(oXm+y~y+mJx1C zZ)MAJLF*|W>HXX?CTu9FmfX>STE===6C>Q^UR+{~`=OVT*w$_5?M!Upe&PisMYwIf zVo8wW^k+ts)O?9$Ma^iPR{xjSBg`Tp1&3NJKTHOI$!C2 zlzu>Nn60r7&raj-Qu5)H>;GAf5Bz}--~+vcHu>DyUJAeMxyoDFW}my-OKBV9F7T$d z{n*{_<#?y9yU*+QPNh7}ceTZ8{>=57B}ch4y`jl5L2q+?lD9fJBCIp14E+6r zwzhj`lf&H^-tFXW?ryJ9hidLhZ(@giZU-+RrEW-T?uz5@5^qLIK6i_^KBb5|#yd^A zyLTsLRLBml_2ln+UcZig-SOVf9V0@vk>5{D4tQ=SzuU(f+o_v7!Mok5g}czJ(7CKT z)$7rDvirGrzjLxX%WKpn+5OC0-KDNO&%4v5t()v6bZy{v@uqf-akqLqyGFUay=z_T zy6wF}-G+y4qHexjIjtCDFK>0XZf>U?A>G^koGp1^mtH+mA_w%0Odc{Iklx*;hI>9k zSozYi6(ZxxRgH}+9b0K(LL)byDTpUV+ih>e7949+|iS)%8g*kCN=E7B229KdS@DVd&>Yk2s8pCiB z9rz0?lONREaZ=(goQXf+R&3hGan@o$Uv>-f~TP2tWzC?wtA7;e~ zxC@tKX^iXdIMr|ls$&;1J>J3c_zLr4)BwlHhfQ%N4#g>$b|BM=3(?CQIG0I0#hi(R z-a|+SnMkA`LYne0%#1})4c0()unFeDo~Q^+N3Ee%s0bd#XuN?*F#S;Td@z z)X0;u!qQ_9R>0h-DQtsUJEO1=&PNUS7_zOs&S?@EDR_kHz<(HpnS5qsHBlXiMUAkn z&G$x)a2Tp%6Od)#yue76&obp}Q27kA&7!M}CCK;3YTEy+Nff5wAy&uC-*VbvODvB* zRLIYwLVX1_6}M3xdx!z}#$I>knEO&=Amv#x7;~exb6G6KK^2SBXx|w(*F2DAp4lFG zPz^@o0IY!Ja0@E5kFgX+%r_%xjlIZE$0GP2YIhV~U>56UY)$?-(nqKMLeuek=*>dG z3lbSH)gp5t7p5a$7!~r0I0oyW=I}gr#Sd5$J1sUx_F7bAHleobP7K1bOE{dc7V3JD zrH+$`C6^L^Rk)r4b>LU)Bg{npBUZu;%Q(fbA$G!5SRYd@cbw)Jhq`|&4#uBQi?Z5x zgdOW*QS5`oa4~94oc)gYk0kM)f*d$}g>gP=5$;0G;RDoM|ASh+&Pp@q$uXr%v`|x) zeU&NCjTy;D+I$t%K)=9&n1H(fk(Y$OV$^DOR-2xuL6v94yqMpX*RkczQ1^Gjq}UJD z(Seu?zd?0i31-G^*c(q_BP_SZ?*GXobmL;oj$2V{;*7oF9;zd6Y(CldW=&*4g*HDH zz*?v^^A(2TNYrjwj_T+})au`dDe#gh_d3@}Xs#Zb0_P=`CGV~^p)8MqnY#FwbW`UwlrzLROa`J__`Q<0BH^|ULd#tEnf zzQq7sj0JHu=E3u}{1s{{|HJB-VS}l!DTa}6kEd}Y7Q*@)+5c%s3?@+p$Dtbd2^FGq zI0)}!YHYX3oMgQ)E%{NX?KTs2_NU%#%5z~d@ciXv;K}+RDYp56u8xdFcY$qoLiWHqH>$_QQ4M~ET9mP<&?RDK9A?XXn4kO}R7Y>2BJdH@VbCrUxiBnF zz6fe``GgFs8G&EJ@>uM??Q$4wDksR7d%7N<2h;8LRQps1u+uKoFxA0VMhw4 z;viH9Qk*ho!T|E&s1O%I&3!RcMU|~}t#Q^btphQT`$nVcor+qN3+(mvUJ?q;UQCIn zP!C*2J#Z7%@L#A!_%~`zyg}Xf3Cm&NY4a|K!J6c|qVC^-WpNv(!oM&jzQyF|P4csO zU8Y1uq9Ce6l`$0SV+i&}^?V{~)h|GGWGiY7?Zsd4Ikv*XXY67;Yo@j!YL~>I>WRlF z?f;%6)W9NCkN03&JcOF-v#3ztMjmjUqZ$sUHGhXub6pwLKrHJ1Zm9YaQIQ&s18^KJ z#*Y}P{lD;>3H5$dMJF)_UPo2*4wGPt^JXeip(+l-w3ykN4}-{;#MD^R+6dE;Z)>mj zv3{fLwC~Iyp@tTtM!X)?_CK zyJ)PA^~v`@Zw3;3No2$`sD}SQjpQ+E`+PuEnBkH+aw}mt`4*@S4nd9BiyFveR0rqV z^6zbaC#v3Km<_L7BL2GZIR$g@6RyTNmmOyfR=Hvxcz~Mocc}Bg{na#-9V?M9fSQsn zsMX!mnuwb7k*Fzri;Cn2R7XDjO8hm#px;ac@}sszc~nEyP;(cDYM?vn!M>;pN1#SN z1~cMJOpmKD6YfSu_>3*Tg*nOpW3LB!ubScKdS!ai6Wm)i0RScUw3RH!5V z#|r02Ern`$!!`4H;Sj3B_fYpew)uCcbKnyyQr=Y8?J7o{bonqZ7DYv-G3tSCSQrPO zUc1XtkvM>A=q#$COQ?w4#tQfhwMHUum<~pvo~w>bsn=;tLW?dQRY7M|LkXAs+L#mD+UvtnyJZoEX#XE3p^C1fM*ar%K#rTH z!t$7(d>rb*5!eP-U^FJV#V2DdgPO9rcpp#VXx#FL`6N~Pwppx$F@*A6n8i!tA_=M{ zuNrPnLKXK#ZL^VB6en8uUF_+BLXCXkLle0}sDZu56qxam z=}-s;l8;2KjZ%+@e@YUyDJY0dQK9mp_VakuNEX`sdQ=Dxqel9xz5Wa}qED!S1U)wI zkX)z+E1)7=)8?C_?r-lUk&47u_QKbwk7DC72jz4AGB<8Vt@>lA-EaXFkv~w+KR`9` z5>;{XC;UE$da__j@@t-&=eD5+^aEB#?*$TiApJ8lqTHx_c~sBqU|MWy%R6B@@&iyI z9D{{$J}QF8Ff~5IWcUG-qUX8Er$E)02I;WZ$w5L76vf(D0rkLGR0WezQ!xVz<4PQd z7f>CH`xBBiYrQ1?|uJy#nm zVpG)an2DOo{ip-$o|nWG5&@3u58+MRNB$LVVNGmtUH=qxOyc@qF4M3q*AHU_e200l zR8rSpaU7l_KMKFbCdpi9B3?v2*M^0r=jLE2^?NUp(1>27aQz>ZDh9azvwkb8$M>); zrVDhP%h(6EVNHJR$vSl2VGO=V<@#5DnbfX-Za+u8Wa^_v{1t}c0@S-?9~RgCe@Y^X zg0M8^LM*l*KN_{lZ{TN`l4G$y#^M}$ejL?sn;>(2IhG>-5Hn$Dde{FUwIpUC-wa1$ zZ`2h1joGyS|0U6Yg5V4$)SXcyo`GuMZ>)l)GP?e`9DwD>Z$(AuFVv#ToXPdC{@kd= zR{)tECknfgFB$AQmvAAfBmFYF&iAzMydi$KjIX`dnNprYPRq|zXxL$ux2UDO`yb9Iu zY0QcDP^&gcPE%n;RA{@P=D0Uz$5B`r7o!fM8(0Tlptg6FTxQN=Q4x(tMX+lwuPOMN z0-Z<`Q4P#MO~E|Wd9cKmZ$?ekZhQT>E&mxc6_+poucA758`YsVHlKz)rw-*tb)clz zChDL@-T}2*hoL?h%|g9YR-=yUU8tk=IBFID53}N3)PeI6^?X2>>;E_3Fzil#8&<+x z;bu{{!l&fDOG#+N({j81BXSO^f}N--Ig2Oo1#0o^&*S=kPk0yili$TJbnasRe6G_B zTjn=YwHd3D{~xMjArZ#>r~ws67OmH*Mnc=GCT_(s*agcLFspP4s^aSyhtUO1`Bc`^DQK7zutub41*QrT8iKy}eCCq^TmD>LmqRm-7 z6swbej~YRxlCCoXN1!^8gnu>E30ED<;UMgUTTvBfDed}y&({?5kYA1($Z_n2Z&8c1 zOBpj2J<$L8e;^6X$uv}`mS7otjfq&ata&%A!XD&vlrvK`9&3`XP~P?bLSY1ID$k+b zDM1xX#9Cq)`EM{DmtlGQSb_aNo{912mFLhutO!Yt#+YS{bAG`oHzu!b^iy{{?Am^9Mw5dyQ>iD{t~G3pgQWjY2hWIIcaMPI-wrufjKY%b>K`# zo#~6Q5S~VDtJkO#&8=phOM|L7*yeNCd|uQ*B2mwkN39WWO%mZGx?xeAgvD?#YVIGQ z9_&!vG}I4uf(=K#jHaOuq=lFZH=_ph3o7K7P#yXo>VwB0s0ieY@ek1JM3Yd34NRzyC?7 z$I02Gx-k{1=h;!A4MSB}*jf@b=M_;SYi`Tipw>Q5|c6I&j+9>(g*B`K71`X8+tQ!j`C!c0j$1#-i$3 zfa<_f^ySHrpd<6MD`K>F`I~feUd+ zQ!^!5nwba{Kvf)t>PQt-Xj`BL&;d1tU*RDfg<2ai&5g~xB-EpB*5RlFWCm(P^HC?+ zQmlqgaWzJ@FpKjy)ctocGd@9`ph;W0&Jhely(?~GP0SHzc3TIlw?7G;#bdE391A>_Amex0P`wJ|+JfMzimJYHce1x2+j@nsz24IZ+)ejbT{N+8bFrUS}E! zg>E6L=Q~hm`+3ya{Sg%*x4k*zgHe&Fi(lYW)Bt`(ZL{8`n|yzd`@+|ML$p+b9}!HdjS0nmVX+pp|tXYP(HGEwV+Z(5}Wb zco4O?ezy6WsI~C~Rqt!m_I3xF-4THP-~We^P(#tE^PnE8;tr@O8H_sHXQQTSJL>8`A55BPK9apbb)@hh^UbFU#*kl)dhRi*J!dfcUy1C4%?F2)sJZWt+P_OtC)jRG zi`Ow9K1RJn(ho5mjldG*E2Bo*4|Q}8Lv6$HHa{0NfE73j4-8@d&nHoBsQIFC9Xpc` z9%d>WidqXBQJ?vqU}G#a+#En(V{P*5P@jBWqZViBugw$0)A`Ky zD25tQdDJ=ZIqKwUYsITcbwM*_J1u9+-jZ*cwy^cA!Rd7`6KEp`Lq-+Lp;@n|v^;;XJ7FGN_Jz=CwC8 zuoqgRM%oiKR|%*^qx%%<38=YUfjWB6pzeEydi(v0Y9QCQrhy`;=SyQgtcvPz7t}z# zlSpU^eE2!8L{<0%RpC24hdJh$3Z9@wm~pN->B3PBbi^?1g~M?wsw1iAnY9#xS{tQM zi~ciY+j^bjB-DZHsE|CxLih$1iQMx|c|p`7DuGd09Tn09)czl5uP;J1yus%8qrN}< zjOyqkTmBOBs4Gbqn7J)rt%9ns8ES3x#KJfl!*C0#q6?@FUPrBoJE#smN1cq$LbFCf z@gdnls7Pj7WWKiF!*dEn?Zu{tAxm8U-{+OXnv^G7Y9dhwlae2Z3gJ*xgOjcEP^)_t zYEJiIaXf1CuTba8N7Nd~vdm0vCG=`lw4hMdPgB zqIShf)F+}Xw)_mLW7lyWK1ba*akc5dx7PWnDO-$cXB}#d9rlt?NUorE!4uRRf3o?Y zHD*!eMvbrp>Uud;L$xsuo1q%mg4#s~Q4#nFwI)uZ26PcUc-vn0-Xoz1JjA*925aN= z@68vFYnY6wDY({LFSgG7lIjE&qde7m^ZB8|2Jd-3GeH&1p4R@he2f`~7^)O_YSuEX9`@SD)NUE7-}1yMMda| z)!l9Odob$AEsI)o%~1DuMlHtC$lN=VceDTBkT_0(R`J0-ron7`%~!1mYYkLG?Xe^d zz&yAXbzYoBMd&JOP5gz5T#9|>{%olG>Z7KhCF=g(``G_F8b?r|5iUT5Y7HvHo3J+? z!Yx>Izj^K6LUqVq?b`6x{F#|&rr`NJ7^k8huZ&{QK8R{8hJS^i1kqs^bR6Xi^M`KjelYn z%z4OsOC61c$!|k#&s(UDYmbUyW)N>Os6nA1IUO`31bHrbd*9jn@ z5oANnNikH2s+${}hNzLZM{Ub~_WF2SN&Z{hfE9mmosIYiRo}d$W@5rSmSRD0SV=Ri@uo%uoy{t~4 zMtm2wc5?n?eoa>x{lEWPa>6vQ9koi&qvrHCo4<>S%wyCd``6}^oizDiEI@fEYFB)L zn!;8Xh22rxa)G_R6BUV5C)xiB#aRmUz%{Il4^bT{aLQCz4Ap@cR7e}64x)I}bDdD< z!dDoEt5K`{guQ+PH6@Qx9r=KYXqMAn^KrQ3X|pO@qUN?ODx`_lDVUf1cc=$Xpia1Z zs8yciXHy=9DzAr%NDqv_S=a;jqrPnyIAc!SPF@n~`Br?1_i;L2KWoZ+{bD|rFGqFk zk=1j~j66G*p}YX9o_1IYXQTgZiW+&)d2^73V>R;AQRUtXBy9$}Msz(P<6`w_| zjo(p=@iFSbH>gOYy=2Ps69Di#6b~>2L%H4ntma&TQ0;vDZyQEm0l#5@WDGs$;uR&z-UPKT%WmFKQ|RZWu#Q z9Vm*5a1|_oEpM>@^)?zwfkw0*70P|6*X9p4|C7Cb7FE#=)Ra8MM)(f(QmOm9u@P#7 zEl|6mJFdW`sDaeH$%j$S_Sl>3f6eKRKg@_uqZ+=2YTzC!63{efqZQ*3H3DRJ=1|=sMTEqwT)V#Ix-8jO_!h! zoTHeWsd|pv$iMm1JiqR~c?TTENXnm~PSlVGCLf2Iy0NH8dl!(B;OVr{^^3a$XwRnS34M(9m-U=1Lu9$#*ur1y}UQS*o=8m`?lu0||{Z^FIomc}<6?rifkDx;O2Wli~p1RH>ERH%*ay&C@APUp5s_$Y1k;(CodH>hO zij@F)R<3t3gsxw zi*ryR+K(gg8tSBM<9hsyvNyINKLHEj1MGnrJs$rbt9emVcpUY<4@lzi515iF7Rw>bLQjulFY>=9^*Fb&ZZePmpW})p_xS(p<``-bj!fb4FV^X(dS;`_ z7ob-A_cnjT=6}H?l;5{{ACu5XpP_n|Ho)WmEp`=bOFjW}<3-fsd5!fjI?&_)4mScT zk>7`!s&|+Vv!(R-53nkzNF<_;;ytLyJwqbrb?T=w6%58`F6=@bnU7I(om{CQs|}AJu749Sy@8+W%Ea=-?TH8rgi* zT6lokmLIGE>@6+MOsEhSN1X>%P;>bO>i)*4cS>8EAAnjrBT)CvK%D~%(L?*r3KH7) zt5HYr7S!CGKvi@L)xp;`pDM`XKbXQ%CuDilb4^jZsVAzz;i%`Ppx!adQ61clI@k`Q zR}EjaH{3zJCSPG9&QEWqAVUU^|KDut;4PJ-Mlv*`$A2J=MMY*U>UI7TPQt%YYhidM zkN#Z2! z@qa!afqEBQK~?w?J7Spv=D=8hS}RLXi|u>VC!fRE2rr^uI{6EF{QqWDAA6BMg`Kc$ zA&>u0E*4=e@*N{R`rnp%oed;ZkfpF`us!A_e+;#{A7N8WR>T}A@i?8l57l7aqNd|@ z@k{dEu`OOiZO`aprsEYclKf{FgI{53P5w?2nwux6MHLZc7T*BWh`&K~WFl(cu0$QR z8|?LMn4kOs)Jb|5^?4yladRLAp{|!hMXVi$VFKpV;+sW64Q<6VxZmbaq4x15v z7d0ZMgy}$_H613WI2c1Q2Wt0JM4gnMVO{a zd$2P3BdE`EPAL=O?5LBi9O~s$A9eCgMy-iOmdaSSTb-qP%U&E*tZ z;6wFr87lM}QLFtRYEfQBy*}TgBK9AuBgx8`da|QJ8-}`G*cy!*ad}i^n_1g=N$7~| zjtbdyRH&9R@Ou;95rPHF$_zf7FlD|z`CF!+Y`%Re^mYJaTt0J zlBh$XLOJt6VjN~AKNHFfu~JN|=Oe67oy@+qh_GZ!_G zqgb3x!XJzJ-q(q98~K{n-Q^DTrKz_%aCB0>Lvqh*-+_7!((ESJpQErffuHEhR=U(*K7gX>c^glB7*8~y*cz3)ha zL$#DtkjHXIf9}}ezs4y~Yx-{&<@%B}nrn4P@1QK4bTP`FdpJTU>qyxw-^qrd?l#}U zhE?2HU%}W4?n+NfOkiH%OShVsF_hp~}q`jd*~j#kw2 zjW4`WsJqx#tx=>q%-5??bGL=>Sfd8+d|zS&QU&~e% z+@-$Rt@gR`zS!0=flaupI6w1zi&}@c8-06P=W&PoZjkQid)Ins;8w16=BI~mc$*&X zNZ-RYp@Eyp?cW4m~Fs;_1H zcz3yPNBbDp=X=+_xf|z;BDzS_|99W6$+g_>_jUyq^At<{f1)VjeE\n" "Language-Team: Swedish\n" "Language: sv_FI\n" @@ -49,21 +49,21 @@ msgstr "Felaktiga parametern" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Månad" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "Nej. Användare gick med" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "Total" @@ -448,7 +448,7 @@ msgstr "Det gick inte att skapa en ny version av den här mallen.
" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -460,7 +460,7 @@ msgstr "Uppdaterad" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -550,7 +550,7 @@ msgid "Unable to delete this version of the template." msgstr "Det gick inte att ta bort den här versionen av mallen." #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "kopia" @@ -612,10 +612,14 @@ msgstr "Välj en organisation" msgid "Your organisation does not seem to be properly configured." msgstr "Din organisation verkar inte vara korrekt konfigurerad." -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "Skapat med hjälp av %{application_name}. Senast ändrad %{date}" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "[sida] av [topage]" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "Det här är en" @@ -649,11 +653,11 @@ msgstr "Denna plan är baserad på" msgid "template with customisations by the" msgstr "mall med anpassningar av" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "kopieras" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" @@ -661,23 +665,23 @@ msgstr "" "Det går inte att ändra planens status eftersom det behövs minst %{percentage} " "procent svarat" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "Det gick inte att hitta plan id %{plan_id}" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "Ditt projekt är nu ett test." -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "Ditt projekt är inte längre ett test." -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "Kan inte ändra planens teststatus" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "Det finns ingen plan kopplad till id %{ s" @@ -920,7 +924,7 @@ msgstr "fusione" msgid "merge" msgstr "sammanfoga" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "" @@ -986,19 +990,19 @@ msgstr "" " av teman kommer det att dras in baserat på dina val nedan, så det är bäst att" " du inte duplicerar för mycket text." -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "svara" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "kommer att skicka ett e-postmeddelande med ämne %{subject_name}" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "kommer att ta bort frågan" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "tar bort frågor" @@ -1150,7 +1154,7 @@ msgid "Public" msgstr "offentlig" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "Privat" @@ -1163,7 +1167,7 @@ msgid "Public: anyone can view." msgstr "Offentlig: alla kan visa." #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "Privat: begränsad till mig och personer jag bjuder in." @@ -1551,23 +1555,35 @@ msgstr "måste vara ett av följande format: jpeg, jpg, png, gif, bmp" msgid "can't be larger than 500KB" msgstr "kan inte vara större än 500 kB" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "organisatoriska" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "offentlig" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "Testa" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "Privat" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "måste vara efter startdatumet" @@ -1623,39 +1639,39 @@ msgstr "generate_copy! kräver ett organisationsmål" msgid "Copy of %{template}" msgstr "Kopia av %{template}" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "generate_version! kräver en publicerad mall" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "skräddarsy! kräver ett organisationsmål" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "skräddarsy! kräver en mall från en funderare" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "Du kan inte publicera en publicerad mall." -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "Du kan inte publicera en historisk version av denna mall." -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "Du kan inte publicera en mall utan faser." -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "Du kan inte publicera en mall utan sektioner i en fas." -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "Du kan inte publicera en mall utan frågor i en sektion." -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "Förhållandena i mallen hänvisar bakåt" @@ -1852,11 +1868,11 @@ msgstr ": title krävs för varje: dataset" msgid "invalid JSON" msgstr "Ogiltig JSON" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "upgrade_customization! kräver en anpassad mall" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1936,7 +1952,7 @@ msgstr "Vänligen vänta, Standarder laddas" #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1972,14 +1988,14 @@ msgstr "svarade" msgid " by %{user_name}" msgstr "av %{user_name}" -#: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " -msgstr "Detta svar tas bort" - #: ../../app/views/answers/_status.html.erb:15 msgid " questions from your plan." msgstr " frågor från din plan." +#: ../../app/views/answers/_status.html.erb:15 +msgid "This answer removes " +msgstr "Detta svar tas bort" + #: ../../app/views/answers/_status.html.erb:21 msgid "This answer triggers email(s) to " msgstr "Detta svar utlöser e-post (er) till" @@ -2632,7 +2648,7 @@ msgstr "" " \"skapa plan\"." #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -2969,50 +2985,50 @@ msgstr "Logga ut" msgid "%{application_name}" msgstr "%{application_name}" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" -msgstr "Fel:" - -#: ../../app/views/layouts/application.html.erb:91 +#: ../../app/views/layouts/application.html.erb:92 msgid "Notice:" msgstr "Lägga märke till:" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" +msgstr "Fel:" + +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "Läser in..." -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "Detta fält är obligatoriskt." -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "Visa lösenord" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "Välj en organisation från listan." -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "Min organisation är inte listad" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "N / A" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "Dölj lista." -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "Se hela listan över partnerinstitut." -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." @@ -3020,27 +3036,27 @@ msgstr "" "Det gick inte att hitta en lämplig mall för forskningsorganisationen och funde" "raren du valt." -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "Vänligen välj en forskningsorganisation och funderare att fortsätta." -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "Läser in ..." -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "Det går inte att läsa in sektionens innehåll just nu." -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "Det gick inte att läsa in innehållets innehåll just nu." -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "Öppnar i nytt fönster" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" @@ -3050,11 +3066,11 @@ msgstr "" "örslag. Använd Enter-knappen för att välja ett förslag eller Escape-knappen fö" "r att stänga förslagen." -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "Inga resultat är tillgängliga för din post." -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "Söker ..." @@ -3400,14 +3416,14 @@ msgstr "Åtgärder" msgid "Feedback requested" msgstr "Be om feedback" -#: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" -msgstr "Komplett" - #: ../../app/views/org_admin/plans/index.html.erb:29 msgid "Notify the plan owner that I have finished providing feedback" msgstr "Meddela planägaren att jag är klar med att ge feedback" +#: ../../app/views/org_admin/plans/index.html.erb:29 +msgid "Complete" +msgstr "Komplett" + #: ../../app/views/org_admin/plans/index.html.erb:39 msgid "" "Download plans (new window)Info: Simple information message, displayed in blue.
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 Zf3hbJNFDlNYKph~|9^f?9nX`%{{!rY-a!BW delta 20582 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 avN5sIW&gkPc1*8lm;86fk=ma7+5Qhmp7r|x diff --git a/config/locale/tr_TR/app.po b/config/locale/tr_TR/app.po index ffa4d46f93..5365341da1 100644 --- a/config/locale/tr_TR/app.po +++ b/config/locale/tr_TR/app.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: roadmap 1.0\n" "Report-Msgid-Bugs-To: contact@translation.io\n" -"POT-Creation-Date: 2023-02-03 09:02+0100\n" -"PO-Revision-Date: 2023-02-03 09:02+0100\n" +"POT-Creation-Date: 2023-04-05 13:01-0700\n" +"PO-Revision-Date: 2023-04-05 22:01+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -49,21 +49,21 @@ msgstr "Hatalı Parametreler" #: ../../app/controllers/api/v0/statistics_controller.rb:41 #: ../../app/controllers/api/v0/statistics_controller.rb:89 #: ../../app/controllers/api/v0/statistics_controller.rb:136 -#: ../../app/controllers/usage_controller.rb:66 -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:67 +#: ../../app/controllers/usage_controller.rb:88 msgid "Month" msgstr "Ay" #: ../../app/controllers/api/v0/statistics_controller.rb:41 -#: ../../app/controllers/usage_controller.rb:66 +#: ../../app/controllers/usage_controller.rb:67 msgid "No. Users joined" msgstr "Katılan kullanıcı sayısı" #: ../../app/controllers/api/v0/statistics_controller.rb:47 #: ../../app/controllers/api/v0/statistics_controller.rb:95 #: ../../app/controllers/api/v0/statistics_controller.rb:142 -#: ../../app/controllers/usage_controller.rb:72 -#: ../../app/controllers/usage_controller.rb:93 +#: ../../app/controllers/usage_controller.rb:73 +#: ../../app/controllers/usage_controller.rb:94 msgid "Total" msgstr "Toplam" @@ -442,7 +442,7 @@ msgstr "Bu şablonun yeni bir sürümü oluşturulamıyor.
" #: ../../app/controllers/org_admin/phases_controller.rb:147 #: ../../app/controllers/org_admin/questions_controller.rb:166 #: ../../app/controllers/org_admin/users_controller.rb:30 -#: ../../app/controllers/plans_controller.rb:415 +#: ../../app/controllers/plans_controller.rb:416 #: ../../app/controllers/super_admin/api_clients_controller.rb:68 #: ../../app/controllers/super_admin/notifications_controller.rb:52 #: ../../app/controllers/super_admin/themes_controller.rb:39 @@ -454,7 +454,7 @@ msgstr "güncellendi" #: ../../app/controllers/org_admin/phases_controller.rb:149 #: ../../app/controllers/org_admin/questions_controller.rb:169 #: ../../app/controllers/org_admin/users_controller.rb:32 -#: ../../app/controllers/plans_controller.rb:418 +#: ../../app/controllers/plans_controller.rb:419 #: ../../app/controllers/super_admin/api_clients_controller.rb:70 #: ../../app/controllers/super_admin/notifications_controller.rb:55 #: ../../app/controllers/super_admin/themes_controller.rb:41 @@ -544,7 +544,7 @@ msgid "Unable to delete this version of the template." msgstr "Şablonun bu sürümü silinemiyor." #: ../../app/controllers/org_admin/template_copies_controller.rb:20 -#: ../../app/controllers/plans_controller.rb:394 +#: ../../app/controllers/plans_controller.rb:395 msgid "copy" msgstr "kopyala" @@ -608,10 +608,14 @@ msgstr "Lütfen bir kuruluş seçin" msgid "Your organisation does not seem to be properly configured." msgstr "Kuruluşunuz düzgün yapılandırılmamış gibi görünüyor." -#: ../../app/controllers/plan_exports_controller.rb:100 +#: ../../app/controllers/plan_exports_controller.rb:106 msgid "Created using %{application_name}. Last modified %{date}" msgstr "%{application_name} kullanılarak oluşturuldu. Son değiştirildiği tarih %{date}" +#: ../../app/controllers/plan_exports_controller.rb:111 +msgid "[page] of [topage]" +msgstr "[sayfa] / [topage]" + #: ../../app/controllers/plans_controller.rb:52 msgid "This is a" msgstr "Bu bir" @@ -645,11 +649,11 @@ msgstr "Bu plan şunlara dayanmaktadır:" msgid "template with customisations by the" msgstr "şu kişi tarafından özelleştirmeler içeren şablon:" -#: ../../app/controllers/plans_controller.rb:392 +#: ../../app/controllers/plans_controller.rb:393 msgid "copied" msgstr "kopyalandı" -#: ../../app/controllers/plans_controller.rb:423 +#: ../../app/controllers/plans_controller.rb:424 msgid "" "Unable to change the plan's status since it is needed at least %{percentage} p" "ercentage responded" @@ -657,23 +661,23 @@ msgstr "" "En az yüzde %{percentage} yanıt verilmesi gerektiğinden planın durumu değiştir" "ilemiyor" -#: ../../app/controllers/plans_controller.rb:429 +#: ../../app/controllers/plans_controller.rb:430 msgid "Unable to find plan id %{plan_id}" msgstr "%{plan_id} no.'lu plan bulunamadı" -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is now a test." msgstr "Projeniz şu an bir test." -#: ../../app/controllers/plans_controller.rb:444 +#: ../../app/controllers/plans_controller.rb:445 msgid "Your project is no longer a test." msgstr "Projeniz artık bir test değil." -#: ../../app/controllers/plans_controller.rb:448 +#: ../../app/controllers/plans_controller.rb:449 msgid "Unable to change the plan's test status" msgstr "Planın test durumu değiştirilemiyor" -#: ../../app/controllers/plans_controller.rb:461 +#: ../../app/controllers/plans_controller.rb:462 msgid "There is no plan associated with id %{s" msgstr "%{ kimliğiyle ilişkilendirilmiş bir plan yok s" @@ -915,7 +919,7 @@ msgstr "birleştirildi" msgid "merge" msgstr "birleştir" -#: ../../app/controllers/usage_controller.rb:87 +#: ../../app/controllers/usage_controller.rb:88 msgid "No. Created Plans" msgstr "" @@ -982,19 +986,19 @@ msgstr "" "sa, bu, aşağıdaki seçimlerinize göre çekilecektir, bu nedenle çok fazla metin " "kopyalanarak çoğaltılmamalıdır." -#: ../../app/helpers/conditions_helper.rb:193 +#: ../../app/helpers/conditions_helper.rb:191 msgid "Answering" msgstr "Cevaplıyor" -#: ../../app/helpers/conditions_helper.rb:197 +#: ../../app/helpers/conditions_helper.rb:195 msgid " will send an email with subject %{subject_name}" msgstr "%{subject_name} konulu bir e-posta gönderecek" -#: ../../app/helpers/conditions_helper.rb:203 +#: ../../app/helpers/conditions_helper.rb:201 msgid " will remove question " msgstr "soruyu kaldıracak" -#: ../../app/helpers/conditions_helper.rb:204 +#: ../../app/helpers/conditions_helper.rb:202 msgid " will remove questions " msgstr "soruları kaldıracak" @@ -1146,7 +1150,7 @@ msgid "Public" msgstr "Herkese Açık" #: ../../app/helpers/plans_helper.rb:26 ../../app/helpers/plans_helper.rb:28 -#: ../../app/views/layouts/application.html.erb:128 +#: ../../app/views/layouts/application.html.erb:129 msgid "Private" msgstr "Özel" @@ -1159,7 +1163,7 @@ msgid "Public: anyone can view." msgstr "Herkese açık: herkes görüntüleyebilir." #: ../../app/helpers/plans_helper.rb:39 -#: ../../app/views/layouts/application.html.erb:129 +#: ../../app/views/layouts/application.html.erb:130 msgid "Private: restricted to me and people I invite." msgstr "Özel: benimle ve davet ettiğim kişilerle sınırlı." @@ -1543,23 +1547,35 @@ msgstr "şu biçimlerden biri olmalıdır: jpeg, jpg, png, gif, bmp" msgid "can't be larger than 500KB" msgstr "500KB'den büyük olamaz" -#: ../../app/models/plan.rb:60 +#: ../../app/models/plan.rb:62 msgid "organisational" msgstr "kuruluşla ilgili" -#: ../../app/models/plan.rb:61 +#: ../../app/models/plan.rb:63 msgid "public" msgstr "herkese açık" -#: ../../app/models/plan.rb:62 +#: ../../app/models/plan.rb:64 msgid "test" msgstr "test" -#: ../../app/models/plan.rb:63 +#: ../../app/models/plan.rb:65 msgid "private" msgstr "özel" -#: ../../app/models/plan.rb:615 +#: ../../app/models/plan.rb:69 +msgid "Planned" +msgstr "" + +#: ../../app/models/plan.rb:70 +msgid "Funded" +msgstr "" + +#: ../../app/models/plan.rb:71 +msgid "Denied" +msgstr "" + +#: ../../app/models/plan.rb:623 msgid "must be after the start date" msgstr "başlangıç tarihinden sonra olmalıdır" @@ -1615,39 +1631,39 @@ msgstr "generate_copy! bir kuruluş hedefi gerektirir" msgid "Copy of %{template}" msgstr "%{template} şablonunun kopyası" -#: ../../app/models/template.rb:391 +#: ../../app/models/template.rb:392 msgid "generate_version! requires a published template" msgstr "generate_version! yayınlanmış bir şablon gerektirir" -#: ../../app/models/template.rb:405 +#: ../../app/models/template.rb:407 msgid "customize! requires an organisation target" msgstr "customize! bir kuruluş hedefi gerektirir" -#: ../../app/models/template.rb:408 +#: ../../app/models/template.rb:410 msgid "customize! requires a template from a funder" msgstr "customize! bir fon sağlayıcıdan bir şablon gerektirir" -#: ../../app/models/template.rb:444 +#: ../../app/models/template.rb:447 msgid "You can not publish a published template. " msgstr "Yayınlanmış bir şablonu yayınlayamazsınız." -#: ../../app/models/template.rb:448 +#: ../../app/models/template.rb:451 msgid "You can not publish a historical version of this template. " msgstr "Bu şablonun geçmiş bir sürümünü yayınlayamazsınız." -#: ../../app/models/template.rb:453 +#: ../../app/models/template.rb:456 msgid "You can not publish a template without phases. " msgstr "Aşamaları olmayan bir şablonu yayınlayamazsınız." -#: ../../app/models/template.rb:458 +#: ../../app/models/template.rb:461 msgid "You can not publish a template without sections in a phase. " msgstr "Bir aşamasında bölüm yer almayan bir şablonu yayınlayamazsınız." -#: ../../app/models/template.rb:463 +#: ../../app/models/template.rb:466 msgid "You can not publish a template without questions in a section. " msgstr "Bir bölümünde soru bulunmayan bir şablonu yayınlayamazsınız." -#: ../../app/models/template.rb:467 +#: ../../app/models/template.rb:470 msgid "Conditions in the template refer backwards" msgstr "Şablondaki koşullar geriye dönük" @@ -1844,11 +1860,11 @@ msgstr "Her :dataset için :title zorunludur" msgid "invalid JSON" msgstr "Geçersiz JSON" -#: ../../app/services/template/upgrade_customization_service.rb:67 +#: ../../app/services/template/upgrade_customization_service.rb:66 msgid "upgrade_customization! requires a customised template" msgstr "upgrade_customization! özelleştirilmiş bir şablon gerektirir" -#: ../../app/services/template/upgrade_customization_service.rb:71 +#: ../../app/services/template/upgrade_customization_service.rb:70 msgid "" "upgrade cannot be carried out since there is no published template of its curr" "ent funder" @@ -1928,7 +1944,7 @@ msgstr "Lütfen bekleyin, Standartlar yükleniyor" #: ../../app/views/org_admin/questions/_form.html.erb:99 #: ../../app/views/org_admin/questions/_show.html.erb:209 #: ../../app/views/org_admin/sections/_form.html.erb:17 -#: ../../app/views/org_admin/templates/_form.html.erb:82 +#: ../../app/views/org_admin/templates/_form.html.erb:88 #: ../../app/views/org_admin/users/edit.html.erb:54 #: ../../app/views/orgs/_feedback_form.html.erb:38 #: ../../app/views/orgs/_profile_form.html.erb:197 @@ -1964,14 +1980,14 @@ msgstr "Cevaplandı" msgid " by %{user_name}" msgstr " %{user_name} tarafından" -#: ../../app/views/answers/_status.html.erb:15 -msgid "This answer removes " -msgstr "Bu cevap şunu kaldırır:" - #: ../../app/views/answers/_status.html.erb:15 msgid " questions from your plan." msgstr " planınızdan sorular." +#: ../../app/views/answers/_status.html.erb:15 +msgid "This answer removes " +msgstr "Bu cevap şunu kaldırır:" + #: ../../app/views/answers/_status.html.erb:21 msgid "This answer triggers email(s) to " msgstr "Bu yanıt, e-postaları şu adreslere gitmesine neden olur:" @@ -2633,7 +2649,7 @@ msgstr "" " seçebileceklerdir." #: ../../app/views/guidance_groups/_guidance_group_form.html.erb:15 -#: ../../app/views/org_admin/templates/_form.html.erb:35 +#: ../../app/views/org_admin/templates/_form.html.erb:41 #: ../../app/views/org_admin/templates/_row.html.erb:10 #: ../../app/views/org_admin/templates/_row.html.erb:13 #: ../../app/views/org_admin/templates/_show.html.erb:19 @@ -2969,50 +2985,50 @@ msgstr "Çıkış Yap" msgid "%{application_name}" msgstr "%{application_name}" -#: ../../app/views/layouts/application.html.erb:91 -msgid "Error:" -msgstr "Hata:" - -#: ../../app/views/layouts/application.html.erb:91 +#: ../../app/views/layouts/application.html.erb:92 msgid "Notice:" msgstr "Bildiri:" -#: ../../app/views/layouts/application.html.erb:102 +#: ../../app/views/layouts/application.html.erb:92 +msgid "Error:" +msgstr "Hata:" + +#: ../../app/views/layouts/application.html.erb:103 msgid "Loading..." msgstr "Yükleniyor..." -#: ../../app/views/layouts/application.html.erb:121 +#: ../../app/views/layouts/application.html.erb:122 #: ../../app/views/plans/new.html.erb:2 msgid "This field is required." msgstr "Bu alan zorunludur." -#: ../../app/views/layouts/application.html.erb:123 +#: ../../app/views/layouts/application.html.erb:124 #: ../../app/views/shared/_create_account_form.html.erb:31 msgid "Show password" msgstr "Şifreyi göster" -#: ../../app/views/layouts/application.html.erb:124 +#: ../../app/views/layouts/application.html.erb:125 msgid "Select an organisation from the list." msgstr "Listeden bir kuruluş seçin." -#: ../../app/views/layouts/application.html.erb:125 +#: ../../app/views/layouts/application.html.erb:126 msgid "My organisation isn't listed" msgstr "Kuruluşum listelenmedi" -#: ../../app/views/layouts/application.html.erb:127 +#: ../../app/views/layouts/application.html.erb:128 #: ../../app/views/paginable/plans/_privately_visible.html.erb:42 msgid "N/A" msgstr "Erişilebilir değil" -#: ../../app/views/layouts/application.html.erb:131 +#: ../../app/views/layouts/application.html.erb:132 msgid "Hide list." msgstr "Listeyi gizle." -#: ../../app/views/layouts/application.html.erb:132 +#: ../../app/views/layouts/application.html.erb:133 msgid "See the full list of partner institutions." msgstr "Ortak kurumların tam listesine bakın." -#: ../../app/views/layouts/application.html.erb:134 +#: ../../app/views/layouts/application.html.erb:135 msgid "" "Unable to find a suitable template for the research organisation and funder yo" "u selected." @@ -3020,27 +3036,27 @@ msgstr "" "Seçtiğiniz araştırma kuruluşu ve fon sağlayıcı için uygun bir şablon bulunamad" "ı." -#: ../../app/views/layouts/application.html.erb:135 +#: ../../app/views/layouts/application.html.erb:136 msgid "Please select a research organisation and funder to continue." msgstr "Devam etmek için lütfen bir araştırma kuruluşu ve fon sağlayıcı seçin." -#: ../../app/views/layouts/application.html.erb:137 +#: ../../app/views/layouts/application.html.erb:138 msgid "Loading ..." msgstr "Yükleniyor ..." -#: ../../app/views/layouts/application.html.erb:138 +#: ../../app/views/layouts/application.html.erb:139 msgid "Unable to load the section's content at this time." msgstr "Bölümün içeriği şu anda yüklenemiyor" -#: ../../app/views/layouts/application.html.erb:139 +#: ../../app/views/layouts/application.html.erb:140 msgid "Unable to load the question's content at this time." msgstr "Sorunun içeriği şu anda yüklenemiyor." -#: ../../app/views/layouts/application.html.erb:140 +#: ../../app/views/layouts/application.html.erb:141 msgid "Opens in a new window" msgstr "Yeni bir pencerede açılır" -#: ../../app/views/layouts/application.html.erb:142 +#: ../../app/views/layouts/application.html.erb:143 msgid "" "%{n} results are available, use up and down arrows to navigate suggestions. Us" "e the Enter key to select a suggestion or the Escape key to close the suggesti" @@ -3050,11 +3066,11 @@ msgstr "" " Bir öneri seçmek için Enter tuşunu veya önerileri kapatmak için Çıkış tuşunu " "kullanın." -#: ../../app/views/layouts/application.html.erb:143 +#: ../../app/views/layouts/application.html.erb:144 msgid "No results are available for your entry." msgstr "Girişiniz için sonuç bulunamadı." -#: ../../app/views/layouts/application.html.erb:144 +#: ../../app/views/layouts/application.html.erb:145 msgid "Searching ..." msgstr "Aranıyor ..." @@ -3401,14 +3417,14 @@ msgstr "Eylemler" msgid "Feedback requested" msgstr "Geri bildirim istendi." -#: ../../app/views/org_admin/plans/index.html.erb:29 -msgid "Complete" -msgstr "Tamamlanmış" - #: ../../app/views/org_admin/plans/index.html.erb:29 msgid "Notify the plan owner that I have finished providing feedback" msgstr "Plan sahibine, geri bildirim sağlamayı tamamladığımı bildir" +#: ../../app/views/org_admin/plans/index.html.erb:29 +msgid "Complete" +msgstr "Tamamlanmış" + #: ../../app/views/org_admin/plans/index.html.erb:39 msgid "" "Download plans (new window)Info: Simple information message, displayed in blue.
Date: Thu, 6 Apr 2023 16:30:55 -0700 Subject: [PATCH 54/77] initial upgrade of tinymce to 6.x --- app/javascript/src/answers/edit.js | 357 ++--- app/javascript/src/guidances/newEdit.js | 2 +- app/javascript/src/notes/index.js | 6 +- app/javascript/src/orgAdmin/phases/newEdit.js | 45 +- app/javascript/src/orgAdmin/templates/edit.js | 4 +- app/javascript/src/orgAdmin/templates/new.js | 4 +- app/javascript/src/orgs/adminEdit.js | 2 +- app/javascript/src/plans/editDetails.js | 6 +- app/javascript/src/researchOutputs/form.js | 2 +- .../src/superAdmin/notifications/edit.js | 4 +- .../src/superAdmin/themes/newEdit.js | 2 +- app/javascript/src/utils/conditionalFields.js | 2 +- .../src/utils/{tinymce.js.erb => tinymce.js} | 114 +- .../_new_edit_question_textarea.html.erb | 2 +- package.json | 2 +- public/tinymce/skins/oxide/content.css | 82 +- public/tinymce/skins/oxide/content.inline.css | 82 +- .../skins/oxide/content.inline.min.css | 8 +- public/tinymce/skins/oxide/content.min.css | 8 +- public/tinymce/skins/oxide/content.mobile.css | 29 - .../skins/oxide/content.mobile.min.css | 7 - .../skins/oxide/fonts/tinymce-mobile.woff | Bin 4624 -> 0 bytes public/tinymce/skins/oxide/skin.css | 1266 ++++++++++++----- public/tinymce/skins/oxide/skin.min.css | 8 +- public/tinymce/skins/oxide/skin.mobile.css | 673 --------- .../tinymce/skins/oxide/skin.mobile.min.css | 7 - public/tinymce/skins/oxide/skin.shadowdom.css | 9 +- .../skins/oxide/skin.shadowdom.min.css | 8 +- yarn.lock | 358 ++--- 29 files changed, 1509 insertions(+), 1590 deletions(-) rename app/javascript/src/utils/{tinymce.js.erb => tinymce.js} (61%) delete mode 100644 public/tinymce/skins/oxide/content.mobile.css delete mode 100644 public/tinymce/skins/oxide/content.mobile.min.css delete mode 100644 public/tinymce/skins/oxide/fonts/tinymce-mobile.woff delete mode 100644 public/tinymce/skins/oxide/skin.mobile.css delete mode 100644 public/tinymce/skins/oxide/skin.mobile.min.css diff --git a/app/javascript/src/answers/edit.js b/app/javascript/src/answers/edit.js index 7376e40a4d..9dbbdd6b7b 100644 --- a/app/javascript/src/answers/edit.js +++ b/app/javascript/src/answers/edit.js @@ -3,195 +3,204 @@ import { isNumber, isString, } from '../utils/isType'; -import { Tinymce } from '../utils/tinymce.js.erb'; +import { Tinymce } from '../utils/tinymce.js'; import debounce from '../utils/debounce'; import { updateSectionProgress, getQuestionDiv } from '../utils/sectionUpdate'; import datePicker from '../utils/datePicker'; import TimeagoFactory from '../utils/timeagoFactory.js.erb'; $(() => { - const editorClass = 'tinymce_answer'; - const showSavingMessage = (jQuery) => jQuery.closest('.question-form').find('[data-status="saving"]').show(); - const hideSavingMessage = (jQuery) => jQuery.closest('.question-form').find('[data-status="saving"]').hide(); - const closestErrorSavingMessage = (jQuery) => jQuery.closest('.question-form').find('[data-status="error-saving"]'); - const questionId = (jQuery) => jQuery.closest('.form-answer').attr('data-autosave'); - const isStale = (jQuery) => jQuery.closest('.question-form').find('.answer-locking').text().trim().length !== 0; - const isReadOnly = () => $('.form-answer fieldset:disabled').length > 0; - const showOrHideQuestions = (data) => { - data.section_data.forEach((section) => { - updateSectionProgress(section.sec_id, section.no_ans, section.no_qns); - }); - data.qn_data.to_hide.forEach((questionid) => { - getQuestionDiv(questionid).slideUp(); - }); - data.qn_data.to_show.forEach((questionid) => { - getQuestionDiv(questionid).slideDown(); - }); - }; - /* - * A map of debounced functions, one for each input, textarea or select change at any - * form with class form-answer. The key represents a question id and the value holds - * the debounced function for a given input, textarea or select. Note, this map is - * populated on demand, i.e. the first time a change is made at a given input, textarea - * or select within the form, a new key-value should be created. Succesive times, the - * debounced function should be retrieved instead. - */ - const debounceMap = {}; - const autoSaving = (jQuery) => { - if (!isStale(jQuery)) { - jQuery.closest('.form-answer').trigger('submit'); - } - }; - const doneCallback = (data, jQuery) => { - const form = jQuery.closest('form'); - // Validation for the data object received - if (isObject(data)) { - if (isObject(data.question)) { // Object related to question within data received - if (isNumber(data.question.id)) { - if (isString(data.question.answer_status)) { - $(`#answer-status-${data.question.id}`).html(data.question.answer_status); - TimeagoFactory.render($('time.timeago')); - } - if (isString(data.question.locking)) { // When an answer is stale... - // Removes event handlers for the saved form - detachEventHandlers(form); // eslint-disable-line no-use-before-define - // Reflesh form view with the new partial form received - $(`#answer-form-${data.question.id}`).html(data.question.form); - // Retrieves the newly form added to the DOM - const newForm = $(`#answer-form-${data.question.id}`).find('form'); - // Attaches event handlers for the new form - attachEventHandlers(newForm); // eslint-disable-line no-use-before-define - // Refresh optimistic locking view with the form that caused the locking - $(`#answer-locking-${data.question.id}`).html(data.question.locking); - } else { // When answer is NOT stale... - $(`#answer-locking-${data.question.id}`).html(''); - if (isNumber(data.question.answer_lock_version)) { - form.find('#answer_lock_version').val(data.question.answer_lock_version); + if ($('form.form-answer').length > 0) { + const editorClass = 'tinymce_answer'; + const showSavingMessage = (jQuery) => jQuery.closest('.question-form').find('[data-status="saving"]').show(); + const hideSavingMessage = (jQuery) => jQuery.closest('.question-form').find('[data-status="saving"]').hide(); + const closestErrorSavingMessage = (jQuery) => jQuery.closest('.question-form').find('[data-status="error-saving"]'); + const questionId = (jQuery) => jQuery.closest('.form-answer').attr('data-autosave'); + const isStale = (jQuery) => jQuery.closest('.question-form').find('.answer-locking').text().trim().length !== 0; + const isReadOnly = () => $('.form-answer fieldset:disabled').length > 0; + const showOrHideQuestions = (data) => { + data.section_data.forEach((section) => { + updateSectionProgress(section.sec_id, section.no_ans, section.no_qns); + }); + data.qn_data.to_hide.forEach((questionid) => { + getQuestionDiv(questionid).slideUp(); + }); + data.qn_data.to_show.forEach((questionid) => { + getQuestionDiv(questionid).slideDown(); + }); + }; + /* + * A map of debounced functions, one for each input, textarea or select change at any + * form with class form-answer. The key represents a question id and the value holds + * the debounced function for a given input, textarea or select. Note, this map is + * populated on demand, i.e. the first time a change is made at a given input, textarea + * or select within the form, a new key-value should be created. Succesive times, the + * debounced function should be retrieved instead. + */ + const debounceMap = {}; + const autoSaving = (jQuery) => { + if (!isStale(jQuery)) { + jQuery.closest('.form-answer').trigger('submit'); + } + }; + const doneCallback = (data, jQuery) => { + const form = jQuery.closest('form'); + // Validation for the data object received + if (isObject(data)) { + if (isObject(data.question)) { // Object related to question within data received + if (isNumber(data.question.id)) { + if (isString(data.question.answer_status)) { + $(`#answer-status-${data.question.id}`).html(data.question.answer_status); + TimeagoFactory.render($('time.timeago')); + } + if (isString(data.question.locking)) { // When an answer is stale... + // Removes event handlers for the saved form + detachEventHandlers(form); // eslint-disable-line no-use-before-define + // Reflesh form view with the new partial form received + $(`#answer-form-${data.question.id}`).html(data.question.form); + // Retrieves the newly form added to the DOM + const newForm = $(`#answer-form-${data.question.id}`).find('form'); + // Attaches event handlers for the new form + attachEventHandlers(newForm); // eslint-disable-line no-use-before-define + // Refresh optimistic locking view with the form that caused the locking + $(`#answer-locking-${data.question.id}`).html(data.question.locking); + } else { // When answer is NOT stale... + $(`#answer-locking-${data.question.id}`).html(''); + if (isNumber(data.question.answer_lock_version)) { + form.find('#answer_lock_version').val(data.question.answer_lock_version); + } } } + }// End Object related to question within data received + if (isObject(data.plan)) { // Object related to plan within data received + if (isString(data.plan.progress)) { + $('.progress').html(data.plan.progress); + } } - }// End Object related to question within data received - if (isObject(data.plan)) { // Object related to plan within data received - if (isString(data.plan.progress)) { - $('.progress').html(data.plan.progress); - } + showOrHideQuestions(data); } - showOrHideQuestions(data); - } - }; - const failCallback = (error, jQuery) => { - closestErrorSavingMessage(jQuery).html( - (isObject(error.responseJSON) && isString(error.responseJSON.detail)) - ? error.responseJSON.detail : error.statusText, - ).show(); - }; - const changeHandler = (e) => { - const target = $(e.target); - const id = questionId(target); - if (!debounceMap[id]) { - debounceMap[id] = debounce(autoSaving); - } - debounceMap[id](target); - }; - const submitHandler = (e) => { - e.preventDefault(); - const target = $(e.target); - const form = target.closest('form'); - const id = questionId(target); - if (debounceMap[id]) { - // Cancels the delated execution of autoSaving - // (e.g. user clicks the button before the delay is met) - debounceMap[id].cancel(); - } - $.ajax({ - method: form.attr('method'), - url: form.attr('action'), - data: form.serializeArray(), - beforeSend: () => { - showSavingMessage(target); - }, - complete: () => { - hideSavingMessage(target); - }, - }).done((data) => { - doneCallback(data, target); - }).fail((error) => { - failCallback(error, target); - }); - }; - const blurHandler = (editor) => { - const target = $(editor.getElement()); - const id = questionId(target); - if (editor.isDirty()) { - editor.save(); // Saves contents from editor to the textarea element + }; + const failCallback = (error, jQuery) => { + closestErrorSavingMessage(jQuery).html( + (isObject(error.responseJSON) && isString(error.responseJSON.detail)) + ? error.responseJSON.detail : error.statusText, + ).show(); + }; + const changeHandler = (e) => { + const target = $(e.target); + const id = questionId(target); if (!debounceMap[id]) { debounceMap[id] = debounce(autoSaving); } debounceMap[id](target); - } - }; - const focusHandler = (editor) => { - const id = questionId($(editor.getElement())); - if (debounceMap[id]) { - /* Cancels the delayed execution of autoSaving, either because user - * transitioned from an option_based question to the comment or - * because the target element triggered blur and focus before - * the delayed execution of autoSaving. - */ - debounceMap[id].cancel(); - } - }; - const formHandlers = ({ jQuery, attachment = 'off' }) => { - // Listeners to change and submit for a form - jQuery[attachment]('change', changeHandler); - jQuery[attachment]('submit', submitHandler); - }; - const editorHandlers = (editor) => { - // Listeners to blur and focus events for a tinymce instance - editor.on('Blur', () => blurHandler(editor)); - editor.on('Focus', () => focusHandler(editor)); - }; + }; + const submitHandler = (e) => { + e.preventDefault(); + const target = $(e.target); + const form = target.closest('form'); + const id = questionId(target); + +console.log('SUBMITTING'); +console.log(target); +console.log(form); +console.log(id); + + if (debounceMap[id]) { + // Cancels the delated execution of autoSaving + // (e.g. user clicks the button before the delay is met) + debounceMap[id].cancel(); + } + $.ajax({ + method: form.attr('method'), + url: form.attr('action'), + data: form.serializeArray(), + beforeSend: () => { + showSavingMessage(target); + }, + complete: () => { + hideSavingMessage(target); + }, + }).done((data) => { + doneCallback(data, target); + }).fail((error) => { + failCallback(error, target); + }); + }; + const blurHandler = (editor) => { + const target = $(editor.getElement()); + const id = questionId(target); + if (editor.isDirty()) { + editor.save(); // Saves contents from editor to the textarea element + if (!debounceMap[id]) { + debounceMap[id] = debounce(autoSaving); + } + debounceMap[id](target); + } + }; + const focusHandler = (editor) => { + const id = questionId($(editor.getElement())); + if (debounceMap[id]) { + /* Cancels the delayed execution of autoSaving, either because user + * transitioned from an option_based question to the comment or + * because the target element triggered blur and focus before + * the delayed execution of autoSaving. + */ + debounceMap[id].cancel(); + } + }; + const formHandlers = ({ jQuery, attachment = 'off' }) => { + // Listeners to change and submit for a form + jQuery[attachment]('change', changeHandler); + jQuery[attachment]('submit', submitHandler); + }; + const editorHandlers = (editor) => { + // Listeners to blur and focus events for a tinymce instance + editor.on('Blur', () => blurHandler(editor)); + editor.on('Focus', () => focusHandler(editor)); + }; + /* + Detaches events from a specific form including its tinymce editor + @param { objecg } - jQueryForm to remove events + */ + const detachEventHandlers = (jQueryForm) => { + formHandlers({ jQuery: jQueryForm, attachment: 'off' }); + const tinymceId = jQueryForm.find(`.${editorClass}`).attr('id'); + Tinymce.destroyEditorById(tinymceId); + }; /* - Detaches events from a specific form including its tinymce editor - @param { objecg } - jQueryForm to remove events - */ - const detachEventHandlers = (jQueryForm) => { - formHandlers({ jQuery: jQueryForm, attachment: 'off' }); - const tinymceId = jQueryForm.find(`.${editorClass}`).attr('id'); - Tinymce.destroyEditorById(tinymceId); - }; - /* - Attaches events for a specific form including its tinymce editor - @param { objecg } - jQueryForm to add events - */ - const attachEventHandlers = (jQueryForm) => { - formHandlers({ jQuery: jQueryForm, attachment: 'on' }); - const tinymceId = jQueryForm.find(`.${editorClass}`).attr('id'); - Tinymce.init({ selector: `#${tinymceId}` }); - editorHandlers(Tinymce.findEditorById(tinymceId)); - }; - // Initial load - TimeagoFactory.render($('time.timeago')); - Tinymce.init({ selector: `.${editorClass}` }); - if (!isReadOnly()) { - // Attaches form and tinymce event handlers - Tinymce.findEditorsByClassName(editorClass).forEach(editorHandlers); - formHandlers({ jQuery: $('.form-answer'), attachment: 'on' }); - } else { - // Sets the editor mode for each editor to readonly - Tinymce.findEditorsByClassName(editorClass).forEach((editor) => { - editor.mode.set('readonly'); - }); - } + Attaches events for a specific form including its tinymce editor + @param { objecg } - jQueryForm to add events + */ + const attachEventHandlers = (jQueryForm) => { + formHandlers({ jQuery: jQueryForm, attachment: 'on' }); + const tinymceId = jQueryForm.find(`.${editorClass}`).attr('id'); + Tinymce.init({ selector: `#${tinymceId}` }); + editorHandlers(Tinymce.findEditorById(tinymceId)); + }; + // Initial load + TimeagoFactory.render($('time.timeago')); + Tinymce.init({ selector: `.${editorClass}` }); - datePicker(); + if (!isReadOnly()) { + // Attaches form and tinymce event handlers + Tinymce.findEditorsByClassName(editorClass).forEach(editorHandlers); + formHandlers({ jQuery: $('.form-answer'), attachment: 'on' }); + } else { + // Sets the editor mode for each editor to readonly + Tinymce.findEditorsByClassName(editorClass).forEach((editor) => { + editor.mode.set('readonly'); + }); + } - // Clicking the 'Comments & Guidance' div should toggle the guidance & comments section - $(document).on('click', '.toggle-guidance-section', (e) => { - const target = $(e.currentTarget); - target.parents('.question-body').find('.guidance-section').toggle(); - target.find('span.fa-chevron-right, span.fa-chevron-left') - .toggleClass('fa-chevron-right') - .toggleClass('fa-chevron-left'); - }); + datePicker(); + + // Clicking the 'Comments & Guidance' div should toggle the guidance & comments section + $(document).on('click', '.toggle-guidance-section', (e) => { + const target = $(e.currentTarget); + target.parents('.question-body').find('.guidance-section').toggle(); + target.find('span.fa-chevron-right, span.fa-chevron-left') + .toggleClass('fa-chevron-right') + .toggleClass('fa-chevron-left'); + }); + } }); diff --git a/app/javascript/src/guidances/newEdit.js b/app/javascript/src/guidances/newEdit.js index e5da657c8b..f018eca0b8 100644 --- a/app/javascript/src/guidances/newEdit.js +++ b/app/javascript/src/guidances/newEdit.js @@ -1,4 +1,4 @@ -import { Tinymce } from '../utils/tinymce.js.erb'; +import { Tinymce } from '../utils/tinymce.js'; $(() => { Tinymce.init({ selector: '#guidance_text' }); diff --git a/app/javascript/src/notes/index.js b/app/javascript/src/notes/index.js index e877f36469..c8f6e475af 100644 --- a/app/javascript/src/notes/index.js +++ b/app/javascript/src/notes/index.js @@ -1,4 +1,4 @@ -import { Tinymce } from '../utils/tinymce.js.erb'; +import { Tinymce } from '../utils/tinymce.js'; import { isObject, isString } from '../utils/isType'; import TimeagoFactory from '../utils/timeagoFactory.js.erb'; @@ -160,7 +160,9 @@ $(() => { $('.archive_note button[type="button"]')[attachment]('click', noteCancelHandler); }; const initOrReload = () => { - Tinymce.init({ selector: '.note' }); + $('.note').each((_idx, el) => { + Tinymce.init({ selector: `#${$(el).attr('id')}` }); + }); eventHandlers({ attachment: 'on' }); TimeagoFactory.render($('time.timeago')); }; diff --git a/app/javascript/src/orgAdmin/phases/newEdit.js b/app/javascript/src/orgAdmin/phases/newEdit.js index 6014e59952..9dfd6bd337 100644 --- a/app/javascript/src/orgAdmin/phases/newEdit.js +++ b/app/javascript/src/orgAdmin/phases/newEdit.js @@ -1,5 +1,5 @@ // import 'bootstrap-sass/assets/javascripts/bootstrap/collapse'; -import { Tinymce } from '../../utils/tinymce.js.erb'; +import { Tinymce } from '../../utils/tinymce.js'; import { isObject, isString } from '../../utils/isType'; import getConstant from '../../utils/constants'; import { addAsterisks } from '../../utils/requiredField'; @@ -9,7 +9,7 @@ import initQuestionOption from '../questionOptions/index'; import updateConditions from '../conditions/updateConditions'; $(() => { - Tinymce.init({ selector: '.phase' }); + Tinymce.init({ selector: '#phase_description' }); const parentSelector = '.section-group'; const initQuestion = (context) => { @@ -18,7 +18,8 @@ $(() => { // For some reason the toolbar options are retained after the call to // Tinymce.init() on the views/notifications/edit.js file. Tried 'Object.assign' // instead of '$.extend' but it made no difference. - Tinymce.init({ + /*Tinymce.init({ + selector: selector: `#${context} .question`, init_instance_callback(editor) { // When the text editor changes to blank, set the corresponding destroy @@ -30,7 +31,7 @@ $(() => { $hiddenField.val(editor.getContent() === ''); }); }, - }); + });*/ initQuestionOption(context); addAsterisks(`#${context}`); // Swap in the question_formats when the user selects an option based question type @@ -61,24 +62,34 @@ $(() => { // For some reason the toolbar options are retained after the call to Tinymce.init() on // the views/notifications/edit.js file. Tried 'Object.assign' instead of '$.extend' but it // made no difference + +console.log(`SELECTOR: ${selector}`); + Tinymce.init({ - selector: `${selector} .section`, - init_instance_callback(editor) { + selector: selector, + init_instance_callback: (editor) => { // When the text editor changes to blank, set the corresponding destroy // field to true (if present). - editor.on('Change', () => { - const $texteditor = $(editor.targetElm); + editor.on('Change', (editor) => { + +console.log(`Editor: ${editor.id} is now initialized.`); + + const $texteditor = $(editor.getContentAreaContainer()); const $fieldset = $texteditor.parents('fieldset'); const $hiddenField = $fieldset.find('input[type=hidden][id$="_destroy"]'); $hiddenField.val(editor.getContent() === ''); }); }, }); + const questionForm = $(selector).find('.question_form'); if (questionForm.length > 0) { + +console.log(`QUESTION SELECTOR: ${selector}`); + // Load Tinymce when the 'show' form has a question form. // ONLY applicable for template customizations - Tinymce.init({ + /*Tinymce.init({ selector: `${selector} .question_form .question`, init_instance_callback(editor) { // When the text editor changes to blank, set the corresponding destroy @@ -90,7 +101,7 @@ $(() => { $hiddenField.val(editor.getContent() === ''); }); }, - }); + });*/ } } }; @@ -108,8 +119,17 @@ $(() => { // Display the section's html panelBody.attr('data-loaded', 'true'); panelBody.html(e.detail[0].html); + // Wire up the section - initSection(`#${panel.attr('id')}`); + const prefix = 'collapseSection' + let sectionId = panel.attr('id'); + if (sectionId.startsWith(prefix)) { + sectionId = `${sectionId.replace(prefix, '')}_section_description` + } + +console.log(`Section: ${sectionId}`); + + initSection(`#${sectionId}`); } }); @@ -161,5 +181,6 @@ $(() => { initSection(`#${currentSection.attr('id')}`); } // Handle the new section - initSection('#new_section_new_section'); + // initSection('#new_section_section_description'); + Tinymce.init({ selector: '#new_section_section_description' }); }); diff --git a/app/javascript/src/orgAdmin/templates/edit.js b/app/javascript/src/orgAdmin/templates/edit.js index 6566fba161..c5cdf68794 100644 --- a/app/javascript/src/orgAdmin/templates/edit.js +++ b/app/javascript/src/orgAdmin/templates/edit.js @@ -1,4 +1,4 @@ -import { Tinymce } from '../../utils/tinymce.js.erb'; +import { Tinymce } from '../../utils/tinymce.js'; import { eachLinks } from '../../utils/links'; import { isObject, isString } from '../../utils/isType'; import { renderNotice, renderAlert } from '../../utils/notificationHelper'; @@ -6,7 +6,7 @@ import { scrollTo } from '../../utils/scrollTo'; $(() => { Tinymce.init({ - selector: '.template', + selector: '#template_description', init_instance_callback(editor) { // When the text editor changes to blank, set the corresponding destroy // field to true (if present). diff --git a/app/javascript/src/orgAdmin/templates/new.js b/app/javascript/src/orgAdmin/templates/new.js index 3e843df0bd..a0e20c6606 100644 --- a/app/javascript/src/orgAdmin/templates/new.js +++ b/app/javascript/src/orgAdmin/templates/new.js @@ -1,9 +1,9 @@ -import { Tinymce } from '../../utils/tinymce.js.erb'; +import { Tinymce } from '../../utils/tinymce.js'; import { eachLinks } from '../../utils/links'; $(() => { Tinymce.init({ - selector: '.template', + selector: '#template_description', init_instance_callback(editor) { // When the text editor changes to blank, set the corresponding destroy // field to true (if present). diff --git a/app/javascript/src/orgs/adminEdit.js b/app/javascript/src/orgs/adminEdit.js index cd10a2fdb8..9a1abc3c73 100644 --- a/app/javascript/src/orgs/adminEdit.js +++ b/app/javascript/src/orgs/adminEdit.js @@ -1,7 +1,7 @@ // TODO: we need to be able to swap in the appropriate locale here import 'number-to-text/converters/en-us'; import { isObject } from '../utils/isType'; -import { Tinymce } from '../utils/tinymce.js.erb'; +import { Tinymce } from '../utils/tinymce.js'; import { eachLinks } from '../utils/links'; import { initAutocomplete, scrubOrgSelectionParamsOnSubmit } from '../utils/autoComplete'; diff --git a/app/javascript/src/plans/editDetails.js b/app/javascript/src/plans/editDetails.js index f32b817240..17db584b7e 100644 --- a/app/javascript/src/plans/editDetails.js +++ b/app/javascript/src/plans/editDetails.js @@ -1,5 +1,5 @@ import { initAutocomplete, scrubOrgSelectionParamsOnSubmit } from '../utils/autoComplete'; -import { Tinymce } from '../utils/tinymce.js.erb'; +import { Tinymce } from '../utils/tinymce.js'; import toggleConditionalFields from '../utils/conditionalFields'; import getConstant from '../utils/constants'; @@ -10,8 +10,8 @@ $(() => { const form = $('form.edit_plan'); if (form.length > 0) { - Tinymce.init({ selector: '#plan_description' }); - Tinymce.init({ selector: '#plan_ethical_issues_description' }); + Tinymce.init({ selector: 'textarea#plan_description' }); + Tinymce.init({ selector: 'textarea#plan_ethical_issues_description' }); $('#is_test').click((e) => { $('#plan_visibility').val($(e.target).is(':checked') ? 'is_test' : 'privately_visible'); diff --git a/app/javascript/src/researchOutputs/form.js b/app/javascript/src/researchOutputs/form.js index b454b9eb3d..c3df1eb317 100644 --- a/app/javascript/src/researchOutputs/form.js +++ b/app/javascript/src/researchOutputs/form.js @@ -1,6 +1,6 @@ import getConstant from '../utils/constants'; import { isUndefined, isObject } from '../utils/isType'; -import { Tinymce } from '../utils/tinymce.js.erb'; +import { Tinymce } from '../utils/tinymce.js'; $(() => { const form = $('.research_output_form'); diff --git a/app/javascript/src/superAdmin/notifications/edit.js b/app/javascript/src/superAdmin/notifications/edit.js index 03cac9a60b..3587eee0d7 100644 --- a/app/javascript/src/superAdmin/notifications/edit.js +++ b/app/javascript/src/superAdmin/notifications/edit.js @@ -1,11 +1,11 @@ -import { Tinymce } from '../../utils/tinymce.js.erb'; +import { Tinymce } from '../../utils/tinymce.js'; // add the info on selecting the check from notification suitable import { paginableSelector } from '../../utils/paginable'; import * as notifier from '../../utils/notificationHelper'; $(() => { - Tinymce.init({ selector: '.notification-text', forced_root_block: '' }); + Tinymce.init({ selector: '#notification_body', forced_root_block: '' }); $(paginableSelector).on('click, change', '.enable_notification input[type="checkbox"]', (e) => { const form = $(e.target).closest('form'); diff --git a/app/javascript/src/superAdmin/themes/newEdit.js b/app/javascript/src/superAdmin/themes/newEdit.js index d838e77006..81b51bf55f 100644 --- a/app/javascript/src/superAdmin/themes/newEdit.js +++ b/app/javascript/src/superAdmin/themes/newEdit.js @@ -1,4 +1,4 @@ -import { Tinymce } from '../../utils/tinymce.js.erb'; +import { Tinymce } from '../../utils/tinymce.js'; $(() => { Tinymce.init({ selector: '#theme_description' }); diff --git a/app/javascript/src/utils/conditionalFields.js b/app/javascript/src/utils/conditionalFields.js index df4a2af42f..d545a1a099 100644 --- a/app/javascript/src/utils/conditionalFields.js +++ b/app/javascript/src/utils/conditionalFields.js @@ -6,7 +6,7 @@ // For example see: app/views/plans/_edit_details.html.erb // app/javascript/src/plans/editDetails.js // -import { Tinymce } from './tinymce.js.erb'; +import { Tinymce } from './tinymce.js'; // Expecting `context` to be the field that triggers the hide/show of the corresponding fields export default function toggleConditionalFields(context, showThem) { diff --git a/app/javascript/src/utils/tinymce.js.erb b/app/javascript/src/utils/tinymce.js similarity index 61% rename from app/javascript/src/utils/tinymce.js.erb rename to app/javascript/src/utils/tinymce.js index 0d0ad822b1..3c7eb73c47 100644 --- a/app/javascript/src/utils/tinymce.js.erb +++ b/app/javascript/src/utils/tinymce.js @@ -1,21 +1,24 @@ // Import TinyMCE import tinymce from 'tinymce/tinymce'; -// Import TinyMCE theme -import 'tinymce/themes/silver/theme'; + +// TinyMCE DOM helpers +import 'tinymce/models/dom/'; + +// TinyMCE toolbar icons import 'tinymce/icons/default'; -// Plugins + +// TinyMCE theme +import 'tinymce/themes/silver'; + +// TinyMCE Plugins import 'tinymce/plugins/table'; import 'tinymce/plugins/lists'; import 'tinymce/plugins/autoresize'; import 'tinymce/plugins/link'; -import 'tinymce/plugins/paste'; import 'tinymce/plugins/advlist'; // Other dependencies -import { isObject, isString } from './isType'; - -// Pull in the rails helper functions -<% helpers = ActionController::Base.helpers %> +import { isObject, isString, isUndefined } from './isType'; // // Configuration extracted from // // https://www.tinymce.com/docs/advanced/usage-with-module-loaders/ @@ -24,7 +27,7 @@ export const defaultOptions = { statusbar: true, menubar: false, toolbar: 'bold italic | bullist numlist | link | table', - plugins: 'table autoresize link paste advlist lists', + plugins: 'table autoresize link advlist lists', browser_spellcheck: true, advlist_bullet_styles: 'circle,disc,square', // Only disc bullets display on htmltoword target_list: false, @@ -34,12 +37,14 @@ export const defaultOptions = { autoresize_bottom_margin: 10, branding: false, extended_valid_elements: 'iframe[tooltip] , a[href|target=_blank]', - paste_auto_cleanup_on_paste: true, - paste_remove_styles: true, - paste_convert_middot_lists: true, + paste_as_text: true, + paste_block_drop: true, + paste_merge_formats: true, + paste_tab_spaces: 4, + smart_paste: true, + paste_data_images: true, paste_remove_styles_if_webkit: true, - paste_remove_spans: true, - paste_strip_class_attributes: 'all', + paste_webkit_styles: 'none', table_default_attributes: { border: 1, }, @@ -48,17 +53,16 @@ export const defaultOptions = { skin_url: '/tinymce/skins/oxide', content_css: ['/tinymce/tinymce.css'], }; + /* - This function is invoked anytime a new editor is initialised (e.g. Tinymce.init()) - and shrinks a tinymce editor to the minimum height specified at autoresize_min_height - editor's settings. Since there are cases that tinymce editor is loaded in the DOM - but has display:none style, the iframe associated gets the height of the screen's device - and using this function there is no need to wait until the tinymce gains focus to be autoresized. -*/ -const resizeEditors = (editors) => { - editors.forEach((editor) => { - $(editor.iframeElement).height(editor.settings.autoresize_min_height); - }); + This function determines whether or not the editor is a TinyMCE editor + */ +const isTinymceEditor = (editor) => { + if (isObject(editor)) { + return editor.hasOwnProperty('id') && typeof editor.getContainer === 'function'; + } else { + return false; + } }; /* @@ -67,16 +71,14 @@ const resizeEditors = (editors) => { behind the scenes) to the Tinymce iframe so that screen readers read the correct label when the tinymce iframe receives focus. */ -const attachLabelToIframe = (tinymceContext, hiddenFieldSelector) => { - const iframe = $(tinymceContext).siblings('.mce-container').find('iframe'); - const hiddenField = $(hiddenFieldSelector); +const attachLabelToIframe = (editor) => { + if (isTinymceEditor(editor)) { + const iframe = editor.getContainer().querySelector('iframe'); + const lbl = document.querySelector(`label[for="${editor.id}"]`); - if (isObject(iframe) && isObject(hiddenField)) { - const id = hiddenField.attr('id'); - const lbl = iframe.closest('form').find(`label[for="${id}"]`); - if (isObject(lbl)) { - // Connect the label to the iframe - lbl.attr('for', iframe.attr('id')); + // If the iframe and label could be found, then set the label's 'for' attribute to the id of the iframe + if (isObject(iframe) && isObject(lbl)) { + lbl.setAttribute('for', iframe.getAttribute('id')); } } }; @@ -88,17 +90,23 @@ export const Tinymce = { @param options - An object with tinyMCE properties */ init(options = {}) { - if (isObject(options)) { - tinymce.init($.extend(true, defaultOptions, options)).then(resizeEditors); - } else { - tinymce.init(defaultOptions).then(resizeEditors); - } + // If any options were specified, merge them with the default options. + let opts = { + ...defaultOptions, + ...options + }; - // Connect the label to the Tinymce iframe - $(options.selector).each((idx, el) => { - attachLabelToIframe(el, options.selector); + tinymce.init(opts).then((editors) => { + if (editors.length > 0) { + for (const editor of editors) { + // auto-resize the editor and connect the form label to the TinyMCE iframe + editor.execCommand('mceAutoResize'); + attachLabelToIframe(editor, editor.id); + } + } }); }, + /* Finds any tinyMCE editor whose target element/textarea has the className passed @param className - A string representing the class name of the tinyMCE editor @@ -107,12 +115,11 @@ export const Tinymce = { */ findEditorsByClassName(className) { if (isString(className)) { - return tinymce.editors.reduce((acc, e) => { - if ($(e.getElement()).hasClass(className)) { - return acc.concat([e]); - } - return acc; - }, []); + const elements = Array.from(document.getElementsByClassName(className)); + // Fetch the textarea elements and then return the TinyMCE editors associated with the element ids + return elements.map((el) => { + return Tinymce.findEditorById(el.getAttribute('id')); + }); } return []; }, @@ -124,7 +131,7 @@ export const Tinymce = { */ findEditorById(id) { if (isString(id)) { - return tinymce.editors.find(el => el.id === id); + return tinymce.get(id); } return undefined; }, @@ -137,7 +144,14 @@ export const Tinymce = { */ destroyEditorsByClassName(className) { const editors = this.findEditorsByClassName(className); - editors.forEach(ed => ed.destroy(false)); + if (editors.length > 0) { + /* editors.forEach(ed => ed.destroy(false)); */ + for (const editor of editors) { + if (isTinymceEditor(editor)) { + editor.destroy(false); + } + } + } }, /* Destroy an editor instance whose target element/textarea has HTML id passed. This method @@ -146,7 +160,7 @@ export const Tinymce = { */ destroyEditorById(id) { const editor = this.findEditorById(id); - if (editor) { + if (isTinymceEditor(editor)) { editor.destroy(false); } }, diff --git a/app/views/questions/_new_edit_question_textarea.html.erb b/app/views/questions/_new_edit_question_textarea.html.erb index ae52892b9c..e8691555d4 100644 --- a/app/views/questions/_new_edit_question_textarea.html.erb +++ b/app/views/questions/_new_edit_question_textarea.html.erb @@ -9,7 +9,7 @@ %>

- <%= f.label(:text, sanitize(question.text), class: 'control-label') %> +
<% if locking || readonly %>
diff --git a/package.json b/package.json index dc4e63fb4b..22c5a89c8b 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "regenerator-runtime": "^0.13.5", "sass": "^1.57.1", "timeago.js": "^4.0.2", - "tinymce": "^5.10.0", + "tinymce": "^6.4.1", "webpack": "^5.75.0", "webpack-cli": "^5.0.1" }, diff --git a/public/tinymce/skins/oxide/content.css b/public/tinymce/skins/oxide/content.css index 2ac0ccaf53..209ca637f2 100644 --- a/public/tinymce/skins/oxide/content.css +++ b/public/tinymce/skins/oxide/content.css @@ -1,11 +1,7 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ .mce-content-body .mce-item-anchor { background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; +} +.mce-content-body .mce-item-anchor:empty { cursor: default; display: inline-block; height: 12px !important; @@ -14,18 +10,39 @@ -moz-user-modify: read-only; -webkit-user-select: all; -moz-user-select: all; - -ms-user-select: all; - user-select: all; + user-select: all; width: 8px !important; } +.mce-content-body .mce-item-anchor:not(:empty) { + background-position-x: 2px; + display: inline-block; + padding-left: 12px; +} .mce-content-body .mce-item-anchor[data-mce-selected] { outline-offset: 1px; } -.tox-comments-visible .tox-comment { - background-color: #fff0b7; +.tox-comments-visible .tox-comment[contenteditable="false"]:not([data-mce-selected]), +.tox-comments-visible span.tox-comment img:not([data-mce-selected]), +.tox-comments-visible span.tox-comment > audio:not([data-mce-selected]), +.tox-comments-visible span.tox-comment > video:not([data-mce-selected]), +.tox-comments-visible span.tox-comment span.mce-preview-object:not([data-mce-selected]) { + outline: 3px solid #ffe89d; } -.tox-comments-visible .tox-comment--active { - background-color: #ffe168; +.tox-comments-visible .tox-comment[contenteditable="false"][data-mce-annotation-active="true"]:not([data-mce-selected]) { + outline: 3px solid #fed635; +} +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] img:not([data-mce-selected]), +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] > audio:not([data-mce-selected]), +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] > video:not([data-mce-selected]), +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] span.mce-preview-object:not([data-mce-selected]) { + outline: 3px solid #fed635; +} +.tox-comments-visible span.tox-comment:not([data-mce-selected]) { + background-color: #ffe89d; + outline: none; +} +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"]:not([data-mce-selected="inline-boundary"]) { + background-color: #fed635; } .tox-checklist > li:not(.tox-checklist--hidden) { list-style: none; @@ -70,7 +87,6 @@ pre[class*="language-"] { -moz-tab-size: 4; tab-size: 4; -webkit-hyphens: none; - -ms-hyphens: none; hyphens: none; } pre[class*="language-"]::-moz-selection, @@ -118,7 +134,7 @@ pre[class*="language-"] { .token.punctuation { color: #999; } -.namespace { +.token.namespace { opacity: 0.7; } .token.property, @@ -144,6 +160,7 @@ pre[class*="language-"] { .language-css .token.string, .style .token.string { color: #9a6e3a; + /* This background color was intended by the author of this theme. */ background: hsla(0, 0%, 100%, 0.5); } .token.atrule, @@ -205,6 +222,27 @@ pre[class*="language-"] { .tox-cursor-format-painter { cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; } +div.mce-footnotes hr { + margin-inline-end: auto; + margin-inline-start: 0; + width: 25%; +} +div.mce-footnotes li > a.mce-footnotes-backlink { + text-decoration: none; +} +@media print { + sup.mce-footnote a { + color: black; + text-decoration: none; + } + div.mce-footnotes { + break-inside: avoid; + width: 100%; + } + div.mce-footnotes li > a.mce-footnotes-backlink { + display: none; + } +} .mce-content-body figure.align-left { float: left; } @@ -234,6 +272,13 @@ pre[class*="language-"] { .mce-preview-object[data-mce-selected="2"] .mce-shim { display: none; } +.mce-content-body .mce-mergetag:hover { + background-color: rgba(0, 108, 231, 0.1); +} +.mce-content-body .mce-mergetag-affix { + background-color: rgba(0, 108, 231, 0.1); + color: #006ce7; +} .mce-object { background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; border: 1px dashed #aaa; @@ -505,7 +550,6 @@ pre[class*="language-"] { -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; } .mce-content-body td[data-mce-selected]::after, @@ -526,10 +570,10 @@ pre[class*="language-"] { border-color: rgba(0, 84, 180, 0.7); } } -.mce-content-body img::-moz-selection { +.mce-content-body img[data-mce-selected]::-moz-selection { background: none; } -.mce-content-body img::selection { +.mce-content-body img[data-mce-selected]::selection { background: none; } .ephox-snooker-resizer-bar { @@ -537,7 +581,6 @@ pre[class*="language-"] { opacity: 0; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; } .ephox-snooker-resizer-cols { @@ -573,6 +616,9 @@ pre[class*="language-"] { .mce-toc li { list-style-type: none; } +[data-mce-block] { + display: block; +} table[style*="border-width: 0px"], .mce-item-table:not([border]), .mce-item-table[border="0"], diff --git a/public/tinymce/skins/oxide/content.inline.css b/public/tinymce/skins/oxide/content.inline.css index 8e7521d9dd..bc2a9ca074 100644 --- a/public/tinymce/skins/oxide/content.inline.css +++ b/public/tinymce/skins/oxide/content.inline.css @@ -1,11 +1,7 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ .mce-content-body .mce-item-anchor { background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; +} +.mce-content-body .mce-item-anchor:empty { cursor: default; display: inline-block; height: 12px !important; @@ -14,18 +10,39 @@ -moz-user-modify: read-only; -webkit-user-select: all; -moz-user-select: all; - -ms-user-select: all; - user-select: all; + user-select: all; width: 8px !important; } +.mce-content-body .mce-item-anchor:not(:empty) { + background-position-x: 2px; + display: inline-block; + padding-left: 12px; +} .mce-content-body .mce-item-anchor[data-mce-selected] { outline-offset: 1px; } -.tox-comments-visible .tox-comment { - background-color: #fff0b7; +.tox-comments-visible .tox-comment[contenteditable="false"]:not([data-mce-selected]), +.tox-comments-visible span.tox-comment img:not([data-mce-selected]), +.tox-comments-visible span.tox-comment > audio:not([data-mce-selected]), +.tox-comments-visible span.tox-comment > video:not([data-mce-selected]), +.tox-comments-visible span.tox-comment span.mce-preview-object:not([data-mce-selected]) { + outline: 3px solid #ffe89d; } -.tox-comments-visible .tox-comment--active { - background-color: #ffe168; +.tox-comments-visible .tox-comment[contenteditable="false"][data-mce-annotation-active="true"]:not([data-mce-selected]) { + outline: 3px solid #fed635; +} +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] img:not([data-mce-selected]), +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] > audio:not([data-mce-selected]), +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] > video:not([data-mce-selected]), +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] span.mce-preview-object:not([data-mce-selected]) { + outline: 3px solid #fed635; +} +.tox-comments-visible span.tox-comment:not([data-mce-selected]) { + background-color: #ffe89d; + outline: none; +} +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"]:not([data-mce-selected="inline-boundary"]) { + background-color: #fed635; } .tox-checklist > li:not(.tox-checklist--hidden) { list-style: none; @@ -70,7 +87,6 @@ pre[class*="language-"] { -moz-tab-size: 4; tab-size: 4; -webkit-hyphens: none; - -ms-hyphens: none; hyphens: none; } pre[class*="language-"]::-moz-selection, @@ -118,7 +134,7 @@ pre[class*="language-"] { .token.punctuation { color: #999; } -.namespace { +.token.namespace { opacity: 0.7; } .token.property, @@ -144,6 +160,7 @@ pre[class*="language-"] { .language-css .token.string, .style .token.string { color: #9a6e3a; + /* This background color was intended by the author of this theme. */ background: hsla(0, 0%, 100%, 0.5); } .token.atrule, @@ -205,6 +222,27 @@ pre[class*="language-"] { .tox-cursor-format-painter { cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; } +div.mce-footnotes hr { + margin-inline-end: auto; + margin-inline-start: 0; + width: 25%; +} +div.mce-footnotes li > a.mce-footnotes-backlink { + text-decoration: none; +} +@media print { + sup.mce-footnote a { + color: black; + text-decoration: none; + } + div.mce-footnotes { + break-inside: avoid; + width: 100%; + } + div.mce-footnotes li > a.mce-footnotes-backlink { + display: none; + } +} .mce-content-body figure.align-left { float: left; } @@ -234,6 +272,13 @@ pre[class*="language-"] { .mce-preview-object[data-mce-selected="2"] .mce-shim { display: none; } +.mce-content-body .mce-mergetag:hover { + background-color: rgba(0, 108, 231, 0.1); +} +.mce-content-body .mce-mergetag-affix { + background-color: rgba(0, 108, 231, 0.1); + color: #006ce7; +} .mce-object { background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; border: 1px dashed #aaa; @@ -505,7 +550,6 @@ pre[class*="language-"] { -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; } .mce-content-body td[data-mce-selected]::after, @@ -526,10 +570,10 @@ pre[class*="language-"] { border-color: rgba(0, 84, 180, 0.7); } } -.mce-content-body img::-moz-selection { +.mce-content-body img[data-mce-selected]::-moz-selection { background: none; } -.mce-content-body img::selection { +.mce-content-body img[data-mce-selected]::selection { background: none; } .ephox-snooker-resizer-bar { @@ -537,7 +581,6 @@ pre[class*="language-"] { opacity: 0; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; } .ephox-snooker-resizer-cols { @@ -573,6 +616,9 @@ pre[class*="language-"] { .mce-toc li { list-style-type: none; } +[data-mce-block] { + display: block; +} table[style*="border-width: 0px"], .mce-item-table:not([border]), .mce-item-table[border="0"], diff --git a/public/tinymce/skins/oxide/content.inline.min.css b/public/tinymce/skins/oxide/content.inline.min.css index b4ab9a3a56..278c86cdbf 100644 --- a/public/tinymce/skins/oxide/content.inline.min.css +++ b/public/tinymce/skins/oxide/content.inline.min.css @@ -1,7 +1 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'} +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center}.mce-content-body .mce-item-anchor:empty{cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor:not(:empty){background-position-x:2px;display:inline-block;padding-left:12px}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment[contenteditable=false]:not([data-mce-selected]),.tox-comments-visible span.tox-comment img:not([data-mce-selected]),.tox-comments-visible span.tox-comment span.mce-preview-object:not([data-mce-selected]),.tox-comments-visible span.tox-comment>audio:not([data-mce-selected]),.tox-comments-visible span.tox-comment>video:not([data-mce-selected]){outline:3px solid #ffe89d}.tox-comments-visible .tox-comment[contenteditable=false][data-mce-annotation-active=true]:not([data-mce-selected]){outline:3px solid #fed635}.tox-comments-visible span.tox-comment[data-mce-annotation-active=true] img:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true] span.mce-preview-object:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]>audio:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]>video:not([data-mce-selected]){outline:3px solid #fed635}.tox-comments-visible span.tox-comment:not([data-mce-selected]){background-color:#ffe89d;outline:0}.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]:not([data-mce-selected=inline-boundary]){background-color:#fed635}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}div.mce-footnotes hr{margin-inline-end:auto;margin-inline-start:0;width:25%}div.mce-footnotes li>a.mce-footnotes-backlink{text-decoration:none}@media print{sup.mce-footnote a{color:#000;text-decoration:none}div.mce-footnotes{break-inside:avoid;width:100%}div.mce-footnotes li>a.mce-footnotes-backlink{display:none}}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-content-body .mce-mergetag:hover{background-color:rgba(0,108,231,.1)}.mce-content-body .mce-mergetag-affix{background-color:rgba(0,108,231,.1);color:#006ce7}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body img[data-mce-selected]::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}[data-mce-block]{display:block}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'} diff --git a/public/tinymce/skins/oxide/content.min.css b/public/tinymce/skins/oxide/content.min.css index 844858d063..fce8adde32 100644 --- a/public/tinymce/skins/oxide/content.min.css +++ b/public/tinymce/skins/oxide/content.min.css @@ -1,7 +1 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center}.mce-content-body .mce-item-anchor:empty{cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor:not(:empty){background-position-x:2px;display:inline-block;padding-left:12px}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment[contenteditable=false]:not([data-mce-selected]),.tox-comments-visible span.tox-comment img:not([data-mce-selected]),.tox-comments-visible span.tox-comment span.mce-preview-object:not([data-mce-selected]),.tox-comments-visible span.tox-comment>audio:not([data-mce-selected]),.tox-comments-visible span.tox-comment>video:not([data-mce-selected]){outline:3px solid #ffe89d}.tox-comments-visible .tox-comment[contenteditable=false][data-mce-annotation-active=true]:not([data-mce-selected]){outline:3px solid #fed635}.tox-comments-visible span.tox-comment[data-mce-annotation-active=true] img:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true] span.mce-preview-object:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]>audio:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]>video:not([data-mce-selected]){outline:3px solid #fed635}.tox-comments-visible span.tox-comment:not([data-mce-selected]){background-color:#ffe89d;outline:0}.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]:not([data-mce-selected=inline-boundary]){background-color:#fed635}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}div.mce-footnotes hr{margin-inline-end:auto;margin-inline-start:0;width:25%}div.mce-footnotes li>a.mce-footnotes-backlink{text-decoration:none}@media print{sup.mce-footnote a{color:#000;text-decoration:none}div.mce-footnotes{break-inside:avoid;width:100%}div.mce-footnotes li>a.mce-footnotes-backlink{display:none}}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-content-body .mce-mergetag:hover{background-color:rgba(0,108,231,.1)}.mce-content-body .mce-mergetag-affix{background-color:rgba(0,108,231,.1);color:#006ce7}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body img[data-mce-selected]::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}[data-mce-block]{display:block}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/tinymce/skins/oxide/content.mobile.css b/public/tinymce/skins/oxide/content.mobile.css deleted file mode 100644 index 4bdb8babcb..0000000000 --- a/public/tinymce/skins/oxide/content.mobile.css +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { - /* Note: this file is used inside the content, so isn't part of theming */ - background-color: green; - display: inline-block; - opacity: 0.5; - position: absolute; -} -body { - -webkit-text-size-adjust: none; -} -body img { - /* this is related to the content margin */ - max-width: 96vw; -} -body table img { - max-width: 95%; -} -body { - font-family: sans-serif; -} -table { - border-collapse: collapse; -} diff --git a/public/tinymce/skins/oxide/content.mobile.min.css b/public/tinymce/skins/oxide/content.mobile.min.css deleted file mode 100644 index 35f7dc08bc..0000000000 --- a/public/tinymce/skins/oxide/content.mobile.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/tinymce/skins/oxide/fonts/tinymce-mobile.woff b/public/tinymce/skins/oxide/fonts/tinymce-mobile.woff deleted file mode 100644 index 1e3be038a607cb7c2544ed8ae3d6621f77bf4c38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4624 zcmb7IeQaFC5#QN&AGUL{efE7g{=BM1W-|RaVdWQe^e?BC`eGz4^i8S3PQw?Hhd_eQHxTkckXZB zdzU((wCVGko!Qyh+1c6InRotvZ%+>+hNrBQtrFOI4t*}DZ$7=>Sr=uD3c$ZlKuKBQ z8~ervCczs9SOk2!>AAqrz+v$CC}f1JfYPDSqx->|V$6{ekbe8M#Bh3Gkg?)-Fdi3B zeB$}UFqn*$pv&q7*net~hsUOlfG7Ho2zaowY%JPRytMvu{&xRPm(h_~w##F>vqE&a5-ssH##mlfAk}44^ zXRJKd!Ifw&ce{$Y9BAg5c>e>p_Z;t!=P{izddGWie?aHLdKL3Cn9rG=d2vt;esWqH zoD}uAoi3Z~4+LABvADt+so4~t%VlyIJ{O3tm$NC+(!yenQD%NVr*btG$T3+_WX=LH z#1M2ZNEtrO+-x;l2i>M^5o%GQ@s?N+gw*19H@G~vl3Q5Zf*t6jjW0GOTmAmlWYgSS zJeiEo%~LA-FW|YAd_Em$OE#@dw)y*#@p!UtnWa);V1HY3ZBw!>(3gY{iFFa_c6iW9 zIQ@xck^{xu9_o;UyQH#ba@y?L$xW?8J35?$p1z46ZjIctZ8QCKCa29bMC1-t@pT>S zTUT1WMjQz-75d)5zJxv~@Yd)bY)ejQBx_XQiaMJ z>$5`NO3?L*ND{UQeF8%xl)$_>w9tmQpfEebzedazFeh#~d}suN+vzsqLiW~@TLhoe zk1%xEcxP2ZL)FuoXeYzb-J5goljDxPL2@@#RW)d&X#&6QO5U=04_628@ONSvtgpha zDqqmoVep`A4<+PK$V>K+T}}{8Rj+Q|UAzCtl!Fh)uXJg{x$}HMJH7LcBLzj-r{h;< zzote8Id%pcAyE;87D<8glyaFeq#k)OEDB%yA ze%CeZ!?4TEs#pj+%14DBZHn8jxaF2as6}p3+!6p-&@I>5lbP3&N$svcIF-`0R5(o2 zh7la++|;-euckH44a4BAwB++#-cZ z)kFyC=eUS-4D0t}H8LdZY!JD^sW@F85io)%=8HU)ouhEeo-K_dJ3BV+8fo0JXIjlP zZt0H`0=Yv~I|PpRZ)r5_iAYmY9V=wT@BsoN9<3vftB|}TOH;|yNk_e7(2-?y{&cSK zG=E5Nz^Ko4>KxcbY!Q13!=HBS$lM96_+0y3M1yWTAt2u5C;6MWMXbRN?RI{$eHnAx z&t=-PSjZ>Qe2V2-YGs1YWemAq zVHdG{9V$QvsY~Cgq-L*PZqMPGv|px$)K~3<%+fBtG{oIRPL_7ye$-(`C=tS)^xC}% zue73qiF&{nXJ*>-@668G!`IrAeB;ad09shzt{O?7omLE_X@H|#ozGt&64 zb-&_lLkZI8TzigPZvUr=4g2-8M6M8b9EQLgoPswYg)d)j&%gZHJO!2>(?;I*8d>aG z#oS295Kcq{uD4R2@VEG($}WWiF-6YK)kjqks%o_U{CIAVX2;tX7o|unkew5?Gn3(| zOePS^{$(;Xi4ph;`KO#;k+vaLt8n5@doi+OEvH&?*+3(WgqkT9-$b0fTHm;)r=NmR zJnJ9o>UvNR(JMoIdRBf{%kd}jmZ)b)#4>dnDfq0G(?~S%d zv50QeMR$Kzd*S$AEXdp5Fhqe0Pz zZ!oS2e!i-tWEJ2^YoVo}V7S0tV7CujimbVJtVNb#yB&<-f&xpSb@m2=wBZ|qU-_^; z?C{lk+;tlxk&Sh3Pwh(D7~kNh`O=~TMWuRUu^0=9)`CYEVwhvGWUt4Wd3`6*H)Zs>LLYQcC#*~B78EfTt7RQ*l)b{v zqntLNsC`h&zZCY{x*}gfPU4at;nfileU3>zeyLdO7;;lFIft~ zsm6#wb5Jjtv;_VxleU0<%cQON-O*ywHt`@C4fn-Y83}=|hJPOpN>1H%C#7)9etg_yG)$ *:last-child:not(:only-child) { - border-color: #cccccc; - border-style: solid; +.tox .accessibility-issue__description > div > div .tox-icon svg { + display: block; } .tox .accessibility-issue__repair { margin-top: 16px; } .tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description { - background-color: rgba(32, 122, 183, 0.1); - border-color: rgba(32, 122, 183, 0.4); + background-color: rgba(0, 101, 216, 0.1); color: #222f3e; } -.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child { - border-color: rgba(32, 122, 183, 0.4); -} .tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 { - color: #207ab7; + color: #006ce7; } .tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg { - fill: #207ab7; + fill: #006ce7; +} +.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon { + background-color: #006ce7; + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:hover, +.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:focus { + background-color: #0060ce; } -.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon { - color: #207ab7; +.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:active { + background-color: #0054b4; +} +.tox .tox-dialog__body-content .accessibility-issue--warn { + /* stylelint-disable-next-line no-descending-specificity */ } .tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description { - background-color: rgba(255, 165, 0, 0.1); - border-color: rgba(255, 165, 0, 0.5); + background-color: rgba(255, 165, 0, 0.08); color: #222f3e; } -.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child { - border-color: rgba(255, 165, 0, 0.5); -} .tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 { - color: #cc8500; + color: #8f5d00; } .tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg { - fill: #cc8500; + fill: #8f5d00; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon { + background-color: #FFE89D; + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:hover, +.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:focus { + background-color: #F2D574; + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:active { + background-color: #E8C657; + color: #222f3e; } -.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon { - color: #cc8500; +.tox .tox-dialog__body-content .accessibility-issue--error { + /* stylelint-disable-next-line no-descending-specificity */ } .tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description { background-color: rgba(204, 0, 0, 0.1); - border-color: rgba(204, 0, 0, 0.4); color: #222f3e; } -.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child { - border-color: rgba(204, 0, 0, 0.4); -} .tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 { color: #c00; } .tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg { fill: #c00; } -.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon { - color: #c00; +.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon { + background-color: #F2BFBF; + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:hover, +.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:focus { + background-color: #E9A4A4; + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:active { + background-color: #EE9494; + color: #222f3e; } .tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description { background-color: rgba(120, 171, 70, 0.1); - border-color: rgba(120, 171, 70, 0.4); color: #222f3e; } .tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child { - border-color: rgba(120, 171, 70, 0.4); + display: none; } .tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 { - color: #78AB46; + color: #527530; } .tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg { - fill: #78AB46; -} -.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon { - color: #78AB46; + fill: #527530; } -.tox .tox-dialog__body-content .accessibility-issue__header h1, +.tox .tox-dialog__body-content .accessibility-issue__header .tox-form__group h1, .tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 { + font-size: 14px; margin-top: 0; } .tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button { @@ -205,10 +221,6 @@ button::-moz-focus-inner { .tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description { padding: 4px 4px 4px 8px; } -.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child { - border-left-width: 1px; - padding-left: 4px; -} .tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button { margin-right: 4px; } @@ -218,9 +230,30 @@ button::-moz-focus-inner { .tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description { padding: 4px 8px 4px 4px; } -.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child { - border-right-width: 1px; - padding-right: 4px; +.tox .tox-advtemplate .tox-form__grid { + flex: 1; +} +.tox .tox-advtemplate .tox-form__grid > div:first-child { + display: flex; + flex-direction: column; + width: 30%; +} +.tox .tox-advtemplate .tox-form__grid > div:first-child > div:nth-child(2) { + flex-basis: 0; + flex-grow: 1; + overflow: auto; +} +@media only screen and (max-width: 767px ) { + body:not(.tox-force-desktop) .tox .tox-advtemplate .tox-form__grid > div:first-child { + width: 100%; + } +} +.tox .tox-advtemplate iframe { + border-color: #eeeeee; + border-radius: 10px; + border-style: solid; + border-width: 1px; + margin: 0 10px; } .tox .tox-anchorbar { display: flex; @@ -231,12 +264,12 @@ button::-moz-focus-inner { flex: 0 0 auto; } .tox .tox-button { - background-color: #207ab7; + background-color: #006ce7; background-image: none; background-position: 0 0; background-repeat: repeat; - border-color: #207ab7; - border-radius: 3px; + border-color: #006ce7; + border-radius: 6px; border-style: solid; border-width: 1px; box-shadow: none; @@ -253,47 +286,91 @@ button::-moz-focus-inner { margin: 0; outline: none; padding: 4px 16px; + position: relative; text-align: center; text-decoration: none; text-transform: none; white-space: nowrap; } +.tox .tox-button::before { + border-radius: 6px; + bottom: -1px; + box-shadow: inset 0 0 0 2px #fff, 0 0 0 1px #006ce7, 0 0 0 3px rgba(0, 108, 231, 0.25); + content: ''; + left: -1px; + opacity: 0; + pointer-events: none; + position: absolute; + right: -1px; + top: -1px; +} .tox .tox-button[disabled] { - background-color: #207ab7; + background-color: #006ce7; background-image: none; - border-color: #207ab7; + border-color: #006ce7; box-shadow: none; color: rgba(255, 255, 255, 0.5); cursor: not-allowed; } .tox .tox-button:focus:not(:disabled) { - background-color: #1c6ca1; + background-color: #0060ce; background-image: none; - border-color: #1c6ca1; + border-color: #0060ce; box-shadow: none; color: #fff; } +.tox .tox-button:focus-visible:not(:disabled)::before { + opacity: 1; +} .tox .tox-button:hover:not(:disabled) { - background-color: #1c6ca1; + background-color: #0060ce; background-image: none; - border-color: #1c6ca1; + border-color: #0060ce; box-shadow: none; color: #fff; } .tox .tox-button:active:not(:disabled) { - background-color: #185d8c; + background-color: #0054b4; background-image: none; - border-color: #185d8c; + border-color: #0054b4; box-shadow: none; color: #fff; } +.tox .tox-button.tox-button--enabled, +.tox .tox-button.tox-button--enabled:hover { + background: #a6ccf7; + border-width: 1px; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button.tox-button--enabled > *, +.tox .tox-button.tox-button--enabled:hover > * { + transform: none; +} +.tox .tox-button.tox-button--enabled svg, +.tox .tox-button.tox-button--enabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: #222f3e; +} +.tox .tox-button--icon-and-text, +.tox .tox-button.tox-button--icon-and-text, +.tox .tox-button.tox-button--secondary.tox-button--icon-and-text { + display: flex; + padding: 5px 4px; +} +.tox .tox-button--icon-and-text .tox-icon svg, +.tox .tox-button.tox-button--icon-and-text .tox-icon svg, +.tox .tox-button.tox-button--secondary.tox-button--icon-and-text .tox-icon svg { + display: block; + fill: currentColor; +} .tox .tox-button--secondary { background-color: #f0f0f0; background-image: none; background-position: 0 0; background-repeat: repeat; border-color: #f0f0f0; - border-radius: 3px; + border-radius: 6px; border-style: solid; border-width: 1px; box-shadow: none; @@ -370,27 +447,27 @@ button::-moz-focus-inner { color: #222f3e; } .tox .tox-button--naked[disabled] { - background-color: #f0f0f0; - border-color: #f0f0f0; - box-shadow: none; + background-color: rgba(34, 47, 62, 0.12); + border-color: transparent; + box-shadow: unset; color: rgba(34, 47, 62, 0.5); } .tox .tox-button--naked:hover:not(:disabled) { - background-color: #e3e3e3; - border-color: #e3e3e3; - box-shadow: none; + background-color: rgba(34, 47, 62, 0.12); + border-color: transparent; + box-shadow: unset; color: #222f3e; } .tox .tox-button--naked:focus:not(:disabled) { - background-color: #e3e3e3; - border-color: #e3e3e3; - box-shadow: none; + background-color: rgba(34, 47, 62, 0.12); + border-color: transparent; + box-shadow: unset; color: #222f3e; } .tox .tox-button--naked:active:not(:disabled) { - background-color: #d6d6d6; - border-color: #d6d6d6; - box-shadow: none; + background-color: rgba(34, 47, 62, 0.18); + border-color: transparent; + box-shadow: unset; color: #222f3e; } .tox .tox-button--naked .tox-icon svg { @@ -401,7 +478,7 @@ button::-moz-focus-inner { } .tox .tox-checkbox { align-items: center; - border-radius: 3px; + border-radius: 6px; cursor: pointer; display: flex; height: 36px; @@ -417,7 +494,7 @@ button::-moz-focus-inner { } .tox .tox-checkbox__icons { align-items: center; - border-radius: 3px; + border-radius: 6px; box-shadow: 0 0 0 2px transparent; box-sizing: content-box; display: flex; @@ -432,11 +509,11 @@ button::-moz-focus-inner { } .tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { display: none; - fill: #207ab7; + fill: #006ce7; } .tox .tox-checkbox__icons .tox-checkbox-icon__checked svg { display: none; - fill: #207ab7; + fill: #006ce7; } .tox .tox-checkbox--disabled { color: rgba(34, 47, 62, 0.5); @@ -464,8 +541,8 @@ button::-moz-focus-inner { display: block; } .tox input.tox-checkbox__input:focus + .tox-checkbox__icons { - border-radius: 3px; - box-shadow: inset 0 0 0 1px #207ab7; + border-radius: 6px; + box-shadow: inset 0 0 0 1px #006ce7; padding: calc(4px - 1px); } .tox:not([dir=rtl]) .tox-checkbox__label { @@ -503,7 +580,7 @@ button::-moz-focus-inner { } .tox .tox-collection--list .tox-collection__group { border-bottom-width: 0; - border-color: #cccccc; + border-color: #e3e3e3; border-left-width: 0; border-right-width: 0; border-style: solid; @@ -514,7 +591,7 @@ button::-moz-focus-inner { border-top-width: 0; } .tox .tox-collection__group-heading { - background-color: #e6e6e6; + background-color: #fcfcfc; color: rgba(34, 47, 62, 0.7); cursor: default; font-size: 12px; @@ -527,18 +604,16 @@ button::-moz-focus-inner { -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; } .tox .tox-collection__item { align-items: center; + border-radius: 3px; color: #222f3e; - cursor: pointer; display: flex; -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; - -ms-user-select: none; user-select: none; } .tox .tox-collection--list .tox-collection__item { @@ -557,21 +632,21 @@ button::-moz-focus-inner { color: #222f3e; } .tox .tox-collection--list .tox-collection__item--active { - background-color: #dee0e2; + background-color: #cce2fa; } .tox .tox-collection--toolbar .tox-collection__item--enabled { - background-color: #c8cbcf; + background-color: #a6ccf7; color: #222f3e; } .tox .tox-collection--toolbar .tox-collection__item--active { - background-color: #dee0e2; + background-color: #cce2fa; } .tox .tox-collection--grid .tox-collection__item--enabled { - background-color: #c8cbcf; + background-color: #a6ccf7; color: #222f3e; } .tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) { - background-color: #dee0e2; + background-color: #cce2fa; color: #222f3e; } .tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) { @@ -600,7 +675,6 @@ button::-moz-focus-inner { color: currentColor; display: inline-block; flex: 1; - -ms-flex-preferred-size: auto; font-size: 14px; font-style: normal; font-weight: normal; @@ -645,9 +719,9 @@ button::-moz-focus-inner { } .tox .tox-collection--horizontal { background-color: #fff; - border: 1px solid #cccccc; - border-radius: 3px; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + border: 1px solid #e3e3e3; + border-radius: 6px; + box-shadow: 0 0 2px 0 rgba(34, 47, 62, 0.2), 0 4px 8px 0 rgba(34, 47, 62, 0.15); display: flex; flex: 0 0 auto; flex-shrink: 0; @@ -664,8 +738,8 @@ button::-moz-focus-inner { padding: 0 4px; } .tox .tox-collection--horizontal .tox-collection__item { - height: 34px; - margin: 2px 0 3px 0; + height: 28px; + margin: 6px 1px 5px 0; padding: 0 4px; } .tox .tox-collection--horizontal .tox-collection__item-label { @@ -701,8 +775,7 @@ button::-moz-focus-inner { margin-top: auto; } .tox .tox-collection__item-container--column { - -ms-grid-row-align: center; - align-self: center; + align-self: center; flex: 1 1 auto; flex-direction: column; } @@ -716,14 +789,13 @@ button::-moz-focus-inner { align-self: flex-start; } .tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle { - -ms-grid-row-align: center; - align-self: center; + align-self: center; } .tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom { align-self: flex-end; } .tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { - border-right: 1px solid #cccccc; + border-right: 1px solid transparent; } .tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) { margin-left: 8px; @@ -739,7 +811,7 @@ button::-moz-focus-inner { margin-left: 16px; } .tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { - border-left: 1px solid #cccccc; + border-left: 1px solid transparent; } .tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) { margin-right: 8px; @@ -864,11 +936,11 @@ button::-moz-focus-inner { .tox .tox-toolbar .tox-swatches, .tox .tox-toolbar__primary .tox-swatches, .tox .tox-toolbar__overflow .tox-swatches { - margin: 2px 0 3px 4px; + margin: 5px 0 6px 11px; } .tox .tox-collection--list .tox-collection__group .tox-swatches-menu { border: 0; - margin: -4px 0; + margin: -4px -4px; } .tox .tox-swatches__row { display: flex; @@ -904,11 +976,28 @@ button::-moz-focus-inner { width: 30px; } .tox .tox-swatches__picker-btn svg { + fill: #222f3e; height: 24px; width: 24px; } .tox .tox-swatches__picker-btn:hover { - background: #dee0e2; + background: #cce2fa; +} +.tox div.tox-swatch:not(.tox-swatch--remove) svg { + display: none; + fill: #222f3e; + height: 24px; + margin: calc((30px - 24px) / 2) calc((30px - 24px) / 2); + width: 24px; +} +.tox div.tox-swatch:not(.tox-swatch--remove) svg path { + fill: #fff; + paint-order: stroke; + stroke: #222f3e; + stroke-width: 2px; +} +.tox div.tox-swatch:not(.tox-swatch--remove).tox-collection__item--enabled svg { + display: block; } .tox:not([dir=rtl]) .tox-swatches__picker-btn { margin-left: auto; @@ -925,8 +1014,8 @@ button::-moz-focus-inner { } .tox .tox-comment { background: #fff; - border: 1px solid #cccccc; - border-radius: 3px; + border: 1px solid #eeeeee; + border-radius: 6px; box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1); padding: 8px 8px 16px 8px; position: relative; @@ -938,8 +1027,9 @@ button::-moz-focus-inner { justify-content: space-between; } .tox .tox-comment__date { - color: rgba(34, 47, 62, 0.7); + color: #222f3e; font-size: 12px; + line-height: 18px; } .tox .tox-comment__body { color: #222f3e; @@ -1098,20 +1188,30 @@ button::-moz-focus-inner { .tox .tox-user__avatar svg { fill: rgba(34, 47, 62, 0.7); } +.tox .tox-user__avatar img { + border-radius: 50%; + height: 36px; + object-fit: cover; + vertical-align: middle; + width: 36px; +} .tox .tox-user__name { - color: rgba(34, 47, 62, 0.7); - font-size: 12px; + color: #222f3e; + font-size: 14px; font-style: normal; font-weight: bold; - text-transform: uppercase; + line-height: 18px; + text-transform: none; } -.tox:not([dir=rtl]) .tox-user__avatar svg { +.tox:not([dir=rtl]) .tox-user__avatar svg, +.tox:not([dir=rtl]) .tox-user__avatar img { margin-right: 8px; } .tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name { margin-left: 8px; } -.tox[dir=rtl] .tox-user__avatar svg { +.tox[dir=rtl] .tox-user__avatar svg, +.tox[dir=rtl] .tox-user__avatar img { margin-left: 8px; } .tox[dir=rtl] .tox-user__avatar + .tox-user__name { @@ -1142,10 +1242,10 @@ button::-moz-focus-inner { } .tox .tox-dialog { background-color: #fff; - border-color: #cccccc; - border-radius: 3px; + border-color: #eeeeee; + border-radius: 10px; border-style: solid; - border-width: 1px; + border-width: 0px; box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15); display: flex; flex-direction: column; @@ -1156,10 +1256,11 @@ button::-moz-focus-inner { width: 95vw; z-index: 2; } -@media only screen and (max-width:767px) { +@media only screen and (max-width: 767px ) { body:not(.tox-force-desktop) .tox .tox-dialog { align-self: flex-start; margin: 8px auto; + max-height: calc(100vh - 8px * 2); width: calc(100vw - 16px); } } @@ -1207,7 +1308,6 @@ button::-moz-focus-inner { color: #222f3e; display: flex; flex: 1; - -ms-flex-preferred-size: auto; font-size: 16px; font-style: normal; font-weight: normal; @@ -1216,7 +1316,7 @@ button::-moz-focus-inner { text-align: left; text-transform: none; } -@media only screen and (max-width:767px) { +@media only screen and (max-width: 767px ) { body:not(.tox-force-desktop) .tox .tox-dialog__body { flex-direction: column; } @@ -1227,7 +1327,7 @@ button::-moz-focus-inner { flex-direction: column; padding: 16px 16px; } -@media only screen and (max-width:767px) { +@media only screen and (max-width: 767px ) { body:not(.tox-force-desktop) .tox .tox-dialog__body-nav { flex-direction: row; -webkit-overflow-scrolling: touch; @@ -1246,18 +1346,17 @@ button::-moz-focus-inner { white-space: nowrap; } .tox .tox-dialog__body-nav-item:focus { - background-color: rgba(32, 122, 183, 0.1); + background-color: rgba(0, 108, 231, 0.1); } .tox .tox-dialog__body-nav-item--active { - border-bottom: 2px solid #207ab7; - color: #207ab7; + border-bottom: 2px solid #006ce7; + color: #006ce7; } .tox .tox-dialog__body-content { box-sizing: border-box; display: flex; flex: 1; flex-direction: column; - -ms-flex-preferred-size: auto; max-height: 650px; overflow: auto; -webkit-overflow-scrolling: touch; @@ -1278,17 +1377,17 @@ button::-moz-focus-inner { margin-top: 0; } .tox .tox-dialog__body-content a { - color: #207ab7; + color: #006ce7; cursor: pointer; text-decoration: none; } .tox .tox-dialog__body-content a:hover, .tox .tox-dialog__body-content a:focus { - color: #185d8c; + color: #0054b4; text-decoration: none; } .tox .tox-dialog__body-content a:active { - color: #185d8c; + color: #0054b4; text-decoration: none; } .tox .tox-dialog__body-content svg { @@ -1298,12 +1397,9 @@ button::-moz-focus-inner { display: block; list-style-type: disc; margin-bottom: 16px; - -webkit-margin-end: 0; - margin-inline-end: 0; - -webkit-margin-start: 0; - margin-inline-start: 0; - -webkit-padding-start: 2.5rem; - padding-inline-start: 2.5rem; + margin-inline-end: 0; + margin-inline-start: 0; + padding-inline-start: 2.5rem; } .tox .tox-dialog__body-content .tox-form__group h1 { color: #222f3e; @@ -1348,6 +1444,13 @@ button::-moz-focus-inner { height: 650px; max-width: 1200px; } +.tox .tox-dialog--fullscreen { + height: 100%; + max-width: 100%; +} +.tox .tox-dialog--fullscreen .tox-dialog__body-content { + max-height: 100%; +} .tox .tox-dialog--width-md { max-width: 800px; } @@ -1360,7 +1463,7 @@ button::-moz-focus-inner { .tox .tox-dialog__footer { align-items: center; background-color: #fff; - border-top: 1px solid #cccccc; + border-top: none; display: flex; justify-content: space-between; padding: 8px 16px; @@ -1389,8 +1492,11 @@ button::-moz-focus-inner { font-weight: bold; padding-bottom: 8px; } +.tox .tox-dialog__table thead th:first-child { + padding-right: 8px; +} .tox .tox-dialog__table tbody tr { - border-bottom: 1px solid #cccccc; + border-bottom: 1px solid #626262; } .tox .tox-dialog__table tbody tr:last-child { border-bottom: none; @@ -1399,6 +1505,12 @@ button::-moz-focus-inner { padding-bottom: 8px; padding-top: 8px; } +.tox .tox-dialog__table td:first-child { + padding-right: 8px; +} +.tox .tox-dialog__iframe.tox-dialog__iframe--opaque { + background: #fff; +} .tox .tox-dialog__popups { position: absolute; width: 100%; @@ -1408,16 +1520,13 @@ button::-moz-focus-inner { display: flex; flex: 1; flex-direction: column; - -ms-flex-preferred-size: auto; } .tox .tox-dialog__body-iframe .tox-navobj { display: flex; flex: 1; - -ms-flex-preferred-size: auto; } .tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) { flex: 1; - -ms-flex-preferred-size: auto; height: 100%; } .tox .tox-dialog-dock-fadeout { @@ -1434,18 +1543,12 @@ button::-moz-focus-inner { .tox .tox-dialog-dock-transition.tox-dialog-dock-fadein { transition-delay: 0s; } -.tox.tox-platform-ie { - /* IE11 CSS styles go here */ -} -.tox.tox-platform-ie .tox-dialog-wrap { - position: -ms-device-fixed; -} -@media only screen and (max-width:767px) { +@media only screen and (max-width: 767px ) { body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav { margin-right: 0; } } -@media only screen and (max-width:767px) { +@media only screen and (max-width: 767px ) { body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) { margin-left: 8px; } @@ -1457,12 +1560,12 @@ button::-moz-focus-inner { .tox[dir=rtl] .tox-dialog__body { text-align: right; } -@media only screen and (max-width:767px) { +@media only screen and (max-width: 767px ) { body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav { margin-left: 0; } } -@media only screen and (max-width:767px) { +@media only screen and (max-width: 767px ) { body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) { margin-right: 8px; } @@ -1477,12 +1580,11 @@ body.tox-dialog__disable-scroll { .tox .tox-dropzone-container { display: flex; flex: 1; - -ms-flex-preferred-size: auto; } .tox .tox-dropzone { align-items: center; background: #fff; - border: 2px dashed #cccccc; + border: 2px dashed #eeeeee; box-sizing: border-box; display: flex; flex-direction: column; @@ -1498,22 +1600,34 @@ body.tox-dialog__disable-scroll { .tox .tox-edit-area { display: flex; flex: 1; - -ms-flex-preferred-size: auto; overflow: hidden; position: relative; } +.tox .tox-edit-area::before { + border: 2px solid #2D6ADF; + border-radius: 4px; + content: ''; + inset: 0; + opacity: 0; + pointer-events: none; + position: absolute; + transition: opacity 0.15s; + z-index: 1; +} .tox .tox-edit-area__iframe { background-color: #fff; border: 0; box-sizing: border-box; flex: 1; - -ms-flex-preferred-size: auto; height: 100%; position: absolute; width: 100%; } +.tox.tox-edit-focus .tox-edit-area::before { + opacity: 1; +} .tox.tox-inline-edit-area { - border: 1px dotted #cccccc; + border: 1px dotted #eeeeee; } .tox .tox-editor-container { display: flex; @@ -1522,19 +1636,36 @@ body.tox-dialog__disable-scroll { overflow: hidden; } .tox .tox-editor-header { - z-index: 1; + display: grid; + grid-template-columns: 1fr min-content; + z-index: 2; } .tox:not(.tox-tinymce-inline) .tox-editor-header { - box-shadow: none; + background-color: #fff; + border-bottom: none; + box-shadow: 0 2px 2px -2px rgba(34, 47, 62, 0.1), 0 8px 8px -4px rgba(34, 47, 62, 0.07); + padding: 4px 0; +} +.tox:not(.tox-tinymce-inline) .tox-editor-header:not(.tox-editor-dock-transition) { transition: box-shadow 0.5s; } -.tox.tox-tinymce--toolbar-bottom .tox-editor-header, -.tox.tox-tinymce-inline .tox-editor-header { - margin-bottom: -1px; +.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-bottom .tox-editor-header { + border-top: 1px solid #e3e3e3; + box-shadow: none; } -.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header { - background-color: transparent; - box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25); +.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on .tox-editor-header { + background-color: #fff; + box-shadow: 0 2px 2px -2px rgba(34, 47, 62, 0.2), 0 8px 8px -4px rgba(34, 47, 62, 0.15); + padding: 4px 0; +} +.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on.tox-tinymce--toolbar-bottom .tox-editor-header { + box-shadow: 0 2px 2px -2px rgba(34, 47, 62, 0.2), 0 8px 8px -4px rgba(34, 47, 62, 0.15); +} +.tox.tox:not(.tox-tinymce-inline) .tox-editor-header.tox-editor-header--empty { + background: none; + border: none; + box-shadow: none; + padding: 0; } .tox-editor-dock-fadeout { opacity: 0; @@ -1596,6 +1727,7 @@ body.tox-dialog__disable-scroll { max-width: 25em; } .tox .tox-autocompleter .tox-menu { + box-sizing: border-box; max-width: 25em; } .tox .tox-autocompleter .tox-autocompleter-highlight { @@ -1611,7 +1743,7 @@ body.tox-dialog__disable-scroll { } .tox .tox-color-input span { border-color: rgba(34, 47, 62, 0.2); - border-radius: 3px; + border-radius: 6px; border-style: solid; border-width: 1px; box-shadow: none; @@ -1623,7 +1755,7 @@ body.tox-dialog__disable-scroll { } .tox .tox-color-input span:hover:not([aria-disabled=true]), .tox .tox-color-input span:focus:not([aria-disabled=true]) { - border-color: #207ab7; + border-color: #006ce7; cursor: pointer; } .tox .tox-color-input span::before { @@ -1631,7 +1763,7 @@ body.tox-dialog__disable-scroll { background-position: 0 0, 0 6px, 6px -6px, -6px 0; background-size: 12px 12px; border: 1px solid #fff; - border-radius: 3px; + border-radius: 6px; box-sizing: border-box; content: ''; height: 24px; @@ -1684,7 +1816,6 @@ body.tox-dialog__disable-scroll { display: flex; flex: 1; flex-direction: column; - -ms-flex-preferred-size: auto; } .tox .tox-form__group { box-sizing: border-box; @@ -1726,20 +1857,16 @@ body.tox-dialog__disable-scroll { display: flex; flex: 1; flex-direction: column; - -ms-flex-preferred-size: auto; } .tox .tox-form__group--stretched .tox-textarea { flex: 1; - -ms-flex-preferred-size: auto; } .tox .tox-form__group--stretched .tox-navobj { display: flex; flex: 1; - -ms-flex-preferred-size: auto; } .tox .tox-form__group--stretched .tox-navobj :nth-child(2) { flex: 1; - -ms-flex-preferred-size: auto; height: 100%; } .tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) { @@ -1755,13 +1882,14 @@ body.tox-dialog__disable-scroll { .tox .tox-textfield, .tox .tox-toolbar-textfield, .tox .tox-listboxfield .tox-listbox--select, -.tox .tox-textarea { +.tox .tox-textarea, +.tox .tox-textarea-wrap .tox-textarea:focus { -webkit-appearance: none; -moz-appearance: none; appearance: none; background-color: #fff; - border-color: #cccccc; - border-radius: 3px; + border-color: #eeeeee; + border-radius: 6px; border-style: solid; border-width: 1px; box-shadow: none; @@ -1773,7 +1901,7 @@ body.tox-dialog__disable-scroll { margin: 0; min-height: 34px; outline: none; - padding: 5px 4.75px; + padding: 5px 5.5px; resize: none; width: 100%; } @@ -1785,10 +1913,12 @@ body.tox-dialog__disable-scroll { } .tox .tox-textfield:focus, .tox .tox-listboxfield .tox-listbox--select:focus, -.tox .tox-textarea:focus { +.tox .tox-textarea-wrap:focus-within, +.tox .tox-textarea:focus, +.tox .tox-custom-editor:focus-within { background-color: #fff; - border-color: #207ab7; - box-shadow: none; + border-color: #006ce7; + box-shadow: 0 0 0 2px rgba(0, 108, 231, 0.25); outline: none; } .tox .tox-toolbar-textfield { @@ -1802,7 +1932,7 @@ body.tox-dialog__disable-scroll { border: 0; border-color: transparent; box-shadow: unset; - color: #207ab7; + color: #006ce7; cursor: pointer; display: block; margin: 0; @@ -1860,8 +1990,8 @@ body.tox-dialog__disable-scroll { -moz-appearance: none; appearance: none; background-color: #fff; - border-color: #cccccc; - border-radius: 3px; + border-color: #eeeeee; + border-radius: 6px; border-style: solid; border-width: 1px; box-shadow: none; @@ -1873,7 +2003,7 @@ body.tox-dialog__disable-scroll { margin: 0; min-height: 34px; outline: none; - padding: 5px 4.75px; + padding: 5px 5.5px; resize: none; width: 100%; } @@ -1887,8 +2017,8 @@ body.tox-dialog__disable-scroll { } .tox .tox-selectfield select:focus { background-color: #fff; - border-color: #207ab7; - box-shadow: none; + border-color: #006ce7; + box-shadow: 0 0 0 2px rgba(0, 108, 231, 0.25); outline: none; } .tox .tox-selectfield svg { @@ -1911,19 +2041,33 @@ body.tox-dialog__disable-scroll { .tox[dir=rtl] .tox-selectfield svg { left: 8px; } +.tox .tox-textarea-wrap { + border-color: #eeeeee; + border-radius: 6px; + border-style: solid; + border-width: 1px; + display: flex; + flex: 1; + overflow: hidden; +} .tox .tox-textarea { -webkit-appearance: textarea; -moz-appearance: textarea; appearance: textarea; white-space: pre-wrap; } +.tox .tox-textarea-wrap .tox-textarea { + border: none; +} +.tox .tox-textarea-wrap .tox-textarea:focus { + border: none; +} .tox-fullscreen { border: 0; height: 100%; margin: 0; overflow: hidden; - -ms-scroll-chaining: none; - overscroll-behavior: none; + overscroll-behavior: none; padding: 0; touch-action: pinch-zoom; width: 100%; @@ -1949,40 +2093,46 @@ body.tox-dialog__disable-scroll { list-style: none; margin-top: 1em; } -.tox .tox-image-tools { - width: 100%; -} -.tox .tox-image-tools__toolbar { - align-items: center; - display: flex; - justify-content: center; -} -.tox .tox-image-tools__image { +.tox .tox-imagepreview { background-color: #666; height: 380px; - overflow: auto; + overflow: hidden; position: relative; width: 100%; } -.tox .tox-image-tools__image, -.tox .tox-image-tools__image + .tox-image-tools__toolbar { - margin-top: 8px; +.tox .tox-imagepreview.tox-imagepreview__loaded { + overflow: auto; } -.tox .tox-image-tools__image-bg { +.tox .tox-imagepreview__container { + display: flex; + left: 100vw; + position: absolute; + top: 100vw; +} +.tox .tox-imagepreview__image { background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==); } -.tox .tox-image-tools__toolbar > .tox-spacer { +.tox .tox-image-tools .tox-spacer { flex: 1; - -ms-flex-preferred-size: auto; } -.tox .tox-croprect-block { +.tox .tox-image-tools .tox-bar { + align-items: center; + display: flex; + height: 60px; + justify-content: center; +} +.tox .tox-image-tools .tox-imagepreview, +.tox .tox-image-tools .tox-imagepreview + .tox-bar { + margin-top: 8px; +} +.tox .tox-image-tools .tox-croprect-block { background: black; filter: alpha(opacity=50); opacity: 0.5; position: absolute; zoom: 1; } -.tox .tox-croprect-handle { +.tox .tox-image-tools .tox-croprect-handle { border: 2px solid white; height: 20px; left: 0; @@ -1990,64 +2140,46 @@ body.tox-dialog__disable-scroll { top: 0; width: 20px; } -.tox .tox-croprect-handle-move { +.tox .tox-image-tools .tox-croprect-handle-move { border: 0; cursor: move; position: absolute; } -.tox .tox-croprect-handle-nw { +.tox .tox-image-tools .tox-croprect-handle-nw { border-width: 2px 0 0 2px; cursor: nw-resize; left: 100px; margin: -2px 0 0 -2px; top: 100px; } -.tox .tox-croprect-handle-ne { +.tox .tox-image-tools .tox-croprect-handle-ne { border-width: 2px 2px 0 0; cursor: ne-resize; left: 200px; margin: -2px 0 0 -20px; top: 100px; } -.tox .tox-croprect-handle-sw { +.tox .tox-image-tools .tox-croprect-handle-sw { border-width: 0 0 2px 2px; cursor: sw-resize; left: 100px; margin: -20px 2px 0 -2px; top: 200px; } -.tox .tox-croprect-handle-se { +.tox .tox-image-tools .tox-croprect-handle-se { border-width: 0 2px 2px 0; cursor: se-resize; left: 200px; margin: -20px 0 0 -20px; top: 200px; } -.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { - margin-left: 8px; -} -.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider { - margin-left: 32px; -} -.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button { - margin-left: 32px; -} -.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { - margin-right: 8px; -} -.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider { - margin-right: 32px; -} -.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button { - margin-right: 32px; -} .tox .tox-insert-table-picker { display: flex; flex-wrap: wrap; width: 170px; } .tox .tox-insert-table-picker > div { - border-color: #cccccc; + border-color: #eeeeee; border-style: solid; border-width: 0 1px 1px 0; box-sizing: border-box; @@ -2055,11 +2187,11 @@ body.tox-dialog__disable-scroll { width: 17px; } .tox .tox-collection--list .tox-collection__group .tox-insert-table-picker { - margin: -4px 0; + margin: -4px -4px; } .tox .tox-insert-table-picker .tox-insert-table-picker__selected { - background-color: rgba(32, 122, 183, 0.5); - border-color: rgba(32, 122, 183, 0.5); + background-color: rgba(0, 108, 231, 0.5); + border-color: rgba(0, 108, 231, 0.5); } .tox .tox-insert-table-picker__label { color: rgba(34, 47, 62, 0.7); @@ -2087,22 +2219,28 @@ body.tox-dialog__disable-scroll { } .tox .tox-menu { background-color: #fff; - border: 1px solid #cccccc; - border-radius: 3px; - box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1); + border: 1px solid transparent; + border-radius: 6px; + box-shadow: 0 0 2px 0 rgba(34, 47, 62, 0.2), 0 4px 8px 0 rgba(34, 47, 62, 0.15); display: inline-block; overflow: hidden; vertical-align: top; z-index: 1150; } .tox .tox-menu.tox-collection.tox-collection--list { - padding: 0; + padding: 0 4px; } .tox .tox-menu.tox-collection.tox-collection--toolbar { - padding: 4px; + padding: 8px; } .tox .tox-menu.tox-collection.tox-collection--grid { - padding: 4px; + padding: 8px; +} +@media only screen and (min-width: 768px ) { + .tox .tox-menu .tox-collection__item-label { + overflow-wrap: break-word; + word-break: normal; + } } .tox .tox-menu__label h1, .tox .tox-menu__label h2, @@ -2116,16 +2254,45 @@ body.tox-dialog__disable-scroll { margin: 0; } .tox .tox-menubar { - background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff; + background: repeating-linear-gradient(transparent 0px 1px, transparent 1px 39px) center top 39px / 100% calc(100% - 39px) no-repeat; background-color: #fff; display: flex; flex: 0 0 auto; flex-shrink: 0; flex-wrap: wrap; - padding: 0 4px 0 4px; + grid-column: 1 / -1; + grid-row: 1; + padding: 0 11px 0 12px; } -.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar { - border-top: 1px solid #cccccc; +.tox .tox-promotion + .tox-menubar { + grid-column: 1; +} +.tox .tox-promotion { + background: repeating-linear-gradient(transparent 0px 1px, transparent 1px 39px) center top 39px / 100% calc(100% - 39px) no-repeat; + background-color: #fff; + grid-column: 2; + grid-row: 1; + padding-inline-end: 8px; + padding-inline-start: 4px; + padding-top: 5px; +} +.tox .tox-promotion-link { + align-items: unsafe center; + background-color: #E8F1F8; + border-radius: 5px; + color: #086BE6; + cursor: pointer; + display: flex; + font-size: 14px; + height: 26.6px; + padding: 4px 8px; + white-space: nowrap; +} +.tox .tox-promotion-link:hover { + background-color: #B4D7FF; +} +.tox .tox-promotion-link:focus { + background-color: #D9EDF7; } /* Deprecated. Remove in next major release */ .tox .tox-mbtn { @@ -2140,9 +2307,9 @@ body.tox-dialog__disable-scroll { font-size: 14px; font-style: normal; font-weight: normal; - height: 34px; + height: 28px; justify-content: center; - margin: 2px 0 3px 0; + margin: 5px 1px 6px 0; outline: none; overflow: hidden; padding: 0 4px; @@ -2157,19 +2324,19 @@ body.tox-dialog__disable-scroll { cursor: not-allowed; } .tox .tox-mbtn:focus:not(:disabled) { - background: #dee0e2; + background: #cce2fa; border: 0; box-shadow: none; color: #222f3e; } .tox .tox-mbtn--active { - background: #c8cbcf; + background: #a6ccf7; border: 0; box-shadow: none; color: #222f3e; } .tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) { - background: #dee0e2; + background: #cce2fa; border: 0; box-shadow: none; color: #222f3e; @@ -2190,17 +2357,15 @@ body.tox-dialog__disable-scroll { display: none; } .tox .tox-notification { - border-radius: 3px; + border-radius: 6px; border-style: solid; border-width: 1px; box-shadow: none; box-sizing: border-box; - display: -ms-grid; display: grid; font-size: 14px; font-weight: normal; - -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); - grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); margin-top: 4px; opacity: 0; padding: 4px; @@ -2226,29 +2391,29 @@ body.tox-dialog__disable-scroll { color: #222f3e; } .tox .tox-notification--success a { - color: #547831; + color: #517342; } .tox .tox-notification--success svg { fill: #222f3e; } .tox .tox-notification--error { - background-color: #f8dede; - border-color: #f2bfbf; + background-color: #f5cccc; + border-color: #f0b3b3; color: #222f3e; } .tox .tox-notification--error p { color: #222f3e; } .tox .tox-notification--error a { - color: #c00; + color: #77181f; } .tox .tox-notification--error svg { fill: #222f3e; } .tox .tox-notification--warn, .tox .tox-notification--warning { - background-color: #fffaea; - border-color: #ffe89d; + background-color: #fff5cc; + border-color: #fff0b3; color: #222f3e; } .tox .tox-notification--warn p, @@ -2257,39 +2422,34 @@ body.tox-dialog__disable-scroll { } .tox .tox-notification--warn a, .tox .tox-notification--warning a { - color: #222f3e; + color: #7a6e25; } .tox .tox-notification--warn svg, .tox .tox-notification--warning svg { fill: #222f3e; } .tox .tox-notification--info { - background-color: #d9edf7; - border-color: #779ecb; + background-color: #d6e7fb; + border-color: #c1dbf9; color: #222f3e; } .tox .tox-notification--info p { color: #222f3e; } .tox .tox-notification--info a { - color: #222f3e; + color: #2a64a6; } .tox .tox-notification--info svg { fill: #222f3e; } .tox .tox-notification__body { - -ms-grid-row-align: center; - align-self: center; + align-self: center; color: #222f3e; font-size: 14px; - -ms-grid-column-span: 1; grid-column-end: 3; - -ms-grid-column: 2; - grid-column-start: 2; - -ms-grid-row-span: 1; + grid-column-start: 2; grid-row-end: 2; - -ms-grid-row: 1; - grid-row-start: 1; + grid-row-start: 1; text-align: center; white-space: normal; word-break: break-all; @@ -2302,47 +2462,30 @@ body.tox-dialog__disable-scroll { margin-top: 1rem; } .tox .tox-notification__icon { - -ms-grid-row-align: center; - align-self: center; - -ms-grid-column-span: 1; + align-self: center; grid-column-end: 2; - -ms-grid-column: 1; - grid-column-start: 1; - -ms-grid-row-span: 1; + grid-column-start: 1; grid-row-end: 2; - -ms-grid-row: 1; - grid-row-start: 1; - -ms-grid-column-align: end; - justify-self: end; + grid-row-start: 1; + justify-self: end; } .tox .tox-notification__icon svg { display: block; } .tox .tox-notification__dismiss { - -ms-grid-row-align: start; - align-self: start; - -ms-grid-column-span: 1; + align-self: start; grid-column-end: 4; - -ms-grid-column: 3; - grid-column-start: 3; - -ms-grid-row-span: 1; + grid-column-start: 3; grid-row-end: 2; - -ms-grid-row: 1; - grid-row-start: 1; - -ms-grid-column-align: end; - justify-self: end; + grid-row-start: 1; + justify-self: end; } .tox .tox-notification .tox-progress-bar { - -ms-grid-column-span: 3; grid-column-end: 4; - -ms-grid-column: 1; - grid-column-start: 1; - -ms-grid-row-span: 1; + grid-column-start: 1; grid-row-end: 3; - -ms-grid-row: 2; - grid-row-start: 2; - -ms-grid-column-align: center; - justify-self: center; + grid-row-start: 2; + justify-self: center; } .tox .tox-pop { display: inline-block; @@ -2365,9 +2508,9 @@ body.tox-dialog__disable-scroll { } .tox .tox-pop__dialog { background-color: #fff; - border: 1px solid #cccccc; - border-radius: 3px; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + border: 1px solid #eeeeee; + border-radius: 6px; + box-shadow: 0 0 2px 0 rgba(34, 47, 62, 0.2), 0 4px 8px 0 rgba(34, 47, 62, 0.15); min-width: 0; overflow: hidden; } @@ -2405,7 +2548,7 @@ body.tox-dialog__disable-scroll { margin-top: -1px; } .tox .tox-pop.tox-pop--bottom::before { - border-color: #cccccc transparent transparent transparent; + border-color: #eeeeee transparent transparent transparent; border-width: 9px; margin-left: -9px; } @@ -2422,7 +2565,7 @@ body.tox-dialog__disable-scroll { margin-top: 1px; } .tox .tox-pop.tox-pop--top::before { - border-color: transparent transparent #cccccc transparent; + border-color: transparent transparent #eeeeee transparent; border-width: 9px; margin-left: -9px; } @@ -2438,7 +2581,7 @@ body.tox-dialog__disable-scroll { margin-left: -15px; } .tox .tox-pop.tox-pop--left::before { - border-color: transparent #cccccc transparent transparent; + border-color: transparent #eeeeee transparent transparent; border-width: 10px; margin-left: -19px; } @@ -2454,7 +2597,7 @@ body.tox-dialog__disable-scroll { margin-left: -1px; } .tox .tox-pop.tox-pop--right::before { - border-color: transparent transparent transparent #cccccc; + border-color: transparent transparent transparent #eeeeee; border-width: 10px; margin-left: -1px; } @@ -2470,7 +2613,6 @@ body.tox-dialog__disable-scroll { display: flex; flex-direction: row; flex-grow: 1; - -ms-flex-preferred-size: 0; min-height: 0; } .tox .tox-sidebar { @@ -2518,23 +2660,22 @@ body.tox-dialog__disable-scroll { align-items: center; display: flex; flex: 1; - -ms-flex-preferred-size: auto; height: 24px; justify-content: center; position: relative; } .tox .tox-slider__rail { background-color: transparent; - border: 1px solid #cccccc; - border-radius: 3px; + border: 1px solid #eeeeee; + border-radius: 6px; height: 10px; min-width: 120px; width: 100%; } .tox .tox-slider__handle { - background-color: #207ab7; - border: 2px solid #185d8c; - border-radius: 3px; + background-color: #006ce7; + border: 2px solid #0054b4; + border-radius: 6px; box-shadow: none; height: 24px; left: 50%; @@ -2543,6 +2684,15 @@ body.tox-dialog__disable-scroll { transform: translateX(-50%) translateY(-50%); width: 14px; } +.tox .tox-form__controls-h-stack > .tox-slider:not(:first-of-type) { + margin-inline-start: 8px; +} +.tox .tox-form__controls-h-stack > .tox-form__group + .tox-slider { + margin-inline-start: 32px; +} +.tox .tox-form__controls-h-stack > .tox-slider + .tox-form__group { + margin-inline-start: 32px; +} .tox .tox-source-code { overflow: auto; } @@ -2581,17 +2731,17 @@ body.tox-dialog__disable-scroll { .tox .tox-statusbar { align-items: center; background-color: #fff; - border-top: 1px solid #cccccc; + border-top: 1px solid #e3e3e3; color: rgba(34, 47, 62, 0.7); display: flex; flex: 0 0 auto; - font-size: 12px; + font-size: 14px; font-weight: normal; - height: 18px; + height: 25px; overflow: hidden; padding: 0 8px; position: relative; - text-transform: uppercase; + text-transform: none; } .tox .tox-statusbar__text-container { display: flex; @@ -2627,8 +2777,18 @@ body.tox-dialog__disable-scroll { .tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]), .tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]), .tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) { + color: #222f3e; cursor: pointer; - text-decoration: underline; +} +.tox .tox-statusbar__branding svg { + fill: rgba(34, 47, 62, 0.8); + height: 1.14em; + vertical-align: -0.28em; + width: 3.6em; +} +.tox .tox-statusbar__branding a:hover:not(:disabled):not([aria-disabled=true]) svg, +.tox .tox-statusbar__branding a:focus:not(:disabled):not([aria-disabled=true]) svg { + fill: #222f3e; } .tox .tox-statusbar__resize-handle { align-items: flex-end; @@ -2639,22 +2799,24 @@ body.tox-dialog__disable-scroll { justify-content: flex-end; margin-left: auto; margin-right: -8px; + padding-bottom: 3px; padding-left: 1ch; + padding-right: 3px; } .tox .tox-statusbar__resize-handle svg { display: block; - fill: rgba(34, 47, 62, 0.7); + fill: rgba(34, 47, 62, 0.5); } .tox .tox-statusbar__resize-handle:focus svg { background-color: #dee0e2; - border-radius: 1px; + border-radius: 1px 1px 5px 1px; box-shadow: 0 0 0 2px #dee0e2; } .tox:not([dir=rtl]) .tox-statusbar__path > * { margin-right: 4px; } .tox:not([dir=rtl]) .tox-statusbar__branding { - margin-left: 1ch; + margin-left: 2ch; } .tox[dir=rtl] .tox-statusbar { flex-direction: row-reverse; @@ -2688,9 +2850,9 @@ body.tox-dialog__disable-scroll { font-size: 14px; font-style: normal; font-weight: normal; - height: 34px; + height: 28px; justify-content: center; - margin: 2px 0 3px 0; + margin: 6px 1px 5px 0; outline: none; overflow: hidden; padding: 0; @@ -2707,12 +2869,12 @@ body.tox-dialog__disable-scroll { width: inherit; } .tox .tox-tbtn:focus { - background: #dee0e2; + background: #cce2fa; border: 0; box-shadow: none; } .tox .tox-tbtn:hover { - background: #dee0e2; + background: #cce2fa; border: 0; box-shadow: none; color: #222f3e; @@ -2721,7 +2883,7 @@ body.tox-dialog__disable-scroll { fill: #222f3e; } .tox .tox-tbtn:active { - background: #c8cbcf; + background: #a6ccf7; border: 0; box-shadow: none; color: #222f3e; @@ -2748,7 +2910,7 @@ body.tox-dialog__disable-scroll { } .tox .tox-tbtn--enabled, .tox .tox-tbtn--enabled:hover { - background: #c8cbcf; + background: #a6ccf7; border: 0; box-shadow: none; color: #222f3e; @@ -2772,17 +2934,16 @@ body.tox-dialog__disable-scroll { transform: none; } .tox .tox-tbtn--md { - height: 51px; + height: 42px; width: 51px; } .tox .tox-tbtn--lg { flex-direction: column; - height: 68px; + height: 56px; width: 68px; } .tox .tox-tbtn--return { - -ms-grid-row-align: stretch; - align-self: stretch; + align-self: stretch; height: unset; width: 16px; } @@ -2798,15 +2959,95 @@ body.tox-dialog__disable-scroll { margin-bottom: 4px; white-space: nowrap; } +.tox .tox-number-input { + border-radius: 3px; + display: flex; + margin: 6px 1px 5px 0; + padding: 0 4px; + width: auto; +} +.tox .tox-number-input .tox-input-wrapper { + background: #f7f7f7; + display: flex; + pointer-events: none; + text-align: center; +} +.tox .tox-number-input .tox-input-wrapper:focus { + background: #cce2fa; +} +.tox .tox-number-input input { + border-radius: 3px; + color: #222f3e; + font-size: 14px; + margin: 2px 0; + pointer-events: all; + width: 60px; +} +.tox .tox-number-input input:hover { + background: #cce2fa; + color: #222f3e; +} +.tox .tox-number-input input:focus { + background: #fff; + color: #222f3e; +} +.tox .tox-number-input button { + background: #f7f7f7; + color: #222f3e; + height: 28px; + text-align: center; + width: 24px; +} +.tox .tox-number-input button svg { + display: block; + fill: #222f3e; + margin: 0 auto; + transform: scale(0.67); +} +.tox .tox-number-input button:focus { + background: #cce2fa; +} +.tox .tox-number-input button:hover { + background: #cce2fa; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-number-input button:hover svg { + fill: #222f3e; +} +.tox .tox-number-input button:active { + background: #a6ccf7; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-number-input button:active svg { + fill: #222f3e; +} +.tox .tox-number-input button.minus { + border-radius: 3px 0 0 3px; +} +.tox .tox-number-input button.plus { + border-radius: 0 3px 3px 0; +} +.tox .tox-number-input:focus:not(:active) > button, +.tox .tox-number-input:focus:not(:active) > .tox-input-wrapper { + background: #cce2fa; +} .tox .tox-tbtn--select { - margin: 2px 0 3px 0; + margin: 6px 1px 5px 0; padding: 0 4px; width: auto; } .tox .tox-tbtn__select-label { cursor: default; font-weight: normal; + height: initial; margin: 0 4px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .tox .tox-tbtn__select-chevron { align-items: center; @@ -2817,6 +3058,12 @@ body.tox-dialog__disable-scroll { .tox .tox-tbtn__select-chevron svg { fill: rgba(34, 47, 62, 0.5); } +.tox .tox-tbtn--bespoke { + background: #f7f7f7; +} +.tox .tox-tbtn--bespoke + .tox-tbtn--bespoke { + margin-inline-start: 4px; +} .tox .tox-tbtn--bespoke .tox-tbtn__select-label { overflow: hidden; text-overflow: ellipsis; @@ -2828,14 +3075,14 @@ body.tox-dialog__disable-scroll { border-radius: 3px; box-sizing: border-box; display: flex; - margin: 2px 0 3px 0; + margin: 6px 1px 5px 0; overflow: hidden; } .tox .tox-split-button:hover { - box-shadow: 0 0 0 1px #dee0e2 inset; + box-shadow: 0 0 0 1px #cce2fa inset; } .tox .tox-split-button:focus { - background: #dee0e2; + background: #cce2fa; box-shadow: none; color: #222f3e; } @@ -2851,12 +3098,6 @@ body.tox-dialog__disable-scroll { .tox .tox-split-button .tox-tbtn { margin: 0; } -.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child { - width: 30px; -} -.tox.tox-platform-touch .tox-split-button__chevron { - width: 20px; -} .tox .tox-split-button.tox-tbtn--disabled:hover, .tox .tox-split-button.tox-tbtn--disabled:focus, .tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover, @@ -2865,19 +3106,39 @@ body.tox-dialog__disable-scroll { box-shadow: none; color: rgba(34, 47, 62, 0.5); } +.tox.tox-platform-touch .tox-split-button .tox-tbtn--select { + padding: 0 0px; +} +.tox.tox-platform-touch .tox-split-button .tox-tbtn:not(.tox-tbtn--select):first-child { + width: 30px; +} +.tox.tox-platform-touch .tox-split-button__chevron { + width: 20px; +} .tox .tox-toolbar-overlord { background-color: #fff; } .tox .tox-toolbar, .tox .tox-toolbar__primary, .tox .tox-toolbar__overflow { - background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff; + background-attachment: local; background-color: #fff; + background-image: repeating-linear-gradient(#e3e3e3 0px 1px, transparent 1px 39px); + background-position: center top 40px; + background-repeat: no-repeat; + background-size: calc(100% - 11px * 2) calc(100% - 41px); display: flex; flex: 0 0 auto; flex-shrink: 0; flex-wrap: wrap; - padding: 0 0; + padding: 0 0px; + transform: perspective(1px); +} +.tox .tox-toolbar-overlord > .tox-toolbar, +.tox .tox-toolbar-overlord > .tox-toolbar__primary, +.tox .tox-toolbar-overlord > .tox-toolbar__overflow { + background-position: center top 0px; + background-size: calc(100% - 11px * 2) calc(100% - 0px); } .tox .tox-toolbar__overflow.tox-toolbar__overflow--closed { height: 0; @@ -2892,10 +3153,16 @@ body.tox-dialog__disable-scroll { .tox .tox-toolbar__overflow--shrinking { transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s; } +.tox .tox-toolbar-overlord, +.tox .tox-anchorbar { + grid-column: 1 / -1; +} .tox .tox-menubar + .tox-toolbar, -.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary { - border-top: 1px solid #cccccc; +.tox .tox-menubar + .tox-toolbar-overlord { + border-top: 1px solid transparent; margin-top: -1px; + padding-bottom: 1px; + padding-top: 1px; } .tox .tox-toolbar--scrolling { flex-wrap: nowrap; @@ -2907,22 +3174,38 @@ body.tox-dialog__disable-scroll { .tox .tox-toolbar--no-divider { background-image: none; } -.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child, -.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary { - border-top: 1px solid #cccccc; +.tox .tox-toolbar-overlord .tox-toolbar:not(.tox-toolbar--scrolling):first-child, +.tox .tox-toolbar-overlord .tox-toolbar__primary { + background-position: center top 39px; +} +.tox .tox-editor-header > .tox-toolbar--scrolling, +.tox .tox-toolbar-overlord .tox-toolbar--scrolling:first-child { + background-image: none; } .tox.tox-tinymce-aux .tox-toolbar__overflow { background-color: #fff; - border: 1px solid #cccccc; - border-radius: 3px; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + background-position: center top 43px; + background-size: calc(100% - 8px * 2) calc(100% - 51px); + border: none; + border-radius: 6px; + box-shadow: 0 0 2px 0 rgba(34, 47, 62, 0.2), 0 4px 8px 0 rgba(34, 47, 62, 0.15); + overscroll-behavior: none; + padding: 4px 0; +} +.tox-pop .tox-pop__dialog { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox-pop .tox-pop__dialog .tox-toolbar { + background-position: center top 43px; + background-size: calc(100% - 11px * 2) calc(100% - 51px); + padding: 4px 0; } .tox .tox-toolbar__group { align-items: center; display: flex; flex-wrap: wrap; margin: 0 0; - padding: 0 4px 0 4px; + padding: 0 11px 0 12px; } .tox .tox-toolbar__group--pull-right { margin-left: auto; @@ -2932,10 +3215,10 @@ body.tox-dialog__disable-scroll { flex-wrap: nowrap; } .tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) { - border-right: 1px solid #cccccc; + border-right: 1px solid transparent; } .tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) { - border-left: 1px solid #cccccc; + border-left: 1px solid transparent; } .tox .tox-tooltip { display: inline-block; @@ -2944,7 +3227,7 @@ body.tox-dialog__disable-scroll { } .tox .tox-tooltip__body { background-color: #222f3e; - border-radius: 3px; + border-radius: 6px; box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3); color: rgba(255, 255, 255, 0.75); font-size: 14px; @@ -2992,9 +3275,261 @@ body.tox-dialog__disable-scroll { top: 50%; transform: translateY(-50%); } +.tox .tox-tree { + display: flex; + flex-direction: column; +} +.tox .tox-tree .tox-trbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 4px; + box-shadow: none; + color: #222f3e; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 28px; + margin-bottom: 4px; + margin-top: 4px; + outline: none; + overflow: hidden; + padding: 0; + padding-left: 8px; + text-transform: none; +} +.tox .tox-tree .tox-trbtn .tox-tree__label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.tox .tox-tree .tox-trbtn svg { + display: block; + fill: #222f3e; +} +.tox .tox-tree .tox-trbtn:focus { + background: #cce2fa; + border: 0; + box-shadow: none; +} +.tox .tox-tree .tox-trbtn:hover { + background: #cce2fa; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tree .tox-trbtn:hover svg { + fill: #222f3e; +} +.tox .tox-tree .tox-trbtn:active { + background: #a6ccf7; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tree .tox-trbtn:active svg { + fill: #222f3e; +} +.tox .tox-tree .tox-trbtn--disabled, +.tox .tox-tree .tox-trbtn--disabled:hover, +.tox .tox-tree .tox-trbtn:disabled, +.tox .tox-tree .tox-trbtn:disabled:hover { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-tree .tox-trbtn--disabled svg, +.tox .tox-tree .tox-trbtn--disabled:hover svg, +.tox .tox-tree .tox-trbtn:disabled svg, +.tox .tox-tree .tox-trbtn:disabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tree .tox-trbtn--enabled, +.tox .tox-tree .tox-trbtn--enabled:hover { + background: #a6ccf7; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tree .tox-trbtn--enabled > *, +.tox .tox-tree .tox-trbtn--enabled:hover > * { + transform: none; +} +.tox .tox-tree .tox-trbtn--enabled svg, +.tox .tox-tree .tox-trbtn--enabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: #222f3e; +} +.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled) { + color: #222f3e; +} +.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled) svg { + fill: #222f3e; +} +.tox .tox-tree .tox-trbtn:active > * { + transform: none; +} +.tox .tox-tree .tox-trbtn--return { + align-self: stretch; + height: unset; + width: 16px; +} +.tox .tox-tree .tox-trbtn--labeled { + padding: 0 4px; + width: unset; +} +.tox .tox-tree .tox-trbtn__vlabel { + display: block; + font-size: 10px; + font-weight: normal; + letter-spacing: -0.025em; + margin-bottom: 4px; + white-space: nowrap; +} +.tox .tox-tree .tox-tree--directory { + display: flex; + flex-direction: column; + /* stylelint-disable no-descending-specificity */ +} +.tox .tox-tree .tox-tree--directory.tox-tree--directory--expanded > .tox-tree--directory__label .tox-chevron { + transform: rotate(90deg); +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label { + font-weight: bold; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn { + margin-left: auto; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn svg { + fill: transparent; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn.tox-mbtn--active svg, +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn:focus svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover .tox-mbtn svg, +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:focus .tox-mbtn svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover) { + background-color: transparent; + color: #222f3e; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover) .tox-chevron svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-chevron { + margin-right: 6px; + transition: transform 0.5s ease-in-out; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label.tox-tree--directory__label--active .tox-chevron { + transform: rotate(90deg); +} +.tox .tox-tree .tox-tree--leaf__label { + font-weight: normal; +} +.tox .tox-tree .tox-tree--leaf__label .tox-mbtn { + margin-left: auto; +} +.tox .tox-tree .tox-tree--leaf__label .tox-mbtn svg { + fill: transparent; +} +.tox .tox-tree .tox-tree--leaf__label .tox-mbtn.tox-mbtn--active svg, +.tox .tox-tree .tox-tree--leaf__label .tox-mbtn:focus svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--leaf__label:hover .tox-mbtn svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover) { + background-color: transparent; + color: #222f3e; +} +.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover) .tox-chevron svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--directory__children { + overflow: hidden; + padding-left: 16px; +} +.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--growing, +.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--shrinking { + transition: height 0.5s ease-in-out; +} +.tox .tox-tree .tox-trbtn.tox-tree--leaf__label { + display: flex; + justify-content: space-between; +} +.tox .tox-view-wrap, +.tox .tox-view-wrap__slot-container { + background-color: #fff; + display: flex; + flex: 1; + flex-direction: column; +} +.tox .tox-view { + display: flex; + flex: 1 1 auto; + flex-direction: column; + overflow: hidden; +} +.tox .tox-view__header { + align-items: center; + display: flex; + font-size: 16px; + justify-content: space-between; + padding: 8px 8px 0 8px; + position: relative; +} +.tox .tox-view--mobile.tox-view__header, +.tox .tox-view--mobile.tox-view__toolbar { + padding: 8px; +} +.tox .tox-view--scrolling { + flex-wrap: nowrap; + overflow-x: auto; +} +.tox .tox-view__toolbar { + display: flex; + flex-direction: row; + gap: 8px; + justify-content: space-between; + padding: 8px 8px 0 8px; +} +.tox .tox-view__toolbar__group { + display: flex; + flex-direction: row; + gap: 12px; +} +.tox .tox-view__header-start, +.tox .tox-view__header-end { + display: flex; +} +.tox .tox-view__pane { + height: 100%; + padding: 8px; + width: 100%; +} +.tox .tox-view__pane_panel { + border: 1px solid #eeeeee; + border-radius: 6px; +} +.tox:not([dir=rtl]) .tox-view__header .tox-view__header-start > *, +.tox:not([dir=rtl]) .tox-view__header .tox-view__header-end > * { + margin-left: 8px; +} +.tox[dir=rtl] .tox-view__header .tox-view__header-start > *, +.tox[dir=rtl] .tox-view__header .tox-view__header-end > * { + margin-right: 8px; +} .tox .tox-well { - border: 1px solid #cccccc; - border-radius: 3px; + border: 1px solid #eeeeee; + border-radius: 6px; padding: 8px; width: 100%; } @@ -3008,10 +3543,11 @@ body.tox-dialog__disable-scroll { margin: 0; } .tox .tox-custom-editor { - border: 1px solid #cccccc; - border-radius: 3px; + border: 1px solid #eeeeee; + border-radius: 6px; display: flex; flex: 1; + overflow: hidden; position: relative; } /* stylelint-disable */ @@ -3032,16 +3568,8 @@ body.tox-dialog__disable-scroll { .tox .tox-dialog__content-js { display: flex; flex: 1; - -ms-flex-preferred-size: auto; } .tox .tox-dialog__body-content .tox-collection { display: flex; flex: 1; - -ms-flex-preferred-size: auto; -} -.tox .tox-image-tools-edit-panel { - height: 60px; -} -.tox .tox-image-tools__sidebar { - height: 60px; } diff --git a/public/tinymce/skins/oxide/skin.min.css b/public/tinymce/skins/oxide/skin.min.css index f570b8e49f..c5384dffd1 100644 --- a/public/tinymce/skins/oxide/skin.min.css +++ b/public/tinymce/skins/oxide/skin.min.css @@ -1,7 +1 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(34,47,62,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} +.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:2px solid #eee;border-radius:10px;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox.tox-tinymce-inline{border:none;box-shadow:none;overflow:initial}.tox.tox-tinymce-inline .tox-editor-container{overflow:initial}.tox.tox-tinymce-inline .tox-editor-header{background-color:#fff;border:2px solid #eee;border-radius:10px;box-shadow:none;overflow:hidden}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border-radius:6px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>div>div .tox-icon svg{display:block}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(0,101,216,.1);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#006ce7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#006ce7}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon{background-color:#006ce7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:hover{background-color:#0060ce}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:active{background-color:#0054b4}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.08);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#8f5d00}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#8f5d00}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon{background-color:#ffe89d;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:hover{background-color:#f2d574;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:active{background-color:#e8c657;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon{background-color:#f2bfbf;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:hover{background-color:#e9a4a4;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:active{background-color:#ee9494;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{display:none}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#527530}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#527530}.tox .tox-dialog__body-content .accessibility-issue__header .tox-form__group h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{font-size:14px;margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox .tox-advtemplate .tox-form__grid{flex:1}.tox .tox-advtemplate .tox-form__grid>div:first-child{display:flex;flex-direction:column;width:30%}.tox .tox-advtemplate .tox-form__grid>div:first-child>div:nth-child(2){flex-basis:0;flex-grow:1;overflow:auto}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-advtemplate .tox-form__grid>div:first-child{width:100%}}.tox .tox-advtemplate iframe{border-color:#eee;border-radius:10px;border-style:solid;border-width:1px;margin:0 10px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#006ce7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#006ce7;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;position:relative;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button::before{border-radius:6px;bottom:-1px;box-shadow:inset 0 0 0 2px #fff,0 0 0 1px #006ce7,0 0 0 3px rgba(0,108,231,.25);content:'';left:-1px;opacity:0;pointer-events:none;position:absolute;right:-1px;top:-1px}.tox .tox-button[disabled]{background-color:#006ce7;background-image:none;border-color:#006ce7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#0060ce;background-image:none;border-color:#0060ce;box-shadow:none;color:#fff}.tox .tox-button:focus-visible:not(:disabled)::before{opacity:1}.tox .tox-button:hover:not(:disabled){background-color:#0060ce;background-image:none;border-color:#0060ce;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled,.tox .tox-button.tox-button--enabled:hover{background:#a6ccf7;border-width:1px;box-shadow:none;color:#222f3e}.tox .tox-button.tox-button--enabled:hover>*,.tox .tox-button.tox-button--enabled>*{transform:none}.tox .tox-button.tox-button--enabled svg,.tox .tox-button.tox-button--enabled:hover svg{fill:#222f3e}.tox .tox-button--icon-and-text,.tox .tox-button.tox-button--icon-and-text,.tox .tox-button.tox-button--secondary.tox-button--icon-and-text{display:flex;padding:5px 4px}.tox .tox-button--icon-and-text .tox-icon svg,.tox .tox-button.tox-button--icon-and-text .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon-and-text .tox-icon svg{display:block;fill:currentColor}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:rgba(34,47,62,.12);border-color:transparent;box-shadow:unset;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:rgba(34,47,62,.12);border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:rgba(34,47,62,.12);border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:rgba(34,47,62,.18);border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:6px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:6px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#006ce7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#006ce7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:6px;box-shadow:inset 0 0 0 1px #006ce7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#e3e3e3;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#fcfcfc;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;border-radius:3px;color:#222f3e;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#cce2fa}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#a6ccf7;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#cce2fa}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#a6ccf7;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#cce2fa;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(34,47,62,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #e3e3e3;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:28px;margin:6px 1px 5px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid transparent}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid transparent}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:5px 0 6px 11px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px -4px}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{fill:#222f3e;height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#cce2fa}.tox div.tox-swatch:not(.tox-swatch--remove) svg{display:none;fill:#222f3e;height:24px;margin:calc((30px - 24px)/ 2) calc((30px - 24px)/ 2);width:24px}.tox div.tox-swatch:not(.tox-swatch--remove) svg path{fill:#fff;paint-order:stroke;stroke:#222f3e;stroke-width:2px}.tox div.tox-swatch:not(.tox-swatch--remove).tox-collection__item--enabled svg{display:block}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #eee;border-radius:6px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:#222f3e;font-size:12px;line-height:18px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__avatar img{border-radius:50%;height:36px;object-fit:cover;vertical-align:middle;width:36px}.tox .tox-user__name{color:#222f3e;font-size:14px;font-style:normal;font-weight:700;line-height:18px;text-transform:none}.tox:not([dir=rtl]) .tox-user__avatar img,.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar img,.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#eee;border-radius:10px;border-style:solid;border-width:0;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;max-height:calc(100vh - 8px * 2);width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(0,108,231,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #006ce7;color:#006ce7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#006ce7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#0054b4;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#0054b4;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;margin-inline-end:0;margin-inline-start:0;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--fullscreen{height:100%;max-width:100%}.tox .tox-dialog--fullscreen .tox-dialog__body-content{max-height:100%}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:none;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table thead th:first-child{padding-right:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #626262}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__table td:first-child{padding-right:8px}.tox .tox-dialog__iframe.tox-dialog__iframe--opaque{background:#fff}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #eee;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;overflow:hidden;position:relative}.tox .tox-edit-area::before{border:2px solid #2d6adf;border-radius:4px;content:'';inset:0;opacity:0;pointer-events:none;position:absolute;transition:opacity .15s;z-index:1}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;height:100%;position:absolute;width:100%}.tox.tox-edit-focus .tox-edit-area::before{opacity:1}.tox.tox-inline-edit-area{border:1px dotted #eee}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{display:grid;grid-template-columns:1fr min-content;z-index:2}.tox:not(.tox-tinymce-inline) .tox-editor-header{background-color:#fff;border-bottom:none;box-shadow:0 2px 2px -2px rgba(34,47,62,.1),0 8px 8px -4px rgba(34,47,62,.07);padding:4px 0}.tox:not(.tox-tinymce-inline) .tox-editor-header:not(.tox-editor-dock-transition){transition:box-shadow .5s}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-bottom .tox-editor-header{border-top:1px solid #e3e3e3;box-shadow:none}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:#fff;box-shadow:0 2px 2px -2px rgba(34,47,62,.2),0 8px 8px -4px rgba(34,47,62,.15);padding:4px 0}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on.tox-tinymce--toolbar-bottom .tox-editor-header{box-shadow:0 2px 2px -2px rgba(34,47,62,.2),0 8px 8px -4px rgba(34,47,62,.15)}.tox.tox:not(.tox-tinymce-inline) .tox-editor-header.tox-editor-header--empty{background:0 0;border:none;box-shadow:none;padding:0}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{box-sizing:border-box;max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#006ce7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:6px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column}.tox .tox-form__group--stretched .tox-textarea{flex:1}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textarea-wrap .tox-textarea:focus,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#eee;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 5.5px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-custom-editor:focus-within,.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea-wrap:focus-within,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#006ce7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#eee;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 5.5px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea-wrap{border-color:#eee;border-radius:6px;border-style:solid;border-width:1px;display:flex;flex:1;overflow:hidden}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox .tox-textarea-wrap .tox-textarea{border:none}.tox .tox-textarea-wrap .tox-textarea:focus{border:none}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-imagepreview{background-color:#666;height:380px;overflow:hidden;position:relative;width:100%}.tox .tox-imagepreview.tox-imagepreview__loaded{overflow:auto}.tox .tox-imagepreview__container{display:flex;left:100vw;position:absolute;top:100vw}.tox .tox-imagepreview__image{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools .tox-spacer{flex:1}.tox .tox-image-tools .tox-bar{align-items:center;display:flex;height:60px;justify-content:center}.tox .tox-image-tools .tox-imagepreview,.tox .tox-image-tools .tox-imagepreview+.tox-bar{margin-top:8px}.tox .tox-image-tools .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-image-tools .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-image-tools .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-image-tools .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-image-tools .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-image-tools .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-image-tools .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#eee;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px -4px}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(0,108,231,.5);border-color:rgba(0,108,231,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid transparent;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0 4px}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:8px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:8px}@media only screen and (min-width:768px){.tox .tox-menu .tox-collection__item-label{overflow-wrap:break-word;word-break:normal}}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:repeating-linear-gradient(transparent 0 1px,transparent 1px 39px) center top 39px/100% calc(100% - 39px) no-repeat;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;grid-column:1/-1;grid-row:1;padding:0 11px 0 12px}.tox .tox-promotion+.tox-menubar{grid-column:1}.tox .tox-promotion{background:repeating-linear-gradient(transparent 0 1px,transparent 1px 39px) center top 39px/100% calc(100% - 39px) no-repeat;background-color:#fff;grid-column:2;grid-row:1;padding-inline-end:8px;padding-inline-start:4px;padding-top:5px}.tox .tox-promotion-link{align-items:unsafe center;background-color:#e8f1f8;border-radius:5px;color:#086be6;cursor:pointer;display:flex;font-size:14px;height:26.6px;padding:4px 8px;white-space:nowrap}.tox .tox-promotion-link:hover{background-color:#b4d7ff}.tox .tox-promotion-link:focus{background-color:#d9edf7}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;justify-content:center;margin:5px 1px 6px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:grid;font-size:14px;font-weight:400;grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#517342}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f5cccc;border-color:#f0b3b3;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#77181f}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fff5cc;border-color:#fff0b3;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#7a6e25}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d6e7fb;border-color:#c1dbf9;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#2a64a6}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{align-self:center;color:#222f3e;font-size:14px;grid-column-end:3;grid-column-start:2;grid-row-end:2;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{align-self:center;grid-column-end:2;grid-column-start:1;grid-row-end:2;grid-row-start:1;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{align-self:start;grid-column-end:4;grid-column-start:3;grid-row-end:2;grid-row-start:1;justify-self:end}.tox .tox-notification .tox-progress-bar{grid-column-end:4;grid-column-start:1;grid-row-end:3;grid-row-start:2;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #eee;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#eee transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #eee transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #eee transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #eee;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #eee;border-radius:6px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#006ce7;border:2px solid #0054b4;border-radius:6px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-form__controls-h-stack>.tox-slider:not(:first-of-type){margin-inline-start:8px}.tox .tox-form__controls-h-stack>.tox-form__group+.tox-slider{margin-inline-start:32px}.tox .tox-form__controls-h-stack>.tox-slider+.tox-form__group{margin-inline-start:32px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #e3e3e3;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:14px;font-weight:400;height:25px;overflow:hidden;padding:0 8px;position:relative;text-transform:none}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){color:#222f3e;cursor:pointer}.tox .tox-statusbar__branding svg{fill:rgba(34,47,62,.8);height:1.14em;vertical-align:-.28em;width:3.6em}.tox .tox-statusbar__branding a:focus:not(:disabled):not([aria-disabled=true]) svg,.tox .tox-statusbar__branding a:hover:not(:disabled):not([aria-disabled=true]) svg{fill:#222f3e}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-bottom:3px;padding-left:1ch;padding-right:3px}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.5)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px 1px 5px 1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:2ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;justify-content:center;margin:6px 1px 5px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#cce2fa;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:42px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:56px;width:68px}.tox .tox-tbtn--return{align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-number-input{border-radius:3px;display:flex;margin:6px 1px 5px 0;padding:0 4px;width:auto}.tox .tox-number-input .tox-input-wrapper{background:#f7f7f7;display:flex;pointer-events:none;text-align:center}.tox .tox-number-input .tox-input-wrapper:focus{background:#cce2fa}.tox .tox-number-input input{border-radius:3px;color:#222f3e;font-size:14px;margin:2px 0;pointer-events:all;width:60px}.tox .tox-number-input input:hover{background:#cce2fa;color:#222f3e}.tox .tox-number-input input:focus{background:#fff;color:#222f3e}.tox .tox-number-input button{background:#f7f7f7;color:#222f3e;height:28px;text-align:center;width:24px}.tox .tox-number-input button svg{display:block;fill:#222f3e;margin:0 auto;transform:scale(.67)}.tox .tox-number-input button:focus{background:#cce2fa}.tox .tox-number-input button:hover{background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-number-input button:hover svg{fill:#222f3e}.tox .tox-number-input button:active{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-number-input button:active svg{fill:#222f3e}.tox .tox-number-input button.minus{border-radius:3px 0 0 3px}.tox .tox-number-input button.plus{border-radius:0 3px 3px 0}.tox .tox-number-input:focus:not(:active)>.tox-input-wrapper,.tox .tox-number-input:focus:not(:active)>button{background:#cce2fa}.tox .tox-tbtn--select{margin:6px 1px 5px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;height:initial;margin:0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke{background:#f7f7f7}.tox .tox-tbtn--bespoke+.tox-tbtn--bespoke{margin-inline-start:4px}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:6px 1px 5px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #cce2fa inset}.tox .tox-split-button:focus{background:#cce2fa;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox.tox-platform-touch .tox-split-button .tox-tbtn--select{padding:0 0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:not(.tox-tbtn--select):first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background-attachment:local;background-color:#fff;background-image:repeating-linear-gradient(#e3e3e3 0 1px,transparent 1px 39px);background-position:center top 40px;background-repeat:no-repeat;background-size:calc(100% - 11px * 2) calc(100% - 41px);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0;transform:perspective(1px)}.tox .tox-toolbar-overlord>.tox-toolbar,.tox .tox-toolbar-overlord>.tox-toolbar__overflow,.tox .tox-toolbar-overlord>.tox-toolbar__primary{background-position:center top 0;background-size:calc(100% - 11px * 2) calc(100% - 0px)}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-anchorbar,.tox .tox-toolbar-overlord{grid-column:1/-1}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord{border-top:1px solid transparent;margin-top:-1px;padding-bottom:1px;padding-top:1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox .tox-toolbar-overlord .tox-toolbar:not(.tox-toolbar--scrolling):first-child,.tox .tox-toolbar-overlord .tox-toolbar__primary{background-position:center top 39px}.tox .tox-editor-header>.tox-toolbar--scrolling,.tox .tox-toolbar-overlord .tox-toolbar--scrolling:first-child{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;background-position:center top 43px;background-size:calc(100% - 8px * 2) calc(100% - 51px);border:none;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);overscroll-behavior:none;padding:4px 0}.tox-pop .tox-pop__dialog .tox-toolbar{background-position:center top 43px;background-size:calc(100% - 11px * 2) calc(100% - 51px);padding:4px 0}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 11px 0 12px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid transparent}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid transparent}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:6px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-tree{display:flex;flex-direction:column}.tox .tox-tree .tox-trbtn{align-items:center;background:0 0;border:0;border-radius:4px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;margin-bottom:4px;margin-top:4px;outline:0;overflow:hidden;padding:0;padding-left:8px;text-transform:none}.tox .tox-tree .tox-trbtn .tox-tree__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-tree .tox-trbtn svg{display:block;fill:#222f3e}.tox .tox-tree .tox-trbtn:focus{background:#cce2fa;border:0;box-shadow:none}.tox .tox-tree .tox-trbtn:hover{background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-tree .tox-trbtn:hover svg{fill:#222f3e}.tox .tox-tree .tox-trbtn:active{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-tree .tox-trbtn:active svg{fill:#222f3e}.tox .tox-tree .tox-trbtn--disabled,.tox .tox-tree .tox-trbtn--disabled:hover,.tox .tox-tree .tox-trbtn:disabled,.tox .tox-tree .tox-trbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tree .tox-trbtn--disabled svg,.tox .tox-tree .tox-trbtn--disabled:hover svg,.tox .tox-tree .tox-trbtn:disabled svg,.tox .tox-tree .tox-trbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tree .tox-trbtn--enabled,.tox .tox-tree .tox-trbtn--enabled:hover{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-tree .tox-trbtn--enabled:hover>*,.tox .tox-tree .tox-trbtn--enabled>*{transform:none}.tox .tox-tree .tox-trbtn--enabled svg,.tox .tox-tree .tox-trbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled){color:#222f3e}.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled) svg{fill:#222f3e}.tox .tox-tree .tox-trbtn:active>*{transform:none}.tox .tox-tree .tox-trbtn--return{align-self:stretch;height:unset;width:16px}.tox .tox-tree .tox-trbtn--labeled{padding:0 4px;width:unset}.tox .tox-tree .tox-trbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tree .tox-tree--directory{display:flex;flex-direction:column}.tox .tox-tree .tox-tree--directory.tox-tree--directory--expanded>.tox-tree--directory__label .tox-chevron{transform:rotate(90deg)}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label{font-weight:700}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn{margin-left:auto}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn svg{fill:transparent}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn.tox-mbtn--active svg,.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn:focus svg{fill:#222f3e}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:focus .tox-mbtn svg,.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover .tox-mbtn svg{fill:#222f3e}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover){background-color:transparent;color:#222f3e}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover) .tox-chevron svg{fill:#222f3e}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-chevron{margin-right:6px;transition:transform .5s ease-in-out}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label.tox-tree--directory__label--active .tox-chevron{transform:rotate(90deg)}.tox .tox-tree .tox-tree--leaf__label{font-weight:400}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn{margin-left:auto}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn svg{fill:transparent}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn.tox-mbtn--active svg,.tox .tox-tree .tox-tree--leaf__label .tox-mbtn:focus svg{fill:#222f3e}.tox .tox-tree .tox-tree--leaf__label:hover .tox-mbtn svg{fill:#222f3e}.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover){background-color:transparent;color:#222f3e}.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover) .tox-chevron svg{fill:#222f3e}.tox .tox-tree .tox-tree--directory__children{overflow:hidden;padding-left:16px}.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--growing,.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--shrinking{transition:height .5s ease-in-out}.tox .tox-tree .tox-trbtn.tox-tree--leaf__label{display:flex;justify-content:space-between}.tox .tox-view-wrap,.tox .tox-view-wrap__slot-container{background-color:#fff;display:flex;flex:1;flex-direction:column}.tox .tox-view{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-view__header{align-items:center;display:flex;font-size:16px;justify-content:space-between;padding:8px 8px 0 8px;position:relative}.tox .tox-view--mobile.tox-view__header,.tox .tox-view--mobile.tox-view__toolbar{padding:8px}.tox .tox-view--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-view__toolbar{display:flex;flex-direction:row;gap:8px;justify-content:space-between;padding:8px 8px 0 8px}.tox .tox-view__toolbar__group{display:flex;flex-direction:row;gap:12px}.tox .tox-view__header-end,.tox .tox-view__header-start{display:flex}.tox .tox-view__pane{height:100%;padding:8px;width:100%}.tox .tox-view__pane_panel{border:1px solid #eee;border-radius:6px}.tox:not([dir=rtl]) .tox-view__header .tox-view__header-end>*,.tox:not([dir=rtl]) .tox-view__header .tox-view__header-start>*{margin-left:8px}.tox[dir=rtl] .tox-view__header .tox-view__header-end>*,.tox[dir=rtl] .tox-view__header .tox-view__header-start>*{margin-right:8px}.tox .tox-well{border:1px solid #eee;border-radius:6px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #eee;border-radius:6px;display:flex;flex:1;overflow:hidden;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1} diff --git a/public/tinymce/skins/oxide/skin.mobile.css b/public/tinymce/skins/oxide/skin.mobile.css deleted file mode 100644 index 875721a27d..0000000000 --- a/public/tinymce/skins/oxide/skin.mobile.css +++ /dev/null @@ -1,673 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -/* RESET all the things! */ -.tinymce-mobile-outer-container { - all: initial; - display: block; -} -.tinymce-mobile-outer-container * { - border: 0; - box-sizing: initial; - cursor: inherit; - float: none; - line-height: 1; - margin: 0; - outline: 0; - padding: 0; - -webkit-tap-highlight-color: transparent; - /* TBIO-3691, stop the gray flicker on touch. */ - text-shadow: none; - white-space: nowrap; -} -.tinymce-mobile-icon-arrow-back::before { - content: "\e5cd"; -} -.tinymce-mobile-icon-image::before { - content: "\e412"; -} -.tinymce-mobile-icon-cancel-circle::before { - content: "\e5c9"; -} -.tinymce-mobile-icon-full-dot::before { - content: "\e061"; -} -.tinymce-mobile-icon-align-center::before { - content: "\e234"; -} -.tinymce-mobile-icon-align-left::before { - content: "\e236"; -} -.tinymce-mobile-icon-align-right::before { - content: "\e237"; -} -.tinymce-mobile-icon-bold::before { - content: "\e238"; -} -.tinymce-mobile-icon-italic::before { - content: "\e23f"; -} -.tinymce-mobile-icon-unordered-list::before { - content: "\e241"; -} -.tinymce-mobile-icon-ordered-list::before { - content: "\e242"; -} -.tinymce-mobile-icon-font-size::before { - content: "\e245"; -} -.tinymce-mobile-icon-underline::before { - content: "\e249"; -} -.tinymce-mobile-icon-link::before { - content: "\e157"; -} -.tinymce-mobile-icon-unlink::before { - content: "\eca2"; -} -.tinymce-mobile-icon-color::before { - content: "\e891"; -} -.tinymce-mobile-icon-previous::before { - content: "\e314"; -} -.tinymce-mobile-icon-next::before { - content: "\e315"; -} -.tinymce-mobile-icon-large-font::before, -.tinymce-mobile-icon-style-formats::before { - content: "\e264"; -} -.tinymce-mobile-icon-undo::before { - content: "\e166"; -} -.tinymce-mobile-icon-redo::before { - content: "\e15a"; -} -.tinymce-mobile-icon-removeformat::before { - content: "\e239"; -} -.tinymce-mobile-icon-small-font::before { - content: "\e906"; -} -.tinymce-mobile-icon-readonly-back::before, -.tinymce-mobile-format-matches::after { - content: "\e5ca"; -} -.tinymce-mobile-icon-small-heading::before { - content: "small"; -} -.tinymce-mobile-icon-large-heading::before { - content: "large"; -} -.tinymce-mobile-icon-small-heading::before, -.tinymce-mobile-icon-large-heading::before { - font-family: sans-serif; - font-size: 80%; -} -.tinymce-mobile-mask-edit-icon::before { - content: "\e254"; -} -.tinymce-mobile-icon-back::before { - content: "\e5c4"; -} -.tinymce-mobile-icon-heading::before { - /* TODO: Translate */ - content: "Headings"; - font-family: sans-serif; - font-size: 80%; - font-weight: bold; -} -.tinymce-mobile-icon-h1::before { - content: "H1"; - font-weight: bold; -} -.tinymce-mobile-icon-h2::before { - content: "H2"; - font-weight: bold; -} -.tinymce-mobile-icon-h3::before { - content: "H3"; - font-weight: bold; -} -.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask { - align-items: center; - display: flex; - justify-content: center; - background: rgba(51, 51, 51, 0.5); - height: 100%; - position: absolute; - top: 0; - width: 100%; -} -.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container { - align-items: center; - border-radius: 50%; - display: flex; - flex-direction: column; - font-family: sans-serif; - font-size: 1em; - justify-content: space-between; -} -.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item { - align-items: center; - display: flex; - justify-content: center; - border-radius: 50%; - height: 2.1em; - width: 2.1em; -} -.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { - align-items: center; - display: flex; - justify-content: center; - flex-direction: column; - font-size: 1em; -} -@media only screen and (min-device-width:700px) { - .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { - font-size: 1.2em; - } -} -.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon { - align-items: center; - display: flex; - justify-content: center; - border-radius: 50%; - height: 2.1em; - width: 2.1em; - background-color: white; - color: #207ab7; -} -.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before { - content: "\e900"; - font-family: 'tinymce-mobile', sans-serif; -} -.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon { - z-index: 2; -} -.tinymce-mobile-android-container.tinymce-mobile-android-maximized { - background: #ffffff; - border: none; - bottom: 0; - display: flex; - flex-direction: column; - left: 0; - position: fixed; - right: 0; - top: 0; -} -.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) { - position: relative; -} -.tinymce-mobile-android-container .tinymce-mobile-editor-socket { - display: flex; - flex-grow: 1; -} -.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe { - display: flex !important; - flex-grow: 1; - height: auto !important; -} -.tinymce-mobile-android-scroll-reload { - overflow: hidden; -} -:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar { - margin-top: 23px; -} -.tinymce-mobile-toolstrip { - background: #fff; - display: flex; - flex: 0 0 auto; - z-index: 1; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar { - align-items: center; - background-color: #fff; - border-bottom: 1px solid #cccccc; - display: flex; - flex: 1; - height: 2.5em; - width: 100%; - /* Make it no larger than the toolstrip, so that it needs to scroll */ -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group { - align-items: center; - display: flex; - height: 100%; - flex-shrink: 1; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div { - align-items: center; - display: flex; - height: 100%; - flex: 1; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container { - background: #f44336; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group { - flex-grow: 1; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { - padding-left: 0.5em; - padding-right: 0.5em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button { - align-items: center; - display: flex; - height: 80%; - margin-left: 2px; - margin-right: 2px; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected { - background: #c8cbcf; - color: #cccccc; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type, -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type { - background: #207ab7; - color: #eceff1; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar { - /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */ -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group { - align-items: center; - display: flex; - height: 100%; - flex: 1; - padding-bottom: 0.4em; - padding-top: 0.4em; - /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ - /* For widgets like the colour picker, use the whole height */ -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { - display: flex; - min-height: 1.5em; - overflow: hidden; - padding-left: 0; - padding-right: 0; - position: relative; - width: 100%; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain { - display: flex; - height: 100%; - transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s; - width: 100%; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen { - display: flex; - flex: 0 0 auto; - justify-content: space-between; - width: 100%; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input { - font-family: Sans-serif; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container { - display: flex; - flex-grow: 1; - position: relative; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x { - -ms-grid-row-align: center; - align-self: center; - background: inherit; - border: none; - border-radius: 50%; - color: #888; - font-size: 0.6em; - font-weight: bold; - height: 100%; - padding-right: 2px; - position: absolute; - right: 0; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x { - display: none; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous, -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next { - align-items: center; - display: flex; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before, -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before { - align-items: center; - display: flex; - font-weight: bold; - height: 100%; - padding-left: 0.5em; - padding-right: 0.5em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before, -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before { - visibility: hidden; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item { - color: #cccccc; - font-size: 10px; - line-height: 10px; - margin: 0 2px; - padding-top: 3px; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active { - color: #c8cbcf; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before, -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before { - margin-left: 0.5em; - margin-right: 0.9em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before, -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before { - margin-left: 0.9em; - margin-right: 0.5em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider { - display: flex; - flex: 1; - margin-left: 0; - margin-right: 0; - padding: 0.28em 0; - position: relative; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container { - align-items: center; - display: flex; - flex-grow: 1; - height: 100%; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line { - background: #cccccc; - display: flex; - flex: 1; - height: 0.2em; - margin-bottom: 0.3em; - margin-top: 0.3em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container { - padding-left: 2em; - padding-right: 2em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container { - align-items: center; - display: flex; - flex-grow: 1; - height: 100%; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient { - background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%); - display: flex; - flex: 1; - height: 0.2em; - margin-bottom: 0.3em; - margin-top: 0.3em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black { - /* Not part of theming */ - background: black; - height: 0.2em; - margin-bottom: 0.3em; - margin-top: 0.3em; - width: 1.2em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white { - /* Not part of theming */ - background: white; - height: 0.2em; - margin-bottom: 0.3em; - margin-top: 0.3em; - width: 1.2em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb { - /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave - * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is - * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without - * this approach. - */ - align-items: center; - background-clip: padding-box; - background-color: #455a64; - border: 0.5em solid rgba(136, 136, 136, 0); - border-radius: 3em; - bottom: 0; - color: #fff; - display: flex; - height: 0.5em; - justify-content: center; - left: -10px; - margin: auto; - position: absolute; - top: 0; - transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1); - width: 0.5em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active { - border: 0.5em solid rgba(136, 136, 136, 0.39); -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper, -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div { - align-items: center; - display: flex; - height: 100%; - flex: 1; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper { - flex-direction: column; - justify-content: center; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { - align-items: center; - display: flex; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) { - height: 100%; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container { - display: flex; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input { - background: #ffffff; - border: none; - border-radius: 0; - color: #455a64; - flex-grow: 1; - font-size: 0.85em; - padding-bottom: 0.1em; - padding-left: 5px; - padding-top: 0.1em; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder { - /* WebKit, Blink, Edge */ - color: #888; -} -.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder { - /* WebKit, Blink, Edge */ - color: #888; -} -/* dropup */ -.tinymce-mobile-dropup { - background: white; - display: flex; - overflow: hidden; - width: 100%; -} -.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking { - transition: height 0.3s ease-out; -} -.tinymce-mobile-dropup.tinymce-mobile-dropup-growing { - transition: height 0.3s ease-in; -} -.tinymce-mobile-dropup.tinymce-mobile-dropup-closed { - flex-grow: 0; -} -.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) { - flex-grow: 1; -} -/* TODO min-height for device size and orientation */ -.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { - min-height: 200px; -} -@media only screen and (orientation: landscape) { - .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { - min-height: 200px; - } -} -@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { - .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { - min-height: 150px; - } -} -/* styles menu */ -.tinymce-mobile-styles-menu { - font-family: sans-serif; - outline: 4px solid black; - overflow: hidden; - position: relative; - width: 100%; -} -.tinymce-mobile-styles-menu [role="menu"] { - display: flex; - flex-direction: column; - height: 100%; - position: absolute; - width: 100%; -} -.tinymce-mobile-styles-menu [role="menu"].transitioning { - transition: transform 0.5s ease-in-out; -} -.tinymce-mobile-styles-menu .tinymce-mobile-styles-item { - border-bottom: 1px solid #ddd; - color: #455a64; - cursor: pointer; - display: flex; - padding: 1em 1em; - position: relative; -} -.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before { - color: #455a64; - content: "\e314"; - font-family: 'tinymce-mobile', sans-serif; -} -.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after { - color: #455a64; - content: "\e315"; - font-family: 'tinymce-mobile', sans-serif; - padding-left: 1em; - padding-right: 1em; - position: absolute; - right: 0; -} -.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after { - font-family: 'tinymce-mobile', sans-serif; - padding-left: 1em; - padding-right: 1em; - position: absolute; - right: 0; -} -.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator, -.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser { - align-items: center; - background: #fff; - border-top: #455a64; - color: #455a64; - display: flex; - min-height: 2.5em; - padding-left: 1em; - padding-right: 1em; -} -.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state], -.tinymce-mobile-styles-menu [data-transitioning-state="before"] { - transform: translate(-100%); -} -.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state], -.tinymce-mobile-styles-menu [data-transitioning-state="current"] { - transform: translate(0%); -} -.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state], -.tinymce-mobile-styles-menu [data-transitioning-state="after"] { - transform: translate(100%); -} -@font-face { - font-family: 'tinymce-mobile'; - font-style: normal; - font-weight: normal; - src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff'); -} -@media (min-device-width: 700px) { - .tinymce-mobile-outer-container, - .tinymce-mobile-outer-container input { - font-size: 25px; - } -} -@media (max-device-width: 700px) { - .tinymce-mobile-outer-container, - .tinymce-mobile-outer-container input { - font-size: 18px; - } -} -.tinymce-mobile-icon { - font-family: 'tinymce-mobile', sans-serif; -} -.mixin-flex-and-centre { - align-items: center; - display: flex; - justify-content: center; -} -.mixin-flex-bar { - align-items: center; - display: flex; - height: 100%; -} -.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe { - background-color: #fff; - width: 100%; -} -.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { - /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ - background-color: #207ab7; - border-radius: 50%; - bottom: 1em; - color: white; - font-size: 1em; - height: 2.1em; - position: fixed; - right: 2em; - width: 2.1em; - align-items: center; - display: flex; - justify-content: center; -} -@media only screen and (min-device-width:700px) { - .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { - font-size: 1.2em; - } -} -.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket { - height: 300px; - overflow: hidden; -} -.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe { - height: 100%; -} -.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip { - display: none; -} -/* - Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets - increased and the whole body becomes scrollable. It's important! - */ -input[type="file"]::-webkit-file-upload-button { - display: none; -} -@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { - .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { - bottom: 50%; - } -} diff --git a/public/tinymce/skins/oxide/skin.mobile.min.css b/public/tinymce/skins/oxide/skin.mobile.min.css deleted file mode 100644 index 3a45cacf0f..0000000000 --- a/public/tinymce/skins/oxide/skin.mobile.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} diff --git a/public/tinymce/skins/oxide/skin.shadowdom.css b/public/tinymce/skins/oxide/skin.shadowdom.css index d2adc4db7f..25b0a3710d 100644 --- a/public/tinymce/skins/oxide/skin.shadowdom.css +++ b/public/tinymce/skins/oxide/skin.shadowdom.css @@ -1,9 +1,3 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ body.tox-dialog__disable-scroll { overflow: hidden; } @@ -12,8 +6,7 @@ body.tox-dialog__disable-scroll { height: 100%; margin: 0; overflow: hidden; - -ms-scroll-chaining: none; - overscroll-behavior: none; + overscroll-behavior: none; padding: 0; touch-action: pinch-zoom; width: 100%; diff --git a/public/tinymce/skins/oxide/skin.shadowdom.min.css b/public/tinymce/skins/oxide/skin.shadowdom.min.css index a0893b913e..8745951a48 100644 --- a/public/tinymce/skins/oxide/skin.shadowdom.min.css +++ b/public/tinymce/skins/oxide/skin.shadowdom.min.css @@ -1,7 +1 @@ -/** - * Copyright (c) Tiny Technologies, Inc. All rights reserved. - * Licensed under the LGPL or a commercial license. - * For LGPL see License.txt in the project root for license information. - * For commercial licenses see https://www.tiny.cloud/ - */ -body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} +body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} diff --git a/yarn.lock b/yarn.lock index 5f967e1591..ca7709d2e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,45 +10,45 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" - integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f" + integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== "@babel/core@^7.20.12": - version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.3.tgz#cf1c877284a469da5d1ce1d1e53665253fae712e" - integrity sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659" + integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.3" - "@babel/helper-compilation-targets" "^7.20.7" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-compilation-targets" "^7.21.4" "@babel/helper-module-transforms" "^7.21.2" "@babel/helpers" "^7.21.0" - "@babel/parser" "^7.21.3" + "@babel/parser" "^7.21.4" "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.3" - "@babel/types" "^7.21.3" + "@babel/traverse" "^7.21.4" + "@babel/types" "^7.21.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@^7.21.3": - version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.3.tgz#232359d0874b392df04045d72ce2fd9bb5045fce" - integrity sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA== +"@babel/generator@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" + integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== dependencies: - "@babel/types" "^7.21.3" + "@babel/types" "^7.21.4" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -68,21 +68,21 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" - integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656" + integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg== dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-validator-option" "^7.18.6" + "@babel/compat-data" "^7.21.4" + "@babel/helper-validator-option" "^7.21.0" browserslist "^4.21.3" lru-cache "^5.1.1" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" - integrity sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz#3a017163dc3c2ba7deb9a7950849a9586ea24c18" + integrity sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" @@ -94,9 +94,9 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz#53ff78472e5ce10a52664272a239787107603ebb" - integrity sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz#40411a8ab134258ad2cf3a3d987ec6aa0723cee5" + integrity sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.3.1" @@ -147,12 +147,12 @@ dependencies: "@babel/types" "^7.21.0" -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== +"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.21.4" "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.2": version "7.21.2" @@ -233,7 +233,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== -"@babel/helper-validator-option@^7.18.6": +"@babel/helper-validator-option@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== @@ -266,10 +266,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.20.7", "@babel/parser@^7.21.3": - version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.3.tgz#1d285d67a19162ff9daa358d4cb41d50c06220b3" - integrity sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ== +"@babel/parser@^7.20.7", "@babel/parser@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" + integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -278,7 +278,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== @@ -287,7 +287,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-proposal-optional-chaining" "^7.20.7" -"@babel/plugin-proposal-async-generator-functions@^7.20.1": +"@babel/plugin-proposal-async-generator-functions@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== @@ -305,7 +305,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.18.6": +"@babel/plugin-proposal-class-static-block@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== @@ -338,7 +338,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": +"@babel/plugin-proposal-logical-assignment-operators@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== @@ -362,7 +362,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.20.2": +"@babel/plugin-proposal-object-rest-spread@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== @@ -381,7 +381,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": +"@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== @@ -398,7 +398,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.18.6": +"@babel/plugin-proposal-private-property-in-object@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== @@ -521,14 +521,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.18.6": +"@babel/plugin-transform-arrow-functions@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-async-to-generator@^7.18.6": +"@babel/plugin-transform-async-to-generator@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== @@ -544,14 +544,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.20.2": +"@babel/plugin-transform-block-scoping@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-classes@^7.20.2": +"@babel/plugin-transform-classes@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== @@ -566,7 +566,7 @@ "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.18.9": +"@babel/plugin-transform-computed-properties@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== @@ -574,7 +574,7 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/template" "^7.20.7" -"@babel/plugin-transform-destructuring@^7.20.2": +"@babel/plugin-transform-destructuring@^7.21.3": version "7.21.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== @@ -604,7 +604,7 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.18.8": +"@babel/plugin-transform-for-of@^7.21.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz#964108c9988de1a60b4be2354a7d7e245f36e86e" integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ== @@ -634,7 +634,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.19.6": +"@babel/plugin-transform-modules-amd@^7.20.11": version "7.20.11" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== @@ -642,7 +642,7 @@ "@babel/helper-module-transforms" "^7.20.11" "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-modules-commonjs@^7.19.6": +"@babel/plugin-transform-modules-commonjs@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== @@ -651,7 +651,7 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-simple-access" "^7.20.2" -"@babel/plugin-transform-modules-systemjs@^7.19.6": +"@babel/plugin-transform-modules-systemjs@^7.20.11": version "7.20.11" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== @@ -669,7 +669,7 @@ "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": +"@babel/plugin-transform-named-capturing-groups-regex@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== @@ -692,7 +692,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": +"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3": version "7.21.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== @@ -706,7 +706,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.18.6": +"@babel/plugin-transform-regenerator@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== @@ -722,11 +722,11 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-runtime@^7.19.6": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz#2a884f29556d0a68cd3d152dcc9e6c71dfb6eee8" - integrity sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz#2e1da21ca597a7d01fc96b699b21d8d2023191aa" + integrity sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA== dependencies: - "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-module-imports" "^7.21.4" "@babel/helper-plugin-utils" "^7.20.2" babel-plugin-polyfill-corejs2 "^0.3.3" babel-plugin-polyfill-corejs3 "^0.6.0" @@ -740,7 +740,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.19.0": +"@babel/plugin-transform-spread@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== @@ -785,30 +785,30 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/preset-env@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" - integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.4.tgz#a952482e634a8dd8271a3fe5459a16eb10739c58" + integrity sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw== dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" + "@babel/compat-data" "^7.21.4" + "@babel/helper-compilation-targets" "^7.21.4" "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.18.6" + "@babel/helper-validator-option" "^7.21.0" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.20.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.20.7" + "@babel/plugin-proposal-async-generator-functions" "^7.20.7" "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.21.0" "@babel/plugin-proposal-dynamic-import" "^7.18.6" "@babel/plugin-proposal-export-namespace-from" "^7.18.9" "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-logical-assignment-operators" "^7.20.7" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.20.2" + "@babel/plugin-proposal-object-rest-spread" "^7.20.7" "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.21.0" "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.21.0" "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" @@ -825,40 +825,40 @@ "@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.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.20.7" + "@babel/plugin-transform-async-to-generator" "^7.20.7" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.20.2" - "@babel/plugin-transform-classes" "^7.20.2" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.20.2" + "@babel/plugin-transform-block-scoping" "^7.21.0" + "@babel/plugin-transform-classes" "^7.21.0" + "@babel/plugin-transform-computed-properties" "^7.20.7" + "@babel/plugin-transform-destructuring" "^7.21.3" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-for-of" "^7.21.0" "@babel/plugin-transform-function-name" "^7.18.9" "@babel/plugin-transform-literals" "^7.18.9" "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.19.6" - "@babel/plugin-transform-modules-commonjs" "^7.19.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.6" + "@babel/plugin-transform-modules-amd" "^7.20.11" + "@babel/plugin-transform-modules-commonjs" "^7.21.2" + "@babel/plugin-transform-modules-systemjs" "^7.20.11" "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.20.5" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-parameters" "^7.21.3" "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.20.5" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-spread" "^7.20.7" "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.20.2" + "@babel/types" "^7.21.4" babel-plugin-polyfill-corejs2 "^0.3.3" babel-plugin-polyfill-corejs3 "^0.6.0" babel-plugin-polyfill-regenerator "^0.4.1" @@ -897,26 +897,26 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.3": - version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.3.tgz#4747c5e7903d224be71f90788b06798331896f67" - integrity sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ== +"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" + integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.3" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.21.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.3" - "@babel/types" "^7.21.3" + "@babel/parser" "^7.21.4" + "@babel/types" "^7.21.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.3", "@babel/types@^7.4.4": - version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.3.tgz#4865a5357ce40f64e3400b0f3b737dc6d4f64d05" - integrity sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg== +"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4", "@babel/types@^7.4.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" + integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" @@ -933,25 +933,25 @@ integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@eslint-community/eslint-utils@^4.2.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz#a556790523a351b4e47e9d385f47265eaaf9780a" - integrity sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA== + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.4.1.tgz#087cb8d9d757bb22e9c9946c9c0c2bf8806830f1" - integrity sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw== + version "4.5.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" + integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== -"@eslint/eslintrc@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.1.tgz#7888fe7ec8f21bc26d646dbd2c11cd776e21192d" - integrity sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw== +"@eslint/eslintrc@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" + integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.0" + espree "^9.5.1" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -959,10 +959,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.36.0": - version "8.36.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.36.0.tgz#9837f768c03a1e4a30bd304a64fb8844f0e72efe" - integrity sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg== +"@eslint/js@8.37.0": + version "8.37.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.37.0.tgz#cf1b5fa24217fe007f6487a26d765274925efa7d" + integrity sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A== "@fortawesome/fontawesome-free@^5.15.4": version "5.15.4" @@ -1118,9 +1118,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.21.3" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.3.tgz#5794b3911f0f19e34e3a272c49cbdf48d6f543f2" - integrity sha512-fa7GkppZVEByMWGbTtE5MbmXWJTVbrjjaS8K6uQj+XtuuUv1fsuPAxhygfqLmsb/Ufb3CV8deFCpiMfAgi00Sw== + version "8.37.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.37.0.tgz#29cebc6c2a3ac7fea7113207bf5a828fdf4d7ef1" + integrity sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1154,9 +1154,9 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/node@*", "@types/node@>=10.0.0": - version "18.15.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.5.tgz#3af577099a99c61479149b716183e70b5239324a" - integrity sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew== + version "18.15.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" + integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1600,9 +1600,9 @@ callsites@^3.0.0: integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== caniuse-lite@^1.0.30001449: - version "1.0.30001469" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz#3dd505430c8522fdc9f94b4a19518e330f5c945a" - integrity sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g== + version "1.0.30001474" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001474.tgz#13b6fe301a831fe666cce8ca4ef89352334133d5" + integrity sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q== chalk@^2.0.0: version "2.4.2" @@ -1744,16 +1744,16 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.25.1: - version "3.29.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.29.1.tgz#15c0fb812ea27c973c18d425099afa50b934b41b" - integrity sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA== + version "3.30.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.0.tgz#99aa2789f6ed2debfa1df3232784126ee97f4d80" + integrity sha512-P5A2h/9mRYZFIAP+5Ab8ns6083IyVpSclU74UNvbGVQ8VM7n3n3/g2yF3AkKQ9NXz2O+ioxLbEWKnDtgsFamhg== dependencies: browserslist "^4.21.5" core-js@^3.6.5: - version "3.29.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.29.1.tgz#40ff3b41588b091aaed19ca1aa5cb111803fa9a6" - integrity sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw== + version "3.30.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.0.tgz#64ac6f83bc7a49fd42807327051701d4b1478dea" + integrity sha512-hQotSSARoNh1mYPi9O2YaWeiq/cEB95kOrFb4NCrO4RIFt1qqNpKsaE+vy/L3oiqvND5cThqXzUU3r9F7Efztg== cors@~2.8.5: version "2.8.5" @@ -1872,9 +1872,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.284: - version "1.4.337" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.337.tgz#710168240b2dc5fe5eb5f8e4ef9c16d70aedc0ba" - integrity sha512-W8gdzXG86mVPoc56eM8YA+QiLxaAxJ8cmDjxZgfhLLWVvZQxyA918w5tX2JEWApZta45T1/sYcmFHTsTOUE3nw== + version "1.4.353" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.353.tgz#20e9cb4c83a08e35b3314d3fa8988764c105e6b7" + integrity sha512-IdJVpMHJoBT/nn0GQ02wPfbhogDVpd1ud95lP//FTf5l35wzxKJwibB4HBdY7Q+xKPA1nkZ0UDLOMyRj5U5IAQ== emoji-regex@^8.0.0: version "8.0.0" @@ -2090,10 +2090,10 @@ eslint-scope@^7.1.1: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" + integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== eslint-webpack-plugin@^2.6.0: version "2.7.0" @@ -2108,14 +2108,14 @@ eslint-webpack-plugin@^2.6.0: schema-utils "^3.1.1" eslint@^8.18.0: - version "8.36.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.36.0.tgz#1bd72202200a5492f91803b113fb8a83b11285cf" - integrity sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw== + version "8.37.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.37.0.tgz#1f660ef2ce49a0bfdec0b0d698e0b8b627287412" + integrity sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.1" - "@eslint/js" "8.36.0" + "@eslint/eslintrc" "^2.0.2" + "@eslint/js" "8.37.0" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -2126,8 +2126,8 @@ eslint@^8.18.0: doctrine "^3.0.0" escape-string-regexp "^4.0.0" eslint-scope "^7.1.1" - eslint-visitor-keys "^3.3.0" - espree "^9.5.0" + eslint-visitor-keys "^3.4.0" + espree "^9.5.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -2153,14 +2153,14 @@ eslint@^8.18.0: strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.5.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.0.tgz#3646d4e3f58907464edba852fa047e6a27bdf113" - integrity sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw== +espree@^9.5.1: + version "9.5.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" + integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.0" esquery@^1.4.2: version "1.5.0" @@ -2615,7 +2615,7 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.11.0, is-core-module@^2.9.0: +is-core-module@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== @@ -3449,11 +3449,11 @@ resolve-from@^5.0.0: integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.11.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -3501,9 +3501,9 @@ safe-regex-test@^1.0.0: integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sass@^1.57.1: - version "1.59.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.59.3.tgz#a1ddf855d75c70c26b4555df4403e1bbf8e4403f" - integrity sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ== + version "1.60.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.60.0.tgz#657f0c23a302ac494b09a5ba8497b739fb5b5a81" + integrity sha512-updbwW6fNb5gGm8qMXzVO7V4sWf7LMXnMly/JEyfbfERbVH46Fn6q02BX7/eHTdKpE7d+oTkMMQpFWNUMfFbgQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -3738,9 +3738,9 @@ terser-webpack-plugin@^5.1.3: terser "^5.16.5" terser@^5.16.5: - version "5.16.6" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.6.tgz#f6c7a14a378ee0630fbe3ac8d1f41b4681109533" - integrity sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg== + version "5.16.8" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.8.tgz#ccde583dabe71df3f4ed02b65eb6532e0fae15d5" + integrity sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -3757,10 +3757,10 @@ timeago.js@^4.0.2: resolved "https://registry.yarnpkg.com/timeago.js/-/timeago.js-4.0.2.tgz#724e8c8833e3490676c7bb0a75f5daf20e558028" integrity sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w== -tinymce@^5.10.0: - version "5.10.7" - resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-5.10.7.tgz#d89d446f1962f2a1df6b2b70018ce475ec7ffb80" - integrity sha512-9UUjaO0R7FxcFo0oxnd1lMs7H+D0Eh+dDVo5hKbVe1a+VB0nit97vOqlinj+YwgoBDt6/DSCUoWqAYlLI8BLYA== +tinymce@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-6.4.1.tgz#9c28f798074668d53371805fb6f1c68e582a4549" + integrity sha512-+/cS2AM9l6p72IBs2uolHbGsBUztLs0WslqNgFaTXtmMksTNUOhh8p08xtA/fa03UGlWEC6/EJoeV95/QDXa2A== tmp@^0.2.1: version "0.2.1" @@ -3826,9 +3826,9 @@ typed-array-length@^1.0.4: is-typed-array "^1.1.9" ua-parser-js@^0.7.30: - version "0.7.34" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.34.tgz#afb439e2e3e394bdc90080acb661a39c685b67d7" - integrity sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ== + version "0.7.35" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.35.tgz#8bda4827be4f0b1dda91699a29499575a1f1d307" + integrity sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g== unbox-primitive@^1.0.2: version "1.0.2" @@ -3951,9 +3951,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.75.0: - version "5.76.3" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.3.tgz#dffdc72c8950e5b032fddad9c4452e7787d2f489" - integrity sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA== + version "5.78.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.78.0.tgz#836452a12416af2a7beae906b31644cb2562f9e6" + integrity sha512-gT5DP72KInmE/3azEaQrISjTvLYlSM0j1Ezhht/KLVkrqtv10JoP/RXhwmX/frrutOPuSq3o5Vq0ehR/4Vmd1g== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" From 7167e83f40349a3b8fd9bb2a5cad3cd16d37d835 Mon Sep 17 00:00:00 2001 From: briri Date: Tue, 11 Apr 2023 11:40:27 -0700 Subject: [PATCH 55/77] fixed Tinymce issues on sections and questions --- app/javascript/src/orgAdmin/phases/newEdit.js | 54 +++++-------------- app/views/org_admin/questions/_form.html.erb | 2 +- app/views/org_admin/sections/_form.html.erb | 2 +- 3 files changed, 16 insertions(+), 42 deletions(-) diff --git a/app/javascript/src/orgAdmin/phases/newEdit.js b/app/javascript/src/orgAdmin/phases/newEdit.js index 9dfd6bd337..db8486e939 100644 --- a/app/javascript/src/orgAdmin/phases/newEdit.js +++ b/app/javascript/src/orgAdmin/phases/newEdit.js @@ -18,8 +18,7 @@ $(() => { // For some reason the toolbar options are retained after the call to // Tinymce.init() on the views/notifications/edit.js file. Tried 'Object.assign' // instead of '$.extend' but it made no difference. - /*Tinymce.init({ - selector: + Tinymce.init({ selector: `#${context} .question`, init_instance_callback(editor) { // When the text editor changes to blank, set the corresponding destroy @@ -31,7 +30,7 @@ $(() => { $hiddenField.val(editor.getContent() === ''); }); }, - });*/ + }); initQuestionOption(context); addAsterisks(`#${context}`); // Swap in the question_formats when the user selects an option based question type @@ -62,46 +61,29 @@ $(() => { // For some reason the toolbar options are retained after the call to Tinymce.init() on // the views/notifications/edit.js file. Tried 'Object.assign' instead of '$.extend' but it // made no difference - -console.log(`SELECTOR: ${selector}`); + const prefix = 'collapseSection' + let sectionId = selector; + if (sectionId.startsWith(prefix)) { + sectionId = `sc_${sectionId.replace(prefix, '')}_section_description` + } Tinymce.init({ - selector: selector, + selector: `#${sectionId}`, init_instance_callback: (editor) => { // When the text editor changes to blank, set the corresponding destroy // field to true (if present). - editor.on('Change', (editor) => { - -console.log(`Editor: ${editor.id} is now initialized.`); - - const $texteditor = $(editor.getContentAreaContainer()); + editor.on('Change', (ed) => { + const $texteditor = $(ed.getContentAreaContainer()); const $fieldset = $texteditor.parents('fieldset'); const $hiddenField = $fieldset.find('input[type=hidden][id$="_destroy"]'); - $hiddenField.val(editor.getContent() === ''); + $hiddenField.val(ed.getContent() === ''); }); }, }); const questionForm = $(selector).find('.question_form'); if (questionForm.length > 0) { - -console.log(`QUESTION SELECTOR: ${selector}`); - - // Load Tinymce when the 'show' form has a question form. - // ONLY applicable for template customizations - /*Tinymce.init({ - selector: `${selector} .question_form .question`, - init_instance_callback(editor) { - // When the text editor changes to blank, set the corresponding destroy - // field to true (if present). - editor.on('Change', () => { - const $texteditor = $(editor.targetElm); - const $fieldset = $texteditor.parents('fieldset'); - const $hiddenField = $fieldset.find('input[type=hidden][id$="_destroy"]'); - $hiddenField.val(editor.getContent() === ''); - }); - }, - });*/ + initQuestion(selector); } } }; @@ -121,15 +103,7 @@ console.log(`QUESTION SELECTOR: ${selector}`); panelBody.html(e.detail[0].html); // Wire up the section - const prefix = 'collapseSection' - let sectionId = panel.attr('id'); - if (sectionId.startsWith(prefix)) { - sectionId = `${sectionId.replace(prefix, '')}_section_description` - } - -console.log(`Section: ${sectionId}`); - - initSection(`#${sectionId}`); + initSection(`${panel.attr('id')}`); } }); @@ -178,7 +152,7 @@ console.log(`Section: ${sectionId}`); // Handle the section that has focus on initial page load const currentSection = $('.section-group .in'); if (currentSection.length > 0) { - initSection(`#${currentSection.attr('id')}`); + initSection(`${currentSection.attr('id')}`); } // Handle the new section // initSection('#new_section_section_description'); diff --git a/app/views/org_admin/questions/_form.html.erb b/app/views/org_admin/questions/_form.html.erb index 52f3aa87e7..64a222b92e 100644 --- a/app/views/org_admin/questions/_form.html.erb +++ b/app/views/org_admin/questions/_form.html.erb @@ -5,7 +5,7 @@ <%= form_for(question, url: url, - namespace: question.id.present? ? question.id : 'new_question', + namespace: question.id.present? ? "q_#{question.id}" : 'new_question', html: { method: method, class: 'question_form' }) do |f| %> <% current_format = question.question_format.present? ? question.question_format : QuestionFormat.find_by(formattype: QuestionFormat.formattypes[:textarea]) %> diff --git a/app/views/org_admin/sections/_form.html.erb b/app/views/org_admin/sections/_form.html.erb index 85587c806f..23e7d2664a 100644 --- a/app/views/org_admin/sections/_form.html.erb +++ b/app/views/org_admin/sections/_form.html.erb @@ -1,6 +1,6 @@ <% description_tooltip = _("Enter a basic description. This could be a summary of what is covered in the section or instructions on how to answer. This text will be displayed in the coloured banner once a section is opened to edit.") %> -<%= form_for(section, url: url, namespace: section.id.present? ? section.id : 'new_section', html: { method: method }) do |f| %> +<%= form_for(section, url: url, namespace: section.id.present? ? "sc_#{section.id}" : 'new_section', html: { method: method }) do |f| %>
<%= f.label(:title, _('Title') ,class: "control-label") %> <%= f.text_field(:title, { class: "form-control", placeholder: _('Enter a title for the section'), 'data-toggle': 'tooltip', title: _('Enter a title for the section'), spellcheck: true, 'aria-required': true} ) %> From 01dd9342c053498905e6857da12505c7926b6dfc Mon Sep 17 00:00:00 2001 From: briri Date: Tue, 11 Apr 2023 14:51:21 -0700 Subject: [PATCH 56/77] updated assets initializer so that it copies over the bootstrap glyphicons and tinymce skins into the public folder --- .../conditions/_webhook_form.html.erb | 20 +++++++++---------- config/initializers/assets.rb | 13 ++++++++++++ public/fonts/.keep | 0 public/tinymce/README.md | 7 ------- public/tinymce/tinymce.css | 2 +- 5 files changed, 24 insertions(+), 18 deletions(-) delete mode 100644 public/fonts/.keep delete mode 100644 public/tinymce/README.md diff --git a/app/views/org_admin/conditions/_webhook_form.html.erb b/app/views/org_admin/conditions/_webhook_form.html.erb index 6613139bb6..8230e61b63 100644 --- a/app/views/org_admin/conditions/_webhook_form.html.erb +++ b/app/views/org_admin/conditions/_webhook_form.html.erb @@ -9,33 +9,33 @@
<% if Rails.configuration.x.recaptcha.enabled %>
- <%= label_tag(nil, _('Security check')) %> - <%= recaptcha_tags %> + <% if @show_checkbox_recaptcha %> + <%= label_tag(nil, _('Security check')) %> + <%= recaptcha_tags %> + <% else %> + <%= recaptcha_v3(action: 'create_account') %> + <% end %>
<% end %> diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc index 391bbbe2fe..e83ca4eafb 100644 --- a/config/credentials.yml.enc +++ b/config/credentials.yml.enc @@ -1 +1 @@ -4FSsri29cvN40KDVEm8UzDbpxpjQB0dGq7k9VBDzrg3ItEAcz5NZ3/L0wt+IhEHa2dfZCGO3d49GpjWxVXNIVxxhYirRl/ow5j46el9QDE4rwuy5111HrD5LJQgmE2RldkdkrjxCy31ZGHUD1LAyqmDz4Gv1Am7CCtpSatuUFNg/sIMMagRftj+yayJo2+5m2n7lSffKm91+c00OeMs6GB7ND88lXgRd4x7IcIfq5Plb3X+0ZI5vBZ/A757g4Sg+dF1JzNrfqBpWAOsyjOCsjXNQC3FQfCcITvWxp2V6JKgbNlBUTvW1+O4j5SGa5CoM9PDzAGC1Ea311ovckaJe3fHKMWXGE8jDXYZvaSyWPLSGEMxsS6YYvE0xdb1zVfupZGkBkvDXkcER6rqZHL5Cv5fjlaKB3mimyzN+lJfRBerNuGoKhILg+hSSXtHNCDElbgCyF4dTXkGxysKCsbU8Kc47hzHzNOg4PWGMBGCrA4yas+yHz+haC7fCcji2oezDSThXEpC9bhC7BfcnjJssolNfAIjGS5V/Mjc8t5BLLWyzGjPZkd8xDS8SqjAUoZtSyA0N3hI3u4ORIN+FuKPzyhC3i/h5iNMs7yl9146d+OJPDP7Q6B7tMu+iQqEdds+rtdVcshW+XBnWpuNEfnKWfBsxCsBM8H1jtMOmFt8Qa2jFaur+/n1JbmCWR13Awq4DddlaUZVQWRqJfdEy5a/hJxBWbnXTDtPvuZoVURkhfT2K/sIE6cC8w3666t7I7ivDhtBPe7ITDbc0nz2/wvQ8bJEDO2+YyGFUDJvtARBhnZd6bmTA0gnoEMa/PqFw2yNFVgEUGBOk4EYGXF6sPGQagRGTW9Y22d69FKt65pXDHzjaXluGvnER--BJS+WE67bWvOYcFo--v91cp8ZTRV08WEfy3YzsGA== \ No newline at end of file +sx6LH1olJpf4RqFKIx26Se+OJdsxRXioa2WNy2MsZHzMJnKaH7/cPBVEZXSaymth09QlioRPAS9MZDZpg335SEaVan4O77ljiTX+yXzJ4b7MitpXuu0smlxi2nJWtMjtu2MJchebWio9/F3xinkfMjz/sTt2pXdybjaf/Z2qgkZNPm9gkilMd9u1+6hxUEavVmXvZQfnL/t4dmoTLHuFxFLIWymcAhx2qE/osSUhL+e8VHxGbIvVXtxWvPZV+GfXbz+Xa+X0GnAOOSG9yh41ltysjqhPivS399px15WA1quafCb6qPatRw6JfAXIk6iPM6bKkw0lQQj+GYrL00hC8j8kvhoPEk0mSw506PMdOVkvslHnF7JIVc+78eCD6T01cebYhH+dU829r4BztoOLo//hhSVjNY8vW2cKas2XFX9HZM7Pbmirihrmrml+vM+KulV0im6fJkYj0CJFK76j3kmUDCQGarmGaHvnQj23xbQspUCaX8O4kO6A58p16yetfSiyfkOw3JJokuErKuwiopFbBY16dOlWQSCYbKZtMFbmEpRqmAZazTJAUY0x/w5TKkRvRhFAiKbdCohjuV1ii5bxsvayh650o9n3qJ7Wnf/O489yQ+T6SVgZAHrvgM3RrgWnFMJsvcGHBdxSKfj0FrYKChTin+p3+syP4ko3nRnTdp5ru7n1VpnUWcjPjcjOpFiDSsbW7SSzi46NhVkDRgq1Lcy40SBLgjrccMfBZMiRdLa32hTRMU0CBxM7VRQbx5a550TiC3DqOqUQfUb1M1LPvyuM+a54qjzZdKdUn8BfNqYrjDGuw01Rzs+Fmx/2WMRxFeFjueOGlcrYYJ64Bdu+ZbVhAYlQGcD30PWOUmbrsIXFkNKa--l3PdVT6XYlwDCXti--SjRGYTMR1xjaaekhHUZ/zQ== \ No newline at end of file From ebc392bae2457300c09bea47cce8bcd5a32f6d03 Mon Sep 17 00:00:00 2001 From: Benjamin FAURE Date: Fri, 12 May 2023 10:06:41 +0200 Subject: [PATCH 75/77] Updated CHANGELOG --- CHANGELOG_DMPOPIDoR.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG_DMPOPIDoR.md b/CHANGELOG_DMPOPIDoR.md index 9aaa644b33..d812a59100 100644 --- a/CHANGELOG_DMPOPIDoR.md +++ b/CHANGELOG_DMPOPIDoR.md @@ -2,6 +2,11 @@ **Attention** Cette liste de changements concerne les déploiements sur nos serveurs de test en interne. +## 12/05/2023 +- Mise à jour du CAPTCHA vers Recaptcha V3 : + - La validation est transparente basée sur un score calculé par Google + - Si la validation échoue, le site propose le test "Je ne suis pas un robot" + ## 28/04/2023 - Correction du problème de pagination de la liste des contributeurs dans l'onglet Contributeurs (issue gitbucket 482) & retrait du champ de recherche - Correction du problème d'affichage des boutons From f9bec811658819f96923ad428d4379e978b9f520 Mon Sep 17 00:00:00 2001 From: Benjamin FAURE Date: Thu, 25 May 2023 08:02:22 +0200 Subject: [PATCH 76/77] Org admin shold not be able to read private plans --- config/initializers/_dmproadmap.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/_dmproadmap.rb b/config/initializers/_dmproadmap.rb index da1661be5b..bfadba90cf 100644 --- a/config/initializers/_dmproadmap.rb +++ b/config/initializers/_dmproadmap.rb @@ -200,7 +200,7 @@ class Application < Rails::Application # Whether or not Super adminis can read all of the user's plans regardless of # the plans visibility and whether or not the plan has been shared - config.x.plans.org_admins_read_all = true + config.x.plans.org_admins_read_all = false # Whether or not Organisational administrators can read all of the user's plans # regardless of the plans visibility and whether or not the plan has been shared config.x.plans.super_admins_read_all = true From bb3922fe6f5453b77f978ffe0de73d73fb0dcdc2 Mon Sep 17 00:00:00 2001 From: Benjamin FAURE Date: Thu, 25 May 2023 08:04:50 +0200 Subject: [PATCH 77/77] Updated dependencies --- Gemfile.lock | 57 +-- engines/madmp_opidor/Gemfile.lock | 25 +- yarn.lock | 775 +++++++++++++++--------------- 3 files changed, 429 insertions(+), 428 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index bb37ba9cd9..fbfcbb8215 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -58,7 +58,7 @@ GEM activesupport (= 6.1.7.3) activerecord-import (1.4.1) activerecord (>= 4.2) - activerecord_json_validator (2.1.3) + activerecord_json_validator (2.1.5) activerecord (>= 4.2.0, < 8) json_schemer (~> 0.2.18) activestorage (6.1.7.3) @@ -86,16 +86,16 @@ GEM autoprefixer-rails (10.4.13.0) execjs (~> 2) bcrypt (3.1.18) - better_errors (2.9.1) - coderay (>= 1.0.0) + better_errors (2.10.0) erubi (>= 1.0.0) rack (>= 0.9.0) + rouge (>= 1.0.0) bindex (0.8.1) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) bootsnap (1.16.0) msgpack (~> 1.2) - brakeman (5.4.1) + brakeman (6.0.0) builder (3.2.4) bullet (7.0.7) activesupport (>= 3.0.0) @@ -106,7 +106,7 @@ GEM bundler (>= 1.2.0, < 3) thor (~> 1.0) byebug (11.1.3) - capybara (3.39.0) + capybara (3.39.1) addressable matrix mini_mime (>= 0.1.3) @@ -186,10 +186,10 @@ GEM railties (>= 5.0.0) faker (3.2.0) i18n (>= 1.8.11, < 2) - faraday (2.7.4) + faraday (2.7.5) faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) - faraday-http-cache (2.4.1) + faraday-http-cache (2.5.0) faraday (>= 0.8) faraday-net_http (3.0.2) feedjira (3.2.2) @@ -197,7 +197,7 @@ GEM sax-machine (>= 1.0) ffi (1.15.5) flag_shih_tzu (0.3.23) - fog-aws (3.18.0) + fog-aws (3.19.0) fog-core (~> 2.1) fog-json (~> 1.1) fog-xml (~> 0.1) @@ -262,7 +262,7 @@ GEM hana (~> 1.3) regexp_parser (~> 2.0) uri_template (~> 0.7) - jsonpath (1.1.2) + jsonpath (1.1.3) multi_json jwt (2.7.0) kaminari (1.2.2) @@ -287,9 +287,9 @@ GEM rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) locale (2.1.3) - loofah (2.20.0) + loofah (2.21.3) crass (~> 1.0.2) - nokogiri (>= 1.5.9) + nokogiri (>= 1.12.0) lumberjack (1.2.8) mail (2.8.1) mini_mime (>= 0.1.1) @@ -309,7 +309,7 @@ GEM minitest (5.18.0) mocha (2.0.2) ruby2_keywords (>= 0.0.5) - msgpack (1.7.0) + msgpack (1.7.1) multi_json (1.15.0) multi_xml (0.6.0) mysql2 (0.5.5) @@ -326,9 +326,9 @@ GEM net-protocol nio4r (2.5.9) no_proxy_fix (0.1.2) - nokogiri (1.14.3-arm64-darwin) + nokogiri (1.15.2-arm64-darwin) racc (~> 1.4) - nokogiri (1.14.3-x86_64-linux) + nokogiri (1.15.2-x86_64-linux) racc (~> 1.4) notiffany (0.1.3) nenv (~> 0.1) @@ -364,7 +364,7 @@ GEM parallel (1.23.0) parser (3.2.2.1) ast (~> 2.4.1) - pg (1.5.2) + pg (1.5.3) prime (0.1.2) forwardable singleton @@ -379,7 +379,7 @@ GEM nio4r (~> 2.0) pundit (2.2.0) activesupport (>= 3.0.0) - pundit-matchers (2.0.0) + pundit-matchers (2.3.0) rspec-rails (>= 3.0.0) racc (1.6.2) rack (2.2.7) @@ -434,6 +434,7 @@ GEM railties (>= 5.2) rexml (3.2.5) rollbar (3.4.0) + rouge (4.1.1) rspec-collection_matchers (1.2.0) rspec-expectations (>= 2.99.0.beta1) rspec-core (3.12.2) @@ -444,14 +445,14 @@ GEM rspec-mocks (3.12.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) - rspec-rails (6.0.1) + rspec-rails (6.0.2) actionpack (>= 6.1) activesupport (>= 6.1) railties (>= 6.1) - rspec-core (~> 3.11) - rspec-expectations (~> 3.11) - rspec-mocks (~> 3.11) - rspec-support (~> 3.11) + rspec-core (~> 3.12) + rspec-expectations (~> 3.12) + rspec-mocks (~> 3.12) + rspec-support (~> 3.12) rspec-support (3.12.0) rswag (2.9.0) rswag-api (= 2.9.0) @@ -467,7 +468,7 @@ GEM rswag-ui (2.9.0) actionpack (>= 3.1, < 7.1) railties (>= 3.1, < 7.1) - rubocop (1.50.2) + rubocop (1.51.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) @@ -477,11 +478,11 @@ GEM rubocop-ast (>= 1.28.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.28.0) + rubocop-ast (1.28.1) parser (>= 3.2.1.0) rubocop-i18n (3.0.0) rubocop (~> 1.0) - rubocop-performance (1.17.1) + rubocop-performance (1.18.0) rubocop (>= 1.7.0, < 2.0) rubocop-ast (>= 0.4.0) ruby-progressbar (1.13.0) @@ -492,7 +493,7 @@ GEM addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) sax-machine (1.3.2) - selenium-webdriver (4.9.0) + selenium-webdriver (4.9.1) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) @@ -523,10 +524,10 @@ GEM terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) text (1.3.1) - thor (1.2.1) + thor (1.2.2) timeout (0.3.2) tomparse (0.4.2) - translation (1.35) + translation (1.36) gettext (~> 3.2, >= 3.2.5, <= 3.4.3) turbo-rails (1.4.0) actionpack (>= 6.0.0) @@ -566,7 +567,7 @@ GEM yard-tomdoc (0.7.1) tomparse (>= 0.4.0) yard - zeitwerk (2.6.7) + zeitwerk (2.6.8) PLATFORMS arm64-darwin-21 diff --git a/engines/madmp_opidor/Gemfile.lock b/engines/madmp_opidor/Gemfile.lock index 4736c5954d..cca183dd07 100644 --- a/engines/madmp_opidor/Gemfile.lock +++ b/engines/madmp_opidor/Gemfile.lock @@ -72,7 +72,7 @@ GEM tzinfo (~> 2.0) zeitwerk (~> 2.3) ast (2.4.2) - brakeman (5.4.1) + brakeman (6.0.0) builder (3.2.4) bundle-audit (0.1.0) bundler-audit @@ -88,11 +88,11 @@ GEM i18n (1.13.0) concurrent-ruby (~> 1.0) json (2.6.3) - jsonpath (1.1.2) + jsonpath (1.1.3) multi_json - loofah (2.20.0) + loofah (2.21.3) crass (~> 1.0.2) - nokogiri (>= 1.5.9) + nokogiri (>= 1.12.0) mail (2.8.1) mini_mime (>= 0.1.1) net-imap @@ -113,7 +113,7 @@ GEM net-smtp (0.3.3) net-protocol nio4r (2.5.9) - nokogiri (1.14.3-x86_64-linux) + nokogiri (1.15.2-x86_64-linux) racc (~> 1.4) parallel (1.23.0) parser (3.2.2.1) @@ -154,7 +154,7 @@ GEM rake (13.0.6) regexp_parser (2.8.0) rexml (3.2.5) - rubocop (1.50.2) + rubocop (1.51.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) @@ -164,13 +164,15 @@ GEM rubocop-ast (>= 1.28.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.28.0) + rubocop-ast (1.28.1) parser (>= 3.2.1.0) rubocop-capybara (2.18.0) rubocop (~> 1.41) + rubocop-factory_bot (2.23.1) + rubocop (~> 1.33) rubocop-i18n (3.0.0) rubocop (~> 1.0) - rubocop-performance (1.17.1) + rubocop-performance (1.18.0) rubocop (>= 1.7.0, < 2.0) rubocop-ast (>= 0.4.0) rubocop-rails (2.19.1) @@ -179,9 +181,10 @@ GEM rubocop (>= 1.33.0, < 2.0) rubocop-rake (0.6.0) rubocop (~> 1.0) - rubocop-rspec (2.20.0) + rubocop-rspec (2.22.0) rubocop (~> 1.33) rubocop-capybara (~> 2.17) + rubocop-factory_bot (~> 2.22) rubocop-thread_safety (0.5.1) rubocop (>= 0.90.0) ruby-progressbar (1.13.0) @@ -192,7 +195,7 @@ GEM actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - thor (1.2.1) + thor (1.2.2) timeout (0.3.2) tzinfo (2.0.6) concurrent-ruby (~> 1.0) @@ -200,7 +203,7 @@ GEM websocket-driver (0.7.5) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - zeitwerk (2.6.7) + zeitwerk (2.6.8) PLATFORMS x86_64-linux diff --git a/yarn.lock b/yarn.lock index 2543622431..8078faea07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,45 +10,45 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f" - integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5": + version "7.21.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.9.tgz#10a2e7fda4e51742c907938ac3b7229426515514" + integrity sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ== "@babel/core@^7.20.12": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659" - integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA== + version "7.21.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" + integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.4" - "@babel/helper-compilation-targets" "^7.21.4" - "@babel/helper-module-transforms" "^7.21.2" - "@babel/helpers" "^7.21.0" - "@babel/parser" "^7.21.4" + "@babel/generator" "^7.21.5" + "@babel/helper-compilation-targets" "^7.21.5" + "@babel/helper-module-transforms" "^7.21.5" + "@babel/helpers" "^7.21.5" + "@babel/parser" "^7.21.8" "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.4" - "@babel/types" "^7.21.4" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" - integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== +"@babel/generator@^7.21.5": + version "7.21.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.9.tgz#3a1b706e07d836e204aee0650e8ee878d3aaa241" + integrity sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg== dependencies: - "@babel/types" "^7.21.4" + "@babel/types" "^7.21.5" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -61,45 +61,46 @@ "@babel/types" "^7.18.6" "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" - integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz#817f73b6c59726ab39f6ba18c234268a519e5abb" + integrity sha512-uNrjKztPLkUk7bpCNC0jEKDJzzkvel/W+HguzbN8krA+LPfC1CEobJEvAvGka2A/M+ViOqXdcRL0GqPUJSjx9g== dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" + "@babel/types" "^7.21.5" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656" - integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" + integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w== dependencies: - "@babel/compat-data" "^7.21.4" + "@babel/compat-data" "^7.21.5" "@babel/helper-validator-option" "^7.21.0" browserslist "^4.21.3" lru-cache "^5.1.1" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz#3a017163dc3c2ba7deb9a7950849a9586ea24c18" - integrity sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q== + version "7.21.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.8.tgz#205b26330258625ef8869672ebca1e0dee5a0f02" + integrity sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-environment-visitor" "^7.21.5" "@babel/helper-function-name" "^7.21.0" - "@babel/helper-member-expression-to-functions" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.5" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-replace-supers" "^7.21.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/helper-split-export-declaration" "^7.18.6" + semver "^6.3.0" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz#40411a8ab134258ad2cf3a3d987ec6aa0723cee5" - integrity sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA== + version "7.21.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.8.tgz#a7886f61c2e29e21fd4aaeaf1e473deba6b571dc" + integrity sha512-zGuSdedkFtsFHGbexAvNuipg1hbtitDLo2XE8/uf6Y9sOQV1xsYX/2pNbtedp/X0eU1pIt+kGvaqHCowkRbS5g== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.3.1" + semver "^6.3.0" "@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" @@ -113,17 +114,10 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" - integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== - dependencies: - "@babel/types" "^7.18.6" +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" + integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== "@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": version "7.21.0" @@ -140,12 +134,12 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" - integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== +"@babel/helper-member-expression-to-functions@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.5.tgz#3b1a009af932e586af77c1030fba9ee0bde396c0" + integrity sha512-nIcGfgwpH2u4n9GG1HpStW5Ogx7x7ekiFHbjjFRKXbn5zUvqO9ZgotCO4x1aNbKn/x/xOUaXEhyNHCwtFCpxWg== dependencies: - "@babel/types" "^7.21.0" + "@babel/types" "^7.21.5" "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": version "7.21.4" @@ -154,19 +148,19 @@ dependencies: "@babel/types" "^7.21.4" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" - integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" + integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw== dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-environment-visitor" "^7.21.5" + "@babel/helper-module-imports" "^7.21.4" + "@babel/helper-simple-access" "^7.21.5" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-validator-identifier" "^7.19.1" "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.2" - "@babel/types" "^7.21.2" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -175,10 +169,10 @@ dependencies: "@babel/types" "^7.18.6" -"@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.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== +"@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.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.21.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" + integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" @@ -190,24 +184,24 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" - integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7", "@babel/helper-replace-supers@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.21.5.tgz#a6ad005ba1c7d9bc2973dfde05a1bba7065dde3c" + integrity sha512-/y7vBgsr9Idu4M6MprbOVUfH3vs7tsIfnVWv/Ml2xgwvyH6LTngdfbf5AdsKwkJy4zgy1X/kuNrEKvhhK28Yrg== dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-environment-visitor" "^7.21.5" + "@babel/helper-member-expression-to-functions" "^7.21.5" "@babel/helper-optimise-call-expression" "^7.18.6" "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.7" - "@babel/types" "^7.20.7" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" -"@babel/helper-simple-access@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" - integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== +"@babel/helper-simple-access@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" + integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== dependencies: - "@babel/types" "^7.20.2" + "@babel/types" "^7.21.5" "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": version "7.20.0" @@ -223,10 +217,10 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== +"@babel/helper-string-parser@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" + integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" @@ -248,14 +242,14 @@ "@babel/traverse" "^7.20.5" "@babel/types" "^7.20.5" -"@babel/helpers@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" - integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== +"@babel/helpers@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08" + integrity sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA== dependencies: "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.0" - "@babel/types" "^7.21.0" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" "@babel/highlight@^7.18.6": version "7.18.6" @@ -266,10 +260,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.20.7", "@babel/parser@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" - integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== +"@babel/parser@^7.21.5", "@babel/parser@^7.21.8", "@babel/parser@^7.21.9": + version "7.21.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.9.tgz#ab18ea3b85b4bc33ba98a8d4c2032c557d23cf14" + integrity sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -458,6 +452,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + 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.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -521,12 +522,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" - integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== +"@babel/plugin-transform-arrow-functions@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929" + integrity sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-async-to-generator@^7.20.7": version "7.20.7" @@ -566,12 +567,12 @@ "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" - integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== +"@babel/plugin-transform-computed-properties@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44" + integrity sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/template" "^7.20.7" "@babel/plugin-transform-destructuring@^7.21.3": @@ -604,12 +605,12 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz#964108c9988de1a60b4be2354a7d7e245f36e86e" - integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ== +"@babel/plugin-transform-for-of@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc" + integrity sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" @@ -642,14 +643,14 @@ "@babel/helper-module-transforms" "^7.20.11" "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-modules-commonjs@^7.21.2": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" - integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== +"@babel/plugin-transform-modules-commonjs@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc" + integrity sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ== dependencies: - "@babel/helper-module-transforms" "^7.21.2" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-module-transforms" "^7.21.5" + "@babel/helper-plugin-utils" "^7.21.5" + "@babel/helper-simple-access" "^7.21.5" "@babel/plugin-transform-modules-systemjs@^7.20.11": version "7.20.11" @@ -706,12 +707,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" - integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== +"@babel/plugin-transform-regenerator@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" + integrity sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.21.5" regenerator-transform "^0.15.1" "@babel/plugin-transform-reserved-words@^7.18.6": @@ -769,12 +770,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== +"@babel/plugin-transform-unicode-escapes@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2" + integrity sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" @@ -785,13 +786,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/preset-env@^7.20.2": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.4.tgz#a952482e634a8dd8271a3fe5459a16eb10739c58" - integrity sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw== + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.5.tgz#db2089d99efd2297716f018aeead815ac3decffb" + integrity sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg== dependencies: - "@babel/compat-data" "^7.21.4" - "@babel/helper-compilation-targets" "^7.21.4" - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/compat-data" "^7.21.5" + "@babel/helper-compilation-targets" "^7.21.5" + "@babel/helper-plugin-utils" "^7.21.5" "@babel/helper-validator-option" "^7.21.0" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.20.7" @@ -816,6 +817,7 @@ "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@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" @@ -825,22 +827,22 @@ "@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.20.7" + "@babel/plugin-transform-arrow-functions" "^7.21.5" "@babel/plugin-transform-async-to-generator" "^7.20.7" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" "@babel/plugin-transform-block-scoping" "^7.21.0" "@babel/plugin-transform-classes" "^7.21.0" - "@babel/plugin-transform-computed-properties" "^7.20.7" + "@babel/plugin-transform-computed-properties" "^7.21.5" "@babel/plugin-transform-destructuring" "^7.21.3" "@babel/plugin-transform-dotall-regex" "^7.18.6" "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.21.0" + "@babel/plugin-transform-for-of" "^7.21.5" "@babel/plugin-transform-function-name" "^7.18.9" "@babel/plugin-transform-literals" "^7.18.9" "@babel/plugin-transform-member-expression-literals" "^7.18.6" "@babel/plugin-transform-modules-amd" "^7.20.11" - "@babel/plugin-transform-modules-commonjs" "^7.21.2" + "@babel/plugin-transform-modules-commonjs" "^7.21.5" "@babel/plugin-transform-modules-systemjs" "^7.20.11" "@babel/plugin-transform-modules-umd" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex" "^7.20.5" @@ -848,17 +850,17 @@ "@babel/plugin-transform-object-super" "^7.18.6" "@babel/plugin-transform-parameters" "^7.21.3" "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.20.5" + "@babel/plugin-transform-regenerator" "^7.21.5" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" "@babel/plugin-transform-spread" "^7.20.7" "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-escapes" "^7.21.5" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.21.4" + "@babel/types" "^7.21.5" babel-plugin-polyfill-corejs2 "^0.3.3" babel-plugin-polyfill-corejs3 "^0.6.0" babel-plugin-polyfill-regenerator "^0.4.1" @@ -882,43 +884,43 @@ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" - integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" + integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== dependencies: regenerator-runtime "^0.13.11" "@babel/template@^7.18.10", "@babel/template@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" - integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + version "7.21.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.21.9.tgz#bf8dad2859130ae46088a99c1f265394877446fb" + integrity sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" + "@babel/code-frame" "^7.21.4" + "@babel/parser" "^7.21.9" + "@babel/types" "^7.21.5" -"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" - integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== +"@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" + integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== dependencies: "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.4" - "@babel/helper-environment-visitor" "^7.18.9" + "@babel/generator" "^7.21.5" + "@babel/helper-environment-visitor" "^7.21.5" "@babel/helper-function-name" "^7.21.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.4" - "@babel/types" "^7.21.4" + "@babel/parser" "^7.21.5" + "@babel/types" "^7.21.5" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4", "@babel/types@^7.4.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" - integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== +"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.4.4": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" + integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== dependencies: - "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-string-parser" "^7.21.5" "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" @@ -940,18 +942,18 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" - integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== + version "4.5.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" + integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== -"@eslint/eslintrc@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" - integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== +"@eslint/eslintrc@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" + integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.1" + espree "^9.5.2" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -959,10 +961,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.39.0.tgz#58b536bcc843f4cd1e02a7e6171da5c040f4d44b" - integrity sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng== +"@eslint/js@8.41.0": + version "8.41.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3" + integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA== "@fortawesome/fontawesome-free@^5.15.4": version "5.15.4" @@ -1097,9 +1099,9 @@ integrity sha512-F6S74NGpxhbbDRFsQFGYqefRfZPgYvePNtz9hHKYOqLturrsqrDoG+UcrxEGHsvqDUorMYfx4Wl3K8smmk/u2g== "@rails/actioncable@^7.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-7.0.4.tgz#70a3ca56809f7aaabb80af2f9c01ae51e1a8ed41" - integrity sha512-tz4oM+Zn9CYsvtyicsa/AwzKZKL+ITHWkhiu7x+xF77clh2b4Rm+s6xnOgY/sGDWoFWZmtKsE95hxBPkgQQNnQ== + version "7.0.5" + resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-7.0.5.tgz#bbc11203e0d3d5084002abfcf01d621fdf5f3a9d" + integrity sha512-SOBA2heB9lTw0VYIx8M/ed7inSf4I9sR8OIlJprhgkfQ3WJtrxPJ6DDATR1Z3RYaIR7HlT2Olj08v1lfGIGuHA== "@rails/activestorage@^6.0.3-1": version "6.1.7" @@ -1144,9 +1146,9 @@ "@types/estree" "*" "@types/eslint@*", "@types/eslint@^8.37.0": - version "8.37.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.37.0.tgz#29cebc6c2a3ac7fea7113207bf5a828fdf4d7ef1" - integrity sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ== + version "8.40.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.40.0.tgz#ae73dc9ec5237f2794c4f79efd6a4c73b13daf23" + integrity sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1186,9 +1188,9 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/node@*", "@types/node@>=10.0.0": - version "18.16.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.1.tgz#5db121e9c5352925bb1f1b892c4ae620e3526799" - integrity sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA== + version "20.2.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.3.tgz#b31eb300610c3835ac008d690de6f87e28f9b878" + integrity sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1207,141 +1209,141 @@ dependencies: "@types/yargs-parser" "*" -"@webassemblyjs/ast@1.11.5", "@webassemblyjs/ast@^1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.5.tgz#6e818036b94548c1fb53b754b5cae3c9b208281c" - integrity sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ== +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== dependencies: - "@webassemblyjs/helper-numbers" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" -"@webassemblyjs/floating-point-hex-parser@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz#e85dfdb01cad16b812ff166b96806c050555f1b4" - integrity sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ== +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== -"@webassemblyjs/helper-api-error@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz#1e82fa7958c681ddcf4eabef756ce09d49d442d1" - integrity sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA== +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== -"@webassemblyjs/helper-buffer@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz#91381652ea95bb38bbfd270702351c0c89d69fba" - integrity sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg== +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== -"@webassemblyjs/helper-numbers@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz#23380c910d56764957292839006fecbe05e135a9" - integrity sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA== +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.5" - "@webassemblyjs/helper-api-error" "1.11.5" + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz#e258a25251bc69a52ef817da3001863cc1c24b9f" - integrity sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA== +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/helper-wasm-section@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz#966e855a6fae04d5570ad4ec87fbcf29b42ba78e" - integrity sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA== +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-buffer" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/wasm-gen" "1.11.5" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" -"@webassemblyjs/ieee754@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz#b2db1b33ce9c91e34236194c2b5cba9b25ca9d60" - integrity sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg== +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.5.tgz#482e44d26b6b949edf042a8525a66c649e38935a" - integrity sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ== +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.5.tgz#83bef94856e399f3740e8df9f63bc47a987eae1a" - integrity sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ== +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== "@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz#93ee10a08037657e21c70de31c47fdad6b522b2d" - integrity sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ== - dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-buffer" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/helper-wasm-section" "1.11.5" - "@webassemblyjs/wasm-gen" "1.11.5" - "@webassemblyjs/wasm-opt" "1.11.5" - "@webassemblyjs/wasm-parser" "1.11.5" - "@webassemblyjs/wast-printer" "1.11.5" - -"@webassemblyjs/wasm-gen@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz#ceb1c82b40bf0cf67a492c53381916756ef7f0b1" - integrity sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA== - dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/ieee754" "1.11.5" - "@webassemblyjs/leb128" "1.11.5" - "@webassemblyjs/utf8" "1.11.5" - -"@webassemblyjs/wasm-opt@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz#b52bac29681fa62487e16d3bb7f0633d5e62ca0a" - integrity sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw== - dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-buffer" "1.11.5" - "@webassemblyjs/wasm-gen" "1.11.5" - "@webassemblyjs/wasm-parser" "1.11.5" - -"@webassemblyjs/wasm-parser@1.11.5", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz#7ba0697ca74c860ea13e3ba226b29617046982e2" - integrity sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew== - dependencies: - "@webassemblyjs/ast" "1.11.5" - "@webassemblyjs/helper-api-error" "1.11.5" - "@webassemblyjs/helper-wasm-bytecode" "1.11.5" - "@webassemblyjs/ieee754" "1.11.5" - "@webassemblyjs/leb128" "1.11.5" - "@webassemblyjs/utf8" "1.11.5" - -"@webassemblyjs/wast-printer@1.11.5": - version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz#7a5e9689043f3eca82d544d7be7a8e6373a6fa98" - integrity sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA== - dependencies: - "@webassemblyjs/ast" "1.11.5" + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.0.1.tgz#a69720f6c9bad6aef54a8fa6ba9c3533e7ef4c7f" - integrity sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A== +"@webpack-cli/configtest@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.0.tgz#b59b33377b1b896a9a7357cfc643b39c1524b1e6" + integrity sha512-K/vuv72vpfSEZoo5KIU0a2FsEoYdW0DUMtMpB5X3LlUwshetMZRZRxB7sCsVji/lFaSxtQQ3aM9O4eMolXkU9w== "@webpack-cli/info@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.1.tgz#eed745799c910d20081e06e5177c2b2569f166c0" integrity sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA== -"@webpack-cli/serve@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.2.tgz#10aa290e44a182c02e173a89452781b1acbc86d9" - integrity sha512-S9h3GmOmzUseyeFW3tYNnWS7gNUuwxZ3mmMq0JyW78Vx1SGKPSkt5bT4pB0rUnVfHjP0EL9gW2bOzmtiTfQt0A== +"@webpack-cli/serve@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.4.tgz#3982ee6f8b42845437fc4d391e93ac5d9da52f0f" + integrity sha512-0xRgjgDLdz6G7+vvDLlaRpFatJaJ69uTalZLRSMX5B3VUrDmXcrVA3+6fXXQgmYz7bY9AAgs348XQdmtLsK41A== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -1361,10 +1363,10 @@ accepts@~1.3.4: mime-types "~2.1.34" negotiator "0.6.3" -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== acorn-jsx@^5.3.2: version "5.3.2" @@ -1487,9 +1489,9 @@ array.prototype.flatmap@^1.3.1: es-shim-unscopables "^1.0.0" autonumeric@^4.6.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/autonumeric/-/autonumeric-4.8.1.tgz#24259b4175d7814dde89fd26ad3d388368b40ddd" - integrity sha512-bXymqga5EvHSEyoifaw/+pGLJHPOv9+C31G1zUHAFU/2J+94LYm24BYqInw7XWmQJQ96r4VXUchurFmiqzxB5w== + version "4.9.0" + resolved "https://registry.yarnpkg.com/autonumeric/-/autonumeric-4.9.0.tgz#5e54b5b2b79ba61f596902e6f2bb4256fab19fa8" + integrity sha512-wCNM6AzgZh2QibED+HOnD2PD8qp3YyXqM6akADdMViqhDx+M+Nwq70WNh26eEjRWfclTh9f+kw2GLx2+ZUmOGw== available-typed-arrays@^1.0.5: version "1.0.5" @@ -1644,9 +1646,9 @@ callsites@^3.0.0: integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== caniuse-lite@^1.0.30001449: - version "1.0.30001481" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz#f58a717afe92f9e69d0e35ff64df596bfad93912" - integrity sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ== + version "1.0.30001489" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz#ca82ee2d4e4dbf2bd2589c9360d3fcc2c7ba3bd8" + integrity sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ== chalk@^2.0.0: version "2.4.2" @@ -1666,9 +1668,9 @@ chalk@^4.0.0: supports-color "^7.1.0" chart.js@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.2.1.tgz#d2bd5c98e9a0ae35408975b638f40513b067ba1d" - integrity sha512-6YbpQ0nt3NovAgOzbkSSeeAQu/3za1319dPUQTXn9WcOpywM8rGKxJHrhS8V8xEkAlk8YhEfjbuAPfUyp6jIsw== + version "4.3.0" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.3.0.tgz#ac363030ab3fec572850d2d872956f32a46326a1" + integrity sha512-ynG0E79xGfMaV2xAHdbhwiPLczxnNNnasrmPEXriXsPJGjmhOBYzFVEsB65w2qMDz+CaBJJuJD0inE/ab/h36g== dependencies: "@kurkle/color" "^0.3.0" @@ -1795,16 +1797,16 @@ cookie@~0.4.1: integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-js-compat@^3.25.1: - version "3.30.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.1.tgz#961541e22db9c27fc48bfc13a3cafa8734171dfe" - integrity sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw== + version "3.30.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.2.tgz#83f136e375babdb8c80ad3c22d67c69098c1dd8b" + integrity sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA== dependencies: browserslist "^4.21.5" core-js@^3.6.5: - version "3.30.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.1.tgz#fc9c5adcc541d8e9fa3e381179433cbf795628ba" - integrity sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ== + version "3.30.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.2.tgz#6528abfda65e5ad728143ea23f7a14f0dcf503fc" + integrity sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg== cors@~2.8.5: version "2.8.5" @@ -1923,9 +1925,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.284: - version "1.4.374" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.374.tgz#091b2de9d80b970f9b5e689675ea62622cd1d74b" - integrity sha512-dNP9tQNTrjgVlSXMqGaj0BdrCS+9pcUvy5/emB6x8kh0YwCoDZ0Z4ce1+7aod+KhybHUd5o5LgKrc5al4kVmzQ== + version "1.4.407" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.407.tgz#087e2ab97b3eb092aa6217c05986086b7dd370cc" + integrity sha512-5smEvFSFYMv90tICOzRVP7Opp98DAC4KW7RRipg3BuNpGbbV3N+x24Zh3sbLb1T5haGtOSy/hrBfXsWnIM9aCg== emoji-regex@^8.0.0: version "8.0.0" @@ -1943,14 +1945,14 @@ encodeurl@~1.0.2: integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== engine.io-parser@~5.0.3: - version "5.0.6" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.6.tgz#7811244af173e157295dec9b2718dfe42a64ef45" - integrity sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw== + version "5.0.7" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.7.tgz#ed5eae76c71f398284c578ab6deafd3ba7e4e4f6" + integrity sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ== engine.io@~6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.4.1.tgz#8056b4526a88e779f9c280d820422d4e3eeaaae5" - integrity sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw== + version "6.4.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.4.2.tgz#ffeaf68f69b1364b0286badddf15ff633476473f" + integrity sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg== dependencies: "@types/cookie" "^0.4.1" "@types/cors" "^2.8.12" @@ -1963,10 +1965,10 @@ engine.io@~6.4.1: engine.io-parser "~5.0.3" ws "~8.11.0" -enhanced-resolve@^5.13.0: - version "5.13.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz#26d1ecc448c02de997133217b5c1053f34a0a275" - integrity sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg== +enhanced-resolve@^5.14.1: + version "5.14.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz#de684b6803724477a4af5d74ccae5de52c25f6b3" + integrity sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -2141,10 +2143,10 @@ eslint-scope@^7.2.0: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" - integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== eslint-webpack-plugin@^4.0.0: version "4.0.1" @@ -2158,14 +2160,14 @@ eslint-webpack-plugin@^4.0.0: schema-utils "^4.0.0" eslint@^8.18.0: - version "8.39.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.39.0.tgz#7fd20a295ef92d43809e914b70c39fd5a23cf3f1" - integrity sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og== + version "8.41.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c" + integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.2" - "@eslint/js" "8.39.0" + "@eslint/eslintrc" "^2.0.3" + "@eslint/js" "8.41.0" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -2176,8 +2178,8 @@ eslint@^8.18.0: doctrine "^3.0.0" escape-string-regexp "^4.0.0" eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.0" - espree "^9.5.1" + eslint-visitor-keys "^3.4.1" + espree "^9.5.2" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -2185,13 +2187,12 @@ eslint@^8.18.0: find-up "^5.0.0" glob-parent "^6.0.2" globals "^13.19.0" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" - js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" @@ -2203,14 +2204,14 @@ eslint@^8.18.0: strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.5.1: - version "9.5.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" - integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== +espree@^9.5.2: + version "9.5.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" + integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.0" + eslint-visitor-keys "^3.4.1" esquery@^1.4.2: version "1.5.0" @@ -2410,12 +2411,13 @@ get-caller-file@^2.0.5: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: function-bind "^1.1.1" has "^1.0.3" + has-proto "^1.0.1" has-symbols "^1.0.3" get-symbol-description@^1.0.0: @@ -2488,10 +2490,10 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" @@ -2666,9 +2668,9 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.11.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" - integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== dependencies: has "^1.0.3" @@ -2844,20 +2846,15 @@ jquery-ui@^1.12.1: jquery ">=1.8.0 <4.0.0" "jquery@>=1.8.0 <4.0.0", jquery@^3.5.1: - version "3.6.4" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.4.tgz#ba065c188142100be4833699852bf7c24dc0252f" - integrity sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ== + version "3.7.0" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.0.tgz#fe2c01a05da500709006d8790fe21c8a39d75612" + integrity sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ== js-cookie@^3.0.1: version "3.0.5" resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== -js-sdsl@^4.1.4: - version "4.4.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" - integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== - js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -3173,9 +3170,9 @@ neo-async@^2.6.2: integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== node-releases@^2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + version "2.0.12" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" + integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -3663,9 +3660,9 @@ socket.io-adapter@~2.5.2: ws "~8.11.0" socket.io-parser@~4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.2.tgz#1dd384019e25b7a3d374877f492ab34f2ad0d206" - integrity sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw== + version "4.2.3" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.3.tgz#926bcc6658e2ae0883dc9dee69acbdc76e4e3667" + integrity sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ== dependencies: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" @@ -3804,9 +3801,9 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== sweetalert2@^11.7.3: - version "11.7.3" - resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.7.3.tgz#e81ad273903a644b60d1ee0359626cc4c4ac860d" - integrity sha512-fUN/fyVSBZNtY4Rr/Qtxn7tNNnlRAbUhQxTQ9uOo0xVMIHBmqq4/9pau5N9dB2pvkB353XL/ywRAycscLoYU3w== + version "11.7.5" + resolved "https://registry.yarnpkg.com/sweetalert2/-/sweetalert2-11.7.5.tgz#d905b792cfcb69d5db479f839151ce12d8804a8e" + integrity sha512-RBPKdK8Uf9/bz9r4vy7x6sGqf0MioSXt1po1lAwwcl3AwbjHVTc5S0yud4ZJKU1EhvJFVDrFoqIpHwWERwZJEA== tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" @@ -3814,20 +3811,20 @@ tapable@^2.1.1, tapable@^2.2.0: integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== terser-webpack-plugin@^5.3.7: - version "5.3.7" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" - integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== + version "5.3.9" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" + integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== dependencies: "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.1" - terser "^5.16.5" + terser "^5.16.8" -terser@^5.16.5: - version "5.17.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.1.tgz#948f10830454761e2eeedc6debe45c532c83fd69" - integrity sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw== +terser@^5.16.8: + version "5.17.6" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.6.tgz#d810e75e1bb3350c799cd90ebefe19c9412c12de" + integrity sha512-V8QHcs8YuyLkLHsJO5ucyff1ykrLVsR4dNnS//L5Y3NiSXpbK1J+WMVUs67eI0KTxs9JtHhgEQpXQVHlHI92DQ== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -3999,14 +3996,14 @@ watchpack@^2.4.0: graceful-fs "^4.1.2" webpack-cli@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.0.2.tgz#2954c10ecb61c5d4dad6f68ee2d77f051741946c" - integrity sha512-4y3W5Dawri5+8dXm3+diW6Mn1Ya+Dei6eEVAdIduAmYNLzv1koKVAqsfgrrc9P2mhrYHQphx5htnGkcNwtubyQ== + version "5.1.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.1.tgz#c211ac6d911e77c512978f7132f0d735d4a97ace" + integrity sha512-OLJwVMoXnXYH2ncNGU8gxVpUtm3ybvdioiTvHgUyBuyMLKiVvWy+QObzBsMtp5pH7qQoEuWgeEUQ/sU3ZJFzAw== dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^2.0.1" + "@webpack-cli/configtest" "^2.1.0" "@webpack-cli/info" "^2.0.1" - "@webpack-cli/serve" "^2.0.2" + "@webpack-cli/serve" "^2.0.4" colorette "^2.0.14" commander "^10.0.1" cross-spawn "^7.0.3" @@ -4025,9 +4022,9 @@ webpack-merge@^4.1.5: lodash "^4.17.15" webpack-merge@^5.7.3: - version "5.8.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" - integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + version "5.9.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" + integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== dependencies: clone-deep "^4.0.1" wildcard "^2.0.0" @@ -4038,9 +4035,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.75.0: - version "5.81.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.81.0.tgz#27a2e8466c8b4820d800a8d90f06ef98294f9956" - integrity sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q== + version "5.84.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.84.0.tgz#011115617668744aece87a9eb68534487d84de1a" + integrity sha512-XezNK3kwJq6IyeoZmZ1uEqQs+42nTqIi4jYM/YjLwaJedUC1N3bwnCC0+UcnHJPfqWX0kGrQnMIvZZyWYaIZrA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.0" @@ -4048,10 +4045,10 @@ webpack@^5.75.0: "@webassemblyjs/wasm-edit" "^1.11.5" "@webassemblyjs/wasm-parser" "^1.11.5" acorn "^8.7.1" - acorn-import-assertions "^1.7.6" + acorn-import-assertions "^1.9.0" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.13.0" + enhanced-resolve "^5.14.1" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0"