{"version":3,"sources":["webpack:////build/source/node_modules/lodash/invert.js","webpack:////build/source/node_modules/lodash/iteratee.js","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/number_utils.js","webpack:///./ci/jobs_page/graphql/mutations/job_retry.mutation.graphql","webpack:////build/source/node_modules/lodash/_baseClone.js","webpack:///./ci/jobs_page/event_hub.js","webpack:///./security_configuration/graphql/security_training_vulnerability.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/infinite_scroll/infinite_scroll.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/queries/project_images.query.graphql","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/store/utils/convert_report_type.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/button_group/button_group.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/finding_create_merge_request.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/graphql/security_finding_create_vulnerability.mutation.graphql","webpack:///./vue_shared/components/page_size_selector.vue","webpack:///vue_shared/components/page_size_selector.vue","webpack:///./vue_shared/components/page_size_selector.vue?9bb9","webpack:///./vue_shared/components/page_size_selector.vue?726c","webpack:////build/source/node_modules/lodash/isSet.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/shared_components/clear_icon_button/clear_icon_button.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/queries/vulnerability_severities_count.query.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutate_vulnerability_state.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/queries/security_report_finding.query.graphql","webpack:///./ci/jobs_page/graphql/mutations/job_unschedule.mutation.graphql","webpack:///./ci/reports/codequality_report/components/codequality_issue_body.vue","webpack:///./ci/reports/components/report_link.vue?9fce","webpack:///ci/reports/components/report_link.vue","webpack:///./ci/reports/components/report_link.vue?74d2","webpack:///./ci/reports/components/report_link.vue","webpack:///./ci/reports/codequality_report/components/codequality_issue_body.vue?d90e","webpack:///ci/reports/codequality_report/components/codequality_issue_body.vue","webpack:///./ci/reports/codequality_report/components/codequality_issue_body.vue?fd77","webpack:///./vue_shared/components/smart_virtual_list.vue","webpack:///./vue_shared/components/smart_virtual_list.vue?6cd4","webpack:///vue_shared/components/smart_virtual_list.vue","webpack:///./vue_shared/components/smart_virtual_list.vue?7c81","webpack:////build/source/node_modules/lodash/_customOmitClone.js","webpack:///./ci/reports/constants.js","webpack:///./graphql_shared/fragments/page_info.fragment.graphql","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/event_item.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/event_item.vue?2550","webpack:///../../../ee/app/assets/javascripts/vue_shared/security_reports/components/event_item.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/event_item.vue?9dfe","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/directives/toggle/toggle.js","webpack:////build/source/node_modules/lodash/without.js","webpack:////build/source/ee/app/assets/javascripts/graphql_shared/fragments/vulnerability_detail.fragment.graphql","webpack:///./ci/reports/components/report_section.vue","webpack:///ci/reports/components/issues_list.vue","webpack:///./ci/reports/components/issues_list.vue?2213","webpack:///./ci/reports/components/issues_list.vue?1ff0","webpack:///./ci/reports/components/issues_list.vue","webpack:///./ci/reports/components/report_section.vue?e333","webpack:///ci/reports/components/report_section.vue","webpack:///./ci/reports/components/report_section.vue?58a2","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/store/utils.js","webpack:////build/source/node_modules/highlight.js/lib/core.js","webpack:///./ci/jobs_page/graphql/fragments/job.fragment.graphql","webpack:///./helpers/event_hub_factory.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/utils.js","webpack:////build/source/node_modules/lodash/capitalize.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/queries/pipeline_security_report_summary.query.graphql","webpack:////build/source/node_modules/lodash/_initCloneByTag.js","webpack:////build/source/node_modules/@gitlab/svgs/src/file_icon_map.js","webpack:///./vue_shared/components/file_icon.vue","webpack:///./vue_shared/components/file_icon.vue?6a90","webpack:///vue_shared/components/file_icon.vue","webpack:///./vue_shared/components/file_icon.vue?7152","webpack:///./ci/pipeline_details/jobs/graphql/queries/get_failed_jobs.query.graphql","webpack:////build/source/node_modules/lodash/_baseIsSet.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/vulnerability_code_flow.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/plugins/mark_multiple_lines.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_file_viewer.vue?b462","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_file_viewer.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_file_viewer.vue?081a","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_file_viewer.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_steps_section.vue?e808","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_steps_section.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_steps_section.vue?7001","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_steps_section.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/vulnerability_code_flow.vue?cb5f","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/code_flow/vulnerability_code_flow.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/vulnerability_code_flow.vue?2835","webpack:////build/source/app/graphql/queries/pipelines/get_pipeline_details.query.graphql","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_play.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/fragments/security_report_scans.fragment.graphql","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/status_badge.vue","webpack:///../../../ee/app/assets/javascripts/vue_shared/security_reports/components/status_badge.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/status_badge.vue?8c4a","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/status_badge.vue?b700","webpack:///./vue_shared/components/modal_copy_button.vue","webpack:///./vue_shared/components/modal_copy_button.vue?eab4","webpack:///vue_shared/components/modal_copy_button.vue","webpack:///./vue_shared/components/modal_copy_button.vue?ef3f","webpack:///./vue_shared/components/imported_badge.vue","webpack:///vue_shared/components/imported_badge.vue","webpack:///./vue_shared/components/imported_badge.vue?8b64","webpack:///./vue_shared/components/imported_badge.vue?c532","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/constants.js","webpack:////build/source/node_modules/lodash/groupBy.js","webpack:////build/source/node_modules/lodash/fp/_baseConvert.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/queries/group_projects.query.graphql","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_unschedule.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/vue_shared/vulnerabilities/components/vulnerability_file_content_viewer.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/vulnerabilities/components/vulnerability_file_content_viewer.vue?fc2e","webpack:///../../../ee/app/assets/javascripts/vue_shared/vulnerabilities/components/vulnerability_file_content_viewer.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/vulnerabilities/components/vulnerability_file_content_viewer.vue?c30a","webpack:///./vue_shared/components/local_storage_sync.vue?a4c7","webpack:///vue_shared/components/local_storage_sync.vue","webpack:///./vue_shared/components/local_storage_sync.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/queries/vulnerability_external_issues.query.graphql","webpack:///../images/vulnerability/kontra-logo.svg","webpack:///./security_configuration/constants.js","webpack:///../images/vulnerability/scw-logo.svg","webpack:///../images/vulnerability/secureflag-logo.svg","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/fragments/vulnerability_severities_count.fragment.graphql","webpack:///./vue_merge_request_widget/stores/state_maps.js","webpack:///./blob/components/blob_header_filepath.vue","webpack:///./blob/components/blob_header_filepath.vue?9ed2","webpack:///blob/components/blob_header_filepath.vue","webpack:///./blob/components/blob_header_filepath.vue?eaa2","webpack:///./ci/pipeline_details/test_reports/test_case_details.vue","webpack:///./ci/pipeline_details/test_reports/test_case_details.vue?a643","webpack:///ci/pipeline_details/test_reports/test_case_details.vue","webpack:///./ci/pipeline_details/test_reports/test_case_details.vue?5e5d","webpack:///./vue_shared/security_reports/constants.js","webpack:///./vue_merge_request_widget/components/widget/status_icon.vue","webpack:///./vue_merge_request_widget/components/widget/status_icon.vue?9b89","webpack:///vue_merge_request_widget/components/widget/status_icon.vue","webpack:///./vue_merge_request_widget/components/widget/status_icon.vue?8148","webpack:////build/source/node_modules/lodash/_arrayIncludesWith.js","webpack:////build/source/node_modules/lodash/flattenDeep.js","webpack:///./vue_shared/components/help_popover.vue","webpack:///./vue_shared/components/help_popover.vue?68da","webpack:///vue_shared/components/help_popover.vue","webpack:///./vue_shared/components/help_popover.vue?ebac","webpack:///./import/constants.js","webpack:////build/source/node_modules/lodash/_parent.js","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/false_positive_alert.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/false_positive_alert.vue?9d97","webpack:///../../../ee/app/assets/javascripts/vulnerabilities/components/false_positive_alert.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/false_positive_alert.vue?039b","webpack:///./security_configuration/graphql/configure_secret_detection.mutation.graphql","webpack:////build/source/node_modules/lodash/fp/_util.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/progress_bar/progress_bar.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/components/license_status_icon.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/components/license_status_icon.vue?06fe","webpack:///../../../ee/app/assets/javascripts/vue_shared/license_compliance/components/license_status_icon.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/components/license_status_icon.vue?3fcb","webpack:///./ci/reports/components/issue_status_icon.vue?00ce","webpack:///ci/reports/components/issue_status_icon.vue","webpack:///./ci/reports/components/issue_status_icon.vue?8016","webpack:///./ci/reports/components/issue_status_icon.vue","webpack:///./ci/reports/components/issue_body.js","webpack:////build/source/ee/app/assets/javascripts/ci/reports/components/issue_body.js","webpack:///./ci/pipeline_details/graph/components/graph_component.vue","webpack:///./ci/pipeline_details/graph/components/linked_graph_wrapper.vue?5972","webpack:///./ci/pipeline_details/graph/components/linked_graph_wrapper.vue","webpack:///./ci/pipeline_details/graph/components/linked_pipeline.vue?c402","webpack:///ci/pipeline_details/graph/components/linked_pipeline.vue","webpack:///./ci/pipeline_details/graph/components/linked_pipelines_column.vue?bde0","webpack:///ci/pipeline_details/graph/components/linked_pipelines_column.vue","webpack:///./ci/pipeline_details/graph/components/linked_pipeline.vue?11ef","webpack:///./ci/pipeline_details/graph/components/linked_pipeline.vue","webpack:///./ci/pipeline_details/graph/components/linked_pipelines_column.vue?4017","webpack:///./ci/pipeline_details/graph/components/linked_pipelines_column.vue","webpack:///./ci/common/private/job_action_component.vue?b0c5","webpack:///ci/common/private/job_action_component.vue","webpack:///./ci/common/private/job_action_component.vue?bd48","webpack:///./ci/common/private/job_action_component.vue","webpack:///./ci/pipeline_details/graph/components/root_graph_layout.vue?ee98","webpack:///ci/pipeline_details/graph/components/root_graph_layout.vue","webpack:///./ci/pipeline_details/graph/components/root_graph_layout.vue?838c","webpack:///./ci/pipeline_details/graph/components/root_graph_layout.vue","webpack:///./ci/pipeline_details/graph/components/job_item.vue?d359","webpack:///ci/pipeline_details/graph/components/job_item.vue","webpack:///./ci/pipeline_details/graph/components/job_item.vue?b8f3","webpack:///./ci/pipeline_details/graph/components/job_item.vue","webpack:///./ci/pipeline_details/graph/components/job_group_dropdown.vue?4aa0","webpack:///ci/pipeline_details/graph/components/job_group_dropdown.vue","webpack:///./ci/pipeline_details/graph/components/stage_column_component.vue?fdb7","webpack:///ci/pipeline_details/graph/components/stage_column_component.vue","webpack:///./ci/pipeline_details/graph/components/job_group_dropdown.vue?1658","webpack:///./ci/pipeline_details/graph/components/job_group_dropdown.vue","webpack:///./ci/pipeline_details/graph/components/stage_column_component.vue?8d35","webpack:///./ci/pipeline_details/graph/components/stage_column_component.vue","webpack:///./ci/pipeline_details/graph/components/graph_component.vue?032e","webpack:///ci/pipeline_details/graph/components/graph_component.vue","webpack:///./ci/pipeline_details/graph/components/graph_component.vue?11ef","webpack:////build/source/node_modules/core-js/modules/esnext.string.at.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/dismiss_finding.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_counts.vue?52ff","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_counts.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_counts.vue?2469","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_counts.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/empty_states/dashboard_has_no_vulnerabilities.vue?9284","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/empty_states/dashboard_has_no_vulnerabilities.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/empty_states/dashboard_has_no_vulnerabilities.vue?ce5f","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/empty_states/dashboard_has_no_vulnerabilities.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/empty_states/filters_produced_no_results.vue?2cf8","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/empty_states/filters_produced_no_results.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/empty_states/filters_produced_no_results.vue?0e1c","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/empty_states/filters_produced_no_results.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/store/utils/get_primary_identifier.js","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/false_positive_badge.vue?5868","webpack:///../../../ee/app/assets/javascripts/vulnerabilities/components/false_positive_badge.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/false_positive_badge.vue?c7d1","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/false_positive_badge.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/resolution_badge.vue?5cd9","webpack:///../../../ee/app/assets/javascripts/vulnerabilities/components/resolution_badge.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/resolution_badge.vue?fa17","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/resolution_badge.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/merge_request_badge.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/merge_request_badge.vue?6668","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/merge_request_badge.vue?3768","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/merge_request_badge.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/issue_link.vue?8e6c","webpack:///../../../ee/app/assets/javascripts/vulnerabilities/components/issue_link.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/issue_link.vue?d0af","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/issue_link.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/issues_badge.vue?049d","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/issues_badge.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/issues_badge.vue?2bc7","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/issues_badge.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/solution_badge.vue?d97a","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/solution_badge.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/solution_badge.vue?d318","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/solution_badge.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/ai_resolution_badge.vue?64a5","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/ai_resolution_badge.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/ai_resolution_badge.vue?e30b","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/ai_resolution_badge.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_comment_icon.vue?ab8f","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_comment_icon.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_comment_icon.vue?1c56","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_comment_icon.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_path.vue?5c33","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_path.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_path.vue?dfbf","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_path.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/utils/event_hub.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/selection_summary.vue?99a2","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/selection_summary.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/selection_summary.vue?dc0a","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/selection_summary.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list_status.vue?83a8","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list_status.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list_status.vue?2dc5","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list_status.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/security_scores.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/security_scores.vue?a00c","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/security_scores.vue?3461","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/security_scores.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list.vue?ebef","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list.vue?252b","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list_graphql.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list_graphql.vue?54ef","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list_graphql.vue?35ac","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_list_graphql.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/filters/project_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/project_filter.vue?f7a4","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/project_filter.vue?da9c","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/project_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/cluster_filter.vue?d2fc","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/filters/cluster_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/cluster_filter.vue?4dd1","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/cluster_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/image_filter.vue?8132","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/filters/image_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/image_filter.vue?11ce","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/image_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/tool_filter.vue?331e","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/filters/tool_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/tool_filter.vue?1508","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/tool_filter.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/filters/tool_with_vendor_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/tool_with_vendor_filter.vue?8089","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/tool_with_vendor_filter.vue?1bba","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/tool_with_vendor_filter.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/filters/severity_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/severity_filter.vue?630d","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/severity_filter.vue?ca6b","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/severity_filter.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/filters/pipeline_status_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/pipeline_status_filter.vue?8757","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/pipeline_status_filter.vue?672d","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/pipeline_status_filter.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_filters.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_filters.vue?e9da","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_filters.vue?8317","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_filters.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_report.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_report.vue?6f17","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_report.vue?a75a","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/vulnerability_report.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/helpers.js","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/helpers.js","webpack:////build/source/node_modules/lodash/_baseAssign.js","webpack:///./vue_shared/issuable/list/constants.js","webpack:////build/source/node_modules/lodash/isError.js","webpack:///./highlight_js/index.js","webpack:///./vue_shared/components/code_block.vue","webpack:///./vue_shared/components/code_block.vue?32d9","webpack:///vue_shared/components/code_block.vue","webpack:///./vue_shared/components/code_block.vue?9c6a","webpack:////build/source/node_modules/lodash/clone.js","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_cancel.mutation.graphql","webpack:////build/source/node_modules/lodash/_baseInverter.js","webpack:////build/source/ee/app/assets/javascripts/dependencies/components/sbom_reports_errors_alert.vue","webpack:///../../../ee/app/assets/javascripts/dependencies/components/sbom_reports_errors_alert.vue","webpack:////build/source/ee/app/assets/javascripts/dependencies/components/sbom_reports_errors_alert.vue?dc28","webpack:////build/source/ee/app/assets/javascripts/dependencies/components/sbom_reports_errors_alert.vue?ff84","webpack:////build/source/node_modules/core-js/internals/array-method-is-strict.js","webpack:///./vue_shared/components/help_page_link/help_page_link.vue","webpack:///./vue_shared/components/help_page_link/help_page_link.vue?adf3","webpack:///vue_shared/components/help_page_link/help_page_link.vue","webpack:///./vue_shared/components/help_page_link/help_page_link.vue?d028","webpack:///./ci/pipeline_mini_graph/graphql/fragments/job.fragment.graphql","webpack:////build/source/node_modules/lodash/_createSet.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/revert_finding_to_detected.mutation.graphql","webpack:///./vue_shared/mixins/gl_abilities_mixin.js","webpack:///./lib/utils/http_status.js","webpack:////build/source/node_modules/lodash/_baseMap.js","webpack:///./ci/pipeline_details/stores/test_reports/utils.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/mixins/reports_mixin.js","webpack:////build/source/node_modules/lodash/toPath.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/constants.js","webpack:///./lib/utils/number_utils.js","webpack:////build/source/node_modules/vue-virtual-scroll-list/dist/index.js","webpack:///./notes/components/note_header.vue","webpack:///./notes/components/note_header.vue?4b13","webpack:///notes/components/note_header.vue","webpack:///./notes/components/note_header.vue?0c8b","webpack:///./vue_shared/components/source_viewer/constants.js","webpack:////build/source/node_modules/lodash/_baseDifference.js","webpack:///./ci/reports/components/report_item.vue","webpack:///./ci/reports/components/report_item.vue?b22d","webpack:///ci/reports/components/report_item.vue","webpack:///./ci/reports/components/report_item.vue?c5d4","webpack:////build/source/node_modules/lodash/upperFirst.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/utils/stable-sort.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/accordion/accordion.js","webpack:///./ci/jobs_page/graphql/mutations/job_cancel.mutation.graphql","webpack:////build/source/node_modules/@gitlab/svgs/dist/illustrations/empty-state/empty-search-md.svg","webpack:////build/source/node_modules/lodash/before.js","webpack:////build/source/node_modules/lodash/differenceWith.js","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/data_utils.js","webpack:////build/source/node_modules/lodash/_cloneSymbol.js","webpack:///./vue_shared/components/gl_countdown.vue","webpack:///./vue_shared/components/gl_countdown.vue?1908","webpack:///vue_shared/components/gl_countdown.vue","webpack:///./vue_shared/components/gl_countdown.vue?3137","webpack:///./lib/utils/downloader.js","webpack:////build/source/node_modules/lodash/escapeRegExp.js","webpack:///./ci/jobs_page/constants.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/utils/constants.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/mr_widget_license_report.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/store/actions.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/store/mutation_types.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/store/getters.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/store/mutations.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/store/index.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/store/state.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/mr_widget_license_report.vue?816e","webpack:///../../../ee/app/assets/javascripts/vue_shared/license_compliance/mr_widget_license_report.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/store/constants.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/mr_widget_license_report.vue?5b69","webpack:///./ci/reports/codequality_report/utils/codequality_parser.js","webpack:///../../../ee/app/assets/javascripts/codequality_report/codequality_report.vue","webpack:////build/source/ee/app/assets/javascripts/codequality_report/codequality_report.vue?7a3b","webpack:////build/source/ee/app/assets/javascripts/codequality_report/constants.js","webpack:////build/source/ee/app/assets/javascripts/codequality_report/codequality_report.vue?9a5b","webpack:////build/source/ee/app/assets/javascripts/codequality_report/codequality_report.vue","webpack:///./ci/pipeline_details/graph/components/graph_view_selector.vue?4e5c","webpack:///ci/pipeline_details/graph/components/graph_view_selector.vue","webpack:///./ci/pipeline_details/graph/components/graph_view_selector.vue?7ba1","webpack:///./ci/pipeline_details/graph/components/graph_view_selector.vue","webpack:///ci/pipeline_details/graph/graph_component_wrapper.vue","webpack:///./ci/pipeline_details/graph/graph_component_wrapper.vue?c29c","webpack:///./ci/pipeline_details/graph/graph_component_wrapper.vue?d0cf","webpack:///./ci/pipeline_details/graph/graph_component_wrapper.vue","webpack:///./ci/pipeline_details/jobs/components/failed_jobs_table.vue?88f7","webpack:///ci/pipeline_details/jobs/components/failed_jobs_table.vue","webpack:///./ci/pipeline_details/jobs/components/failed_jobs_table.vue?93b6","webpack:///./ci/pipeline_details/jobs/components/failed_jobs_table.vue","webpack:///./ci/pipeline_details/jobs/failed_jobs_app.vue?ffd5","webpack:///ci/pipeline_details/jobs/failed_jobs_app.vue","webpack:///./ci/pipeline_details/jobs/failed_jobs_app.vue?a678","webpack:///./ci/pipeline_details/jobs/failed_jobs_app.vue","webpack:///./ci/pipeline_details/jobs/jobs_app.vue?1a7b","webpack:///ci/pipeline_details/jobs/jobs_app.vue","webpack:///./ci/pipeline_details/jobs/jobs_app.vue?ed9b","webpack:///./ci/pipeline_details/jobs/jobs_app.vue","webpack:///ci/pipeline_details/test_reports/empty_state.vue","webpack:///./ci/pipeline_details/test_reports/empty_state.vue?f225","webpack:///./ci/pipeline_details/test_reports/empty_state.vue?2826","webpack:///./ci/pipeline_details/test_reports/empty_state.vue","webpack:///ci/pipeline_details/test_reports/test_suite_table.vue","webpack:///./ci/pipeline_details/test_reports/test_suite_table.vue?7594","webpack:///./ci/pipeline_details/test_reports/test_suite_table.vue?afc9","webpack:///./ci/pipeline_details/test_reports/test_suite_table.vue","webpack:///./ci/pipeline_details/test_reports/test_summary.vue?215f","webpack:///ci/pipeline_details/test_reports/test_summary.vue","webpack:///./ci/pipeline_details/test_reports/test_summary.vue?4e12","webpack:///./ci/pipeline_details/test_reports/test_summary.vue","webpack:///./ci/pipeline_details/test_reports/test_summary_table.vue?cadf","webpack:///ci/pipeline_details/test_reports/test_summary_table.vue","webpack:///./ci/pipeline_details/test_reports/test_summary_table.vue?f23a","webpack:///./ci/pipeline_details/test_reports/test_summary_table.vue","webpack:///./ci/pipeline_details/test_reports/test_reports.vue?3ca6","webpack:///ci/pipeline_details/test_reports/test_reports.vue","webpack:///./ci/pipeline_details/test_reports/test_reports.vue?4ebd","webpack:///./ci/pipeline_details/test_reports/test_reports.vue","webpack:////build/source/node_modules/@gitlab/svgs/dist/illustrations/empty-state/empty-variables-md.svg","webpack:///./ci/pipeline_details/manual_variables/empty_state.vue?f197","webpack:///ci/pipeline_details/manual_variables/empty_state.vue","webpack:///./ci/pipeline_details/manual_variables/empty_state.vue?1256","webpack:///./ci/pipeline_details/manual_variables/empty_state.vue","webpack:///ci/pipeline_details/manual_variables/variable_table.vue","webpack:///./ci/pipeline_details/manual_variables/variable_table.vue?d3b9","webpack:///./ci/pipeline_details/manual_variables/variable_table.vue?fe9c","webpack:///./ci/pipeline_details/manual_variables/variable_table.vue","webpack:///./ci/pipeline_details/manual_variables/manual_variables.vue?75e9","webpack:///ci/pipeline_details/manual_variables/manual_variables.vue","webpack:///./ci/pipeline_details/manual_variables/manual_variables.vue?82b8","webpack:///./ci/pipeline_details/manual_variables/manual_variables.vue","webpack:///./ci/pipeline_details/routes.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/pipeline_security_dashboard.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/constants.js","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/pipeline/scan_alerts.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/scan_alerts.vue?621e","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/scan_alerts.vue?6787","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/scan_alerts.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/pipeline/report_status_alert.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/report_status_alert.vue?8158","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/report_status_alert.vue?2d21","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/report_status_alert.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/dast_modal.vue?88ac","webpack:///../../../ee/app/assets/javascripts/vue_shared/security_reports/components/dast_modal.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/dast_modal.vue?ddd4","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/dast_modal.vue","webpack:///./vue_shared/security_reports/components/security_report_download_dropdown.vue?08ac","webpack:///vue_shared/security_reports/components/security_report_download_dropdown.vue","webpack:///./vue_shared/security_reports/components/security_report_download_dropdown.vue?8bb0","webpack:///./vue_shared/security_reports/components/security_report_download_dropdown.vue","webpack:///./vue_shared/security_reports/utils.js","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/pipeline/security_reports_summary.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/security_reports_summary.vue?4a5b","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/security_reports_summary.vue?e73e","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/security_reports_summary.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/pipeline_vulnerability_report.vue?06ea","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/pipeline/pipeline_vulnerability_report.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/pipeline_vulnerability_report.vue?7271","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/pipeline_vulnerability_report.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/pipeline_security_dashboard.vue?178a","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/pipeline/pipeline_security_dashboard.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/pipeline_security_dashboard.vue?9f5a","webpack:////build/source/ee/app/assets/javascripts/ci/pipeline_details/routes.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js","webpack:///../../../ee/app/assets/javascripts/vulnerabilities/components/generic_report/report_item_graphql.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/generic_report/report_item_graphql.vue?3483","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/generic_report/report_item_graphql.vue?9b6b","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/generic_report/report_item_graphql.vue","webpack:////build/source/node_modules/@gitlab/ui/dist/components/utilities/friendly_wrap/friendly_wrap.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/severity_badge.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/severity_badge.vue?3f76","webpack:///../../../ee/app/assets/javascripts/vue_shared/security_reports/components/severity_badge.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/severity_badge.vue?c110","webpack:///./ci/mixins/delayed_job_mixin.js","webpack:////build/source/node_modules/lodash/fp/_mapping.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/vulnerabilities_dismiss.mutation.graphql","webpack:////build/source/node_modules/lodash/curry.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/collapse/collapse.js","webpack:///./ci/admin/jobs_table/constants.js","webpack:////build/source/node_modules/lodash/_initCloneArray.js","webpack:////build/source/ee/app/assets/javascripts/codequality_report/graphql/queries/get_code_quality_violations.query.graphql","webpack:///./ci/pipeline_details/manual_variables/graphql/queries/get_manual_variables.query.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/vulnerability_resolve.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/queries/cluster_agents.query.graphql","webpack:////build/source/node_modules/immer/dist/immer.esm.js","webpack:////build/source/node_modules/lodash/_baseUnset.js","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/graphql/ai_resolve_vulnerability.mutation.graphql","webpack:///./ci/runner/constants.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/status_filter.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/filters/status_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/status_filter.vue?6d57","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/status_filter.vue?86e0","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/finding_create_issue.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_report/constants.js","webpack:////build/source/node_modules/lodash/rearg.js","webpack:////build/source/node_modules/lodash/uniq.js","webpack:////build/source/node_modules/lodash/_baseUniq.js","webpack:////build/source/node_modules/lodash/isMap.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/regions/empty_state/empty_state.js","webpack:////build/source/node_modules/lodash/isWeakMap.js","webpack:////build/source/node_modules/lodash/_createInverter.js","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/constants.js","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/filters/activity_filter.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/activity_filter.vue?6258","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/activity_filter.vue?5d00","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/activity_filter.vue","webpack:///./ci/pipeline_details/jobs/graphql/mutations/retry_failed_job.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/finding_create_jira_issue.mutation.graphql","webpack:////build/source/node_modules/lodash/last.js","webpack:////build/source/node_modules/lodash/fp/curry.js","webpack:////build/source/node_modules/lodash/_copySymbols.js","webpack:////build/source/node_modules/@gitlab/svgs/dist/illustrations/logos/jira.svg","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/queries/instance_projects.query.graphql","webpack:////build/source/node_modules/lodash/fp/placeholder.js","webpack:///./ci/pipeline_details/graph/graphql/mutations/dismiss_pipeline_notification.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/constants.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/vulnerability_dismiss.mutation.graphql","webpack:///./lib/utils/poll.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/utils/utils.js","webpack:////build/source/node_modules/lodash/_createCaseFirst.js","webpack:////build/source/app/graphql/queries/repository/blob_info.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/toggle/toggle.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/querystring_sync.vue?d718","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/filters/querystring_sync.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/filters/querystring_sync.vue","webpack:////build/source/node_modules/lodash/map.js","webpack:////build/source/node_modules/core-js/modules/esnext.array.group-by.js","webpack:////build/source/node_modules/lodash/fp/convert.js","webpack:///./security_configuration/graphql/configure_iac.mutation.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/collapse/helpers/bv-collapse.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/collapse/collapse.js","webpack:///./content_editor/services/highlight_js_language_loader.js","webpack:////build/source/node_modules/lodash/cloneDeep.js","webpack:///./vue_shared/components/source_viewer/workers/highlight_utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/keyset_pagination/keyset_pagination.js","webpack:////build/source/node_modules/lodash/_copySymbolsIn.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/vulnerability_revert_to_detected.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/queries/agent_images.query.graphql","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/vulnerability_training.vue","webpack:///../../../ee/app/assets/javascripts/vulnerabilities/components/vulnerability_training.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/vulnerability_training.vue?5792","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/vulnerability_training.vue?c6cc","webpack:///./ci/common/private/job_name_component.vue","webpack:///./ci/common/private/job_name_component.vue?272b","webpack:///ci/common/private/job_name_component.vue","webpack:///./ci/common/private/job_name_component.vue?453a","webpack:///./ci/reports/codequality_report/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/animated_icon/animated_chevron_right_down_icon.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/accordion/accordion_item.js","webpack:////build/source/node_modules/lodash/once.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/vulnerability_confirm.mutation.graphql","webpack:///./security_configuration/graphql/configure_sast.mutation.graphql","webpack:///./ci/pipeline_details/jobs/graphql/queries/get_pipeline_jobs.query.graphql","webpack:////build/source/node_modules/portal-vue/dist/portal-vue.common.js","webpack:////build/source/node_modules/lodash/_cloneDataView.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/nav/nav.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/tabs/tabs.js","webpack:///./lib/utils/poll_until_complete.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/pagination/pagination.js","webpack:////build/source/node_modules/lodash/_baseAssignIn.js","webpack:////build/source/node_modules/core-js/internals/string-multibyte.js","webpack:////build/source/node_modules/lodash/omit.js","webpack:///./vue_shared/security_reports/graphql/fragments/job_artifacts.fragment.graphql","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_retry.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/helpers.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/tabs/tab.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/tab/tab.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/constants.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/summary_highlights.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/summary_highlights.vue?f4b3","webpack:///../../../ee/app/assets/javascripts/vue_shared/security_reports/components/summary_highlights.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/summary_highlights.vue?bedb","webpack:///./vue_merge_request_widget/components/mr_widget_status_icon.vue","webpack:///./vue_merge_request_widget/components/mr_widget_status_icon.vue?f2cf","webpack:///vue_merge_request_widget/components/mr_widget_status_icon.vue","webpack:///./vue_merge_request_widget/components/mr_widget_status_icon.vue?1a3a","webpack:///./ci/jobs_page/graphql/mutations/job_play.mutation.graphql","webpack:///./vue_shared/components/source_viewer/plugins/wrap_child_nodes.js","webpack:///./vue_shared/components/source_viewer/plugins/wrap_bidi_chars.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/dependency_linker_util.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/package_json_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/gemspec_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/godeps_json_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/gemfile_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/podspec_json_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/composer_json_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/go_sum_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/link_dependencies.js","webpack:///./vue_shared/components/source_viewer/plugins/wrap_lines.js","webpack:///./highlight_js/plugins/index.js","webpack:///./vue_shared/plugins/global_toast.js","webpack:///./ci/common/private/job_dropdown_item.vue","webpack:///./ci/common/private/job_action_modal.vue?21ee","webpack:///ci/common/private/job_action_modal.vue","webpack:///./ci/common/private/job_action_modal.vue?c514","webpack:///./ci/common/private/job_action_modal.vue","webpack:///ci/common/private/job_action_button.vue","webpack:///./ci/common/private/job_action_button.vue?28db","webpack:///./ci/common/private/job_dropdown_item.vue?1d97","webpack:///ci/common/private/job_dropdown_item.vue","webpack:///./ci/common/private/job_action_button.vue?6d71","webpack:///./ci/common/private/job_action_button.vue","webpack:///./ci/common/private/job_dropdown_item.vue?6f73","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_finding_modal.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/dismissal_note.vue?af94","webpack:///../../../ee/app/assets/javascripts/vue_shared/security_reports/components/dismissal_note.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/dismissal_note.vue?6671","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/dismissal_note.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/split_button.vue?b03e","webpack:///../../../ee/app/assets/javascripts/vue_shared/security_reports/components/split_button.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/split_button.vue?c8a5","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/split_button.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_dismissal_reason.vue?5e6c","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_dismissal_reason.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_dismissal_reason.vue?b09c","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_dismissal_reason.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/solution_card_graphql.vue?6f37","webpack:///../../../ee/app/assets/javascripts/vue_shared/security_reports/components/solution_card_graphql.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/solution_card_graphql.vue?ef43","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/solution_card_graphql.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/merge_request_note_graphql.vue?e03e","webpack:///../../../ee/app/assets/javascripts/vue_shared/security_reports/components/merge_request_note_graphql.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/merge_request_note_graphql.vue?d7b5","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/merge_request_note_graphql.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/generic_report/report_section_graphql.vue?a72f","webpack:///../../../ee/app/assets/javascripts/vulnerabilities/components/generic_report/report_section_graphql.vue","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/generic_report/report_section_graphql.vue?39a4","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/components/generic_report/report_section_graphql.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/constants.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/details_section.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/details_section.vue?b063","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/details_section.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/details_section.vue?ca1d","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/details_section_list_item.vue?3f78","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/details_section_list_item.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/details_section_list_item.vue?8d3a","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/details_section_list_item.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/index.vue?0316","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/index.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/index.vue?539d","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/shared/vulnerability_details_graphql/index.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/issue_note_graphql.vue?1fc4","webpack:///../../../ee/app/assets/javascripts/vue_shared/security_reports/components/issue_note_graphql.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_finding_modal_details.vue?fb54","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_finding_modal_details.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/issue_note_graphql.vue?e989","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_reports/components/issue_note_graphql.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_finding_modal_details.vue?b6f3","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_finding_modal_details.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/resolve_with_ai_info_popover.vue?f5d6","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/pipeline/resolve_with_ai_info_popover.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/resolve_with_ai_info_popover.vue?e98d","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/resolve_with_ai_info_popover.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/pipeline/resolve_with_ai_button.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/resolve_with_ai_button.vue?1631","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/resolve_with_ai_button.vue?8a78","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/resolve_with_ai_button.vue","webpack:///../../../ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_finding_modal.vue","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_finding_modal.vue?2f1d","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_finding_modal.vue?7fc6","webpack:///./lib/utils/listbox_helpers.js","webpack:////build/source/node_modules/lodash/_castSlice.js","webpack:////build/source/node_modules/lodash/_baseIsMap.js","webpack:///./ci/jobs_page/components/jobs_table.vue","webpack:///./ci/admin/jobs_table/components/cells/project_cell.vue?4545","webpack:///ci/admin/jobs_table/components/cells/project_cell.vue","webpack:///./ci/admin/jobs_table/components/cells/project_cell.vue?3ee6","webpack:///./ci/admin/jobs_table/components/cells/project_cell.vue","webpack:///ci/runner/components/runner_type_icon.vue","webpack:///./ci/runner/components/runner_type_icon.vue?fa03","webpack:///./ci/runner/components/runner_type_icon.vue?5340","webpack:///./ci/runner/components/runner_type_icon.vue","webpack:///./ci/admin/jobs_table/components/cells/runner_cell.vue?2460","webpack:///ci/admin/jobs_table/components/cells/runner_cell.vue","webpack:///./ci/admin/jobs_table/components/cells/runner_cell.vue?6589","webpack:///./ci/admin/jobs_table/components/cells/runner_cell.vue","webpack:///./ci/jobs_page/components/job_cells/actions_cell.vue?a3d6","webpack:///ci/jobs_page/components/job_cells/actions_cell.vue","webpack:///./ci/jobs_page/components/job_cells/actions_cell.vue?3d1e","webpack:///./ci/jobs_page/components/job_cells/actions_cell.vue","webpack:///./ci/jobs_page/components/job_cells/status_cell.vue?7553","webpack:///ci/jobs_page/components/job_cells/status_cell.vue","webpack:///./ci/jobs_page/components/job_cells/status_cell.vue?c1eb","webpack:///./ci/jobs_page/components/job_cells/status_cell.vue","webpack:///./ci/jobs_page/components/job_cells/job_cell.vue?1844","webpack:///ci/jobs_page/components/job_cells/job_cell.vue","webpack:///./ci/jobs_page/components/job_cells/job_cell.vue?7239","webpack:///./ci/jobs_page/components/job_cells/job_cell.vue","webpack:///./ci/jobs_page/components/job_cells/pipeline_cell.vue?2ca3","webpack:///ci/jobs_page/components/job_cells/pipeline_cell.vue","webpack:///./ci/jobs_page/components/jobs_table.vue?8193","webpack:///ci/jobs_page/components/jobs_table.vue","webpack:///./ci/jobs_page/components/job_cells/pipeline_cell.vue?fdbd","webpack:///./ci/jobs_page/components/job_cells/pipeline_cell.vue","webpack:///./ci/jobs_page/components/jobs_table.vue?52f4","webpack:////build/source/node_modules/lodash/ary.js","webpack:///./vue_shared/components/empty_result.vue","webpack:///vue_shared/components/empty_result.vue","webpack:///./vue_shared/components/empty_result.vue?01ca","webpack:///./vue_shared/components/empty_result.vue?6a49","webpack:///./vue_merge_request_widget/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/table-lite.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/table_lite/table_lite.js","webpack:///./ci/common/private/job_links_layer.vue","webpack:///./ci/pipeline_details/graph/components/links_inner.vue?8ef0","webpack:///ci/pipeline_details/graph/components/links_inner.vue","webpack:///./ci/pipeline_details/graph/components/links_inner.vue?8188","webpack:///./ci/pipeline_details/graph/components/links_inner.vue","webpack:///ci/common/private/job_links_layer.vue","webpack:///./ci/common/private/job_links_layer.vue?8ecf","webpack:///./ci/common/private/job_links_layer.vue?6d09","webpack:////build/source/ee/app/assets/javascripts/vue_shared/license_compliance/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/toaster.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/toast.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/index.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/toast/toast.js","webpack:///./security_configuration/graphql/security_training_providers.query.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/fragments/last_state_transition.fragment.graphql","webpack:////build/source/node_modules/lodash/_cloneRegExp.js","webpack:////build/source/node_modules/lodash/_baseSlice.js"],"names":["constant","createInverter","identity","nativeObjectToString","Object","prototype","toString","invert","result","value","key","call","module","exports","baseClone","baseIteratee","func","addition","a","b","sum","_len","arguments","length","numbers","Array","_key","reduce","average","modulo","n","divisor","engineeringNotation","precision","undefined","invalidValues","NaN","Infinity","num","Number","includes","allYourBase","0","3","6","9","12","15","18","21","24","exponentialNotation","toExponential","power","split","map","scaledPower","Math","floor","scaledMantissa","toFixed","replace","_","fractionalDigits","formatNumberToLocale","options","locales","isNaN","Intl","NumberFormat","format","toFloat","defaultValue","float","parseFloat","doc","loc","source","names","definitions","concat","filter","def","kind","name","definitionRefs","findOperation","i","element","forEach","refs","Set","collectFragmentReferences","node","add","type","selectionSet","selections","selection","variableDefinitions","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","push","oneQuery","Stack","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isArray","isBuffer","isMap","isObject","isSet","keys","keysIn","cloneableTags","bitmask","customizer","object","stack","isDeep","isFlat","isFull","isArr","tag","isFunc","stacked","get","set","subValue","props","createEventHub","__vue_script__","totalItems","required","default","fetchedItems","maxListHeight","computed","maxHeight","this","watch","newVal","oldVal","scrollHeight","scrollTop","$refs","infiniteContainer","$nextTick","newScrollHeight","top","scrollTo","$listeners","topReached","bottomReached","scrollDown","methods","_ref","behavior","$emit","handleScroll","abs","itemsListHeight","__vue_component__","render","_vm","_h","$createElement","_c","_self","_t","_v","_g","_b","ref","staticClass","style","on","$attrs","_s","legendText","staticRenderFns","convertReportType","reportType","lowerCaseType","toLowerCase","REPORT_TYPES_ALL","humanize","vertical","Boolean","class","attrs","PAGE_SIZES","text","n__","components","GlCollapsibleListbox","selectedItem","_this","find","toggleText","emitInput","pageSize","component","$options","$event","baseIsSet","baseUnary","nodeUtil","nodeIsSet","GlButton","directives","GlTooltip","title","String","tooltipContainer","validator","HTMLElement","rawName","container","expression","modifiers","revert","vulnerabilityRevertToDetected","dismiss","vulnerabilityDismiss","confirm","vulnerabilityConfirm","resolve","vulnerabilityResolve","issue","urlPath","path","line","_e","GlIcon","ReportLink","tooltip","GlTooltipDirective","status","STATUS_NEUTRAL","issueName","severityLabel","issueSeverity","_this$issue$severity","severity","isStatusSuccess","STATUS_SUCCESS","severityClass","SEVERITY_CLASSES","unknown","severityIcon","SEVERITY_ICONS","severityText","info","s__","minor","major","critical","blocker","VirtualList","remain","rtag","wtag","wclass","isPlainObject","LOADING","ERROR","SUCCESS","STATUS_FAILED","SLOT_SUCCESS","SLOT_LOADING","SLOT_ERROR","CODE_QUALITY_SCALE_KEY","SAST_SCALE_KEY","NoteHeader","id","author","createdAt","iconName","iconClass","actionButtons","showRightSlot","showActionButtons","isSystemNote","noteId","_l","button","onClick","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","KEYDOWN_KEY_CODES","isNonStandardTag","el","tagName","removeClickListener","handler","removeRootListeners","instance","$off","setToggleState","state","resetProp","prop","handleUpdate","binding","vnode","targets","arg","href","test","t","index","arr","indexOf","getTargets","join","event","keyCode","target","addClickListener","VBToggle","$on","addRootListeners","componentUpdated","updated","baseDifference","baseRest","isArrayLikeObject","without","array","values","wrapIssueWithState","isNew","SmartVirtualList","ReportItem","typicalReportItemHeight","maxShownReportItems","newIssues","unresolvedIssues","resolvedIssues","neutralIssues","showReportSectionStatusIcon","issuesUlElementClass","issueItemClass","nestedLevel","issuesWithState","listClasses","wrapped","IssuesList","HelpPopover","StatusIcon","mixins","glFeatureFlagsMixin","alwaysOpen","loadingText","errorText","successText","infoText","hasIssues","popoverOptions","issuesListContainerClass","shouldEmitToggleEvent","trackAction","data","isCollapsed","isLoading","loadingFailed","isSuccess","isCollapsible","isExpanded","statusIconName","headerText","hasPopover","slotName","toggleCollapsed","api","trackRedisHllUserEvent","normalizeLicense","license","approval_status","approvalStatus","rest","getIssueStatusFromLicenseStatus","LICENSE_APPROVAL_STATUS","ALLOWED","DENIED","getPackagesString","packages","truncate","maxPackages","translatedMessage","packagesString","lastPackage","slice","packageItem","sprintf","convertToOldReportFormat","classification","dependencies","addLicensesMatchingReportGroupStatus","licenses","licensesGroupedByStatus","_groupBy","reportGroup","reportGroupHasAtLeastOneLicense","deepFreeze","obj","Map","clear","delete","Error","freeze","getOwnPropertyNames","isFrozen","Response","mode","isMatchIgnored","escapeHTML","inherit$1","original","objects","create","emitsWrappingTags","scope","HTMLRenderer","parseTree","buffer","classPrefix","walk","className","prefix","startsWith","pieces","shift","x","repeat","scopeToCSSClass","span","newNode","opts","children","assign","TokenTree","rootNode","pop","closeNode","JSON","stringify","builder","constructor","_walk","addText","openNode","child","every","_collapse","TokenTreeEmitter","super","emitter","root","closeAllNodes","re","lookahead","anyNumberOfTimes","optional","args","either","splice","stripOptionsFromArgs","capture","countMatchGroups","RegExp","exec","BACKREF_RE","_rewriteBackreferences","regexps","joinWith","numCaptures","regex","offset","out","match","substring","C_NUMBER_RE","BACKSLASH_ESCAPE","begin","relevance","APOS_STRING_MODE","end","illegal","contains","QUOTE_STRING_MODE","COMMENT","modeOptions","excludeBegin","ENGLISH_WORD","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","__proto__","BINARY_NUMBER_RE","END_SAME_AS_BEGIN","m","resp","_beginMatch","ignoreMatch","IDENT_RE","MATCH_NOTHING_RE","NUMBER_RE","PHRASAL_WORDS_MODE","RE_STARTERS_RE","SHEBANG","beginShebang","binary","UNDERSCORE_IDENT_RE","skipIfHasPrecedingDot","response","input","scopeClassName","_parent","beginKeywords","parent","__beforeBegin","keywords","compileIllegal","compileMatch","compileRelevance","beforeMatchExt","beforeMatch","starts","originalMode","endsParent","COMMON_KEYWORDS","scoreForKeyword","keyword","providedScore","commonKeyword","seenDeprecations","error","message","console","warn","log","deprecated","version","MultiClassError","remapScopeNames","regexes","scopeNames","emit","positions","_emit","_multi","MultiClass","beginScope","scopeSugar","_wrap","endScope","skip","returnBegin","beginMultiClass","excludeEnd","returnEnd","endMultiClass","compileLanguage","language","langRe","global","case_insensitive","unicodeRegex","MultiRegex","matchIndexes","matchAt","position","terminators","matcherRe","lastIndex","s","findIndex","matchData","ResumableMultiRegex","rules","multiRegexes","count","regexIndex","matcher","addRule","compile","getMatcher","resumingScanAtSamePosition","m2","considerAll","compilerExtensions","classNameAliases","compileMode","cmode","isCompiled","ext","keywordPattern","$pattern","compileKeywords","rawKeywords","caseInsensitive","scopeName","compiledKeywords","compileList","keywordList","pair","keywordPatternRe","beginRe","endsWithParent","endRe","terminatorEnd","illegalRe","c","variants","cachedVariants","variant","dependencyOnParent","expandOrCloneMode","mm","term","rule","buildModeRegex","HTMLInjectionError","reason","html","escape","inherit","NO_MATCH","Symbol","HLJS","hljs","languages","aliases","plugins","SAFE_MODE","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","disableAutodetect","ignoreUnescapedHTML","throwUnescapedHTML","noHighlightRe","languageDetectRe","cssSelector","__emitter","shouldNotHighlight","languageName","highlight","codeOrLanguageName","optionsOrCode","ignoreIllegals","code","context","fire","_highlight","codeToHighlight","continuation","keywordHits","processKeywords","modeBuffer","buf","word","matchText","keywordRelevance","cssClass","emitKeyword","processBuffer","subLanguage","continuations","highlightAuto","__addSublanguage","_emitter","processSubLanguage","startScope","emitMultiClass","max","klass","startNewMode","doIgnore","lexeme","resumeScanAtSamePosition","doEndMatch","matchPlusRemainder","endMode","endOfMode","matched","origin","lastMatch","processLexeme","textBeforeMatch","err","badRule","newMode","beforeCallbacks","cb","doBeginMatch","processed","iterations","getLanguage","md","list","current","unshift","item","processContinuations","__emitTokens","processedCount","finalize","toHTML","_top","_illegalBy","resultSoFar","errorRaised","languageSubset","plaintext","justTextHighlightResult","results","autoDetection","sorted","sort","supersetOf","best","secondBest","highlightElement","block","classes","parentNode","_class","blockLanguage","dataset","highlighted","innerHTML","textContent","currentLang","resultLang","classList","updateClassName","wantsHighlight","highlightAll","document","readyState","window","addEventListener","querySelectorAll","registerAliases","aliasList","alias","lang","plugin","highlightBlock","configure","userOptions","initHighlighting","initHighlightingOnLoad","registerLanguage","languageDefinition","error$1","rawDefinition","bind","unregisterLanguage","listLanguages","addPlugin","upgradePluginAPI","removePlugin","debugMode","safeMode","versionString","newInstance","HighlightJS","EventHub","$_all","dispose","handlers","newHandlers","$once","wrapHandler","isItem","_item$text","items","itemValidator","isGroup","group","itemsValidator","hasOnlyListItemsVue2","defaultSlot","nodes","tags","vNode","_vNode$componentOptio","componentOptions","isValidSlotTagVue2","hasOnlyListItemsVue3","fragment","trim","_vNode$type","isValidSlotTagVue3","hasOnlyListItems","upperFirst","string","unique","defs","cloneArrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","Ctor","fileExtensionIcons","htm","html_vm","asp","jade","pug","markdown","mdown","mkd","mkdn","rst","blink","css","scss","sass","less","json","yaml","yml","xml","plist","xsd","dtd","xsl","xslt","resx","iml","xquery","tmLanguage","manifest","project","png","jpeg","jpg","gif","svg","ico","tif","tiff","psd","psb","ami","apx","bmp","bpg","brk","cur","dds","dng","exr","fpx","gbr","img","jbig2","jb2","jng","jxr","pbm","pgf","pic","raw","webp","js","cjs","ejs","esx","mjs","jsx","tsx","ini","dlc","dll","config","conf","properties","settings","option","toml","prefs","ts","cts","mts","marko","pdf","xlsx","xls","ods","csv","tsv","vscodeignore","vsixmanifest","vsix","suo","sln","csproj","vb","pdb","sql","pks","pkb","accdb","mdb","sqlite","cs","zip","tar","gz","xz","bzip2","gzip","rar","tgz","exe","msi","java","jar","jsp","h","cc","cpp","cxx","hpp","go","py","url","sh","ksh","csh","tcsh","zsh","bash","bat","cmd","ps1","psm1","psd1","ps1xml","psc1","pssc","gradle","docx","odt","rtf","cer","cert","crt","pub","pem","asc","gpg","woff","woff2","ttf","eot","suit","otf","bmap","fnt","odttf","ttc","font","fonts","sui","ntf","mrf","lib","bib","rb","erb","fs","fsx","fsi","fsproj","swift","ino","dockerignore","dockerfile","tex","cls","sty","pptx","ppt","pptm","potx","pot","potm","ppsx","ppsm","pps","ppam","ppa","odp","webm","mkv","flv","vob","ogv","ogg","gifv","avi","mov","qt","wmv","yuv","rm","rmvb","mp4","m4v","mpg","mp2","mpeg","mpe","mpv","m2v","vdi","vbox","ics","mp3","flac","m4a","wma","aiff","coffee","txt","graphql","rs","raml","xaml","hs","kt","kts","patch","lua","clj","cljs","groovy","r","rmd","dart","as","mxml","ahk","swf","swc","cmake","asm","a51","inc","nasm","ms","agc","ags","aea","argus","mitigus","binsource","vue","ml","mli","cmx","lock","hbs","mustache","pl","pm","hx","pp","ex","exs","ls","erl","twig","jl","elm","pure","tpl","styl","rei","cmj","merlin","v","vhd","sv","svh","nb","wl","wls","njk","nunjucks","robot","sol","au3","haml","yang","tf","tfvars","tfstate","applescript","cake","feature","nim","nimble","apib","apiblueprint","vfl","kl","pcss","sss","todo","cfml","cfc","lucee","cabal","nix","slim","http","rql","restql","kv","graphcool","sbt","cr","cu","cuh","twoFileExtensionIcons","fileNameIcons","makefile","gradlew","COPYING","LICENSE","LICENCE","changelog","CREDITS","procfile","jenkinsfile","Rakefile","browserslist","getIconForFile","GlLoadingIcon","fileName","fileMode","folder","submodule","opened","loading","cssClasses","isSymlink","FILE_SYMLINK_MODE","spriteHref","gon","sprite_file_icons","folderIconName","iconSizeClass","isObjectLike","lineToMarkersInfo","content","lineNum","markLineInfo","_stepNumbersArr$map$j","stepNumberSpan","stepNumberSpanNone","wrappedLine","stepNumbersArr","markLine","stepNumber","stepNumbers","startLine","textSpanMarkerIdPrefix","inlineItemMark","contentStartIndex","trimStart","textMarkerIdPrefix","inlineSectionMarker","markLinesWithDiv","BlobFilepath","VulnerabilityFileContentViewer","GlSprintf","GlAlert","WebIdeLink","hlInfo","blobInfo","filePath","branchRef","selectedStepNumber","loadingError","codeBlocks","linesToMarker","expanded","highlightedContent","blobContent","userColorScheme","user_color_scheme","totalLines","_this$content","labelToggleFile","__","collapseIcon","isHighlighted","created","getContent","mergeCodeBlocks","_isEmpty","rawTextBlob","markMultipleLines","highlightContent","then","res","markResult","catch","Sentry","newCodeBlocks","updateCodeBlocks","updateLinesToMarker","handleToggleFile","handleExpandLines","blockStartLine","blockEndLine","getExpandedIcon","isEndOfCodeBlock","i18n","vulnerabilityNotFound","expandAllLines","scopedSlots","_u","fn","proxy","editBlobPath","ideEditPath","highlightSectionInfo","highlightInfo","GlPopover","GlButtonGroup","GlCollapse","GlBadge","GlLink","GlTruncate","description","descriptionHtml","details","rawTextBlobs","_this$details","stepsExpanded","selectedVulnerability","vulnerabilityFlowDetails","groupedItems","acc","fileLocation","fileDescription","getDescription","lineStart","nodeType","numOfSteps","numOfFiles","stepsHeader","mounted","fill","openFileSteps","copyStepsExpanded","getPathIcon","lastIndexOf","selectStep","vulnerabilityItem","getNextIndex","isNext","isOutOfRange","calculation","changeSelectedVulnerability","isNextVulnerability","_this2","_flattenDeep","showNodeTypePopover","sourceNodeTypePopover","sinkNodeTypePopover","toggleAriaLabel","isVisibleCollapse","codeFlowInfoButton","codeFlowInfoAnswer","steps","vulnerabilityFlow","CodeFlowFileViewer","CodeFlowStepsSection","projectFullPath","insideModal","showCodeFlowFileViewer","highlightSourcesInfo","modalContentHeight","fileNames","_map","_uniq","codeSourceFiles","updateModalContentHeight","apollo","query","blobInfoQuery","variables","projectPath","refType","shouldFetchRawText","update","_project$repository","repository","blobs","normalizedCodeFlows","normalizeCodeFlowsInfo","createHighlightSourcesInfo","onSelectedStep","specificBlobInfo","_this$blobInfo$fileNa","_document$querySelect","querySelector","getBoundingClientRect","height","$apollo","queries","VARIANTS","confirmed","resolved","detected","dismissed","stateName","VULNERABILITY_STATES","stateVariant","_uniqueId","modalId","tooltipPlacement","category","modalDomId","clipboard","ClipboardJS","$el","getElementById","body","e","$root","BV_HIDE_TOOLTIP","clearSelection","trigger","blur","destroyed","destroy","placement","importableTypeText","TYPE_ACTIVITY","TYPE_COMMENT","TYPE_DESIGN","TYPE_EPIC","TYPE_ISSUE","TYPE_MERGE_REQUEST","TYPE_SNIPPET","importableType","textOnly","importable","DISCLOSURE_DROPDOWN_ITEM_NAME","DISCLOSURE_DROPDOWN_GROUP_NAME","DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS","bottom","baseAssignValue","createAggregator","groupBy","mapping","fallbackHolder","baseAry","cloneArray","wrapImmutable","cloner","apply","baseConvert","util","isLib","isObj","TypeError","cap","curry","fixed","immutable","rearg","defaultHolder","forceCurry","forceFixed","forceRearg","pristine","runInContext","helpers","ary","clone","isError","isFunction","isWeakMap","iteratee","toInteger","toPath","each","aryMethodKeys","aryMethod","wrappers","castArray","arity","mixin","pairs","nthArg","indexes","castCap","iterateeRearg","overArg","baseArity","iterateeAry","castFixed","skipFixed","methodSpread","start","otherArgs","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","nested","createConverter","realName","aliasToReal","methodName","remap","oldOptions","newUtil","newFunc","newOptions","transform","wrap","placeholder","wrapper","mutate","createCloner","aryKey","otherName","afterRearg","castCurry","convert","realToAlias","DROPDOWN_SELECTOR","ITEM_SELECTOR","events","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GL_DROPDOWN_BEFORE_CLOSE","GL_DROPDOWN_FOCUS_CONTENT","GlBaseDropdown","GlDisclosureDropdownItem","GlDisclosureDropdownGroup","textSrOnly","primary","icon","disabled","toggleId","toggleClass","noCaret","toggleAriaLabelledBy","listAriaLabelledBy","dropdownOffset","fluidWidth","autoClose","positioningStrategy","strategy","startOpened","disclosureId","nextFocusedItemIndex","_this$items","$scopedSlots","$slots","toggle","open","baseDropdown","close","elements","getFocusableListItemElements","stop","focusItem","focusNextItem","handleAutoClose","_this$$refs$content","from","currentIndex","nextIndex","_elements$index","focus","closeAndFocus","action","requestAnimationFrame","closest","uniqueItemId","GL_DROPDOWN_CONTENTS_CLASS","_d","onShow","onHide","onBeforeClose","onKeydown","disclosureTag","handleAction","groupItem","CodeBlock","SafeHtml","endLine","lineNumbers","linesNumbers","lineNumber","currentLineNumber","step","sourceCodeLines","lines","min","markdownBlobData","scrollToSpecificCodeFlow","lineNumberId","numMarkerIdPrefix","unselectedInlineNumberMarkClassName","unselectedInlineNumberMark","storageKey","asString","persist","saveValue","serialize","localStorage","removeItem","exists","getStorageValue","_isEqual","getItem","deserialize","val","setItem","_isString","parse","_this$$scopedSlots$de","_this$$scopedSlots","SAST_SHORT_NAME","ADVANCED_SAST_NAME","SAST_IAC_NAME","SAST_IAC_SHORT_NAME","DAST_SHORT_NAME","DAST_HELP_PATH","helpPagePath","SECRET_DETECTION_NAME","DEPENDENCY_SCANNING_NAME","CONTAINER_SCANNING_NAME","CONTAINER_SCANNING_FOR_REGISTRY_NAME","COVERAGE_FUZZING_NAME","API_FUZZING_NAME","CLUSTER_IMAGE_SCANNING_NAME","PRE_RECEIVE_SECRET_DETECTION","PRE_RECEIVE_SECRET_DETECTION_NAME","SCANNER_NAMES_MAP","SAST","SAST_ADVANCED","SAST_IAC","DAST","API_FUZZING","CONTAINER_SCANNING","CONTAINER_SCANNING_FOR_REGISTRY","COVERAGE_FUZZING","SECRET_DETECTION","DEPENDENCY_SCANNING","CLUSTER_IMAGE_SCANNING","GENERIC","featureToMutationMap","REPORT_TYPE_SAST","mutationId","getMutationPayload","mutation","configureSastMutation","configuration","pipeline","analyzers","REPORT_TYPE_SAST_IAC","configureSastIacMutation","REPORT_TYPE_SECRET_DETECTION","configureSecretDetectionMutation","AUTO_DEVOPS_ENABLED_ALERT_DISMISSED_STORAGE_KEY","TEMP_PROVIDER_LOGOS","Kontra","SecureFlag","TEMP_PROVIDER_URLS","TAB_VULNERABILITY_MANAGEMENT_INDEX","TRACK_TOGGLE_TRAINING_PROVIDER_ACTION","TRACK_TOGGLE_TRAINING_PROVIDER_LABEL","TRACK_CLICK_TRAINING_LINK_ACTION","TRACK_PROVIDER_LEARN_MORE_CLICK_ACTION","TRACK_PROVIDER_LEARN_MORE_CLICK_LABEL","TRACK_TRAINING_LOADED_ACTION","TRACK_PROMOTION_BANNER_CTA_CLICK_ACTION","TRACK_PROMOTION_BANNER_CTA_CLICK_LABEL","configurationHistory","securityTesting","latestPipelineDescription","securityConfiguration","vulnerabilityManagement","securityTraining","securityTrainingDescription","securityTrainingDoc","stateToComponentMap","merged","closed","merging","missingBranch","readyToMerge","nothingToMerge","archived","checking","preparing","pipelineFailed","failedToMerge","shaMismatch","mergeChecksFailed","stateKey","FileIcon","ClipboardButton","blob","showPath","showAsLink","showBlobSize","blobSize","numberToHumanSize","gfmCopyText","showLfsBadge","storedExternally","externalStorage","linkHref","_this$blob","webPath","GlFriendlyWrap","GlModal","ModalCopyButton","testCase","visible","failureHistoryMessage","hasRecentFailures","recentFailures","baseBranch","base_branch","recent_failures","file","duration","history","trace","attachment","copyTestName","modalCloseButton","attributes","classname","formattedTime","execution_time","attachment_url","wrapSymbols","system_output","FEEDBACK_TYPE_ISSUE","FEEDBACK_TYPE_MERGE_REQUEST","REPORT_FILE_TYPES","ARCHIVE","TRACE","METADATA","REPORT_TYPE_DAST","REPORT_TYPE_DEPENDENCY_SCANNING","REPORT_TYPE_CONTAINER_SCANNING","REPORT_TYPE_CONTAINER_SCANNING_FOR_REGISTRY","REPORT_TYPE_CLUSTER_IMAGE_SCANNING","REPORT_TYPE_COVERAGE_FUZZING","REPORT_TYPE_API_FUZZING","reportTypeToSecurityReportTypeEnum","_invert","level","iconAriaLabel","capitalizeFirstCharacter","backgroundClass","_this$$options$EXTENS","EXTENSION_ICON_CLASS","_this$$options$EXTENS2","EXTENSION_ICON_NAMES","comparator","baseFlatten","triggerClass","ariaLabel","targetFn","_this$$refs$popoverTr","popoverTrigger","slot","BULK_IMPORT_STATIC_ITEMS","badges","boards","epics","issues","labels","iterations_cadences","members","merge_requests","milestones","namespace_settings","self","auto_devops","ci_pipelines","container_expiration_policy","design","project_feature","protected_branches","push_rule","service_desk_setting","vulnerabilities","commit_notes","STATISTIC_ITEMS","diff_note","issue_attachment","issue_event","label","lfs_object","merge_request_attachment","milestone","note","note_attachment","protected_branch","collaborator","pull_request","pull_request_merged_by","pull_request_review","pull_request_review_request","release","release_attachment","convertObjectPropsToCamelCase","baseGet","baseSlice","inject","canViewFalsePositive","DOC_PATH_VULNERABILITY_DETAILS","backgroundClasses","success","danger","warning","computedValue","computedMax","statusIconSize","isStatusFailed","isStatusNeutral","failed","neutral","CodequalityIssueBody","iconComponents","IssueStatusIcon","iconComponentNames","componentsCE","LicenseIssueBody","BlockingMergeRequestsBody","componentNames","iconComponentsCE","LicenseStatusIcon","iconComponentNamesCE","CiIcon","styles","actionSizeClasses","flatLeftBorder","flatRightBorder","columnTitle","hasActionTooltip","isActionLoading","isExpandBtnFocus","isDownstream","isCancelable","method","cancelPipeline","isRetryable","retryPipeline","buttonBorderClasses","isUpstream","buttonShadowClass","buttonId","cardClasses","expandedIcon","expandBtnText","childPipeline","isSameProject","downstreamTitle","sourceJobName","graphqlPipelineId","convertToGraphQLId","TYPENAME_CI_PIPELINE","hasUpdatePipelinePermissions","_this$pipeline","userPermissions","updatePipeline","_this$pipeline2","cancelable","DOWNSTREAM","_this$pipeline3","retryable","multiproject","UPSTREAM","parentPipeline","pipelineIsLoading","pipelineStatus","projectName","showAction","_this$action","_this$action2","_this$action3","showCardTooltip","_this$pipeline$source","_this$pipeline$source2","sourceJob","sourceJobInfo","job","cardTooltipText","executePipelineAction","CancelPipelineMutation","ACTION_FAILURE","hideTooltips","onClickLinkedPipeline","linkedPipeline","onDownstreamHovered","onDownstreamHoverLeave","RetryPipelineMutation","setActionTooltip","flag","setExpandBtnActiveState","LinkedPipeline","PipelineGraph","configPaths","validateConfigPaths","linkedPipelines","showLinks","skipRetryModal","viewType","currentPipeline","loadingPipelineId","pipelineLayers","pipelineExpanded","titleClasses","minWidth","ONE_COL_WIDTH","columnClass","graphPosition","right","left","computedTitleClasses","positionalClasses","graphViewType","_this$currentPipeline","usesNeeds","STAGE_VIEW","getPipelineData","fullPath","addSmartQuery","getPipelineDetails","pollInterval","getQueryHeaders","graphqlResourceEtag","iid","_data$project","unwrapPipelineData","LOAD_FAILURE","skipSentry","reportToSentry","serializeLoadErrors","toggleQueryPollingByVisibility","getPipelineLayers","LAYER_VIEW","calculatePipelineLayersInfo","metricsPath","_this$currentPipeline2","isLoadingPipeline","onPipelineClick","_this$currentPipeline3","jobName","onPipelineExpandToggle","showContainer","tooltipText","link","actionIcon","withConfirmationModal","shouldTriggerClick","isDisabled","actionIconDash","dasherize","executeAction","onClickAction","preventDefault","axios","post","createAlert","stopPropagation","GlCard","stageClasses","jobClasses","confirmationModalDocLink","bridgeBadgeText","bridgeRetryText","unauthorizedTooltip","manualConfirmationModal","confirmationText","confirmationModal","linkText","footer","actionCancel","actionPrimary","runAgainTooltipText","hoverClass","ActionComponent","GlForm","GlFormCheckbox","JobNameComponent","delayedJobMixin","cssClassJobName","hideTooltip","jobHovered","pipelineId","sourceJobHovered","stageName","SINGLE_JOB","isLink","currentSkipModalValue","showConfirmationModal","shouldTriggerActionClick","computedJobId","detailsPath","hasDetails","hasRetryAction","_this$job","RETRY_ACTION_TITLE","isRetryableBridge","isBridge","isSingleItem","BRIDGE_KIND","_this$job2","isFailed","_this$job3","shouldRenderLink","nameComponent","confirmationTitle","modal","hasManualConfirmationMessage","confirmationPrimaryText","showStageName","statusTooltip","statusText","isDelayedJob","remainingTime","hasAction","confirmationMessage","hasUnauthorizedManualAction","_this$job$status","_this$job$status2","unauthorizedManualActionIcon","_this$job$status3","relatedDownstreamHovered","relatedDownstreamExpanded","manualConfirmationMessage","jobActionTooltipText","handleConfirmationModalPreferences","SKIP_RETRY_MODAL_KEY","jobItemClick","evt","pipelineActionRequestComplete","$toast","show","executePendingAction","showActionConfirmationModal","toggleSkipRetryModalCheckbox","customClass","nativeOn","model","callback","$$v","JobDropdownItem","JobItem","GlDisclosureDropdown","GlResizeObserver","GlResizeObserverDirective","jobItemTypes","jobDropdown","JOB_DROPDOWN","isMobile","showTooltip","dropdownTooltip","_this$group","_this$group2","handleResize","GlBreakpointInstance","getBreakpointSize","showDropdown","hideDropdown","JobGroupDropdown","jobs","RootGraphLayout","groups","highlightedJobs","isStageView","canUpdatePipeline","columnSpacingClass","getGroupId","groupId","_escape","isFadedOut","isParallel","singleJobExists","_group$jobs","firstJobDefined","confirmAction","sanitize","modalHtmlMessage","primaryBtnText","actionClicked","LinksLayer","LinkedGraphWrapper","LinkedPipelinesColumn","StageColumnComponent","isLinkedPipeline","computedPipelineInfo","MAIN","pipelineTypeConstants","CONTAINER_REF","BASE_CONTAINER_ID","hoveredJobName","hoveredSourceJobName","measurements","width","containerId","downstreamPipelines","hasDownstreamPipelines","keepLatestDownstreamPipelines","downstream","layout","stages","generateColumnsFromLayersListMemoized","hasUpstreamPipelines","upstream","linksData","_this$computedPipelin","_this$computedPipelin2","metricsConfig","collectMetrics","showJobLinks","showDownstreamPipelines","showUpstreamPipelines","upstreamPipelines","getMeasurements","scrollWidth","onError","payload","setJob","setSourceJob","slidePipelineContainer","mainPipelineContainer","scrollBy","togglePipelineExpanded","updateHighlightedJobs","column","$","charAt","requireObjectCoercible","toIntegerOrInfinity","proto","forced","at","S","len","relativeIndex","k","GlSkeletonLoader","SeverityBadge","filters","counts","countsQuery","errorPolicy","isProject","dashboardType","DASHBOARD_TYPE_PROJECT","DASHBOARD_TYPE_GROUP","isInstance","DASHBOARD_TYPE_INSTANCE","capped","vulnerabilitySeveritiesCount","isLoadingCounts","severityCounts","SEVERITIES","formattedCounts","SEVERITY_COUNT_LIMIT","GlEmptyState","primaryButtonText","descriptionLinkText","DOC_PATH_SECURITY_CONFIGURATION","emptyStateSvgPath","noVulnerabilitiesSvgPath","getPrimaryIdentifier","identifiers","property","_identifiers$","identifier","_this$$refs$badge","badge","ICON_COLOR","ICON","mergeRequest","mergeRequestIdString","getIconVariant","getIcon","popover","webUrl","isJira","issueIsClosed","iconVariant","STATUS_CLOSED","jiraLogo","IssueLink","numberOfIssues","popoverTitle","issueBadgeEl","_this$$refs$issueBadg","issueBadge","vulnerability","vulnerabilityPath","location","fileUrl","blobPath","locationString","image","hasBlobPath","shouldShowVulnerabilityPath","GlFormInput","GlFormGroup","vulnerabilitiesQuery","vulnerabilitiesCountsQuery","dismissalDescriptions","selectedVulnerabilities","isSubmitting","rejectedVulnerabilities","selectedStatus","selectedDismissalReason","comment","statusInvalid","dismissalReasonInvalid","commentInvalid","selectedStatusObject","VULNERABILITY_STATE_OBJECTS","statusToggleText","_this$selectedStatusO","dropdownText","statusTogglePlaceholder","dismissalReasonToggleText","DISMISSAL_REASONS","dismissalReasonTogglePlaceholder","commentPlaceholder","isDismissedStatus","requiredCommentPlaceholder","statusItems","isPipeline","findingMutation","dismissalReasonItems","entries","commentAndDismissalReason","dismissalReason","toUpperCase","hasDismissalError","DASHBOARD_TYPE_PIPELINE","idKey","resetSelected","resetState","resetInvalidInputs","updateStatus","ids","vulnerabilitiesDismiss","errors","refetchQueries","awaitRefetchQueries","handleUpdateStateSuccess","setInvalidInputs","handleSubmit","dismissMultipleVulnerabilities","fulfilledCount","promises","_data$queryName$error","queryName","Promise","all","updatedVulnerabilitiesCount","toast","statusChanged","eventHub","getClient","clearStore","cancel","selected","requiredSelection","requiredComment","changeStatus","vulnerabilitiesUpdateFailed","getIdFromGraphQLId","dropdownDescription","stateText","dismissalReasonText","showDismissalReason","popoverId","cveEnrichment","cvss","isKnownExploit","cvssText","_this$cvss","cvssOverallScore","_this$cvss2","overallScore","cveEnrichmentPopoverText","hasCveEnrichment","epssScore","round","epss","kev","GlTable","IssuesBadge","MergeRequestBadge","ResolutionBadge","FalsePositiveBadge","SelectionSummary","SecurityScores","VulnerabilityCommentIcon","VulnerabilityPath","VulnerabilityListStatus","FiltersProducedNoResults","DashboardHasNoVulnerabilities","Portal","SolutionBadge","AiResolutionBadge","glAbilitiesMixin","hasVulnerabilities","canAdminVulnerability","hasJiraVulnerabilitiesIntegrationEnabled","fields","shouldShowProjectNamespace","portalName","sortBy","FIELDS","SEVERITY","sortDesc","isSecurityScoresEnabled","glFeatures","vulnerabilityReportSecurityScores","displayFields","CHECKBOX","hasAnyScannersOtherThanGitLab","some","_v$scanner","_v$scanner2","scanner","vendor","hasSelectedSomeVulnerabilities","numOfSelectedVulnerabilities","hasSelectedAllVulnerabilities","shouldShowSelectionSummary","shouldShowTable","vulnerabilityId","deleteVulnerability","copy","setVulnerability","hasCluster","_item$location$kubern","kubernetesResource","agent","clusterName","_item$location$kubern2","clusterUrl","_item$location$kubern3","deselectVulnerabilities","vulnerabilityIds","deselectAllVulnerabilities","extraIdentifierCount","primaryIdentifier","isSelected","selectAllVulnerabilities","curr","shouldShowExtraIdentifierCount","toggleAllVulnerabilities","toggleVulnerability","gitlabIssues","_item$issueLinks","issueLinks","externalIssues","_item$externalIssueLi","_item$vulnerability","externalIssueLinks","jiraIssues","externalTracker","badgeIssues","formatDate","detectedAt","formatDateTooltip","hasComments","userNotesCount","useConvertReportType","handleSortChange","containerImageAndTag","_item$location","containerImageAndTagUrl","_item$location2","containerRepositoryUrl","getImageText","nameWithNamespace","resolvedOnDefaultBranch","falsePositive","hasRemediations","aiResolutionAvailable","aiResolutionEnabled","glAbilities","resolveVulnerabilityWithAi","vulnerabilityReportVrBadge","GRAPHQL_DATA_PATH","VulnerabilityList","GlKeysetPagination","PageSizeSelector","LocalStorageSync","reportGroupFilters","showProjectNamespace","_localStorage$getItem","pageInfo","initialBefore","$route","before","DEFAULT_PAGE_SIZE","queryVariables","getVulnerabilitiesFromData","fallbackMessage","renderMessageHTML","after","pushQuerystring","parseBoolean","isLoadingVulnerabilities","convertToSnakeCase","vetEnabled","includeExternalIssueLinks","first","last","hasPagination","hasPreviousPage","hasNextPage","newFilters","oldFilters","resetPaging","newSort","oldSort","newVariables","oldVariables","getNextPage","endCursor","getPrevPage","startCursor","$router","_get","PAGE_SIZE_STORAGE_KEY","QUERIES","groupProjectsQuery","instanceProjectsQuery","mapProjects","projects","QuerystringSync","projectNames","searchTerm","hasDropdownBeenOpened","validIds","selectedProjects","unselectedProjects","_this3","isMaxProjectsSelected","allItemsText","ALL_ID","selectedValues","getSelectedOptionsText","isLoadingProjects","isLoadingProjectsById","projectsById","isSearchTooShort","unfetchedIds","_this4","hasOwn","hasInfiniteScroll","noResultsText","noMatchingResults","enterMoreCharactersToSearch","manual","groupFullPath","convertToGraphQLIds","_this5","edges","saveProjectNames","search","mappedProjects","projectIds","projectId","highlightSearchTerm","terms","_escapeRegExp","_this6","fetchNextPage","fetchMore","onSearch","_debounce","DEFAULT_DEBOUNCE_AND_THROTTLE_MS","updateSelected","searchPlaceholder","maxProjectsSelected","setDropdownOpened","clusterAgents","getClusterAgentsQuery","gid","_this$clusterAgents","selectedItems","clusterAgentIds","immediate","clusterAgentId","images","isAgentDashboard","agentImagesQuery","projectImagesQuery","agentName","_data$project2","clusterAgent","vulnerabilityImages","allOption","reportTypes","REPORT_TYPES_WITH_CLUSTER_IMAGE","REPORT_TYPES_WITH_MANUALLY_ADDED","selectedIds","REPORT_TYPE_PRESETS","DEVELOPMENT","DEFAULT_VENDORS","flatMap","manuallyAddedOption","generic","groupedByReport","scanners","optionsWithScanners","REPORT_TYPES_DEFAULT","external_id","SEVERITY_LEVEL_ITEMS","SEVERITY_LEVELS","FILTER_ITEMS","VALID_IDS","OPTIONS","ALL_STATUS_VALUE","searchParamValue","buttonText","VALID_VALUES","DEFAULT_VALUES","updateSelectedFromQS","filterQuery","emitFilterChange","getComponentType","FILTERS","SeverityFilter","STATUS","StatusFilter","PIPELINE_STATUS","PipelineStatusFilter","TOOL_VENDOR","hasCustomVendor","ToolWithVendorFilter","ToolFilter","TOOL_SIMPLE","TOOL_PIPELINE","ACTIVITY","ActivityFilter","PROJECT","ProjectFilter","CLUSTER","ClusterFilter","IMAGE","ImageFilter","updateFilterQuery","oldQuery","_cloneDeep","GROUP_STATE","GROUP_SEVERITY","high","medium","low","GROUP_OWASP_2017","GROUP_OWASP_2021","GROUP_TOOLS","VulnerabilityCounts","VulnerabilityListGraphql","VulnerabilityFilters","PortalTarget","SummaryHighlights","UserCalloutDismisser","FilteredSearch","FilteredSearchV2","filterDropdowns","filterFn","Function","isVisible","showCounts","expandedGroup","groupByQueryParams","lastExpandedGroup","groupCounts","graphqlFilters","showNewFeaturePopover","stickyContainerHeight","isGroupVulnerabilityReport","isProjectVulnerabilityReport","isInstanceVulnerabilityReport","filteredSearchComponent","_this$glFeatures","vulnerabilityReportFilteredSearchV2","groupByOptions","_this$glFeatures2","vulnerabilityReportOwasp2021","shouldShowAdvancedFiltering","shouldShowGroupByButton","owasp_2017","owasp_2021","filterGroupsBySelectedFilter","groupFilters","formatGroupFilters","newValue","resetPagination","updateQueryString","loadCounts","setTimeout","contentRect","_this$graphqlFilters","_this$graphqlFilters2","_this$scanners","_this$graphqlFilters3","_this$graphqlFilters5","scannerId","_this$graphqlFilters4","scannerIds","report_type","_this$groups$groupBy","newQuery","_this$$route","_this$$route2","_this$graphqlFilters6","_this$graphqlFilters7","isDismissedTab","isStateGroup","hasDismissalReasons","owaspTopTen","updateGraphqlFilters","emitCountsChanged","scrollToTopOfList","vulnerabilityListTop","contentTop","scrollToElement","toggleExpandedGroup","computeShowSingleSeverityProp","setVariables","_data$level","_data$level2","groupByNewFeatureTitle","groupByNewFeatureContent","shouldShowCallout","groupByContainer","bodyWithFallBack","EMPTY_BODY_MESSAGE","getHttpString","httpData","headers","statusCode","reasonPhrase","getDismissalNoteEventText","hasProject","hasPipeline","hasDismissalReason","getFormattedIssue","reference","web_url","getAddRelatedIssueRequestParams","defaultProjectId","issueId","REGEXES","ISSUE_FORMAT","isValidURL","isAbsolute","pathname","URL","LINK_FORMAT","target_issue_iid","target_project_id","normalizeGraphQLNote","normalizeGraphQLVulnerability","newVulnerability","_vulnerability","normalizeGraphQLLastStateTransition","graphQLVulnerability","_graphQLLastStateTran","stateTransitions","graphQLLastStateTransitions","formatIdentifierExternalIds","externalType","externalId","isSupportedIdentifier","SUPPORTED_IDENTIFIER_TYPE_CWE","SUPPORTED_IDENTIFIER_TYPE_OWASP","getRefFromBlobPath","getTabIndexForCodeFlowPage","route","_route$query","tab","setTabIndexForCodeFlowPage","router","routeProps","selectedIndex","VULNERABILITY_TAB_INDEX_TO_NAME","copyObject","issuableListTabs","STATUS_OPEN","titleTooltip","STATUS_ALL","mergeRequestListTabs","STATUS_MERGED","availableSortOptions","sortDirection","descending","ascending","DEFAULT_SKELETON_COUNT","baseGetTag","loadLanguage","async","languageLoader","loadSubLanguages","rawContent","ROUGE_TO_HLJS_LANGUAGE_MAP","hljsCore","registerPlugins","initHighlightJs","styleObject","overflowY","baseForOwn","setter","accumulator","DEFAULT_SBOM_ERROR_DESCRIPTION","GlAccordion","GlAccordionItem","HelpPageLink","errorDescription","errorsWithTitles","reportErrors","accordionTitle","ACCORDION_TITLE","SBOM_ERROR_ALERT_TITLE","SBOM_ERROR_ACTION","fails","METHOD_NAME","argument","anchor","compiledHref","noop","setToArray","createSet","HTTP_STATUS_ABORTED","HTTP_STATUS_OK","HTTP_STATUS_CREATED","HTTP_STATUS_NO_CONTENT","HTTP_STATUS_BAD_REQUEST","HTTP_STATUS_UNAUTHORIZED","HTTP_STATUS_FORBIDDEN","HTTP_STATUS_NOT_FOUND","HTTP_STATUS_CONFLICT","HTTP_STATUS_GONE","HTTP_STATUS_PAYLOAD_TOO_LARGE","HTTP_STATUS_UNPROCESSABLE_ENTITY","HTTP_STATUS_TOO_MANY_REQUESTS","HTTP_STATUS_INTERNAL_SERVER_ERROR","successCodes","baseEach","isArrayLike","collection","formatFilePath","iconForTestStatus","testStatus","FAILED","SKIPPED","UNKNOWN","seconds","milliseconds","stringifyTime","parseSeconds","addIconStatus","checkReportStatus","arrayMap","isSymbol","stringToPath","toKey","SEVERITY_CLASS_NAME_MAP","SEVERITY_TOOLTIP_TITLE_MAP","bytesToMiB","number","BYTES_IN_KIB","bytesToGiB","numberToHumanSizeSplit","digits","locale","digitsOptions","minimumFractionDigits","maximumFractionDigits","formatNumberWithLocaleAndDigits","formatNumber","humanSize","numberToMetricPrefix","uppercase","THOUSAND","MILLION","median","middle","changeInPercent","firstY","lastY","formattedChangeInPercent","nonFiniteResult","change","isFinite","isNumeric","parseInt","numberRegex","isPositiveInteger","countFloatingPointDigits","decimal","parts","integer","splitDecimalNumber","factory","_typeof","iterator","namespace","Vue","wait","timeout","later","callNow","clearTimeout","wstyle","pagemode","scrollelement","variable","bench","debounce","totop","tobottom","onscroll","istable","itemcount","itemprops","changeProp","itemModeForceRender","newScrollelement","oldScrollelement","removeScrollListener","addScrollListener","keeps","delta","direction","total","offsetAll","paddingTop","paddingBottom","varCache","varAverSize","varLastCalcIndex","getZone","setScrollTop","getVarOffset","beforeDestroy","beforeUpdate","calcstart","zone","isLast","forceRender","scrollHandler","onScroll","removeEventListener","vsl","scrollelementRect","_elemRect","updateZone","param","fireEvent","overs","getVarOvers","shouldRenderNextZone","lastStart","$forceUpdate","middleOffset","nocache","cache","getVarSize","$children","$vnode","shm","getVarPaddingTop","getVarPaddingBottom","getVarAllHeight","updateVariable","allHeight","slots","hasPadding","renders","ceil","dbc","_this$delta","renderList","display","role","ImportedBadge","TimeAgoTooltip","actionText","noteableType","showSpinner","isInternalNote","isImported","noteUrl","emailParticipant","isUsernameLinkHovered","authorId","authorHref","noteTimestampLink","isGid","hasAuthor","isServiceDeskEmailParticipant","username","authorLinkClasses","hover","authorName","internalNoteTooltip","mapActions","updateTargetNoteHash","$store","setTargetNoteHash","handleUsernameMouseEnter","authorNameLink","dispatchEvent","Event","handleUsernameMouseLeave","domProps","fromEntries","bsl","pascal","jinja","docker","batchfile","hylang","common_lisp","hlsl","make","objective_c","python3","shell","viml","EVENT_ACTION","EVENT_LABEL_VIEWER","EVENT_LABEL_FALLBACK","LINES_PER_CHUNK","NEWLINE","BIDI_CHARS","BIDI_CHARS_CLASS_LIST","BIDI_CHAR_TOOLTIP","LEGACY_FALLBACKS","CODEOWNERS_FILE_NAME","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","isCommon","valuesLength","outer","valuesIndex","iconComponent","createCaseFirst","stableSort","compareFn","accordionId","defaultHeaderLevel","headerLevel","accordionSetId","autoCollapse","differenceWith","intersperse","separator","head","separatorFactory","insert","newItem","symbolProto","symbolValueOf","valueOf","symbol","endDateString","Date","getTime","formatTime","countdownUpdateIntervalId","updateRemainingTime","remainingMilliseconds","calculateRemainingMilliseconds","setInterval","clearInterval","fileData","createElement","download","click","reRegExpChar","reHasRegExpChar","RAW_TEXT_WARNING","JOB_SCHEDULED","JOB_SUCCESS","FILE_TYPE_ARCHIVE","ACTIONS_DOWNLOAD_ARTIFACTS","ACTIONS_START_NOW","ACTIONS_UNSCHEDULE","ACTIONS_PLAY","ACTIONS_RETRY","ACTIONS_RUN_AGAIN","CANCEL","GENERIC_ERROR","PLAY_JOB_CONFIRMATION_MESSAGE","RUN_JOB_NOW_HEADER_TITLE","DEFAULT_FIELDS","tdClass","JOBS_DEFAULT_FIELDS","field","JOBS_TAB_FIELDS","JOBS_PER_PAGE","DEFAULT_PAGINATION","linesPadding","selectedInlineNumberMark","selectedInlineSectionMarker","selectedInlineItemMark","setAPISettings","commit","requestManagedLicenses","receiveManagedLicensesSuccess","receiveManagedLicensesError","fetchManagedLicenses","dispatch","apiUrlManageLicenses","params","per_page","requestParsedLicenseReport","receiveParsedLicenseReportSuccess","reports","receiveParsedLicenseReportError","fetchParsedLicenseReport","pollUntilComplete","licensesApiPath","newLicenses","new_licenses","existingLicenses","existing_licenses","isLoadingManagedLicenses","isLoadingLicenseReport","isLoadingLicenseCheckApprovalRule","isLicenseBeingUpdated","pendingLicenses","licenseReport","licenseReportGroups","REPORT_GROUPS","hasReportItems","getters","licenseReportLength","baseReportHasLicenses","licenseSummaryText","reportName","loadLicenseReportError","hasLicenseCheckApprovalRule","summaryTextWithLicenseCheck","summaryTextWithoutLicenseCheck","reportContainsDeniedLicense","managedLicenses","reverse","use","Vuex","licenseManagementModule","namespaced","approvalsApiPath","canManageLicenses","actions","mutations","ReportSection","HelpIcon","SbomReportsErrorsAlert","reportsMixin","InternalEvents","fullReportPath","apiUrl","reportSectionClass","licenseComplianceDocsPath","securityPoliciesPath","sbomReportsErrors","mapState","mapGetters","hasLicenseReportIssues","licenseReportStatus","showSbomErrors","sbomReportsErrorsDescription","beforeCreate","store","hasModule","registerModule","trackVisitedPath","trackFullReportClick","trackEvent","licenseReportGroup","parseCodeclimateMetrics","_issue$location","issuePath","file_path","parsedIssue","_issue$location2","_issue$location3","parseCodeQualityUrl","GlInfiniteScroll","codequalityViolations","getCodeQualityViolations","pipelineIid","codeQualityReports","parsedList","errored","watchLoading","trackViewEvent","hasCodequalityViolations","_once","codequalityText","issuesWithCount","codequalityStatus","subHeading","showingCount","fetchMoreViolations","updateQuery","previousResult","fetchMoreResult","produce","draftData","GlToggle","tipPreviouslyDismissed","hoverTipDismissed","isToggleLoading","isSwitcherLoading","segmentSelectedType","showLinksActive","hoverTipText","linksLabelText","viewLabelText","views","showLinksToggle","showTip","viewTypesList","dismissTip","isCurrentType","setViewType","toggleShowLinksActive","enumFeatureName","GraphViewSelector","pipelineProjectPath","alertType","callouts","currentViewType","canRefetchHeaderPipeline","showAlert","showJobCountWarning","DRAW_FAILURE","IID_FAILURE","DEFAULT","getUserCallouts","_data$currentUser","currentUser","callout","featureName","headerPipeline","getPipelineQuery","reportFailure","POLL_INTERVAL","_data$project3","stage","hideAlert","alert","_errors$this$alertTyp","_errors$this$alertTyp2","_errors$this$alertTyp3","_errors$this$alertTyp4","showGraphViewSelector","hoverTipPreviouslyDismissed","showLoadingIcon","getPipelineInfo","handleTipDismissal","DismissPipelineGraphCallout","refreshPipelineGraph","refetch","updateShowLinksState","setSkipRetryModal","updateViewType","jobLimitWarning","desc","viewTypeKey","VIEW_TYPE_KEY","retry","GlTableLite","Tracking","failedJobs","track","TRACKING_CATEGORIES","jobRetry","RetryFailedJobMutation","showErrorMessage","visitUrl","detailedStatus","canRetryJob","updateBuild","failureSummary","htmlSummary","failureMessage","retryJob","readBuild","FailedJobsTable","GetFailedJobsQuery","_project$pipeline","_showDetails","GlIntersectionObserver","JobsTable","getPipelineJobs","jobsPageInfo","firstLoad","showSkeletonLoader","showLoadingSpinner","handleJobAction","fetchMoreJobs","noTestsButton","noTestsDescription","noTestsTitle","noReportsButton","noReportsDescription","noReportsTitle","emptyStateImagePath","hasTestReport","emptyStateText","testReportDocPath","expiredArtifactsTitle","expiredArtifactsDescription","GlPagination","TestCaseDetails","GlModalDirective","artifactsExpiredImagePath","heading","hasSuites","getSuiteTests","learnMorePath","perPage","getSuiteTestCount","setPage","page","$set","getSuiteArtifactsExpired","GlProgressBar","report","showBack","successPercentage","totalCompletedCount","total_count","skipped_count","success_count","formattedDuration","total_time","progressBarVariant","onBackClick","failed_count","error_count","rate","sign","getTestSuites","tableRowClick","testSuite","suite_error","refInFor","EmptyState","TestSuiteTable","TestSummary","TestSummaryTable","showSuite","selectedSuiteIndex","showTests","test_suites","testSuites","testReports","fetchSummary","getParameterValues","indexToSelect","setSelectedSuiteIndex","fetchTestSuite","summaryBackClick","removeSelectedSuiteIndex","updateHistory","removeParams","summaryTableRowClick","urlParams","job_name","getSelectedSuite","setUrlParams","beforeEnterTransition","documentElement","overflowX","afterLeaveTransition","EMPTY_VARIABLES_SVG","runPipelineManuallyDocUrl","revealed","currentPage","hasPermission","showPager","manualVariablesCount","toggleRevealed","TABLE_FIELDS","thClass","VARIABLES_PER_PAGE","canReadVariables","VariableTable","getManualVariablesQuery","hasManualVariables","manualVariables","routes","pipelineTabName","PipelineGraphWrapper","jobsTabName","JobsApp","failedJobsTabName","FailedJobsApp","testReportTabName","TestReports","manualVariablesTabName","ManualVariables","reportTypeToSecurityReportTypeEnumCE","securityReportTypeEnumToReportType","TYPE_ERRORS","TYPE_WARNINGS","scans","alertVariant","scansWithTitles","scan","DOC_PATH_SECURITY_SCANNER_INTEGRATION_REPORT","reportStatusTitle","reportExpiredMessage","DOC_PATH_SECURITY_SCANNER_INTEGRATION_RETENTION_PERIOD","scannedUrls","scannedResourcesCount","downloadLink","limitedScannedUrls","requestMethod","artifacts","artifactText","extraAttrs","artifactName","addReportTypeIfExists","getName","downloadPath","Modal","SecurityReportDownloadDropdown","collapseToggle","GlCollapseToggleDirective","summary","scannedResources","scanDetails","downloadUrls","downloadResults","hideDetails","showDetails","collapseButtonLabel","formattedSummary","getFormattedSummary","localStorageUsable","LOCAL_STORAGE_KEY","AccessorUtilities","canUseLocalStorage","shouldHideSummaryDetails","hasScannedResources","scanSummary","_scanSummary$scannedR","hasDastArtifacts","findArtifacts","hasDastArtifactDownload","scanType","scannedResourcesCsvPath","normalizeScanType","_job$artifacts$nodes","_job$artifacts","fileType","_capitalize","buildDastArtifacts","csvArtifact","toggleCollapse","vulnerabilitiesCount","VulnerabilityReport","VulnerabilityFindingModal","selectedFinding","normalizeForGraphQLQuery","transformFilters","showModal","finding","hideModal","filtersToShow","FILTER_PRESETS","PIPELINE","fieldsToShow","FIELD_PRESETS","sourceBranch","errorsAlertType","warningsAlertType","scanPurgedStatus","ReportStatusAlert","ScanAlerts","SecurityReportsSummary","PipelineVulnerabilityReport","provide","securityReportSummary","pipelineSecurityReportSummaryQuery","fetchPolicy","fetchPolicies","NETWORK_ONLY","reportSummary","_this$securityReportS","_this$securityReportS2","_reportSummary$scans","hasScans","purgedScans","hasPurgedScans","scansWithErrors","_scan$errors","showScanErrors","scansWithWarnings","_scan$warnings","warnings","showScanWarnings","parsingErrorAlertTitle","parsingErrorAlertDescription","parsingWarningAlertTitle","parsingWarningAlertDescription","pageDescription","pageDescriptionHelpLink","ceRoutes","securityTabName","PipelineSecurityDashboard","licensesTabName","LicenseReportApp","codeQualityTabName","CodequalityReportApp","ITEM_CLASS","BLink","_this$item","_this$item2","to","is","listeners","_item$action","_this$item3","_this$item3$extraAttr","_this$item4","_this$item4$extraAttr","_this$item$wrapperCla","_this$item5","wrapperClass","keydown","isCustomContent","MouseEvent","bubbles","_this$$refs$item","listIndex","wrapperListeners","itemComponent","componentIndex","GRAPHQL_TYPENAME_TO_COMPONENT_MAP","VulnerabilityDetailUrl","VulnerabilityDetailDiff","VulnerabilityDetailCode","VulnerabilityDetailFileLocation","VulnerabilityDetailModuleLocation","VulnerabilityDetailCommit","VulnerabilityDetailValue","VulnerabilityDetailText","VulnerabilityDetailMarkdown","VulnerabilityDetailBoolean","VulnerabilityDetailInt","VulnerabilityDetailList","VulnerabilityDetailNamedList","VulnerabilityDetailTable","GRAPHQL_TYPENAMES","functional","symbols","textParts","hasSeverityBadge","severityKey","_this$severity","severityTitle","tooltipTitle","remainingTimeIntervalId","startRemainingTimeInterval","scheduled","scheduledAt","scheduledTime","scheduled_at","createWrap","guard","BCollapse","JOBS_COUNT_ERROR_MESSAGE","JOBS_FETCH_ERROR_MSG","LOADING_ARIA_LABEL","CANCELABLE_JOBS_ERROR_MSG","CANCEL_JOBS_MODAL_ID","CANCEL_JOBS_MODAL_TITLE","CANCEL_JOBS_BUTTON_TEXT","CANCEL_BUTTON_TOOLTIP","CANCEL_TEXT","CANCEL_JOBS_FAILED_TEXT","PRIMARY_ACTION_TEXT","CANCEL_JOBS_WARNING","RUNNER_EMPTY_TEXT","RUNNER_NO_DESCRIPTION","DEFAULT_FIELDS_ADMIN","RAW_TEXT_WARNING_ADMIN","VIEW_ADMIN_JOBS_PAGELOAD","Q","getPrototypeOf","Z","L","o","nn","u","f","X","q","p","l","rn","writable","configurable","enumerable","d","y","tn","U","j","O","g","w","P","M","H","A","I","R","D","F","z","getOwnPropertyDescriptor","E","N","T","C","en","Proxy","revocable","revoke","J","K","G","W","B","Reflect","for","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptors","deleteProperty","defineProperty","setPrototypeOf","an","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","castPath","RUNNER_TYPENAME","RUNNER_PAGE_SIZE","RUNNER_JOB_COUNT_LIMIT","RUNNER_DETAILS_PROJECTS_PAGE_SIZE","RUNNER_DETAILS_JOBS_PAGE_SIZE","I18N_FETCH_ERROR","I18N_CREATE_ERROR","FILTER_CSS_CLASSES","I18N_ALL_TYPES","I18N_INSTANCE_TYPE","I18N_GROUP_TYPE","I18N_PROJECT_TYPE","I18N_INSTANCE_RUNNER_DESCRIPTION","I18N_GROUP_RUNNER_DESCRIPTION","I18N_PROJECT_RUNNER_DESCRIPTION","I18N_STATUS_ONLINE","I18N_STATUS_NEVER_CONTACTED","I18N_STATUS_OFFLINE","I18N_STATUS_STALE","I18N_JOB_STATUS_ACTIVE","I18N_JOB_STATUS_IDLE","I18N_ONLINE_TOOLTIP","I18N_NEVER_CONTACTED_TOOLTIP","I18N_NEVER_CONTACTED_STALE_TOOLTIP","I18N_DISCONNECTED_TOOLTIP","ONLINE_CONTACT_TIMEOUT_SECS","STALE_TIMEOUT_SECS","I18N_REGISTER_INSTANCE_TYPE","I18N_REGISTER_GROUP_TYPE","I18N_REGISTER_PROJECT_TYPE","I18N_REGISTER_RUNNER","I18N_EDIT","I18N_PAUSE","I18N_PAUSED","I18N_PAUSE_TOOLTIP","I18N_PAUSED_DESCRIPTION","I18N_RESUME","I18N_RESUME_TOOLTIP","I18N_DELETE","I18N_DELETE_RUNNER","I18N_DELETED_TOAST","I18N_CREATOR","I18N_LOCKED_RUNNER_DESCRIPTION","I18N_VERSION","I18N_VERSION_LABEL","I18N_LAST_CONTACT_LABEL","I18N_CREATED_AT_LABEL","I18N_CREATED_BY_LABEL","I18N_CREATED_BY_AT_LABEL","I18N_SHOW_ONLY_INHERITED","I18N_ADMIN","I18N_GET_STARTED","I18N_RUNNERS_ARE_AGENTS","I18N_CREATE_RUNNER_LINK","I18N_STILL_USING_REGISTRATION_TOKENS","I18N_CONTACT_ADMIN_TO_REGISTER","JOBS_ROUTE_PATH","I18N_DETAILS","I18N_JOBS","I18N_ASSIGNED_PROJECTS","I18N_FILTER_PROJECTS","I18N_CLEAR_FILTER_PROJECTS","I18N_NO_JOBS_FOUND","I18N_NO_PROJECTS_FOUND","RUNNER_REGISTRATION_POLLING_INTERVAL_MS","RUNNER_TAG_BADGE_VARIANT","RUNNER_TAG_BG_CLASS","PARAM_KEY_CREATOR","PARAM_KEY_STATUS","PARAM_KEY_PAUSED","PARAM_KEY_RUNNER_TYPE","PARAM_KEY_TAG","PARAM_KEY_VERSION","PARAM_KEY_SEARCH","PARAM_KEY_MEMBERSHIP","PARAM_KEY_SORT","PARAM_KEY_AFTER","PARAM_KEY_BEFORE","PARAM_KEY_PLATFORM","INSTANCE_TYPE","GROUP_TYPE","PROJECT_TYPE","RUNNER_TYPES","STATUS_ONLINE","STATUS_NEVER_CONTACTED","STATUS_OFFLINE","STATUS_STALE","JOB_STATUS_ACTIVE","JOB_STATUS_IDLE","ACCESS_LEVEL_NOT_PROTECTED","ACCESS_LEVEL_REF_PROTECTED","DEFAULT_ACCESS_LEVEL","CREATED_DESC","CREATED_ASC","CONTACTED_DESC","CONTACTED_ASC","DEFAULT_SORT","MEMBERSHIP_DESCENDANTS","MEMBERSHIP_ALL_AVAILABLE","DEFAULT_MEMBERSHIP","ADMIN_FILTERED_SEARCH_NAMESPACE","GROUP_FILTERED_SEARCH_NAMESPACE","LINUX_PLATFORM","MACOS_PLATFORM","WINDOWS_PLATFORM","GOOGLE_CLOUD_PLATFORM","GOOGLE_KUBERNETES_ENGINE","RUNNER_PACKAGE_HOST","DEFAULT_PLATFORM","INSTALL_HELP_URL","DOCS_URL","EXECUTORS_HELP_URL","SERVICE_COMMANDS_HELP_URL","DOCKER_HELP_URL","KUBERNETES_HELP_URL","RUNNER_MANAGERS_HELP_URL","SINGLE_RUNNER_ENTRY_HELP_URL","GROUPS","ALL_DISMISSED_VALUE","DISMISSAL_REASON_VALUES","selectedValue","noneSelected","allStatusSelected","allDismissedSelected","dismissalReasonSelected","filterOutValues","selectedVal","valuesToDeselect","DETECTED","sortable","DESCRIPTION","IDENTIFIER","TOOL","thAlignRight","BASE_FIELDS","START","END","OPERATIONAL","AGENT","CONTAINER_REGISTRY","BASE_FILTERS","DEVELOPMENT_PROJECT","OPERATIONAL_PROJECT","CONTAINER_REGISTRY_PROJECT","REPORT_TYPES_CONTAINER_SCANNING_FOR_REGISTRY","flatRest","baseUniq","seen","seenIndex","baseIsMap","nodeIsMap","svgPath","svgHeight","primaryButtonLink","secondaryButtonLink","secondaryButtonText","compact","invertInDarkMode","contentClass","shouldPreventImageReflow","contentClasses","baseInverter","toIteratee","CRITICAL","HIGH","MEDIUM","LOW","INFO","falsePositiveMessage","acceptable_risk","false_positive","mitigating_control","used_in_tests","not_applicable","vulnerabilityStateMutations","revertFindingToDetectedMutation","dismissFindingMutation","FEEDBACK_TYPES","ISSUE","MERGE_REQUEST","RELATED_ISSUES_ERRORS","LINK_ERROR","UNLINK_ERROR","ISSUE_ID_ERROR","SUPPORTING_MESSAGE_TYPES","RECORDED","VULNERABILITY_TRAINING_HEADING","SECURITY_TRAINING_URL_STATUS_COMPLETED","CREATE_MR_ACTION","tagline","DOWNLOAD_PATCH_ACTION","CODE_FLOW_TAB_URL","VULNERABILITY_TAB_NAMES","DETAILS","CODE_FLOW","1","ITEMS","STILL_DETECTED","NO_LONGER_DETECTED","HAS_ISSUE","DOES_NOT_HAVE_ISSUE","HAS_MERGE_REQUEST","DOES_NOT_HAVE_MERGE_REQUEST","HAS_SOLUTION","DOES_NOT_HAVE_SOLUTION","hasResolution","setSelectedValue","hasMergeRequest","getGroupFromItem","allIdSelected","selectedWithoutAll","_without","groupItemIds","keyWhenTrue","keyWhenFalse","activityFilterTooltip","SEVERITY_LEVEL_CRITICAL","SEVERITY_LEVEL_HIGH","SEVERITY_LEVEL_UNKNOWN","SEVERITY_LEVEL_MEDIUM","SEVERITY_LEVEL_LOW","SEVERITY_LEVELS_KEYS","api_fuzzing","container_scanning","coverage_fuzzing","dast","dependency_scanning","sast","secret_detection","REPORT_TYPES_DEFAULT_KEYS","container_scanning_for_registry","cluster_image_scanning","COLLAPSE_SECURITY_REPORTS_SUMMARY_LOCAL_STORAGE_KEY","DOC_PATH_APPLICATION_SECURITY","DOC_PATH_VULNERABILITY_REPORT","DOC_PATH_PROJECT_SECURITY_DASHBOARD","SEVERITY_GROUP_F","SEVERITY_GROUP_D","SEVERITY_GROUP_C","SEVERITY_GROUP_B","SEVERITY_GROUP_A","SEVERITY_GROUPS","severityLevels","VULNERABILITY_DETAIL_CODE_FLOWS","BORDER_CLASSES","bordered","borderPosition","showHeader","nameId","borderClass","groupLabeledBy","getSymbols","Poll","notificationCallback","intervalHeader","timeoutID","canPoll","checkConditions","normalizeHeaders","makeRequest","successCallback","makeDelayedRequest","delay","resource","errorCallback","enable","restart","updatedCodeBlock","lastMergedBlock","uniqueHighlightInfo","_differenceWith","sortCodeBlocks","updatedHighlightInfo","flows","fileLen","splitByLineBreaks","calcStartLine","calcEndLine","lineEnd","createSourceBlockHighlightInfo","getIdSelectors","idPrefix","remove","selector","allTextMarkerElements","markdownRowContent","textSpanMarkerElements","markdownStepNumber","allNumMarkerElements","markdownRowNumber","subScroller","subScrollerRect","offsetTop","clientHeight","castSlice","hasUnicode","stringToArray","strSymbols","chr","trailing","uuid","help","labelPosition","labelId","isVerticalLayout","shouldRenderDescription","shouldRenderHelp","toggleClasses","isChecked","helpId","toggleFeature","querystringKey","validValues","defaultValues","rawQuerystringIds","querystringIds","cleanUpIds","getQuerystringObject","emitQuerystringIds","_this$defaultValues","_omit","baseMap","$group","arrayMethodIsStrict","addToUnscopables","callbackfn","thisArg","TRANSITION_PROPS","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","TRANSITION_HANDLERS","enter","afterEnter","leave","afterLeave","appear","BVCollapse","ROOT_EVENT_NAME_ACCORDION","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","accordion","transitioning","collapse","oldValue","emitState","listenOnRoot","handleToggleEvent","handleAccordionEvent","safeId","emitSync","emitOnRoot","openedId","openAccordion","isThis","$content","classObject","normalizeSlot","slotScope","onEnter","onAfterEnter","onLeave","onAfterLeave","abnf","accesslog","actionscript","ada","angelscript","apache","arcade","arduino","armasm","asciidoc","aspectj","autohotkey","autoit","avrasm","awk","axapta","basic","bnf","brainfuck","cal","capnproto","ceylon","clean","clojure","codeowners","coffeescript","coq","cos","crmsh","crystal","csharp","csp","delphi","diff","django","dns","dos","dsconfig","dts","dust","ebnf","elixir","erlang","excel","fix","flix","fortran","fsharp","gams","gauss","gcode","gherkin","glsl","gml","golo","handlebars","haskell","haxe","hsp","hy","inform7","irpf90","isbl","javascript","julia","kotlin","lasso","latex","ldif","leaf","lisp","livecodeserver","livescript","llvm","lsl","mathematica","matlab","maxima","mel","mercury","mipsasm","mizar","mojolicious","monkey","moonscript","n1ql","nestedtext","nginx","nsis","objectivec","ocaml","openscad","oxygene","parser3","perl","pf","pgsql","php","pony","powershell","processing","profile","prolog","protobuf","puppet","purebasic","python","qml","reasonml","rib","roboconf","routeros","rsl","ruby","ruleslanguage","rust","sas","scala","scheme","scilab","smali","smalltalk","sml","sqf","stan","stata","step21","stylus","subunit","svelte","hcl","taggerscript","tap","tcl","thrift","tp","typescript","vala","vbnet","vbscript","verilog","vhdl","vim","wasm","wren","x86asm","xl","zephir","CLONE_DEEP_FLAG","createChunk","rawChunkLines","highlightedChunkLines","startingFrom","splitIntoChunks","splitRawContent","splitHighlightedContent","chunkIndex","highlightedChunk","rawChunk","inheritAttrs","prevText","prevButtonLink","navigationLabel","nextText","nextButtonLink","getSymbolsIn","trainingUnavailable","viewTraining","securityTrainingProviders","securityTrainingProvidersQuery","securityTrainingUrls","securityTrainingVulnerabilityQuery","stopPolling","isUrlsLoading","identifierExternalIds","supportedIdentifiersExternalIds","filename","training","showVulnerabilityTraining","hasSecurityTrainingProviders","showTrainingNotFound","hasSupportedIdentifier","hasSecurityTrainingUrls","_this$securityTrainin","isEnabled","_this$securityTrainin2","unwatchHasSecurityTrainingUrls","$watch","hasUrls","clickTrainingLink","extra","staticStyle","iconSize","SEVERITY_ICONS_MR_WIDGET","extends","iconStateClass","GlAnimatedChevronRightDownIcon","GlCollapseToggle","titleVisible","headerClass","accordionItemId","headerComponent","buttonTitle","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","inBrowser","pick","transports","sources","wormhole","extend","trackInstances","transport","passengers","_transport$order","order","newTransport","$_getTransportIndex","newTransports","idx","force","registerTarget","vm","unregisterTarget","$delete","registerSource","unregisterSource","hasTarget","hasSource","hasContentFor","_id","slotProps","random","sendUpdate","closer","normalizeSlots","normalizeOwnChildren","slotContent","Tag","multiple","transition","firstRender","ownTransports","temp","newPassengers","combinePassengers","noWrapper","_id$1","portalProps","targetProps","MountingPortal","append","bail","mountTo","targetSlim","targetSlotProps","targetTag","$props","portalTarget","mountEl","appendChild","_props","$parent","propsData","removeChild","$destroy","install","Vue$$1","portalTargetName","MountingPortalName","Wormhole","dataView","byteOffset","byteLength","align","cardHeader","justified","pills","small","tabs","BNav","notDisabled","BVTabButton","getBvTabs","controls","noKeyNav","posInSet","setSize","tabIndex","shiftKey","handleEvent","localActive","titleItemClass","titleLinkClass","titleLinkAttributes","$link","active","bvTabs","activeNavItemClass","tabindex","navProps","activeTabClass","lazy","navClass","navWrapperClass","noFade","noNavStyle","BTabs","currentTab","registeredTabs","$tab","activateTab","previousTab","nextTab","updateTabs","$_observer","setObserver","$t","disconnect","childList","subtree","attributeFilter","$tabs","getTabs","buttons","$btn","$button","getButtonForTab","tabEvent","vueTarget","componentId","defaultPrevented","emitTabClick","focusButton","math","firstTab","lastTab","$activeTab","$fallbackTab","$buttons","controlledBy","clickTab","$nav","$empty","validatorHelper","actionSecondary","actionTertiary","syncActiveTabWithQueryParams","queryParamName","activeTabIndex","handleInput","syncActiveTabFromQueryParams","buttonBinding","queryParamValue","getQueryParamValue","tabIndexToActivate","getTabQueryParamValue","bTabs","URLSearchParams","currentQueryParamValue","newQueryParamValue","searchParams","pushState","setQueryParamValueIfNecessary","secondary","tertiary","reject","eTagPoll","axiosGet","limits","xs","sm","linkGen","prevPage","nextPage","ellipsisText","labelNav","labelFirstPage","labelPrevPage","labelNextPage","labelLastPage","labelPage","breakpoint","minTotalPagesToCollapse","totalPages","isCompactPagination","paginationLimit","center","isFillAlign","maxAdjacentPages","firstPage","shouldCollapseLeftSide","lastPage","shouldCollapseRightSide","getPageItem","getEllipsisItem","pageIsDisabled","prevPageIsDisabled","labelForPage","nextPageIsDisabled","isLinkBased","setBreakpoint","commonAttrs","isActivePage","handleClick","slotData","side","wrapperClasses","prevPageAriaLabel","prevPageHref","handlePrevious","nextPageAriaLabel","nextPageHref","handleNext","uncurryThis","charCodeAt","stringSlice","createMethod","CONVERT_TO_STRING","$this","pos","second","codeAt","baseUnset","customOmitClone","omit","paths","rawSummary","snakeCasedSummary","convertObjectPropsToSnakeCase","entry","PROJECT_LOADING_ERROR_MESSAGE","MODEL_EVENT_NAME_ACTIVE","noBody","BTab","_isTab","card","fade","activate","deactivate","registerTab","updateButton","hasNormalizedSlot","unregisterTab","deactivateTab","tabClasses","computedLazy","computedNoFade","linkClass","highlights","showSingleSeverity","requiredField","isInteger","criticalSeverityCount","highSeverityCount","otherSeverityCount","other","totalCounts","isCapped","isClosed","isMerged","isEmpty","STATUS_EMPTY","newlineRegex","generateHLJSTag","includeClose","suffix","generateCloseTag","newline","subChild","bidiChar","wrapBidiChar","createLink","innerText","generateHLJSOpenTag","delimiter","getObjectKeysByKeyName","keyName","subObj","attrOpenTag","stringOpenTag","DEPENDENCY_REGEX","openTagRegex","GITHUB_REPO_REGEX","GITLAB_REPO_REGEX","GITLAB_NESTED_REPO_REGEX","importPathString","replaceRepoPath","dependency","repoPath","repo","regexConfigs","resolver","dep","handleReplace","regexConfig","getLinkHref","beginString","endString","DEPENDENCY_LINKERS","package_json","devDependencies","peerDependencies","optionalDependencies","dependenciesToLink","packageName","unescapedPackageName","_unescape","unescapedVersion","packageLink","versionLink","closeAndOpenTag","dependencyToLink","gemspec","closeTag","godeps_json","gemfile","podspec_json","composer_json","rawParsed","require","go_sum","packagePath","lowercasePath","tagHref","wrapLine","highlightPlugins","shouldWrapLines","wrapChildNodes","wrapBidiChars","linkDependencies","wrapLines","GlToast","showGlobalToast","customMessage","modalText","confirmButton","cancelJob","playJob","unscheduleJob","JOB_ACTIONS","dataName","cancelJobMutation","play","playJobMutation","retryJobMutation","unscheduleJobMutation","JobActionModal","jobId","jobAction","emits","actionType","hasConfirmationModal","_this$jobAction","onActionButtonClick","executeJobAction","JobActionButton","hasJobAction","_this$status","_this$status2","_this$status3","EventItem","feedback","isEditingDismissal","showDismissalActions","_this$feedback","_this$feedback$dismis","eventText","commentDetails","comment_details","showFeedbackActions","created_at","comment_author","comment_timestamp","selectedButtonIndex","selectedButton","changeAction","selectAReason","isInvalid","fieldRequired","solutionHtml","solution","remediation","solutionText","_this$remediation","showCreateMergeRequestMessage","_this$remediation2","hasMr","_this$mergeRequest","renderGFM","markdownContent","reportItems","showSection","itemsToRender","toggleShowSection","REPORT_TYPES_TO_HUMAN_READABLE","descriptionSectionHeading","stateLabel","projectLabel","toolLabel","scannerLabel","evidenceLabel","locationHeading","locationFileLabel","locationImageLabel","locationOperatingSystemLabel","locationCrashTypeLabel","locationCrashAddressLabel","locationStacktraceSnippetLabel","locationVulnerableClassLabel","locationVulnerableMethodLabel","linksSectionHeading","identifiersSectionHeading","assetsSectionHeading","requestResponseHeading","requestLabel","responseLabel","recordedResponseLabel","additionalInfoHeading","assertLabel","requestUrlLabel","codeFlowButton","VulnerabilityTraining","StatusBadge","DetailsSection","DetailsSectionListItem","FalsePositiveAlert","GenericReportSection","glFeatureFlagMixin","evidence","links","assets","showTraining","humanReadableReportType","_this$location$startL","_this$location","_this$location$endLin","_this$location2","requestString","_this$evidence","_this$evidence2","request","requestUrl","_this$evidence3","hostname","responseString","_this$evidence4","_this$evidence5","assertion","_this$evidence6","evidenceSummary","_this$evidence7","recordedResponseString","_this$evidence8","recordedResponse","supportingMessages","msg","_this$project","shouldShowLocationSection","locationSectionListItems","testId","operatingSystem","crashType","crashAddress","vulnerableClass","vulnerableMethod","showCodeFlowButton","_vulnDetailCodeFlow$i","vulnDetailCodeFlow","detail","handleShowTraining","stacktraceSnippet","asset","createdIssue","_this$issueLinks$find","linkType","IssueNote","MergeRequestNote","SolutionCard","VulnerabilityDetailsGraphql","_this$vulnerability","remediations","_this$vulnerability2","_this$vulnerability3","showPublicProjectWarning","confidentialMRHelpPagePath","CLIENT_SUBSCRIPTION_ID","uuidv4","ResolveWithAiInfoPopover","mergeRequestId","findingUuid","isResolving","createdVulnerabilityId","$subscribe","aiCompletionResponse","aiResponseSubscription","resourceId","vulnerabilityGraphqlId","userId","TYPENAME_USER","current_user_id","clientSubscriptionId","handleError","stopResolveWithAISubscription","mergeRequestGraphQLId","TYPENAME_MERGE_REQUEST","TYPENAME_VULNERABILITY","createVulnerabilityForFinding","securityFindingCreateVulnerability","aiResolveVulnerability","vulnerableMergeRequestId","aiAction","startResolveWithAISubscription","subscriptions","CREATE_ISSUE_ACTION","CREATE_JIRA_ISSUE_ACTION","STATE_DISMISSED","STATE_DETECTED","STATE_RESOLVED","VULNERABILITY_POLLING_INTERVAL","VulnerabilityCodeFlow","VulnerabilityFindingModalDetails","DismissalNote","SplitButton","VulnerabilityDismissalReason","GlTabs","GlTab","ResolveWithAiButton","sourceProjectFullPath","showAiResolution","hasFindingFetchError","errorMessage","isUpdatingFindingState","isCreatingMergeRequest","isCreatingIssue","isCreatingJiraIssue","dismissalComment","dismissalReasonState","dismissalCommentState","securityReportFindingQuery","securityReportFinding","_project$pipeline2","stateComment","fetchErrorMessage","vulnerabilityExternalIssues","vulnerabilityExternalIssuesQuery","firstExternalIssueLink","externalIssue","openedInNewTab","createJiraIssueErrorMessage","_this$finding","_this$finding2","isFindingResolved","_this$finding3","canDownloadPatch","canCreateMergeRequest","showCreateMergeRequestButton","_this$finding4","presentOnDefaultBranch","_this$finding5","adminVulnerability","canCreateIssue","_this$finding6","createIssue","showNoFindingMessage","isFindingDismissed","_this$finding7","current_username","current_user_fullname","isPublicProject","_this$finding8","visibility","hasJiraVulnerabilityIssueCreationEnabled","_this$finding9","dismissalProject","dismissalFeedback","dismissedAt","dismissedBy","mutationConfigs","mutationName","dismissErrorMessage","revertToDetected","revertDismissErrorMessage","footerActionButtons","hasExistingExternalIssue","_this$finding10","_this$finding11","_this$finding12","fetchErrorTitle","showCodeFlowTabs","_this$codeFlowData","codeFlowData","isFindingAIResolvable","_this$finding13","handleCommentEsc","setFocus","closeModal","hide","handleResolveWithAiSuccess","resultUrl","updateDismissal","mutateFinding","toggledState","undoDismissal","cancelDismissal","_this$dismissalReason","firstResponseItem","executeMutation","createMergeRequestMutation","securityFindingCreateMergeRequest","createIssueMutation","securityFindingCreateIssue","createJiraIssueMutation","startPolling","downloadPatch","redirectToCodeFlowTab","handleResolveWithAiError","resetErrorMessage","noFindingErrorMessage","confirmDismissal","dismissFinding","revertDismissFinding","dismissCommentPlaceholder","dismissalInvalidFeedback","createMergeRequest","createJiraIssue","_k","metaKey","maxOptionsShown","selectedOptions","optionTexts","additionalItemsCount","_this$job$pipeline","projectUrl","_this$job$pipeline2","ICON_DATA","emptyRunnerText","noRunnerDescription","RunnerTypeIcon","adminUrl","_this$job$runner","runner","_this$job$runner2","runnerType","_this$job$runner3","jobCancel","jobPlay","jobUnschedule","playJobModalId","GlCountdown","admin","retryingJob","cancelBtnDisabled","playManualBtnDisabled","unscheduleBtnDisabled","hasArtifacts","artifact","artifactDownloadPath","canCancelJob","_this$job$userPermiss","cancelBuild","canReadJob","_this$job$userPermiss2","canUpdateJob","_this$job$userPermiss3","canReadArtifacts","_this$job$userPermiss4","readJobArtifacts","isActive","manualJobPlayable","playable","manualJob","isScheduled","currentJobActionPath","_this$job$detailedSta","currentJobMethod","_this$job$detailedSta2","shouldDisplayArtifacts","retryButtonTitle","redirect","showToastMessage","failure","toastProps","postJobAction","confirmJobConfirmationMessage","timeagoMixin","finishedTime","finishedAt","durationFormatted","hasDurationAndFinishedTime","stuckText","jobPath","jobRef","jobTags","createdByTag","triggered","isManualJob","successfulJob","SUCCESS_STATUS","showAllowedToFailBadge","allowFailure","isScheduledJob","jobStuck","stuck","refPath","commitPath","shortSha","stageLabel","GlAvatar","pipelinePath","pipelineUserAvatar","user","avatarUrl","userPath","_this$job$pipeline3","showAvatar","_this$job$pipeline4","ActionsCell","StatusCell","JobCell","PipelineCell","ProjectCell","RunnerCell","EmptyResult","tableFields","showCoverage","coverage","formatCoverage","TYPES","titleSearch","descriptionSearch","titleFilter","descriptionFilter","FOUR_MINUTES_IN_MS","STATE_QUERY_POLLING_INTERVAL_DEFAULT","STATE_QUERY_POLLING_INTERVAL_BACKOFF","MWPS_MERGE_STRATEGY","MWCP_MERGE_STRATEGY","MTWPS_MERGE_STRATEGY","MTWCP_MERGE_STRATEGY","MT_MERGE_STRATEGY","PIPELINE_FAILED_STATE","AUTO_MERGE_STRATEGIES","SP_TRACK_LABEL","SP_SHOW_TRACK_EVENT","SP_SHOW_TRACK_VALUE","SP_HELP_CONTENT","SP_HELP_URL","DOCS_URL_IN_EE_DIR","SP_ICON_NAME","JM_JENKINS_TITLE_ICON_NAME","JM_EVENT_NAME","JM_MIGRATION_LINK","MERGE_ACTIVE_STATUS_PHRASES","emoji","STATE_MACHINE","states","IDLE","MERGING","MERGED","AUTO_MERGE","transitions","MERGE","MERGE_FAILURE","definition","initial","stateToTransitionMap","autoMergeEnabled","classStateMap","EXTENSION_ICONS","notice","severityCritical","severityHigh","severityMedium","severityLow","severityInfo","severityUnknown","VIEW_MERGE_REQUEST_WIDGET","EXPAND_MERGE_REQUEST_WIDGET","CLICK_FULL_REPORT_ON_MERGE_REQUEST_WIDGET","INVALID_RULES_DOCS_PATH","DETAILED_MERGE_STATUS","PREPARING","MERGEABLE","CHECKING","NOT_OPEN","DISCUSSIONS_NOT_RESOLVED","NOT_APPROVED","DRAFT_STATUS","BLOCKED_STATUS","CI_MUST_PASS","CI_STILL_RUNNING","EXTERNAL_STATUS_CHECKS","MT_SKIP_TRAIN","MT_RESTART_TRAIN","PIPELINE_EVENT_TYPE_MERGE_TRAIN","PIPELINE_EVENT_TYPE_MERGED_RESULT","PIPELINE_EVENT_TYPE_MERGE_REQUEST","PIPELINE_EVENT_TYPE_MAP","BTableLite","tableClass","stickyHeader","stickyHeaderClass","localTableClass","STROKE_WIDTH","containerMeasurements","pipelineData","defaultLinkColor","highlightedJob","needsObject","hasHighlightedJob","isPipelineDataEmpty","highlightedLinks","viewBox","_generateJobNeedsDict","createJobsHash","generateJobNeedsDict","calculateLinkData","isLinkHighlighted","linkRef","generateLinksData","getLinkClasses","parseForLinks","_memoize","arrayOfJobs","parseData","LinksInner","containerZero","getLinksData","showLinkedLayers","UNCLASSIFIED","LICENSE_LINK_TELEMETRY_EVENT","CLICK_EXTERNAL_LINK_LICENSE_COMPLIANCE","DefaultTransition","ariaAtomic","ariaLive","BToaster","doRender","dead","staticName","$toaster","$target","linkProps","appendToast","autoHideDelay","bodyClass","headerTag","isStatus","noAutoHide","noHoverPause","solid","static","toastClass","toaster","BToast","isMounted","localShow","isTransitioning","isHiding","dismissStarted","resumeDismiss","beforeEnter","onBeforeEnter","beforeLeave","onBeforeLeave","bvAttrs","ensureToaster","$_dismissTimer","computedToaster","clearDismissTimer","showEvent","buildEvent","emitEvent","now","hideEvent","setHoverHandler","relatedTarget","bvEvent","div","bvEventRoot","$mount","computedDuration","onPause","onUnPause","passed","startDismissTimer","hiddenEvent","$headerContent","$title","$header","$body","onLinkClick","computedAttrs","isStatic","toastClasses","scopedStyleAttrs","transitionHandlers","makeToast","BASE_PROPS","propsToSlots","toastContent","filterOptions","memo","BVToastPlugin","BVToastPop","handleDestroy","bvParent","BvToast","_root","ToastPlugin","DEFAULT_OPTIONS","toastsCount","renderTitle","showToast","$bvToast","onComplete","toastHiddenCallback","updatedAutoHideDelay","reFlags","regexp"],"mappings":"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","file":"1175.cd232882.chunk.js","sourcesContent":["var constant = require('./constant'),\n    createInverter = require('./_createInverter'),\n    identity = require('./identity');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n  if (value != null &&\n      typeof value.toString != 'function') {\n    value = nativeObjectToString.call(value);\n  }\n\n  result[value] = key;\n}, constant(identity));\n\nmodule.exports = invert;\n","var baseClone = require('./_baseClone'),\n    baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': true },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n *     return func.test(string);\n *   };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n  return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n","/**\n * Adds two numbers together\n * @param {Number} a\n * @param {Number} b\n */\nconst addition = (a, b) => a + b;\n\n/**\n * Returns the sum of all arguments\n * @param  {...Number} numbers\n */\nconst sum = function () {\n  for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n    numbers[_key] = arguments[_key];\n  }\n  return numbers.reduce(addition);\n}; // eslint-disable-line unicorn/no-array-callback-reference\n\n/**\n * Returns the average of all arguments\n * @param  {...Number} numbers\n */\nconst average = function () {\n  return sum(...arguments) / arguments.length;\n};\n\n/**\n * Returns the modulo of n for a divisor.\n *\n * Maps the integer n into the range [0, divisor) when the divisor is positive,\n * and (divisor, 0] when the divisor is negative.\n *\n * This is useful when indexing into an array, to ensure you always stay within\n * the array bounds.\n *\n * See https://2ality.com/2019/08/remainder-vs-modulo.html.\n *\n * @param {number} n The number to mod.\n * @param {number} divisor The divisor (e.g., the length of an array).\n * @returns {number}\n */\nfunction modulo(n, divisor) {\n  const result = (n % divisor + divisor) % divisor;\n  // Never return -0.\n  return result === 0 ? 0 : result;\n}\n\n/**\n * Convert number to engineering format, using SI suffix\n * @param {Number|String} value - Number or Number-convertible String\n * @param {Number} precision\n * @return {String} number, possibly with a suffix\n */\nconst engineeringNotation = function (value) {\n  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  const invalidValues = [NaN, Infinity, -Infinity];\n  const num = Number(value);\n  if (invalidValues.includes(num) || invalidValues.includes(Number(precision))) {\n    return num.toString();\n  }\n  const allYourBase = {\n    '-24': 'y',\n    '-21': 'z',\n    '-18': 'a',\n    '-15': 'f',\n    '-12': 'p',\n    '-9': 'n',\n    '-6': 'μ',\n    '-3': 'm',\n    0: '',\n    3: 'k',\n    6: 'M',\n    9: 'G',\n    12: 'T',\n    15: 'P',\n    18: 'E',\n    21: 'Z',\n    24: 'Y'\n  };\n  const exponentialNotation = num.toExponential(precision);\n  const power = exponentialNotation.split('e').map(Number)[1] || 0;\n  if (power < -24 || power > 24) {\n    return exponentialNotation;\n  }\n  const scaledPower = 3 * Math.floor(power / 3);\n  const scaledMantissa = (exponentialNotation / 10 ** scaledPower\n  // strip trailing decimals from floating point rounding errors\n  ).toFixed(precision)\n  // strip trailing 0s after a decimal point\n  .replace(/\\.([1-9]*)0+$/, (_, fractionalDigits) => {\n    if (fractionalDigits) {\n      return `.${fractionalDigits}`;\n    }\n    return '';\n  });\n  return `${scaledMantissa}${allYourBase[scaledPower]}`;\n};\n\n/**\n * Formats a number as a locale-based string using `Intl.NumberFormat`.\n *\n * 2333 -> 2,333\n * 232324 -> 232,324\n *\n * @param {Number|string} value - number to be converted\n * @param {{}?} options - options to be passed to\n * `Intl.NumberFormat` such as `unit` and `style`.\n * @param {String|String[]} locales - If set, forces a different\n * language code from the one currently in the document.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat\n *\n * @returns {String}\n */\nconst formatNumberToLocale = function (value) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  let locales = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n  if (Number.isNaN(Number(value))) {\n    return value;\n  }\n  return new Intl.NumberFormat(locales, options).format(value);\n};\n\n// Converts a value (string, number, etc.) to a number\n// Taken from bootstrap-vue\nconst toFloat = function (value) {\n  let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n  const float = parseFloat(value);\n  return Number.isNaN(float) ? defaultValue : float;\n};\n\nexport { addition, average, engineeringNotation, formatNumberToLocale, modulo, sum, toFloat };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"retryJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobRetry\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":167}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation retryJob($id: CiProcessableID!) {\\n  jobRetry(input: { id: $id }) {\\n    job {\\n      ...Job\\n    }\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"retryJob\"] = oneQuery(doc, \"retryJob\");\n        \n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getSecurityTrainingUrls\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectFullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"identifierExternalIds\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filename\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectFullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityTrainingUrls\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"identifierExternalIds\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"identifierExternalIds\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"filename\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filename\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"identifier\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":321}};\n    doc.loc.source = {\"body\":\"query getSecurityTrainingUrls(\\n  $projectFullPath: ID!\\n  $identifierExternalIds: [String!]!\\n  $filename: String\\n) {\\n  project(fullPath: $projectFullPath) {\\n    id\\n    securityTrainingUrls(identifierExternalIds: $identifierExternalIds, filename: $filename) {\\n      name\\n      status\\n      url\\n      identifier\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getSecurityTrainingUrls\"] = oneQuery(doc, \"getSecurityTrainingUrls\");\n        \n","import throttle from 'lodash/throttle';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst throttleDuration = 1000;\n/**\n * After adding more items, scroll will adjust slightly.\n * Values in pixels, should be a small amount.\n */\nconst adjustScrollGap = 5;\nconst THRESHOLD = 1;\nvar script = {\n  name: 'GlInfiniteScroll',\n  props: {\n    /**\n     * Total number of items available\n     */\n    totalItems: {\n      type: Number,\n      required: false,\n      default: 0\n    },\n    /**\n     * Numbers of items fetched before scrolling\n     */\n    fetchedItems: {\n      type: Number,\n      required: true\n    },\n    /**\n     * Max height of the list before the scrollbar appears\n     */\n    maxListHeight: {\n      type: Number,\n      required: false,\n      default: 0\n    }\n  },\n  computed: {\n    listHeight() {\n      return {\n        maxHeight: this.maxListHeight ? `${this.maxListHeight}px` : 'auto'\n      };\n    },\n    legendText() {\n      if (this.totalItems > 0) {\n        return `Showing ${this.fetchedItems} of ${this.totalItems} items`;\n      }\n      return `Showing ${this.fetchedItems} items`;\n    }\n  },\n  watch: {\n    fetchedItems(newVal, oldVal) {\n      // Re-adjust scroll to the current item if more items are added\n      if (newVal > oldVal) {\n        const {\n          scrollHeight,\n          scrollTop\n        } = this.$refs.infiniteContainer;\n        // Only when scrolled to the top\n        if (scrollHeight !== 0 && scrollTop === 0) {\n          // Wait until the DOM is fully updated to adjust scroll\n          this.$nextTick(() => {\n            const {\n              scrollHeight: newScrollHeight\n            } = this.$refs.infiniteContainer;\n\n            // New scrollTop is the new height, minus the old height\n            // minus a small space to allow the user to trigger a scroll once more\n            let top = newScrollHeight - scrollHeight - adjustScrollGap;\n\n            // Never adjust to 0, or a new event may be be triggered\n            if (top < 1) {\n              top = 1;\n            }\n            this.scrollTo({\n              top\n            });\n          });\n        }\n      }\n    }\n  },\n  mounted() {\n    // Scroll to bottom for reverse effect\n    this.$nextTick(() => {\n      if (this.$listeners.topReached && !this.$listeners.bottomReached) {\n        this.scrollDown();\n      }\n    });\n  },\n  methods: {\n    /**\n     * Scroll to the top of the container, leaving a gap\n     * to avoid triggering the event.\n     */\n    scrollUp() {\n      this.scrollTo({\n        top: adjustScrollGap\n      });\n    },\n    /**\n     * Scroll to the bottom of the container, leaving a gap\n     * to avoid triggering the event.\n     */\n    scrollDown() {\n      const {\n        scrollHeight\n      } = this.$refs.infiniteContainer;\n      this.scrollTo({\n        top: scrollHeight - adjustScrollGap\n      });\n    },\n    /**\n     * Scroll to a location in the container\n     *\n     * @param params.top - Number of pixels along Y axis to\n     * scroll the list container.\n     * @param params.behavior - Determines whether scrolling\n     * is instant or animates smoothly. Can be 'auto', 'instant', or 'smooth'\n     * See [MDN spec](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTo)\n     */\n    scrollTo(_ref) {\n      let {\n        top,\n        behavior\n      } = _ref;\n      this.$refs.infiniteContainer.scrollTo({\n        top,\n        behavior\n      });\n    },\n    topReached: throttle(function topReachedThrottled() {\n      /**\n       * Emitted when item container is scrolled to the top\n       */\n      this.$emit('topReached');\n    }, throttleDuration),\n    bottomReached: throttle(function bottomReachedThrottled() {\n      /**\n       * Emitted when item container is scrolled to the bottom\n       */\n      this.$emit('bottomReached');\n    }, throttleDuration),\n    itemsListHeight() {\n      return this.$refs.infiniteContainer.scrollHeight;\n    },\n    scrollTop() {\n      return this.$refs.infiniteContainer.scrollTop;\n    },\n    handleScroll: throttle(function handleScrollThrottled() {\n      if (Math.abs(this.itemsListHeight() - this.maxListHeight - this.scrollTop()) < THRESHOLD) {\n        this.bottomReached();\n      } else if (this.scrollTop() <= THRESHOLD) {\n        this.topReached();\n      }\n    })\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"header\"),_vm._v(\" \"),_c('div',_vm._g(_vm._b({ref:\"infiniteContainer\",staticClass:\"gl-infinite-scroll-container\",style:(_vm.listHeight),on:{\"scroll\":_vm.handleScroll}},'div',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"items\")],2),_vm._v(\" \"),_c('p',{staticClass:\"gl-infinite-scroll-legend\"},[_vm._t(\"default\",function(){return [_vm._v(\"\\n      \"+_vm._s(_vm.legendText)+\"\\n    \")]},{\"fetchedItems\":_vm.fetchedItems,\"totalItems\":_vm.totalItems})],2)],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { adjustScrollGap };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"projectImages\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityImages\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":157}};\n    doc.loc.source = {\"body\":\"query projectImages($projectPath: ID!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    vulnerabilityImages {\\n      nodes {\\n        name\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"projectImages\"] = oneQuery(doc, \"projectImages\");\n        \n","import { REPORT_TYPES_ALL } from 'ee/security_dashboard/constants';\nimport { humanize } from '~/lib/utils/text_utility';\n\n/**\n * Takes the report type, that is not human-readable and converts it to be human-readable\n * @param {string} reportType that is not human-readable\n * @returns {string} a human-readable version of the report type\n */\nconst convertReportType = (reportType) => {\n  if (!reportType) return '';\n  const lowerCaseType = reportType.toLowerCase();\n  return REPORT_TYPES_ALL[lowerCaseType] || humanize(lowerCaseType);\n};\n\nexport default convertReportType;\n","import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlButtonGroup',\n  props: {\n    /**\n     * When set, rendered the button group in vertical mode.\n     */\n    vertical: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._g({class:!_vm.vertical ? 'btn-group' : 'btn-group-vertical',attrs:{\"role\":\"group\"}},_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFindingCreateMergeRequest\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFindingCreateMergeRequest\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequest\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":187}};\n    doc.loc.source = {\"body\":\"mutation securityFindingCreateMergeRequest($uuid: String!) {\\n  securityFindingCreateMergeRequest(input: { uuid: $uuid }) {\\n    errors\\n    mergeRequest {\\n      id\\n      webUrl\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"securityFindingCreateMergeRequest\"] = oneQuery(doc, \"securityFindingCreateMergeRequest\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFindingCreateVulnerability\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFindingCreateVulnerability\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":166}};\n    doc.loc.source = {\"body\":\"mutation securityFindingCreateVulnerability($uuid: String!) {\\n  securityFindingCreateVulnerability(input: { uuid: $uuid }) {\\n    vulnerability {\\n      id\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"securityFindingCreateVulnerability\"] = oneQuery(doc, \"securityFindingCreateVulnerability\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-collapsible-listbox',{attrs:{\"toggle-text\":_vm.toggleText,\"items\":_vm.$options.PAGE_SIZES,\"selected\":_vm.value},on:{\"select\":function($event){return _vm.emitInput($event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { n__ } from '~/locale';\n\nexport const PAGE_SIZES = [20, 50, 100].map((value) => ({\n  value,\n  text: n__('SecurityReports|Show %d item', 'SecurityReports|Show %d items', value),\n}));\n\nexport default {\n  components: { GlCollapsibleListbox },\n  props: {\n    value: {\n      type: Number,\n      required: true,\n    },\n  },\n  computed: {\n    selectedItem() {\n      return PAGE_SIZES.find(({ value }) => value === this.value);\n    },\n    toggleText() {\n      return this.selectedItem.text;\n    },\n  },\n  methods: {\n    emitInput(pageSize) {\n      this.$emit('input', pageSize);\n    },\n  },\n  PAGE_SIZES,\n};\n</script>\n\n<template>\n  <gl-collapsible-listbox\n    :toggle-text=\"toggleText\"\n    :items=\"$options.PAGE_SIZES\"\n    :selected=\"value\"\n    @select=\"emitInput($event)\"\n  />\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page_size_selector.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page_size_selector.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./page_size_selector.vue?vue&type=template&id=28c3d0ea\"\nimport script from \"./page_size_selector.vue?vue&type=script&lang=js\"\nexport * from \"./page_size_selector.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","import { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlButton from '../../base/button/button';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'ClearIconButton',\n  components: {\n    GlButton\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective\n  },\n  props: {\n    title: {\n      type: String,\n      required: false,\n      default: () => translate('ClearIconButton.title', 'Clear')\n    },\n    tooltipContainer: {\n      required: false,\n      default: false,\n      validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-button',_vm._g({directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",value:({ container: _vm.tooltipContainer }),expression:\"{ container: tooltipContainer }\",modifiers:{\"hover\":true}}],staticClass:\"gl-clear-icon-button\",attrs:{\"variant\":\"default\",\"category\":\"tertiary\",\"size\":\"small\",\"name\":\"clear\",\"icon\":\"clear\",\"title\":_vm.title,\"aria-label\":_vm.title}},_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitySeveritiesCount\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}},\"defaultValue\":{\"kind\":\"StringValue\",\"value\":\"\",\"block\":false},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectId\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilitySeverity\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityReportType\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"scanner\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityState\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"scannerId\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilitiesScannerID\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasIssues\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasResolution\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasMergeRequest\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasRemediations\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasAiResolution\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"clusterAgentId\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ClustersAgentID\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"image\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isGroup\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"defaultValue\":{\"kind\":\"BooleanValue\",\"value\":false},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"defaultValue\":{\"kind\":\"BooleanValue\",\"value\":false},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isInstance\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"defaultValue\":{\"kind\":\"BooleanValue\",\"value\":false},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"capped\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"defaultValue\":{\"kind\":\"BooleanValue\",\"value\":false},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDismissalReason\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"owaspTopTen\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityOwaspTop10\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"identifierName\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"instance\"},\"name\":{\"kind\":\"Name\",\"value\":\"instanceSecurityDashboard\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isInstance\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitySeveritiesCount\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"projectId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"scanner\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"scanner\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"scannerId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"scannerId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasIssues\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasIssues\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasResolution\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasResolution\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasMergeRequest\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasMergeRequest\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasRemediations\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasRemediations\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasAiResolution\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasAiResolution\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"owaspTopTen\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"owaspTopTen\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"capped\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"capped\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilitySeveritiesCount\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isGroup\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitySeveritiesCount\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"projectId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"scanner\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"scanner\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"scannerId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"scannerId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasIssues\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasIssues\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasResolution\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasResolution\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasMergeRequest\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasMergeRequest\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasRemediations\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasRemediations\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasAiResolution\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasAiResolution\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"owaspTopTen\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"owaspTopTen\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"capped\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"capped\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilitySeveritiesCount\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitySeveritiesCount\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"scanner\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"scanner\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"scannerId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"scannerId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasIssues\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasIssues\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasResolution\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasResolution\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasMergeRequest\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasMergeRequest\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasRemediations\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasRemediations\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"hasAiResolution\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"hasAiResolution\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"clusterAgentId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"clusterAgentId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"image\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"image\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"owaspTopTen\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"owaspTopTen\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"capped\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"capped\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"identifierName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"identifierName\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilitySeveritiesCount\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":2617}};\n    doc.loc.source = {\"body\":\"#import \\\"ee/security_dashboard/graphql/fragments/vulnerability_severities_count.fragment.graphql\\\"\\n\\nquery vulnerabilitySeveritiesCount(\\n  $fullPath: ID = \\\"\\\"\\n  $projectId: [ID!]\\n  $severity: [VulnerabilitySeverity!]\\n  $reportType: [VulnerabilityReportType!]\\n  $scanner: [String!]\\n  $state: [VulnerabilityState!]\\n  $scannerId: [VulnerabilitiesScannerID!]\\n  $hasIssues: Boolean\\n  $hasResolution: Boolean\\n  $hasMergeRequest: Boolean\\n  $hasRemediations: Boolean\\n  $hasAiResolution: Boolean\\n  $clusterAgentId: [ClustersAgentID!]\\n  $image: [String!]\\n  $isGroup: Boolean = false\\n  $isProject: Boolean = false\\n  $isInstance: Boolean = false\\n  $capped: Boolean = false\\n  $dismissalReason: [VulnerabilityDismissalReason!]\\n  $owaspTopTen: [VulnerabilityOwaspTop10!]\\n  $identifierName: String\\n) {\\n  instance: instanceSecurityDashboard @include(if: $isInstance) {\\n    vulnerabilitySeveritiesCount(\\n      projectId: $projectId\\n      severity: $severity\\n      reportType: $reportType\\n      scanner: $scanner\\n      state: $state\\n      scannerId: $scannerId\\n      hasIssues: $hasIssues\\n      hasResolution: $hasResolution\\n      hasMergeRequest: $hasMergeRequest\\n      hasRemediations: $hasRemediations\\n      hasAiResolution: $hasAiResolution\\n      dismissalReason: $dismissalReason\\n      owaspTopTen: $owaspTopTen\\n      capped: $capped\\n    ) {\\n      ...VulnerabilitySeveritiesCount\\n    }\\n  }\\n  group(fullPath: $fullPath) @include(if: $isGroup) {\\n    id\\n    vulnerabilitySeveritiesCount(\\n      projectId: $projectId\\n      severity: $severity\\n      reportType: $reportType\\n      scanner: $scanner\\n      state: $state\\n      scannerId: $scannerId\\n      hasIssues: $hasIssues\\n      hasResolution: $hasResolution\\n      hasMergeRequest: $hasMergeRequest\\n      hasRemediations: $hasRemediations\\n      hasAiResolution: $hasAiResolution\\n      dismissalReason: $dismissalReason\\n      owaspTopTen: $owaspTopTen\\n      capped: $capped\\n    ) {\\n      ...VulnerabilitySeveritiesCount\\n    }\\n  }\\n  project(fullPath: $fullPath) @include(if: $isProject) {\\n    id\\n    vulnerabilitySeveritiesCount(\\n      severity: $severity\\n      reportType: $reportType\\n      scanner: $scanner\\n      state: $state\\n      scannerId: $scannerId\\n      hasIssues: $hasIssues\\n      hasResolution: $hasResolution\\n      hasMergeRequest: $hasMergeRequest\\n      hasRemediations: $hasRemediations\\n      hasAiResolution: $hasAiResolution\\n      clusterAgentId: $clusterAgentId\\n      image: $image\\n      dismissalReason: $dismissalReason\\n      owaspTopTen: $owaspTopTen\\n      capped: $capped\\n      identifierName: $identifierName\\n    ) {\\n      ...VulnerabilitySeveritiesCount\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"ee/security_dashboard/graphql/fragments/vulnerability_severities_count.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"vulnerabilitySeveritiesCount\"] = oneQuery(doc, \"vulnerabilitySeveritiesCount\");\n        \n","import vulnerabilityConfirm from './mutations/vulnerability_confirm.mutation.graphql';\nimport vulnerabilityDismiss from './mutations/vulnerability_dismiss.mutation.graphql';\nimport vulnerabilityResolve from './mutations/vulnerability_resolve.mutation.graphql';\nimport vulnerabilityRevertToDetected from './mutations/vulnerability_revert_to_detected.mutation.graphql';\n\nexport default {\n  revert: vulnerabilityRevertToDetected,\n  dismiss: vulnerabilityDismiss,\n  confirm: vulnerabilityConfirm,\n  resolve: vulnerabilityResolve,\n};\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getSecurityReportFinding\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectFullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"findingUuid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectFullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nameWithNamespace\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityReportFinding\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"findingUuid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"aiResolutionEnabled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"descriptionHtml\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"solution\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"solutionHtml\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"falsePositive\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"remediations\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"diff\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"summary\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scanner\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"assets\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nameWithNamespace\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasJiraVulnerabilityIssueCreationEnabled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibility\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"evidence\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"summary\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"request\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"body\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"headers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"method\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"response\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"body\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reasonPhrase\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"statusCode\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"headers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"supportingMessages\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"response\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"body\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reasonPhrase\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"statusCode\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"headers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"location\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityLocationContainerScanning\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"image\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"operatingSystem\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityLocationSast\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startLine\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endLine\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"file\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blobPath\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityLocationDependencyScanning\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blobPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"file\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityLocationSecretDetection\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startLine\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endLine\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"file\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blobPath\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityLocationCoverageFuzzing\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startLine\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endLine\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"file\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blobPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"crashAddress\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"crashType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stacktraceSnippet\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerableMethod\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerableClass\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityLocationDast\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hostname\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"links\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"identifiers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalId\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"issueLinks\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"linkType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"author\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"details\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"List\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Table\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NamedList\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"CodeFlows\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stateComment\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalIssueLinks\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"linkType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalIssue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalTracker\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequest\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"author\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"presentOnDefaultBranch\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"adminVulnerability\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createIssue\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":3954}};\n    doc.loc.source = {\"body\":\"#import \\\"ee/graphql_shared/fragments/vulnerability_detail.fragment.graphql\\\"\\n\\nquery getSecurityReportFinding($projectFullPath: ID!, $pipelineIid: ID!, $findingUuid: String!) {\\n  project(fullPath: $projectFullPath) {\\n    id\\n    webUrl\\n    nameWithNamespace\\n    pipeline(iid: $pipelineIid) {\\n      id\\n      securityReportFinding(uuid: $findingUuid) {\\n        uuid\\n        aiResolutionEnabled\\n        title\\n        description\\n        descriptionHtml\\n        state\\n        severity\\n        solution\\n        solutionHtml\\n        reportType\\n        falsePositive\\n        dismissalReason\\n        remediations {\\n          diff\\n          summary\\n        }\\n        scanner {\\n          id\\n          name\\n        }\\n        assets {\\n          name\\n          url\\n        }\\n        project {\\n          id\\n          name\\n          webUrl\\n          nameWithNamespace\\n          fullPath\\n          hasJiraVulnerabilityIssueCreationEnabled\\n          visibility\\n        }\\n        evidence {\\n          summary\\n          request {\\n            body\\n            headers {\\n              name\\n              value\\n            }\\n            method\\n            url\\n          }\\n          response {\\n            body\\n            reasonPhrase\\n            statusCode\\n            headers {\\n              name\\n              value\\n            }\\n          }\\n          supportingMessages {\\n            name\\n            response {\\n              body\\n              reasonPhrase\\n              statusCode\\n              headers {\\n                name\\n                value\\n              }\\n            }\\n          }\\n          source {\\n            name\\n          }\\n        }\\n        location {\\n          ... on VulnerabilityLocationContainerScanning {\\n            image\\n            operatingSystem\\n          }\\n          ... on VulnerabilityLocationSast {\\n            startLine\\n            endLine\\n            file\\n            blobPath\\n          }\\n          ... on VulnerabilityLocationDependencyScanning {\\n            blobPath\\n            file\\n          }\\n          ... on VulnerabilityLocationSecretDetection {\\n            startLine\\n            endLine\\n            file\\n            blobPath\\n          }\\n          ... on VulnerabilityLocationCoverageFuzzing {\\n            startLine\\n            endLine\\n            file\\n            blobPath\\n            crashAddress\\n            crashType\\n            stacktraceSnippet\\n            vulnerableMethod\\n            vulnerableClass\\n          }\\n          ... on VulnerabilityLocationDast {\\n            hostname\\n            path\\n          }\\n        }\\n        links {\\n          name\\n          url\\n        }\\n        identifiers {\\n          name\\n          url\\n          externalType\\n          externalId\\n        }\\n        issueLinks {\\n          nodes {\\n            id\\n            linkType\\n            issue {\\n              id\\n              iid\\n              createdAt\\n              webUrl\\n              author {\\n                id\\n                webUrl\\n                name\\n                username\\n              }\\n            }\\n          }\\n        }\\n        details {\\n          ...NonNestedReportTypes\\n          ...List\\n          ...Table\\n          ...NamedList\\n          ...CodeFlows\\n        }\\n        dismissedAt\\n        dismissedBy {\\n          id\\n          name\\n          username\\n          webUrl\\n        }\\n        stateComment\\n        vulnerability {\\n          id\\n          externalIssueLinks {\\n            nodes {\\n              id\\n              linkType\\n              externalIssue {\\n                externalTracker\\n                webUrl\\n              }\\n            }\\n          }\\n          mergeRequest {\\n            id\\n            iid\\n            createdAt\\n            webUrl\\n            author {\\n              id\\n              webUrl\\n              name\\n              username\\n            }\\n          }\\n          presentOnDefaultBranch\\n        }\\n        userPermissions {\\n          adminVulnerability\\n          createIssue\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"ee/graphql_shared/fragments/vulnerability_detail.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getSecurityReportFinding\"] = oneQuery(doc, \"getSecurityReportFinding\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"unscheduleJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobUnschedule\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":171}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation unscheduleJob($id: CiBuildID!) {\\n  jobUnschedule(input: { id: $id }) {\\n    job {\\n      ...Job\\n    }\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"unscheduleJob\"] = oneQuery(doc, \"unscheduleJob\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-mb-2 gl-mt-2 gl-flex gl-w-full\"},[_c('span',{staticClass:\"gl-mr-5\",class:_vm.severityClass,attrs:{\"data-testid\":\"codequality-severity-icon\"}},[_c('gl-icon',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.severityLabel),expression:\"severityLabel\"}],attrs:{\"name\":_vm.severityIcon,\"size\":12}})],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-grow\"},[_c('div',[(_vm.isStatusSuccess)?_c('strong',[_vm._v(_vm._s(_vm.s__('ciReport|Fixed:')))]):_vm._e(),_vm._v(\"\\n      \"+_vm._s(_vm.issueName)+\"\\n    \")]),_vm._v(\" \"),(_vm.issue.path)?_c('report-link',{attrs:{\"issue\":_vm.issue}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_link.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_link.vue?vue&type=script&lang=js\"","<script>\n/* eslint-disable @gitlab/vue-require-i18n-strings */\nexport default {\n  name: 'ReportIssueLink',\n  props: {\n    issue: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"report-block-list-issue-description-link\">\n    in\n\n    <a\n      v-if=\"issue.urlPath\"\n      :href=\"issue.urlPath\"\n      target=\"_blank\"\n      rel=\"noopener noreferrer nofollow\"\n      class=\"break-link\"\n    >\n      {{ issue.path }}<template v-if=\"issue.line\">:{{ issue.line }}</template>\n    </a>\n    <template v-else>\n      {{ issue.path }}<template v-if=\"issue.line\">:{{ issue.line }}</template>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./report_link.vue?vue&type=template&id=52e4bc21\"\nimport script from \"./report_link.vue?vue&type=script&lang=js\"\nexport * from \"./report_link.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"report-block-list-issue-description-link\"},[_vm._v(\"\\n  in\\n\\n  \"),(_vm.issue.urlPath)?_c('a',{staticClass:\"break-link\",attrs:{\"href\":_vm.issue.urlPath,\"target\":\"_blank\",\"rel\":\"noopener noreferrer nofollow\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.issue.path)),(_vm.issue.line)?[_vm._v(\":\"+_vm._s(_vm.issue.line))]:_vm._e()],2):[_vm._v(\"\\n    \"+_vm._s(_vm.issue.path)),(_vm.issue.line)?[_vm._v(\":\"+_vm._s(_vm.issue.line))]:_vm._e()]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./codequality_issue_body.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./codequality_issue_body.vue?vue&type=script&lang=js\"","<script>\n/**\n * Renders Code quality body text\n * Fixed: [name] in [link]:[line]\n */\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport ReportLink from '~/ci/reports/components/report_link.vue';\nimport { STATUS_SUCCESS, STATUS_NEUTRAL } from '~/ci/reports/constants';\nimport { SEVERITY_CLASSES, SEVERITY_ICONS } from '../constants';\n\nexport default {\n  name: 'CodequalityIssueBody',\n  components: {\n    GlIcon,\n    ReportLink,\n  },\n  directives: {\n    tooltip: GlTooltipDirective,\n  },\n  props: {\n    status: {\n      type: String,\n      required: false,\n      default: STATUS_NEUTRAL,\n    },\n    issue: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    issueName() {\n      return `${this.severityLabel} - ${this.issue.name}`;\n    },\n    issueSeverity() {\n      return this.issue.severity?.toLowerCase();\n    },\n    isStatusSuccess() {\n      return this.status === STATUS_SUCCESS;\n    },\n    severityClass() {\n      return SEVERITY_CLASSES[this.issueSeverity] || SEVERITY_CLASSES.unknown;\n    },\n    severityIcon() {\n      return SEVERITY_ICONS[this.issueSeverity] || SEVERITY_ICONS.unknown;\n    },\n    severityLabel() {\n      return this.$options.severityText[this.issueSeverity] || this.$options.severityText.unknown;\n    },\n  },\n  severityText: {\n    info: s__('severity|Info'),\n    minor: s__('severity|Minor'),\n    major: s__('severity|Major'),\n    critical: s__('severity|Critical'),\n    blocker: s__('severity|Blocker'),\n    unknown: s__('severity|Unknown'),\n  },\n};\n</script>\n<template>\n  <div class=\"gl-mb-2 gl-mt-2 gl-flex gl-w-full\">\n    <span :class=\"severityClass\" class=\"gl-mr-5\" data-testid=\"codequality-severity-icon\">\n      <gl-icon v-tooltip=\"severityLabel\" :name=\"severityIcon\" :size=\"12\" />\n    </span>\n    <div class=\"gl-grow\">\n      <div>\n        <strong v-if=\"isStatusSuccess\">{{ s__('ciReport|Fixed:') }}</strong>\n        {{ issueName }}\n      </div>\n\n      <report-link v-if=\"issue.path\" :issue=\"issue\" />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./codequality_issue_body.vue?vue&type=template&id=4603d5d2\"\nimport script from \"./codequality_issue_body.vue?vue&type=script&lang=js\"\nexport * from \"./codequality_issue_body.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.length > _vm.remain)?_c('virtual-list',_vm._b({staticClass:\"js-virtual-list\",attrs:{\"size\":_vm.remain,\"remain\":_vm.remain,\"rtag\":_vm.rtag,\"wtag\":_vm.wtag,\"wclass\":_vm.wclass}},'virtual-list',_vm.$attrs,false),[_vm._t(\"default\")],2):_c(_vm.rtag,{tag:\"component\",staticClass:\"js-plain-element\"},[_c(_vm.wtag,{tag:\"component\",class:_vm.wclass},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./smart_virtual_list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./smart_virtual_list.vue?vue&type=script&lang=js\"","<script>\nimport VirtualList from 'vue-virtual-scroll-list';\n\nexport default {\n  name: 'SmartVirtualList',\n  components: { VirtualList },\n  props: {\n    size: { type: Number, required: true },\n    length: { type: Number, required: true },\n    remain: { type: Number, required: true },\n    rtag: { type: String, default: 'div', required: false },\n    wtag: { type: String, default: 'div', required: false },\n    wclass: { type: String, default: null, required: false },\n  },\n};\n</script>\n<template>\n  <virtual-list\n    v-if=\"length > remain\"\n    v-bind=\"$attrs\"\n    :size=\"remain\"\n    :remain=\"remain\"\n    :rtag=\"rtag\"\n    :wtag=\"wtag\"\n    :wclass=\"wclass\"\n    class=\"js-virtual-list\"\n  >\n    <slot></slot>\n  </virtual-list>\n  <component :is=\"rtag\" v-else class=\"js-plain-element\">\n    <component :is=\"wtag\" :class=\"wclass\"> <slot></slot> </component>\n  </component>\n</template>\n","import { render, staticRenderFns } from \"./smart_virtual_list.vue?vue&type=template&id=6a8e8eeb\"\nimport script from \"./smart_virtual_list.vue?vue&type=script&lang=js\"\nexport * from \"./smart_virtual_list.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n  return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","export const LOADING = 'LOADING';\nexport const ERROR = 'ERROR';\nexport const SUCCESS = 'SUCCESS';\n\nexport const STATUS_FAILED = 'failed';\nexport const STATUS_SUCCESS = 'success';\nexport const STATUS_NEUTRAL = 'neutral';\nexport const STATUS_NOT_FOUND = 'not_found';\n\nexport const status = {\n  LOADING,\n  ERROR,\n  SUCCESS,\n};\n\n/**\n * Slot names for the ReportSection component, corresponding to the success,\n * loading and error statuses.\n */\nexport const SLOT_SUCCESS = 'success';\nexport const SLOT_LOADING = 'loading';\nexport const SLOT_ERROR = 'error';\n\nexport const CODE_QUALITY_SCALE_KEY = 'codeQuality';\nexport const SAST_SCALE_KEY = 'sast';\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasPreviousPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startCursor\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":92}};\n    doc.loc.source = {\"body\":\"fragment PageInfo on PageInfo {\\n  hasNextPage\\n  hasPreviousPage\\n  startCursor\\n  endCursor\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"PageInfo\"] = oneQuery(doc, \"PageInfo\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-items-center\",attrs:{\"id\":_vm.noteId}},[_c('div',{staticClass:\"circle-icon-container gl-shrink-0 gl-self-start\",class:_vm.iconClass},[_c('gl-icon',{attrs:{\"size\":16,\"name\":_vm.iconName,\"variant\":\"subtle\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-ml-5 gl-grow\",attrs:{\"data-testid\":\"event-item-content\"}},[_c('note-header',{staticClass:\"gl-pb-0 gl-pl-0\",attrs:{\"note-id\":_vm.id,\"author\":_vm.author,\"created-at\":_vm.createdAt,\"show-spinner\":false,\"is-system-note\":_vm.isSystemNote}},[_vm._t(\"header-message\",function(){return [(_vm.createdAt)?[_vm._v(\"·\")]:_vm._e()]})],2),_vm._v(\" \"),_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.showRightSlot)?_vm._t(\"right-content\"):(_vm.showActionButtons)?_c('div',{staticClass:\"gl-shrink-0 gl-self-start\",attrs:{\"data-testid\":\"action-buttons\"}},_vm._l((_vm.actionButtons),function(button){return _c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],key:button.title,attrs:{\"category\":\"tertiary\",\"icon\":button.iconName,\"title\":button.title,\"aria-label\":button.title},on:{\"click\":button.onClick}})}),1):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event_item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlButton, GlIcon } from '@gitlab/ui';\nimport NoteHeader from '~/notes/components/note_header.vue';\n\nexport default {\n  name: 'EventItem',\n  components: {\n    GlIcon,\n    NoteHeader,\n    GlButton,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    id: {\n      type: [String, Number],\n      required: false,\n      default: undefined,\n    },\n    author: {\n      type: Object,\n      required: true,\n    },\n    createdAt: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    iconName: {\n      type: String,\n      required: false,\n      default: 'plus',\n    },\n    iconClass: {\n      type: String,\n      required: false,\n      default: 'ci-status-icon-success',\n    },\n    actionButtons: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    showRightSlot: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showActionButtons: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    isSystemNote: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    noteId() {\n      return this.id ? `note_${this.id}` : undefined;\n    },\n  },\n};\n</script>\n\n<template>\n  <div :id=\"noteId\" class=\"gl-flex gl-items-center\">\n    <div class=\"circle-icon-container gl-shrink-0 gl-self-start\" :class=\"iconClass\">\n      <gl-icon :size=\"16\" :name=\"iconName\" variant=\"subtle\" />\n    </div>\n    <div class=\"gl-ml-5 gl-grow\" data-testid=\"event-item-content\">\n      <note-header\n        :note-id=\"id\"\n        :author=\"author\"\n        :created-at=\"createdAt\"\n        :show-spinner=\"false\"\n        :is-system-note=\"isSystemNote\"\n        class=\"gl-pb-0 gl-pl-0\"\n      >\n        <slot name=\"header-message\"><template v-if=\"createdAt\">&middot;</template></slot>\n      </note-header>\n\n      <slot></slot>\n    </div>\n\n    <slot v-if=\"showRightSlot\" name=\"right-content\"></slot>\n\n    <div\n      v-else-if=\"showActionButtons\"\n      class=\"gl-shrink-0 gl-self-start\"\n      data-testid=\"action-buttons\"\n    >\n      <gl-button\n        v-for=\"button in actionButtons\"\n        :key=\"button.title\"\n        v-gl-tooltip\n        category=\"tertiary\"\n        :icon=\"button.iconName\"\n        :title=\"button.title\"\n        :aria-label=\"button.title\"\n        @click=\"button.onClick\"\n      />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./event_item.vue?vue&type=template&id=fa820e82\"\nimport script from \"./event_item.vue?vue&type=script&lang=js\"\nexport * from \"./event_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { NAME_COLLAPSE } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../constants/key-codes';\nimport { RX_SPACE_SPLIT, RX_HASH_ID, RX_HASH } from '../../constants/regex';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive';\nimport { removeClass, removeAttr, removeStyle, hasAttr, setAttr, setStyle, requestAF, isTag, getAttr, addClass, isDisabled } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOff, eventOn } from '../../utils/events';\nimport { isString } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { keys } from '../../utils/object';\nimport { getEventRoot } from '../../utils/get-event-root';\n\n// --- Constants ---\n\n// Classes to apply to trigger element\nconst CLASS_BV_TOGGLE_COLLAPSED = 'collapsed';\nconst CLASS_BV_TOGGLE_NOT_COLLAPSED = 'not-collapsed';\n\n// Property key for handler storage\nconst BV_BASE = '__BV_toggle';\n// Root event listener property (Function)\nconst BV_TOGGLE_ROOT_HANDLER = `${BV_BASE}_HANDLER__`;\n// Trigger element click handler property (Function)\nconst BV_TOGGLE_CLICK_HANDLER = `${BV_BASE}_CLICK__`;\n// Target visibility state property (Boolean)\nconst BV_TOGGLE_STATE = `${BV_BASE}_STATE__`;\n// Target ID list property (Array)\nconst BV_TOGGLE_TARGETS = `${BV_BASE}_TARGETS__`;\n\n// Commonly used strings\nconst STRING_FALSE = 'false';\nconst STRING_TRUE = 'true';\n\n// Commonly used attribute names\nconst ATTR_ARIA_CONTROLS = 'aria-controls';\nconst ATTR_ARIA_EXPANDED = 'aria-expanded';\nconst ATTR_ROLE = 'role';\nconst ATTR_TABINDEX = 'tabindex';\n\n// Commonly used style properties\nconst STYLE_OVERFLOW_ANCHOR = 'overflow-anchor';\n\n// Emitted control event for collapse (emitted to collapse)\nconst ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\n\n// Listen to event for toggle state update (emitted by collapse)\nconst ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\n\n// Private event emitted on `$root` to ensure the toggle state is always synced\n// Gets emitted even if the state of b-collapse has not changed\n// This event is NOT to be documented as people should not be using it\nconst ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\n// Private event we send to collapse to request state update sync event\nconst ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nconst KEYDOWN_KEY_CODES = [CODE_ENTER, CODE_SPACE];\n\n// --- Helper methods ---\n\nconst isNonStandardTag = el => !arrayIncludes(['button', 'a'], el.tagName.toLowerCase());\nconst getTargets = (_ref, el) => {\n  let {\n    modifiers,\n    arg,\n    value\n  } = _ref;\n  // Any modifiers are considered target IDs\n  const targets = keys(modifiers || {});\n\n  // If value is a string, split out individual targets (if space delimited)\n  value = isString(value) ? value.split(RX_SPACE_SPLIT) : value;\n\n  // Support target ID as link href (`href=\"#id\"`)\n  if (isTag(el.tagName, 'a')) {\n    const href = getAttr(el, 'href') || '';\n    if (RX_HASH_ID.test(href)) {\n      targets.push(href.replace(RX_HASH, ''));\n    }\n  }\n\n  // Add ID from `arg` (if provided), and support value\n  // as a single string ID or an array of string IDs\n  // If `value` is not an array or string, then it gets filtered out\n  concat(arg, value).forEach(t => isString(t) && targets.push(t));\n\n  // Return only unique and truthy target IDs\n  return targets.filter((t, index, arr) => t && arr.indexOf(t) === index);\n};\nconst removeClickListener = el => {\n  const handler = el[BV_TOGGLE_CLICK_HANDLER];\n  if (handler) {\n    eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n  }\n  el[BV_TOGGLE_CLICK_HANDLER] = null;\n};\nconst addClickListener = (el, instance) => {\n  removeClickListener(el);\n  if (instance) {\n    const handler = event => {\n      if (!(event.type === 'keydown' && !arrayIncludes(KEYDOWN_KEY_CODES, event.keyCode)) && !isDisabled(el)) {\n        const targets = el[BV_TOGGLE_TARGETS] || [];\n        targets.forEach(target => {\n          getEventRoot(instance).$emit(ROOT_ACTION_EVENT_NAME_TOGGLE, target);\n        });\n      }\n    };\n    el[BV_TOGGLE_CLICK_HANDLER] = handler;\n    eventOn(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    if (isNonStandardTag(el)) {\n      eventOn(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n    }\n  }\n};\nconst removeRootListeners = (el, instance) => {\n  if (el[BV_TOGGLE_ROOT_HANDLER] && instance) {\n    getEventRoot(instance).$off([ROOT_EVENT_NAME_STATE, ROOT_EVENT_NAME_SYNC_STATE], el[BV_TOGGLE_ROOT_HANDLER]);\n  }\n  el[BV_TOGGLE_ROOT_HANDLER] = null;\n};\nconst addRootListeners = (el, instance) => {\n  removeRootListeners(el, instance);\n  if (instance) {\n    const handler = (id, state) => {\n      // `state` will be `true` if target is expanded\n      if (arrayIncludes(el[BV_TOGGLE_TARGETS] || [], id)) {\n        // Set/Clear 'collapsed' visibility class state\n        el[BV_TOGGLE_STATE] = state;\n        // Set `aria-expanded` and class state on trigger element\n        setToggleState(el, state);\n      }\n    };\n    el[BV_TOGGLE_ROOT_HANDLER] = handler;\n    // Listen for toggle state changes (public) and sync (private)\n    getEventRoot(instance).$on([ROOT_EVENT_NAME_STATE, ROOT_EVENT_NAME_SYNC_STATE], handler);\n  }\n};\nconst setToggleState = (el, state) => {\n  // State refers to the visibility of the collapse\n  if (state) {\n    removeClass(el, CLASS_BV_TOGGLE_COLLAPSED);\n    addClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED);\n    setAttr(el, ATTR_ARIA_EXPANDED, STRING_TRUE);\n  } else {\n    removeClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED);\n    addClass(el, CLASS_BV_TOGGLE_COLLAPSED);\n    setAttr(el, ATTR_ARIA_EXPANDED, STRING_FALSE);\n  }\n};\n\n// Reset and remove a property from the provided element\nconst resetProp = (el, prop) => {\n  el[prop] = null;\n  delete el[prop];\n};\n\n// Handle directive updates\nconst handleUpdate = (el, binding, vnode) => {\n  /* istanbul ignore next: should never happen */\n  if (!IS_BROWSER || !getInstanceFromDirective(vnode, binding)) {\n    return;\n  }\n\n  // If element is not a button or link, we add `role=\"button\"`\n  // and `tabindex=\"0\"` for accessibility reasons\n  if (isNonStandardTag(el)) {\n    if (!hasAttr(el, ATTR_ROLE)) {\n      setAttr(el, ATTR_ROLE, 'button');\n    }\n    if (!hasAttr(el, ATTR_TABINDEX)) {\n      setAttr(el, ATTR_TABINDEX, '0');\n    }\n  }\n\n  // Ensure the collapse class and `aria-*` attributes persist\n  // after element is updated (either by parent re-rendering\n  // or changes to this element or its contents)\n  setToggleState(el, el[BV_TOGGLE_STATE]);\n\n  // Parse list of target IDs\n  const targets = getTargets(binding, el);\n\n  // Ensure the `aria-controls` hasn't been overwritten\n  // or removed when vnode updates\n  // Also ensure to set `overflow-anchor` to `none` to prevent\n  // the browser's scroll anchoring behavior\n  /* istanbul ignore else */\n  if (targets.length > 0) {\n    setAttr(el, ATTR_ARIA_CONTROLS, targets.join(' '));\n    setStyle(el, STYLE_OVERFLOW_ANCHOR, 'none');\n  } else {\n    removeAttr(el, ATTR_ARIA_CONTROLS);\n    removeStyle(el, STYLE_OVERFLOW_ANCHOR);\n  }\n\n  // Add/Update our click listener(s)\n  // Wrap in a `requestAF()` to allow any previous\n  // click handling to occur first\n  requestAF(() => {\n    addClickListener(el, getInstanceFromDirective(vnode, binding));\n  });\n\n  // If targets array has changed, update\n  if (!looseEqual(targets, el[BV_TOGGLE_TARGETS])) {\n    // Update targets array to element storage\n    el[BV_TOGGLE_TARGETS] = targets;\n    // Ensure `aria-controls` is up to date\n    // Request a state update from targets so that we can\n    // ensure expanded state is correct (in most cases)\n    targets.forEach(target => {\n      getEventRoot(getInstanceFromDirective(vnode, binding)).$emit(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, target);\n    });\n  }\n};\n\n/*\n * Export our directive\n */\nconst VBToggle = {\n  bind(el, binding, vnode) {\n    // State is initially collapsed until we receive a state event\n    el[BV_TOGGLE_STATE] = false;\n    // Assume no targets initially\n    el[BV_TOGGLE_TARGETS] = [];\n    // Add our root listeners\n    addRootListeners(el, getInstanceFromDirective(vnode, binding));\n    // Initial update of trigger\n    handleUpdate(el, binding, vnode);\n  },\n  componentUpdated: handleUpdate,\n  updated: handleUpdate,\n  unbind(el, binding, vnode) {\n    removeClickListener(el);\n    // Remove our $root listener\n    removeRootListeners(el, getInstanceFromDirective(vnode, binding));\n    // Reset custom props\n    resetProp(el, BV_TOGGLE_ROOT_HANDLER);\n    resetProp(el, BV_TOGGLE_CLICK_HANDLER);\n    resetProp(el, BV_TOGGLE_STATE);\n    resetProp(el, BV_TOGGLE_TARGETS);\n    // Reset classes/attrs/styles\n    removeClass(el, CLASS_BV_TOGGLE_COLLAPSED);\n    removeClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED);\n    removeAttr(el, ATTR_ARIA_EXPANDED);\n    removeAttr(el, ATTR_ARIA_CONTROLS);\n    removeAttr(el, ATTR_ROLE);\n    removeStyle(el, STYLE_OVERFLOW_ANCHOR);\n  }\n};\n\nexport { VBToggle };\n","var baseDifference = require('./_baseDifference'),\n    baseRest = require('./_baseRest'),\n    isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, values)\n    : [];\n});\n\nmodule.exports = without;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Url\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailUrl\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"href\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Diff\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailDiff\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"before\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Code\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailCode\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FileLocation\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailFileLocation\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lineStart\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lineEnd\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ModuleLocation\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailModuleLocation\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"moduleName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"offset\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Commit\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailCommit\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Text\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailText\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Markdown\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailMarkdown\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailBoolean\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailInt\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetail\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FileLocation\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Url\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Diff\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Code\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Commit\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Markdown\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Text\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ModuleLocation\"},\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ListFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailList\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"List\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailList\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ListFields\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailList\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ListFields\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NamedList\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailNamedList\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fieldName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Table\"},\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailList\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ListFields\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CodeFlowNode\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailCodeFlowNode\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodeType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileLocation\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FileLocation\"},\"directives\":[]}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CodeFlows\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailCodeFlows\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"CodeFlowNode\"},\"directives\":[]}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TableFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailTable\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"headers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rows\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"row\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Table\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailTable\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"headers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rows\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"row\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TableFields\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":2337}};\n    doc.loc.source = {\"body\":\"fragment Url on VulnerabilityDetailUrl {\\n  type: __typename\\n  name\\n  href\\n}\\n\\nfragment Diff on VulnerabilityDetailDiff {\\n  type: __typename\\n  name\\n  before\\n  after\\n}\\n\\nfragment Code on VulnerabilityDetailCode {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment FileLocation on VulnerabilityDetailFileLocation {\\n  type: __typename\\n  name\\n  fileName\\n  lineStart\\n  lineEnd\\n}\\n\\nfragment ModuleLocation on VulnerabilityDetailModuleLocation {\\n  type: __typename\\n  name\\n  moduleName\\n  offset\\n}\\n\\nfragment Commit on VulnerabilityDetailCommit {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment Text on VulnerabilityDetailText {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment Markdown on VulnerabilityDetailMarkdown {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment Boolean on VulnerabilityDetailBoolean {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment Int on VulnerabilityDetailInt {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment NonNestedReportTypes on VulnerabilityDetail {\\n  ...FileLocation\\n  ...Url\\n  ...Diff\\n  ...Code\\n  ...Commit\\n  ...Markdown\\n  ...Text\\n  ...Int\\n  ...Boolean\\n  ...ModuleLocation\\n}\\n\\nfragment ListFields on VulnerabilityDetailList {\\n  type: __typename\\n  name\\n}\\n\\nfragment List on VulnerabilityDetailList {\\n  ...ListFields\\n  items {\\n    ...NonNestedReportTypes\\n    ... on VulnerabilityDetailList {\\n      ...ListFields\\n      items {\\n        ...NonNestedReportTypes\\n      }\\n    }\\n  }\\n}\\n\\nfragment NamedList on VulnerabilityDetailNamedList {\\n  type: __typename\\n  name\\n  items {\\n    name\\n    fieldName\\n    value {\\n      ...NonNestedReportTypes\\n      ...Table\\n      ... on VulnerabilityDetailList {\\n        ...ListFields\\n        items {\\n          ...NonNestedReportTypes\\n        }\\n      }\\n    }\\n  }\\n}\\n\\nfragment CodeFlowNode on VulnerabilityDetailCodeFlowNode {\\n  type: __typename\\n  nodeType\\n  fileLocation {\\n    ...FileLocation\\n  }\\n}\\n\\nfragment CodeFlows on VulnerabilityDetailCodeFlows {\\n  type: __typename\\n  name\\n  items {\\n    ... {\\n      ...CodeFlowNode\\n    }\\n  }\\n}\\n\\nfragment TableFields on VulnerabilityDetailTable {\\n  type: __typename\\n  name\\n  headers {\\n    ...NonNestedReportTypes\\n  }\\n  rows {\\n    row {\\n      ...NonNestedReportTypes\\n    }\\n  }\\n}\\n\\nfragment Table on VulnerabilityDetailTable {\\n  type: __typename\\n  name\\n  headers {\\n    ...NonNestedReportTypes\\n  }\\n  rows {\\n    row {\\n      ...NonNestedReportTypes\\n      ...TableFields\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"Url\"] = oneQuery(doc, \"Url\");\n        \n        module.exports[\"Diff\"] = oneQuery(doc, \"Diff\");\n        \n        module.exports[\"Code\"] = oneQuery(doc, \"Code\");\n        \n        module.exports[\"FileLocation\"] = oneQuery(doc, \"FileLocation\");\n        \n        module.exports[\"ModuleLocation\"] = oneQuery(doc, \"ModuleLocation\");\n        \n        module.exports[\"Commit\"] = oneQuery(doc, \"Commit\");\n        \n        module.exports[\"Text\"] = oneQuery(doc, \"Text\");\n        \n        module.exports[\"Markdown\"] = oneQuery(doc, \"Markdown\");\n        \n        module.exports[\"Boolean\"] = oneQuery(doc, \"Boolean\");\n        \n        module.exports[\"Int\"] = oneQuery(doc, \"Int\");\n        \n        module.exports[\"NonNestedReportTypes\"] = oneQuery(doc, \"NonNestedReportTypes\");\n        \n        module.exports[\"ListFields\"] = oneQuery(doc, \"ListFields\");\n        \n        module.exports[\"List\"] = oneQuery(doc, \"List\");\n        \n        module.exports[\"NamedList\"] = oneQuery(doc, \"NamedList\");\n        \n        module.exports[\"CodeFlowNode\"] = oneQuery(doc, \"CodeFlowNode\");\n        \n        module.exports[\"CodeFlows\"] = oneQuery(doc, \"CodeFlows\");\n        \n        module.exports[\"TableFields\"] = oneQuery(doc, \"TableFields\");\n        \n        module.exports[\"Table\"] = oneQuery(doc, \"Table\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"media-section\"},[_c('div',{staticClass:\"gl-flex gl-py-4 gl-pl-5 gl-pr-4\"},[_c('status-icon',{staticClass:\"align-self-center\",attrs:{\"status\":_vm.statusIconName,\"size\":24}}),_vm._v(\" \"),_c('div',{staticClass:\"media-body gl-flex !gl-flex-row gl-items-start\"},[_c('div',{staticClass:\"js-code-text code-text gl-grow gl-self-center\"},[_c('div',{staticClass:\"gl-flex gl-items-center\"},[_c('p',{staticClass:\"gl-m-0 gl-leading-normal\"},[_vm._v(_vm._s(_vm.headerText))]),_vm._v(\" \"),_vm._t(_vm.slotName),_vm._v(\" \"),(_vm.hasPopover)?_c('help-popover',{staticClass:\"gl-ml-2 gl-inline-flex\",attrs:{\"options\":_vm.popoverOptions}}):_vm._e()],2),_vm._v(\" \"),_vm._t(\"sub-heading\")],2),_vm._v(\" \"),_vm._t(\"action-buttons\",null,{\"isCollapsible\":_vm.isCollapsible}),_vm._v(\" \"),(_vm.isCollapsible)?_c('div',{staticClass:\"gl-border-l gl-ml-3 gl-pl-3\"},[_c('gl-button',{attrs:{\"data-testid\":\"report-section-expand-button\",\"category\":\"tertiary\",\"size\":\"small\",\"icon\":_vm.isExpanded ? 'chevron-lg-up' : 'chevron-lg-down'},on:{\"click\":_vm.toggleCollapsed}})],1):_vm._e()],2)],1),_vm._v(\" \"),(_vm.hasIssues)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isExpanded),expression:\"isExpanded\"}],staticClass:\"js-report-section-container\"},[_vm._t(\"body\",function(){return [_c('issues-list',{class:_vm.issuesListContainerClass,attrs:{\"unresolved-issues\":_vm.unresolvedIssues,\"resolved-issues\":_vm.resolvedIssues,\"neutral-issues\":_vm.neutralIssues,\"component\":_vm.component,\"show-report-section-status-icon\":_vm.showReportSectionStatusIcon,\"issues-ul-element-class\":_vm.issuesUlElementClass,\"issue-item-class\":_vm.issueItemClass}})]})],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport ReportItem from '~/ci/reports/components/report_item.vue';\nimport { STATUS_FAILED, STATUS_NEUTRAL, STATUS_SUCCESS } from '~/ci/reports/constants';\nimport SmartVirtualList from '~/vue_shared/components/smart_virtual_list.vue';\n\nconst wrapIssueWithState =\n  (status, isNew = false) =>\n  (issue) => ({\n    status: issue.status || status,\n    isNew,\n    issue,\n  });\n\n/**\n * Renders block of issues\n */\nexport default {\n  components: {\n    SmartVirtualList,\n    ReportItem,\n  },\n  // Typical height of a report item in px\n  typicalReportItemHeight: 32,\n  /*\n   The maximum amount of shown issues. This is calculated by\n   ( max-height of report-block-list / typicalReportItemHeight ) + some safety margin\n   We will use VirtualList if we have more items than this number.\n   For entries lower than this number, the virtual scroll list calculates the total height of the element wrongly.\n   */\n  maxShownReportItems: 20,\n  props: {\n    newIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    unresolvedIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    resolvedIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    neutralIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    component: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showReportSectionStatusIcon: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    issuesUlElementClass: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    issueItemClass: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    nestedLevel: {\n      type: Number,\n      required: false,\n      default: 0,\n      validator: (value) => [0, 1, 2].includes(value),\n    },\n  },\n  computed: {\n    issuesWithState() {\n      return [\n        ...this.newIssues.map(wrapIssueWithState(STATUS_FAILED, true)),\n        ...this.unresolvedIssues.map(wrapIssueWithState(STATUS_FAILED)),\n        ...this.neutralIssues.map(wrapIssueWithState(STATUS_NEUTRAL)),\n        ...this.resolvedIssues.map(wrapIssueWithState(STATUS_SUCCESS)),\n      ];\n    },\n    wclass() {\n      return `report-block-list ${this.issuesUlElementClass}`;\n    },\n    listClasses() {\n      return {\n        'gl-pl-9': this.nestedLevel === 1,\n        'gl-pl-11-5': this.nestedLevel === 2,\n      };\n    },\n  },\n};\n</script>\n<template>\n  <smart-virtual-list\n    :length=\"issuesWithState.length\"\n    :remain=\"$options.maxShownReportItems\"\n    :size=\"$options.typicalReportItemHeight\"\n    class=\"report-block-container\"\n    :class=\"listClasses\"\n    wtag=\"ul\"\n    :wclass=\"wclass\"\n  >\n    <report-item\n      v-for=\"(wrapped, index) in issuesWithState\"\n      :key=\"index\"\n      :issue=\"wrapped.issue\"\n      :status=\"wrapped.status\"\n      :component=\"component\"\n      :is-new=\"wrapped.isNew\"\n      :show-report-section-status-icon=\"showReportSectionStatusIcon\"\n      :class=\"issueItemClass\"\n    />\n  </smart-virtual-list>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issues_list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issues_list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./issues_list.vue?vue&type=template&id=5a703cbf\"\nimport script from \"./issues_list.vue?vue&type=script&lang=js\"\nexport * from \"./issues_list.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('smart-virtual-list',{staticClass:\"report-block-container\",class:_vm.listClasses,attrs:{\"length\":_vm.issuesWithState.length,\"remain\":_vm.$options.maxShownReportItems,\"size\":_vm.$options.typicalReportItemHeight,\"wtag\":\"ul\",\"wclass\":_vm.wclass}},_vm._l((_vm.issuesWithState),function(wrapped,index){return _c('report-item',{key:index,class:_vm.issueItemClass,attrs:{\"issue\":wrapped.issue,\"status\":wrapped.status,\"component\":_vm.component,\"is-new\":wrapped.isNew,\"show-report-section-status-icon\":_vm.showReportSectionStatusIcon}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_section.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_section.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport api from '~/api';\nimport StatusIcon from '~/vue_merge_request_widget/components/mr_widget_status_icon.vue';\nimport HelpPopover from '~/vue_shared/components/help_popover.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { status, SLOT_SUCCESS, SLOT_LOADING, SLOT_ERROR } from '../constants';\nimport IssuesList from './issues_list.vue';\n\nexport default {\n  name: 'ReportSection',\n  components: {\n    GlButton,\n    IssuesList,\n    HelpPopover,\n    StatusIcon,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  props: {\n    alwaysOpen: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    component: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    status: {\n      type: String,\n      required: true,\n    },\n    loadingText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    errorText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    successText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    unresolvedIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    resolvedIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    neutralIssues: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    infoText: {\n      type: [String, Boolean],\n      required: false,\n      default: false,\n    },\n    hasIssues: {\n      type: Boolean,\n      required: true,\n    },\n    popoverOptions: {\n      type: Object,\n      default: () => ({}),\n      required: false,\n    },\n    showReportSectionStatusIcon: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    issuesUlElementClass: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    issuesListContainerClass: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    issueItemClass: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    shouldEmitToggleEvent: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    trackAction: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n\n  data() {\n    return {\n      isCollapsed: true,\n    };\n  },\n\n  computed: {\n    isLoading() {\n      return this.status === status.LOADING;\n    },\n    loadingFailed() {\n      return this.status === status.ERROR;\n    },\n    isSuccess() {\n      return this.status === status.SUCCESS;\n    },\n    isCollapsible() {\n      return !this.alwaysOpen && this.hasIssues;\n    },\n    isExpanded() {\n      return this.alwaysOpen || !this.isCollapsed;\n    },\n    statusIconName() {\n      if (this.isLoading) {\n        return 'loading';\n      }\n      if (this.loadingFailed || this.unresolvedIssues.length || this.neutralIssues.length) {\n        return 'warning';\n      }\n      return 'success';\n    },\n    headerText() {\n      if (this.isLoading) {\n        return this.loadingText;\n      }\n\n      if (this.isSuccess) {\n        return this.successText;\n      }\n\n      if (this.loadingFailed) {\n        return this.errorText;\n      }\n\n      return '';\n    },\n    hasPopover() {\n      return Object.keys(this.popoverOptions).length > 0;\n    },\n    slotName() {\n      if (this.isSuccess) {\n        return SLOT_SUCCESS;\n      }\n      if (this.isLoading) {\n        return SLOT_LOADING;\n      }\n\n      return SLOT_ERROR;\n    },\n  },\n  methods: {\n    toggleCollapsed() {\n      if (this.trackAction) {\n        api.trackRedisHllUserEvent(this.trackAction);\n      }\n\n      if (this.shouldEmitToggleEvent) {\n        this.$emit('toggleEvent');\n      }\n      this.isCollapsed = !this.isCollapsed;\n    },\n  },\n};\n</script>\n<template>\n  <section class=\"media-section\">\n    <div class=\"gl-flex gl-py-4 gl-pl-5 gl-pr-4\">\n      <status-icon :status=\"statusIconName\" :size=\"24\" class=\"align-self-center\" />\n      <div class=\"media-body gl-flex !gl-flex-row gl-items-start\">\n        <div class=\"js-code-text code-text gl-grow gl-self-center\">\n          <div class=\"gl-flex gl-items-center\">\n            <p class=\"gl-m-0 gl-leading-normal\">{{ headerText }}</p>\n            <slot :name=\"slotName\"></slot>\n            <help-popover\n              v-if=\"hasPopover\"\n              :options=\"popoverOptions\"\n              class=\"gl-ml-2 gl-inline-flex\"\n            />\n          </div>\n          <slot name=\"sub-heading\"></slot>\n        </div>\n\n        <slot name=\"action-buttons\" :is-collapsible=\"isCollapsible\"></slot>\n\n        <div v-if=\"isCollapsible\" class=\"gl-border-l gl-ml-3 gl-pl-3\">\n          <gl-button\n            data-testid=\"report-section-expand-button\"\n            category=\"tertiary\"\n            size=\"small\"\n            :icon=\"isExpanded ? 'chevron-lg-up' : 'chevron-lg-down'\"\n            @click=\"toggleCollapsed\"\n          />\n        </div>\n      </div>\n    </div>\n\n    <div v-if=\"hasIssues\" v-show=\"isExpanded\" class=\"js-report-section-container\">\n      <slot name=\"body\">\n        <issues-list\n          :unresolved-issues=\"unresolvedIssues\"\n          :resolved-issues=\"resolvedIssues\"\n          :neutral-issues=\"neutralIssues\"\n          :component=\"component\"\n          :show-report-section-status-icon=\"showReportSectionStatusIcon\"\n          :issues-ul-element-class=\"issuesUlElementClass\"\n          :class=\"issuesListContainerClass\"\n          :issue-item-class=\"issueItemClass\"\n        />\n      </slot>\n    </div>\n  </section>\n</template>\n","import { render, staticRenderFns } from \"./report_section.vue?vue&type=template&id=52ac4d2f\"\nimport script from \"./report_section.vue?vue&type=script&lang=js\"\nexport * from \"./report_section.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { groupBy } from 'lodash';\nimport { LICENSE_APPROVAL_STATUS } from 'ee/vue_shared/license_compliance/constants';\nimport { n__, sprintf } from '~/locale';\nimport { STATUS_FAILED, STATUS_NEUTRAL, STATUS_SUCCESS } from '~/ci/reports/constants';\n\n/**\n *\n * Converts the snake case in license objects to camel case\n *\n * @param license {Object} License Object\n * @returns {Object}\n *\n */\nexport const normalizeLicense = (license) => {\n  const { approval_status: approvalStatus, ...rest } = license;\n  return {\n    ...rest,\n    approvalStatus,\n  };\n};\n\nexport const getIssueStatusFromLicenseStatus = (approvalStatus) => {\n  if (approvalStatus === LICENSE_APPROVAL_STATUS.ALLOWED) {\n    return STATUS_SUCCESS;\n  }\n  if (approvalStatus === LICENSE_APPROVAL_STATUS.DENIED) {\n    return STATUS_FAILED;\n  }\n  return STATUS_NEUTRAL;\n};\n\nexport const getPackagesString = (packages, truncate, maxPackages) => {\n  const translatedMessage = n__(\n    'ciReport|Used by %{packagesString}',\n    'ciReport|Used by %{packagesString}, and %{lastPackage}',\n    packages.length,\n  );\n\n  let packagesString;\n  let lastPackage = '';\n\n  if (packages.length === 1) {\n    // When there is only 1 package name to show.\n    packagesString = packages[0].name;\n  } else if (truncate && packages.length > maxPackages) {\n    // When packages count is higher than displayPackageCount\n    // and truncate is true.\n    packagesString = packages\n      .slice(0, maxPackages)\n      .map((packageItem) => packageItem.name)\n      .join(', ');\n  } else {\n    // Return all package names separated by comma with proper grammar\n    packagesString = packages\n      .slice(0, packages.length - 1)\n      .map((packageItem) => packageItem.name)\n      .join(', ');\n    lastPackage = packages[packages.length - 1].name;\n  }\n\n  return sprintf(translatedMessage, {\n    packagesString,\n    lastPackage,\n  });\n};\n\n/**\n * This converts the newer licence format into the old one so we can use it with our older components.\n *\n * NOTE: This helper is temporary and can be removed once we flip the `parsedLicenseReport` feature flag\n * The below issue is for tracking its removal:\n * https://gitlab.com/gitlab-org/gitlab/issues/33878\n *\n * @param {Object} license The license in the newer format that needs converting\n * @returns {Object} The converted license;\n */\n\nexport const convertToOldReportFormat = (license) => {\n  const approvalStatus = license.classification.approval_status;\n\n  return {\n    ...license,\n    approvalStatus,\n    id: license.classification.id,\n    packages: license.dependencies,\n    status: getIssueStatusFromLicenseStatus(approvalStatus),\n  };\n};\n\n/**\n * Takes an array of licenses and returns a function that takes an report-group objects\n *\n * It returns a fresh object, containing all properties of the original report-group and added \"license\" property,\n * containing an array of licenses, matching the report-group's status\n *\n * @param {Array} licenses\n * @returns {function(*): {licenses: (*|*[])}}\n */\nexport const addLicensesMatchingReportGroupStatus = (licenses) => {\n  const licensesGroupedByStatus = groupBy(licenses, 'status');\n\n  return (reportGroup) => ({\n    ...reportGroup,\n    licenses: licensesGroupedByStatus[reportGroup.status] || [],\n  });\n};\n\n/**\n * Returns true of the given object has a \"license\" property, containing an array with at least licenses. Otherwise false.\n *\n *\n * @param {Object}\n * @returns {boolean}\n */\nexport const reportGroupHasAtLeastOneLicense = ({ licenses }) => licenses?.length > 0;\n","/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n  if (obj instanceof Map) {\n    obj.clear =\n      obj.delete =\n      obj.set =\n        function () {\n          throw new Error('map is read-only');\n        };\n  } else if (obj instanceof Set) {\n    obj.add =\n      obj.clear =\n      obj.delete =\n        function () {\n          throw new Error('set is read-only');\n        };\n  }\n\n  // Freeze self\n  Object.freeze(obj);\n\n  Object.getOwnPropertyNames(obj).forEach((name) => {\n    const prop = obj[name];\n    const type = typeof prop;\n\n    // Freeze prop if it is an object or function and also not already frozen\n    if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n      deepFreeze(prop);\n    }\n  });\n\n  return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n  /**\n   * @param {CompiledMode} mode\n   */\n  constructor(mode) {\n    // eslint-disable-next-line no-undefined\n    if (mode.data === undefined) mode.data = {};\n\n    this.data = mode.data;\n    this.isMatchIgnored = false;\n  }\n\n  ignoreMatch() {\n    this.isMatchIgnored = true;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n  return value\n    .replace(/&/g, '&amp;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&#x27;');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n  /** @type Record<string,any> */\n  const result = Object.create(null);\n\n  for (const key in original) {\n    result[key] = original[key];\n  }\n  objects.forEach(function(obj) {\n    for (const key in obj) {\n      result[key] = obj[key];\n    }\n  });\n  return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n  // rarely we can have a sublanguage where language is undefined\n  // TODO: track down why\n  return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n  // sub-language\n  if (name.startsWith(\"language:\")) {\n    return name.replace(\"language:\", \"language-\");\n  }\n  // tiered scope: comment.line\n  if (name.includes(\".\")) {\n    const pieces = name.split(\".\");\n    return [\n      `${prefix}${pieces.shift()}`,\n      ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n    ].join(\" \");\n  }\n  // simple scope\n  return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n  /**\n   * Creates a new HTMLRenderer\n   *\n   * @param {Tree} parseTree - the parse tree (must support `walk` API)\n   * @param {{classPrefix: string}} options\n   */\n  constructor(parseTree, options) {\n    this.buffer = \"\";\n    this.classPrefix = options.classPrefix;\n    parseTree.walk(this);\n  }\n\n  /**\n   * Adds texts to the output stream\n   *\n   * @param {string} text */\n  addText(text) {\n    this.buffer += escapeHTML(text);\n  }\n\n  /**\n   * Adds a node open to the output stream (if needed)\n   *\n   * @param {Node} node */\n  openNode(node) {\n    if (!emitsWrappingTags(node)) return;\n\n    const className = scopeToCSSClass(node.scope,\n      { prefix: this.classPrefix });\n    this.span(className);\n  }\n\n  /**\n   * Adds a node close to the output stream (if needed)\n   *\n   * @param {Node} node */\n  closeNode(node) {\n    if (!emitsWrappingTags(node)) return;\n\n    this.buffer += SPAN_CLOSE;\n  }\n\n  /**\n   * returns the accumulated buffer\n  */\n  value() {\n    return this.buffer;\n  }\n\n  // helpers\n\n  /**\n   * Builds a span element\n   *\n   * @param {string} className */\n  span(className) {\n    this.buffer += `<span class=\"${className}\">`;\n  }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/**  */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n  /** @type DataNode */\n  const result = { children: [] };\n  Object.assign(result, opts);\n  return result;\n};\n\nclass TokenTree {\n  constructor() {\n    /** @type DataNode */\n    this.rootNode = newNode();\n    this.stack = [this.rootNode];\n  }\n\n  get top() {\n    return this.stack[this.stack.length - 1];\n  }\n\n  get root() { return this.rootNode; }\n\n  /** @param {Node} node */\n  add(node) {\n    this.top.children.push(node);\n  }\n\n  /** @param {string} scope */\n  openNode(scope) {\n    /** @type Node */\n    const node = newNode({ scope });\n    this.add(node);\n    this.stack.push(node);\n  }\n\n  closeNode() {\n    if (this.stack.length > 1) {\n      return this.stack.pop();\n    }\n    // eslint-disable-next-line no-undefined\n    return undefined;\n  }\n\n  closeAllNodes() {\n    while (this.closeNode());\n  }\n\n  toJSON() {\n    return JSON.stringify(this.rootNode, null, 4);\n  }\n\n  /**\n   * @typedef { import(\"./html_renderer\").Renderer } Renderer\n   * @param {Renderer} builder\n   */\n  walk(builder) {\n    // this does not\n    return this.constructor._walk(builder, this.rootNode);\n    // this works\n    // return TokenTree._walk(builder, this.rootNode);\n  }\n\n  /**\n   * @param {Renderer} builder\n   * @param {Node} node\n   */\n  static _walk(builder, node) {\n    if (typeof node === \"string\") {\n      builder.addText(node);\n    } else if (node.children) {\n      builder.openNode(node);\n      node.children.forEach((child) => this._walk(builder, child));\n      builder.closeNode(node);\n    }\n    return builder;\n  }\n\n  /**\n   * @param {Node} node\n   */\n  static _collapse(node) {\n    if (typeof node === \"string\") return;\n    if (!node.children) return;\n\n    if (node.children.every(el => typeof el === \"string\")) {\n      // node.text = node.children.join(\"\");\n      // delete node.children;\n      node.children = [node.children.join(\"\")];\n    } else {\n      node.children.forEach((child) => {\n        TokenTree._collapse(child);\n      });\n    }\n  }\n}\n\n/**\n  Currently this is all private API, but this is the minimal API necessary\n  that an Emitter must implement to fully support the parser.\n\n  Minimal interface:\n\n  - addText(text)\n  - __addSublanguage(emitter, subLanguageName)\n  - startScope(scope)\n  - endScope()\n  - finalize()\n  - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n  /**\n   * @param {*} options\n   */\n  constructor(options) {\n    super();\n    this.options = options;\n  }\n\n  /**\n   * @param {string} text\n   */\n  addText(text) {\n    if (text === \"\") { return; }\n\n    this.add(text);\n  }\n\n  /** @param {string} scope */\n  startScope(scope) {\n    this.openNode(scope);\n  }\n\n  endScope() {\n    this.closeNode();\n  }\n\n  /**\n   * @param {Emitter & {root: DataNode}} emitter\n   * @param {string} name\n   */\n  __addSublanguage(emitter, name) {\n    /** @type DataNode */\n    const node = emitter.root;\n    if (name) node.scope = `language:${name}`;\n\n    this.add(node);\n  }\n\n  toHTML() {\n    const renderer = new HTMLRenderer(this, this.options);\n    return renderer.value();\n  }\n\n  finalize() {\n    this.closeAllNodes();\n    return true;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n  if (!re) return null;\n  if (typeof re === \"string\") return re;\n\n  return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n  return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n  return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n  return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n  const joined = args.map((x) => source(x)).join(\"\");\n  return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n  const opts = args[args.length - 1];\n\n  if (typeof opts === 'object' && opts.constructor === Object) {\n    args.splice(args.length - 1, 1);\n    return opts;\n  } else {\n    return {};\n  }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n  /** @type { object & {capture?: boolean} }  */\n  const opts = stripOptionsFromArgs(args);\n  const joined = '('\n    + (opts.capture ? \"\" : \"?:\")\n    + args.map((x) => source(x)).join(\"|\") + \")\";\n  return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n  return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n  const match = re && re.exec(lexeme);\n  return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n//   interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n//   follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n  let numCaptures = 0;\n\n  return regexps.map((regex) => {\n    numCaptures += 1;\n    const offset = numCaptures;\n    let re = source(regex);\n    let out = '';\n\n    while (re.length > 0) {\n      const match = BACKREF_RE.exec(re);\n      if (!match) {\n        out += re;\n        break;\n      }\n      out += re.substring(0, match.index);\n      re = re.substring(match.index + match[0].length);\n      if (match[0][0] === '\\\\' && match[1]) {\n        // Adjust the backreference.\n        out += '\\\\' + String(Number(match[1]) + offset);\n      } else {\n        out += match[0];\n        if (match[0] === '(') {\n          numCaptures++;\n        }\n      }\n    }\n    return out;\n  }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n  const beginShebang = /^#![ ]*\\//;\n  if (opts.binary) {\n    opts.begin = concat(\n      beginShebang,\n      /.*\\b/,\n      opts.binary,\n      /\\b.*/);\n  }\n  return inherit$1({\n    scope: 'meta',\n    begin: beginShebang,\n    end: /$/,\n    relevance: 0,\n    /** @type {ModeCallback} */\n    \"on:begin\": (m, resp) => {\n      if (m.index !== 0) resp.ignoreMatch();\n    }\n  }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n  begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n  scope: 'string',\n  begin: '\\'',\n  end: '\\'',\n  illegal: '\\\\n',\n  contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n  scope: 'string',\n  begin: '\"',\n  end: '\"',\n  illegal: '\\\\n',\n  contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n  begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n  const mode = inherit$1(\n    {\n      scope: 'comment',\n      begin,\n      end,\n      contains: []\n    },\n    modeOptions\n  );\n  mode.contains.push({\n    scope: 'doctag',\n    // hack to avoid the space from being included. the space is necessary to\n    // match here to prevent the plain text rule below from gobbling up doctags\n    begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n    end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n    excludeBegin: true,\n    relevance: 0\n  });\n  const ENGLISH_WORD = either(\n    // list of common 1 and 2 letter words in English\n    \"I\",\n    \"a\",\n    \"is\",\n    \"so\",\n    \"us\",\n    \"to\",\n    \"at\",\n    \"if\",\n    \"in\",\n    \"it\",\n    \"on\",\n    // note: this is not an exhaustive list of contractions, just popular ones\n    /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n    /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n    /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n  );\n  // looking like plain text, more likely to be a comment\n  mode.contains.push(\n    {\n      // TODO: how to include \", (, ) without breaking grammars that use these for\n      // comment delimiters?\n      // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n      // ---\n\n      // this tries to find sequences of 3 english words in a row (without any\n      // \"programming\" type syntax) this gives us a strong signal that we've\n      // TRULY found a comment - vs perhaps scanning with the wrong language.\n      // It's possible to find something that LOOKS like the start of the\n      // comment - but then if there is no readable text - good chance it is a\n      // false match and not a comment.\n      //\n      // for a visual example please see:\n      // https://github.com/highlightjs/highlight.js/issues/2827\n\n      begin: concat(\n        /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n        '(',\n        ENGLISH_WORD,\n        /[.]?[:]?([.][ ]|[ ])/,\n        '){3}') // look for 3 words in a row\n    }\n  );\n  return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n  scope: 'number',\n  begin: NUMBER_RE,\n  relevance: 0\n};\nconst C_NUMBER_MODE = {\n  scope: 'number',\n  begin: C_NUMBER_RE,\n  relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n  scope: 'number',\n  begin: BINARY_NUMBER_RE,\n  relevance: 0\n};\nconst REGEXP_MODE = {\n  scope: \"regexp\",\n  begin: /\\/(?=[^/\\n]*\\/)/,\n  end: /\\/[gimuy]*/,\n  contains: [\n    BACKSLASH_ESCAPE,\n    {\n      begin: /\\[/,\n      end: /\\]/,\n      relevance: 0,\n      contains: [BACKSLASH_ESCAPE]\n    }\n  ]\n};\nconst TITLE_MODE = {\n  scope: 'title',\n  begin: IDENT_RE,\n  relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n  scope: 'title',\n  begin: UNDERSCORE_IDENT_RE,\n  relevance: 0\n};\nconst METHOD_GUARD = {\n  // excludes method names from keyword processing\n  begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n  relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n  return Object.assign(mode,\n    {\n      /** @type {ModeCallback} */\n      'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n      /** @type {ModeCallback} */\n      'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n    });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  APOS_STRING_MODE: APOS_STRING_MODE,\n  BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n  BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n  BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n  COMMENT: COMMENT,\n  C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n  C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n  C_NUMBER_MODE: C_NUMBER_MODE,\n  C_NUMBER_RE: C_NUMBER_RE,\n  END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n  HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n  IDENT_RE: IDENT_RE,\n  MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n  METHOD_GUARD: METHOD_GUARD,\n  NUMBER_MODE: NUMBER_MODE,\n  NUMBER_RE: NUMBER_RE,\n  PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n  QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n  REGEXP_MODE: REGEXP_MODE,\n  RE_STARTERS_RE: RE_STARTERS_RE,\n  SHEBANG: SHEBANG,\n  TITLE_MODE: TITLE_MODE,\n  UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n  UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`.  The extension then just moves `match` into\n// `begin` when it runs.  Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n  const before = match.input[match.index - 1];\n  if (before === \".\") {\n    response.ignoreMatch();\n  }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n  // eslint-disable-next-line no-undefined\n  if (mode.className !== undefined) {\n    mode.scope = mode.className;\n    delete mode.className;\n  }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n  if (!parent) return;\n  if (!mode.beginKeywords) return;\n\n  // for languages with keywords that include non-word characters checking for\n  // a word boundary is not sufficient, so instead we check for a word boundary\n  // or whitespace - this does no harm in any case since our keyword engine\n  // doesn't allow spaces in keywords anyways and we still check for the boundary\n  // first\n  mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n  mode.__beforeBegin = skipIfHasPrecedingDot;\n  mode.keywords = mode.keywords || mode.beginKeywords;\n  delete mode.beginKeywords;\n\n  // prevents double relevance, the keywords themselves provide\n  // relevance, the mode doesn't need to double it\n  // eslint-disable-next-line no-undefined\n  if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n  if (!Array.isArray(mode.illegal)) return;\n\n  mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n  if (!mode.match) return;\n  if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n  mode.begin = mode.match;\n  delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n  // eslint-disable-next-line no-undefined\n  if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n  if (!mode.beforeMatch) return;\n  // starts conflicts with endsParent which we need to make sure the child\n  // rule is not matched multiple times\n  if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n  const originalMode = Object.assign({}, mode);\n  Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n  mode.keywords = originalMode.keywords;\n  mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n  mode.starts = {\n    relevance: 0,\n    contains: [\n      Object.assign(originalMode, { endsParent: true })\n    ]\n  };\n  mode.relevance = 0;\n\n  delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n  'of',\n  'and',\n  'for',\n  'in',\n  'not',\n  'or',\n  'if',\n  'then',\n  'parent', // common variable name\n  'list', // common variable name\n  'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n  /** @type {import(\"highlight.js/private\").KeywordDict} */\n  const compiledKeywords = Object.create(null);\n\n  // input can be a string of keywords, an array of keywords, or a object with\n  // named keys representing scopeName (which can then point to a string or array)\n  if (typeof rawKeywords === 'string') {\n    compileList(scopeName, rawKeywords.split(\" \"));\n  } else if (Array.isArray(rawKeywords)) {\n    compileList(scopeName, rawKeywords);\n  } else {\n    Object.keys(rawKeywords).forEach(function(scopeName) {\n      // collapse all our objects back into the parent object\n      Object.assign(\n        compiledKeywords,\n        compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n      );\n    });\n  }\n  return compiledKeywords;\n\n  // ---\n\n  /**\n   * Compiles an individual list of keywords\n   *\n   * Ex: \"for if when while|5\"\n   *\n   * @param {string} scopeName\n   * @param {Array<string>} keywordList\n   */\n  function compileList(scopeName, keywordList) {\n    if (caseInsensitive) {\n      keywordList = keywordList.map(x => x.toLowerCase());\n    }\n    keywordList.forEach(function(keyword) {\n      const pair = keyword.split('|');\n      compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n    });\n  }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n  // manual scores always win over common keywords\n  // so you can force a score of 1 if you really insist\n  if (providedScore) {\n    return Number(providedScore);\n  }\n\n  return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n  return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n  console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n  console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n  if (seenDeprecations[`${version}/${message}`]) return;\n\n  console.log(`Deprecated as of ${version}. ${message}`);\n  seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n *   { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n *   (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n *   { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5.  This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array<RegExp | string>} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n  let offset = 0;\n  const scopeNames = mode[key];\n  /** @type Record<number,boolean> */\n  const emit = {};\n  /** @type Record<number,string> */\n  const positions = {};\n\n  for (let i = 1; i <= regexes.length; i++) {\n    positions[i + offset] = scopeNames[i];\n    emit[i + offset] = true;\n    offset += countMatchGroups(regexes[i - 1]);\n  }\n  // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n  // output from inside match groups\n  mode[key] = positions;\n  mode[key]._emit = emit;\n  mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n  if (!Array.isArray(mode.begin)) return;\n\n  if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n    error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n    throw MultiClassError;\n  }\n\n  if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n    error(\"beginScope must be object\");\n    throw MultiClassError;\n  }\n\n  remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n  mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n  if (!Array.isArray(mode.end)) return;\n\n  if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n    error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n    throw MultiClassError;\n  }\n\n  if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n    error(\"endScope must be object\");\n    throw MultiClassError;\n  }\n\n  remapScopeNames(mode, mode.end, { key: \"endScope\" });\n  mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n  {\n    match: [ /def/, /\\w+/ ]\n    scope: { 1: \"keyword\" , 2: \"title\" }\n  }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n  if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n    mode.beginScope = mode.scope;\n    delete mode.scope;\n  }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n  scopeSugar(mode);\n\n  if (typeof mode.beginScope === \"string\") {\n    mode.beginScope = { _wrap: mode.beginScope };\n  }\n  if (typeof mode.endScope === \"string\") {\n    mode.endScope = { _wrap: mode.endScope };\n  }\n\n  beginMultiClass(mode);\n  endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n  /**\n   * Builds a regex with the case sensitivity of the current language\n   *\n   * @param {RegExp | string} value\n   * @param {boolean} [global]\n   */\n  function langRe(value, global) {\n    return new RegExp(\n      source(value),\n      'm'\n      + (language.case_insensitive ? 'i' : '')\n      + (language.unicodeRegex ? 'u' : '')\n      + (global ? 'g' : '')\n    );\n  }\n\n  /**\n    Stores multiple regular expressions and allows you to quickly search for\n    them all in a string simultaneously - returning the first match.  It does\n    this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n    and joined by `|` - using match groups to track position.  When a match is\n    found checking which position in the array has content allows us to figure\n    out which of the original regexes / match groups triggered the match.\n\n    The match object itself (the result of `Regex.exec`) is returned but also\n    enhanced by merging in any meta-data that was registered with the regex.\n    This is how we keep track of which mode matched, and what type of rule\n    (`illegal`, `begin`, end, etc).\n  */\n  class MultiRegex {\n    constructor() {\n      this.matchIndexes = {};\n      // @ts-ignore\n      this.regexes = [];\n      this.matchAt = 1;\n      this.position = 0;\n    }\n\n    // @ts-ignore\n    addRule(re, opts) {\n      opts.position = this.position++;\n      // @ts-ignore\n      this.matchIndexes[this.matchAt] = opts;\n      this.regexes.push([opts, re]);\n      this.matchAt += countMatchGroups(re) + 1;\n    }\n\n    compile() {\n      if (this.regexes.length === 0) {\n        // avoids the need to check length every time exec is called\n        // @ts-ignore\n        this.exec = () => null;\n      }\n      const terminators = this.regexes.map(el => el[1]);\n      this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n      this.lastIndex = 0;\n    }\n\n    /** @param {string} s */\n    exec(s) {\n      this.matcherRe.lastIndex = this.lastIndex;\n      const match = this.matcherRe.exec(s);\n      if (!match) { return null; }\n\n      // eslint-disable-next-line no-undefined\n      const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n      // @ts-ignore\n      const matchData = this.matchIndexes[i];\n      // trim off any earlier non-relevant match groups (ie, the other regex\n      // match groups that make up the multi-matcher)\n      match.splice(0, i);\n\n      return Object.assign(match, matchData);\n    }\n  }\n\n  /*\n    Created to solve the key deficiently with MultiRegex - there is no way to\n    test for multiple matches at a single location.  Why would we need to do\n    that?  In the future a more dynamic engine will allow certain matches to be\n    ignored.  An example: if we matched say the 3rd regex in a large group but\n    decided to ignore it - we'd need to started testing again at the 4th\n    regex... but MultiRegex itself gives us no real way to do that.\n\n    So what this class creates MultiRegexs on the fly for whatever search\n    position they are needed.\n\n    NOTE: These additional MultiRegex objects are created dynamically.  For most\n    grammars most of the time we will never actually need anything more than the\n    first MultiRegex - so this shouldn't have too much overhead.\n\n    Say this is our search group, and we match regex3, but wish to ignore it.\n\n      regex1 | regex2 | regex3 | regex4 | regex5    ' ie, startAt = 0\n\n    What we need is a new MultiRegex that only includes the remaining\n    possibilities:\n\n      regex4 | regex5                               ' ie, startAt = 3\n\n    This class wraps all that complexity up in a simple API... `startAt` decides\n    where in the array of expressions to start doing the matching. It\n    auto-increments, so if a match is found at position 2, then startAt will be\n    set to 3.  If the end is reached startAt will return to 0.\n\n    MOST of the time the parser will be setting startAt manually to 0.\n  */\n  class ResumableMultiRegex {\n    constructor() {\n      // @ts-ignore\n      this.rules = [];\n      // @ts-ignore\n      this.multiRegexes = [];\n      this.count = 0;\n\n      this.lastIndex = 0;\n      this.regexIndex = 0;\n    }\n\n    // @ts-ignore\n    getMatcher(index) {\n      if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n      const matcher = new MultiRegex();\n      this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n      matcher.compile();\n      this.multiRegexes[index] = matcher;\n      return matcher;\n    }\n\n    resumingScanAtSamePosition() {\n      return this.regexIndex !== 0;\n    }\n\n    considerAll() {\n      this.regexIndex = 0;\n    }\n\n    // @ts-ignore\n    addRule(re, opts) {\n      this.rules.push([re, opts]);\n      if (opts.type === \"begin\") this.count++;\n    }\n\n    /** @param {string} s */\n    exec(s) {\n      const m = this.getMatcher(this.regexIndex);\n      m.lastIndex = this.lastIndex;\n      let result = m.exec(s);\n\n      // The following is because we have no easy way to say \"resume scanning at the\n      // existing position but also skip the current rule ONLY\". What happens is\n      // all prior rules are also skipped which can result in matching the wrong\n      // thing. Example of matching \"booger\":\n\n      // our matcher is [string, \"booger\", number]\n      //\n      // ....booger....\n\n      // if \"booger\" is ignored then we'd really need a regex to scan from the\n      // SAME position for only: [string, number] but ignoring \"booger\" (if it\n      // was the first match), a simple resume would scan ahead who knows how\n      // far looking only for \"number\", ignoring potential string matches (or\n      // future \"booger\" matches that might be valid.)\n\n      // So what we do: We execute two matchers, one resuming at the same\n      // position, but the second full matcher starting at the position after:\n\n      //     /--- resume first regex match here (for [number])\n      //     |/---- full match here for [string, \"booger\", number]\n      //     vv\n      // ....booger....\n\n      // Which ever results in a match first is then used. So this 3-4 step\n      // process essentially allows us to say \"match at this position, excluding\n      // a prior rule that was ignored\".\n      //\n      // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n      // 2. Resume matching for [number]\n      // 3. Match at index + 1 for [string, \"booger\", number]\n      // 4. If #2 and #3 result in matches, which came first?\n      if (this.resumingScanAtSamePosition()) {\n        if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n          const m2 = this.getMatcher(0);\n          m2.lastIndex = this.lastIndex + 1;\n          result = m2.exec(s);\n        }\n      }\n\n      if (result) {\n        this.regexIndex += result.position + 1;\n        if (this.regexIndex === this.count) {\n          // wrap-around to considering all matches again\n          this.considerAll();\n        }\n      }\n\n      return result;\n    }\n  }\n\n  /**\n   * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n   * the content and find matches.\n   *\n   * @param {CompiledMode} mode\n   * @returns {ResumableMultiRegex}\n   */\n  function buildModeRegex(mode) {\n    const mm = new ResumableMultiRegex();\n\n    mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n    if (mode.terminatorEnd) {\n      mm.addRule(mode.terminatorEnd, { type: \"end\" });\n    }\n    if (mode.illegal) {\n      mm.addRule(mode.illegal, { type: \"illegal\" });\n    }\n\n    return mm;\n  }\n\n  /** skip vs abort vs ignore\n   *\n   * @skip   - The mode is still entered and exited normally (and contains rules apply),\n   *           but all content is held and added to the parent buffer rather than being\n   *           output when the mode ends.  Mostly used with `sublanguage` to build up\n   *           a single large buffer than can be parsed by sublanguage.\n   *\n   *             - The mode begin ands ends normally.\n   *             - Content matched is added to the parent mode buffer.\n   *             - The parser cursor is moved forward normally.\n   *\n   * @abort  - A hack placeholder until we have ignore.  Aborts the mode (as if it\n   *           never matched) but DOES NOT continue to match subsequent `contains`\n   *           modes.  Abort is bad/suboptimal because it can result in modes\n   *           farther down not getting applied because an earlier rule eats the\n   *           content but then aborts.\n   *\n   *             - The mode does not begin.\n   *             - Content matched by `begin` is added to the mode buffer.\n   *             - The parser cursor is moved forward accordingly.\n   *\n   * @ignore - Ignores the mode (as if it never matched) and continues to match any\n   *           subsequent `contains` modes.  Ignore isn't technically possible with\n   *           the current parser implementation.\n   *\n   *             - The mode does not begin.\n   *             - Content matched by `begin` is ignored.\n   *             - The parser cursor is not moved forward.\n   */\n\n  /**\n   * Compiles an individual mode\n   *\n   * This can raise an error if the mode contains certain detectable known logic\n   * issues.\n   * @param {Mode} mode\n   * @param {CompiledMode | null} [parent]\n   * @returns {CompiledMode | never}\n   */\n  function compileMode(mode, parent) {\n    const cmode = /** @type CompiledMode */ (mode);\n    if (mode.isCompiled) return cmode;\n\n    [\n      scopeClassName,\n      // do this early so compiler extensions generally don't have to worry about\n      // the distinction between match/begin\n      compileMatch,\n      MultiClass,\n      beforeMatchExt\n    ].forEach(ext => ext(mode, parent));\n\n    language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n    // __beforeBegin is considered private API, internal use only\n    mode.__beforeBegin = null;\n\n    [\n      beginKeywords,\n      // do this later so compiler extensions that come earlier have access to the\n      // raw array if they wanted to perhaps manipulate it, etc.\n      compileIllegal,\n      // default to 1 relevance if not specified\n      compileRelevance\n    ].forEach(ext => ext(mode, parent));\n\n    mode.isCompiled = true;\n\n    let keywordPattern = null;\n    if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n      // we need a copy because keywords might be compiled multiple times\n      // so we can't go deleting $pattern from the original on the first\n      // pass\n      mode.keywords = Object.assign({}, mode.keywords);\n      keywordPattern = mode.keywords.$pattern;\n      delete mode.keywords.$pattern;\n    }\n    keywordPattern = keywordPattern || /\\w+/;\n\n    if (mode.keywords) {\n      mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n    }\n\n    cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n    if (parent) {\n      if (!mode.begin) mode.begin = /\\B|\\b/;\n      cmode.beginRe = langRe(cmode.begin);\n      if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n      if (mode.end) cmode.endRe = langRe(cmode.end);\n      cmode.terminatorEnd = source(cmode.end) || '';\n      if (mode.endsWithParent && parent.terminatorEnd) {\n        cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n      }\n    }\n    if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n    if (!mode.contains) mode.contains = [];\n\n    mode.contains = [].concat(...mode.contains.map(function(c) {\n      return expandOrCloneMode(c === 'self' ? mode : c);\n    }));\n    mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n    if (mode.starts) {\n      compileMode(mode.starts, parent);\n    }\n\n    cmode.matcher = buildModeRegex(cmode);\n    return cmode;\n  }\n\n  if (!language.compilerExtensions) language.compilerExtensions = [];\n\n  // self is not valid at the top-level\n  if (language.contains && language.contains.includes('self')) {\n    throw new Error(\"ERR: contains `self` is not supported at the top-level of a language.  See documentation.\");\n  }\n\n  // we need a null object, which inherit will guarantee\n  language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n  return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n  if (!mode) return false;\n\n  return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n  if (mode.variants && !mode.cachedVariants) {\n    mode.cachedVariants = mode.variants.map(function(variant) {\n      return inherit$1(mode, { variants: null }, variant);\n    });\n  }\n\n  // EXPAND\n  // if we have variants then essentially \"replace\" the mode with the variants\n  // this happens in compileMode, where this function is called from\n  if (mode.cachedVariants) {\n    return mode.cachedVariants;\n  }\n\n  // CLONE\n  // if we have dependencies on parents then we need a unique\n  // instance of ourselves, so we can be reused with many\n  // different parents without issue\n  if (dependencyOnParent(mode)) {\n    return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n  }\n\n  if (Object.isFrozen(mode)) {\n    return inherit$1(mode);\n  }\n\n  // no special dependency issues, just return ourselves\n  return mode;\n}\n\nvar version = \"11.11.1\";\n\nclass HTMLInjectionError extends Error {\n  constructor(reason, html) {\n    super(reason);\n    this.name = \"HTMLInjectionError\";\n    this.html = html;\n  }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n  // Global internal variables used within the highlight.js library.\n  /** @type {Record<string, Language>} */\n  const languages = Object.create(null);\n  /** @type {Record<string, string>} */\n  const aliases = Object.create(null);\n  /** @type {HLJSPlugin[]} */\n  const plugins = [];\n\n  // safe/production mode - swallows more errors, tries to keep running\n  // even if a single syntax or parse hits a fatal error\n  let SAFE_MODE = true;\n  const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n  /** @type {Language} */\n  const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n  // Global options used when within external APIs. This is modified when\n  // calling the `hljs.configure` function.\n  /** @type HLJSOptions */\n  let options = {\n    ignoreUnescapedHTML: false,\n    throwUnescapedHTML: false,\n    noHighlightRe: /^(no-?highlight)$/i,\n    languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n    classPrefix: 'hljs-',\n    cssSelector: 'pre code',\n    languages: null,\n    // beta configuration options, subject to change, welcome to discuss\n    // https://github.com/highlightjs/highlight.js/issues/1086\n    __emitter: TokenTreeEmitter\n  };\n\n  /* Utility functions */\n\n  /**\n   * Tests a language name to see if highlighting should be skipped\n   * @param {string} languageName\n   */\n  function shouldNotHighlight(languageName) {\n    return options.noHighlightRe.test(languageName);\n  }\n\n  /**\n   * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n   */\n  function blockLanguage(block) {\n    let classes = block.className + ' ';\n\n    classes += block.parentNode ? block.parentNode.className : '';\n\n    // language-* takes precedence over non-prefixed class names.\n    const match = options.languageDetectRe.exec(classes);\n    if (match) {\n      const language = getLanguage(match[1]);\n      if (!language) {\n        warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n        warn(\"Falling back to no-highlight mode for this block.\", block);\n      }\n      return language ? match[1] : 'no-highlight';\n    }\n\n    return classes\n      .split(/\\s+/)\n      .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n  }\n\n  /**\n   * Core highlighting function.\n   *\n   * OLD API\n   * highlight(lang, code, ignoreIllegals, continuation)\n   *\n   * NEW API\n   * highlight(code, {lang, ignoreIllegals})\n   *\n   * @param {string} codeOrLanguageName - the language to use for highlighting\n   * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n   * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n   *\n   * @returns {HighlightResult} Result - an object that represents the result\n   * @property {string} language - the language name\n   * @property {number} relevance - the relevance score\n   * @property {string} value - the highlighted HTML code\n   * @property {string} code - the original raw code\n   * @property {CompiledMode} top - top of the current mode stack\n   * @property {boolean} illegal - indicates whether any illegal matches were found\n  */\n  function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n    let code = \"\";\n    let languageName = \"\";\n    if (typeof optionsOrCode === \"object\") {\n      code = codeOrLanguageName;\n      ignoreIllegals = optionsOrCode.ignoreIllegals;\n      languageName = optionsOrCode.language;\n    } else {\n      // old API\n      deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n      deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n      languageName = codeOrLanguageName;\n      code = optionsOrCode;\n    }\n\n    // https://github.com/highlightjs/highlight.js/issues/3149\n    // eslint-disable-next-line no-undefined\n    if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n    /** @type {BeforeHighlightContext} */\n    const context = {\n      code,\n      language: languageName\n    };\n    // the plugin can change the desired language or the code to be highlighted\n    // just be changing the object it was passed\n    fire(\"before:highlight\", context);\n\n    // a before plugin can usurp the result completely by providing it's own\n    // in which case we don't even need to call highlight\n    const result = context.result\n      ? context.result\n      : _highlight(context.language, context.code, ignoreIllegals);\n\n    result.code = context.code;\n    // the plugin can change anything in result to suite it\n    fire(\"after:highlight\", result);\n\n    return result;\n  }\n\n  /**\n   * private highlight that's used internally and does not fire callbacks\n   *\n   * @param {string} languageName - the language to use for highlighting\n   * @param {string} codeToHighlight - the code to highlight\n   * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n   * @param {CompiledMode?} [continuation] - current continuation mode, if any\n   * @returns {HighlightResult} - result of the highlight operation\n  */\n  function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n    const keywordHits = Object.create(null);\n\n    /**\n     * Return keyword data if a match is a keyword\n     * @param {CompiledMode} mode - current mode\n     * @param {string} matchText - the textual match\n     * @returns {KeywordData | false}\n     */\n    function keywordData(mode, matchText) {\n      return mode.keywords[matchText];\n    }\n\n    function processKeywords() {\n      if (!top.keywords) {\n        emitter.addText(modeBuffer);\n        return;\n      }\n\n      let lastIndex = 0;\n      top.keywordPatternRe.lastIndex = 0;\n      let match = top.keywordPatternRe.exec(modeBuffer);\n      let buf = \"\";\n\n      while (match) {\n        buf += modeBuffer.substring(lastIndex, match.index);\n        const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n        const data = keywordData(top, word);\n        if (data) {\n          const [kind, keywordRelevance] = data;\n          emitter.addText(buf);\n          buf = \"\";\n\n          keywordHits[word] = (keywordHits[word] || 0) + 1;\n          if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n          if (kind.startsWith(\"_\")) {\n            // _ implied for relevance only, do not highlight\n            // by applying a class name\n            buf += match[0];\n          } else {\n            const cssClass = language.classNameAliases[kind] || kind;\n            emitKeyword(match[0], cssClass);\n          }\n        } else {\n          buf += match[0];\n        }\n        lastIndex = top.keywordPatternRe.lastIndex;\n        match = top.keywordPatternRe.exec(modeBuffer);\n      }\n      buf += modeBuffer.substring(lastIndex);\n      emitter.addText(buf);\n    }\n\n    function processSubLanguage() {\n      if (modeBuffer === \"\") return;\n      /** @type HighlightResult */\n      let result = null;\n\n      if (typeof top.subLanguage === 'string') {\n        if (!languages[top.subLanguage]) {\n          emitter.addText(modeBuffer);\n          return;\n        }\n        result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n        continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n      } else {\n        result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n      }\n\n      // Counting embedded language score towards the host language may be disabled\n      // with zeroing the containing mode relevance. Use case in point is Markdown that\n      // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n      // score.\n      if (top.relevance > 0) {\n        relevance += result.relevance;\n      }\n      emitter.__addSublanguage(result._emitter, result.language);\n    }\n\n    function processBuffer() {\n      if (top.subLanguage != null) {\n        processSubLanguage();\n      } else {\n        processKeywords();\n      }\n      modeBuffer = '';\n    }\n\n    /**\n     * @param {string} text\n     * @param {string} scope\n     */\n    function emitKeyword(keyword, scope) {\n      if (keyword === \"\") return;\n\n      emitter.startScope(scope);\n      emitter.addText(keyword);\n      emitter.endScope();\n    }\n\n    /**\n     * @param {CompiledScope} scope\n     * @param {RegExpMatchArray} match\n     */\n    function emitMultiClass(scope, match) {\n      let i = 1;\n      const max = match.length - 1;\n      while (i <= max) {\n        if (!scope._emit[i]) { i++; continue; }\n        const klass = language.classNameAliases[scope[i]] || scope[i];\n        const text = match[i];\n        if (klass) {\n          emitKeyword(text, klass);\n        } else {\n          modeBuffer = text;\n          processKeywords();\n          modeBuffer = \"\";\n        }\n        i++;\n      }\n    }\n\n    /**\n     * @param {CompiledMode} mode - new mode to start\n     * @param {RegExpMatchArray} match\n     */\n    function startNewMode(mode, match) {\n      if (mode.scope && typeof mode.scope === \"string\") {\n        emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n      }\n      if (mode.beginScope) {\n        // beginScope just wraps the begin match itself in a scope\n        if (mode.beginScope._wrap) {\n          emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n          modeBuffer = \"\";\n        } else if (mode.beginScope._multi) {\n          // at this point modeBuffer should just be the match\n          emitMultiClass(mode.beginScope, match);\n          modeBuffer = \"\";\n        }\n      }\n\n      top = Object.create(mode, { parent: { value: top } });\n      return top;\n    }\n\n    /**\n     * @param {CompiledMode } mode - the mode to potentially end\n     * @param {RegExpMatchArray} match - the latest match\n     * @param {string} matchPlusRemainder - match plus remainder of content\n     * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n     */\n    function endOfMode(mode, match, matchPlusRemainder) {\n      let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n      if (matched) {\n        if (mode[\"on:end\"]) {\n          const resp = new Response(mode);\n          mode[\"on:end\"](match, resp);\n          if (resp.isMatchIgnored) matched = false;\n        }\n\n        if (matched) {\n          while (mode.endsParent && mode.parent) {\n            mode = mode.parent;\n          }\n          return mode;\n        }\n      }\n      // even if on:end fires an `ignore` it's still possible\n      // that we might trigger the end node because of a parent mode\n      if (mode.endsWithParent) {\n        return endOfMode(mode.parent, match, matchPlusRemainder);\n      }\n    }\n\n    /**\n     * Handle matching but then ignoring a sequence of text\n     *\n     * @param {string} lexeme - string containing full match text\n     */\n    function doIgnore(lexeme) {\n      if (top.matcher.regexIndex === 0) {\n        // no more regexes to potentially match here, so we move the cursor forward one\n        // space\n        modeBuffer += lexeme[0];\n        return 1;\n      } else {\n        // no need to move the cursor, we still have additional regexes to try and\n        // match at this very spot\n        resumeScanAtSamePosition = true;\n        return 0;\n      }\n    }\n\n    /**\n     * Handle the start of a new potential mode match\n     *\n     * @param {EnhancedMatch} match - the current match\n     * @returns {number} how far to advance the parse cursor\n     */\n    function doBeginMatch(match) {\n      const lexeme = match[0];\n      const newMode = match.rule;\n\n      const resp = new Response(newMode);\n      // first internal before callbacks, then the public ones\n      const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n      for (const cb of beforeCallbacks) {\n        if (!cb) continue;\n        cb(match, resp);\n        if (resp.isMatchIgnored) return doIgnore(lexeme);\n      }\n\n      if (newMode.skip) {\n        modeBuffer += lexeme;\n      } else {\n        if (newMode.excludeBegin) {\n          modeBuffer += lexeme;\n        }\n        processBuffer();\n        if (!newMode.returnBegin && !newMode.excludeBegin) {\n          modeBuffer = lexeme;\n        }\n      }\n      startNewMode(newMode, match);\n      return newMode.returnBegin ? 0 : lexeme.length;\n    }\n\n    /**\n     * Handle the potential end of mode\n     *\n     * @param {RegExpMatchArray} match - the current match\n     */\n    function doEndMatch(match) {\n      const lexeme = match[0];\n      const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n      const endMode = endOfMode(top, match, matchPlusRemainder);\n      if (!endMode) { return NO_MATCH; }\n\n      const origin = top;\n      if (top.endScope && top.endScope._wrap) {\n        processBuffer();\n        emitKeyword(lexeme, top.endScope._wrap);\n      } else if (top.endScope && top.endScope._multi) {\n        processBuffer();\n        emitMultiClass(top.endScope, match);\n      } else if (origin.skip) {\n        modeBuffer += lexeme;\n      } else {\n        if (!(origin.returnEnd || origin.excludeEnd)) {\n          modeBuffer += lexeme;\n        }\n        processBuffer();\n        if (origin.excludeEnd) {\n          modeBuffer = lexeme;\n        }\n      }\n      do {\n        if (top.scope) {\n          emitter.closeNode();\n        }\n        if (!top.skip && !top.subLanguage) {\n          relevance += top.relevance;\n        }\n        top = top.parent;\n      } while (top !== endMode.parent);\n      if (endMode.starts) {\n        startNewMode(endMode.starts, match);\n      }\n      return origin.returnEnd ? 0 : lexeme.length;\n    }\n\n    function processContinuations() {\n      const list = [];\n      for (let current = top; current !== language; current = current.parent) {\n        if (current.scope) {\n          list.unshift(current.scope);\n        }\n      }\n      list.forEach(item => emitter.openNode(item));\n    }\n\n    /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n    let lastMatch = {};\n\n    /**\n     *  Process an individual match\n     *\n     * @param {string} textBeforeMatch - text preceding the match (since the last match)\n     * @param {EnhancedMatch} [match] - the match itself\n     */\n    function processLexeme(textBeforeMatch, match) {\n      const lexeme = match && match[0];\n\n      // add non-matched text to the current mode buffer\n      modeBuffer += textBeforeMatch;\n\n      if (lexeme == null) {\n        processBuffer();\n        return 0;\n      }\n\n      // we've found a 0 width match and we're stuck, so we need to advance\n      // this happens when we have badly behaved rules that have optional matchers to the degree that\n      // sometimes they can end up matching nothing at all\n      // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n      if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n        // spit the \"skipped\" character that our regex choked on back into the output sequence\n        modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n        if (!SAFE_MODE) {\n          /** @type {AnnotatedError} */\n          const err = new Error(`0 width match regex (${languageName})`);\n          err.languageName = languageName;\n          err.badRule = lastMatch.rule;\n          throw err;\n        }\n        return 1;\n      }\n      lastMatch = match;\n\n      if (match.type === \"begin\") {\n        return doBeginMatch(match);\n      } else if (match.type === \"illegal\" && !ignoreIllegals) {\n        // illegal match, we do not continue processing\n        /** @type {AnnotatedError} */\n        const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '<unnamed>') + '\"');\n        err.mode = top;\n        throw err;\n      } else if (match.type === \"end\") {\n        const processed = doEndMatch(match);\n        if (processed !== NO_MATCH) {\n          return processed;\n        }\n      }\n\n      // edge case for when illegal matches $ (end of line) which is technically\n      // a 0 width match but not a begin/end match so it's not caught by the\n      // first handler (when ignoreIllegals is true)\n      if (match.type === \"illegal\" && lexeme === \"\") {\n        // advance so we aren't stuck in an infinite loop\n        modeBuffer += \"\\n\";\n        return 1;\n      }\n\n      // infinite loops are BAD, this is a last ditch catch all. if we have a\n      // decent number of iterations yet our index (cursor position in our\n      // parsing) still 3x behind our index then something is very wrong\n      // so we bail\n      if (iterations > 100000 && iterations > match.index * 3) {\n        const err = new Error('potential infinite loop, way more iterations than matches');\n        throw err;\n      }\n\n      /*\n      Why might be find ourselves here?  An potential end match that was\n      triggered but could not be completed.  IE, `doEndMatch` returned NO_MATCH.\n      (this could be because a callback requests the match be ignored, etc)\n\n      This causes no real harm other than stopping a few times too many.\n      */\n\n      modeBuffer += lexeme;\n      return lexeme.length;\n    }\n\n    const language = getLanguage(languageName);\n    if (!language) {\n      error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n      throw new Error('Unknown language: \"' + languageName + '\"');\n    }\n\n    const md = compileLanguage(language);\n    let result = '';\n    /** @type {CompiledMode} */\n    let top = continuation || md;\n    /** @type Record<string,CompiledMode> */\n    const continuations = {}; // keep continuations for sub-languages\n    const emitter = new options.__emitter(options);\n    processContinuations();\n    let modeBuffer = '';\n    let relevance = 0;\n    let index = 0;\n    let iterations = 0;\n    let resumeScanAtSamePosition = false;\n\n    try {\n      if (!language.__emitTokens) {\n        top.matcher.considerAll();\n\n        for (;;) {\n          iterations++;\n          if (resumeScanAtSamePosition) {\n            // only regexes not matched previously will now be\n            // considered for a potential match\n            resumeScanAtSamePosition = false;\n          } else {\n            top.matcher.considerAll();\n          }\n          top.matcher.lastIndex = index;\n\n          const match = top.matcher.exec(codeToHighlight);\n          // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n          if (!match) break;\n\n          const beforeMatch = codeToHighlight.substring(index, match.index);\n          const processedCount = processLexeme(beforeMatch, match);\n          index = match.index + processedCount;\n        }\n        processLexeme(codeToHighlight.substring(index));\n      } else {\n        language.__emitTokens(codeToHighlight, emitter);\n      }\n\n      emitter.finalize();\n      result = emitter.toHTML();\n\n      return {\n        language: languageName,\n        value: result,\n        relevance,\n        illegal: false,\n        _emitter: emitter,\n        _top: top\n      };\n    } catch (err) {\n      if (err.message && err.message.includes('Illegal')) {\n        return {\n          language: languageName,\n          value: escape(codeToHighlight),\n          illegal: true,\n          relevance: 0,\n          _illegalBy: {\n            message: err.message,\n            index,\n            context: codeToHighlight.slice(index - 100, index + 100),\n            mode: err.mode,\n            resultSoFar: result\n          },\n          _emitter: emitter\n        };\n      } else if (SAFE_MODE) {\n        return {\n          language: languageName,\n          value: escape(codeToHighlight),\n          illegal: false,\n          relevance: 0,\n          errorRaised: err,\n          _emitter: emitter,\n          _top: top\n        };\n      } else {\n        throw err;\n      }\n    }\n  }\n\n  /**\n   * returns a valid highlight result, without actually doing any actual work,\n   * auto highlight starts with this and it's possible for small snippets that\n   * auto-detection may not find a better match\n   * @param {string} code\n   * @returns {HighlightResult}\n   */\n  function justTextHighlightResult(code) {\n    const result = {\n      value: escape(code),\n      illegal: false,\n      relevance: 0,\n      _top: PLAINTEXT_LANGUAGE,\n      _emitter: new options.__emitter(options)\n    };\n    result._emitter.addText(code);\n    return result;\n  }\n\n  /**\n  Highlighting with language detection. Accepts a string with the code to\n  highlight. Returns an object with the following properties:\n\n  - language (detected language)\n  - relevance (int)\n  - value (an HTML string with highlighting markup)\n  - secondBest (object with the same structure for second-best heuristically\n    detected language, may be absent)\n\n    @param {string} code\n    @param {Array<string>} [languageSubset]\n    @returns {AutoHighlightResult}\n  */\n  function highlightAuto(code, languageSubset) {\n    languageSubset = languageSubset || options.languages || Object.keys(languages);\n    const plaintext = justTextHighlightResult(code);\n\n    const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n      _highlight(name, code, false)\n    );\n    results.unshift(plaintext); // plaintext is always an option\n\n    const sorted = results.sort((a, b) => {\n      // sort base on relevance\n      if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n      // always award the tie to the base language\n      // ie if C++ and Arduino are tied, it's more likely to be C++\n      if (a.language && b.language) {\n        if (getLanguage(a.language).supersetOf === b.language) {\n          return 1;\n        } else if (getLanguage(b.language).supersetOf === a.language) {\n          return -1;\n        }\n      }\n\n      // otherwise say they are equal, which has the effect of sorting on\n      // relevance while preserving the original ordering - which is how ties\n      // have historically been settled, ie the language that comes first always\n      // wins in the case of a tie\n      return 0;\n    });\n\n    const [best, secondBest] = sorted;\n\n    /** @type {AutoHighlightResult} */\n    const result = best;\n    result.secondBest = secondBest;\n\n    return result;\n  }\n\n  /**\n   * Builds new class name for block given the language name\n   *\n   * @param {HTMLElement} element\n   * @param {string} [currentLang]\n   * @param {string} [resultLang]\n   */\n  function updateClassName(element, currentLang, resultLang) {\n    const language = (currentLang && aliases[currentLang]) || resultLang;\n\n    element.classList.add(\"hljs\");\n    element.classList.add(`language-${language}`);\n  }\n\n  /**\n   * Applies highlighting to a DOM node containing code.\n   *\n   * @param {HighlightedHTMLElement} element - the HTML element to highlight\n  */\n  function highlightElement(element) {\n    /** @type HTMLElement */\n    let node = null;\n    const language = blockLanguage(element);\n\n    if (shouldNotHighlight(language)) return;\n\n    fire(\"before:highlightElement\",\n      { el: element, language });\n\n    if (element.dataset.highlighted) {\n      console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n      return;\n    }\n\n    // we should be all text, no child nodes (unescaped HTML) - this is possibly\n    // an HTML injection attack - it's likely too late if this is already in\n    // production (the code has likely already done its damage by the time\n    // we're seeing it)... but we yell loudly about this so that hopefully it's\n    // more likely to be caught in development before making it to production\n    if (element.children.length > 0) {\n      if (!options.ignoreUnescapedHTML) {\n        console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n        console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n        console.warn(\"The element with unescaped HTML:\");\n        console.warn(element);\n      }\n      if (options.throwUnescapedHTML) {\n        const err = new HTMLInjectionError(\n          \"One of your code blocks includes unescaped HTML.\",\n          element.innerHTML\n        );\n        throw err;\n      }\n    }\n\n    node = element;\n    const text = node.textContent;\n    const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n    element.innerHTML = result.value;\n    element.dataset.highlighted = \"yes\";\n    updateClassName(element, language, result.language);\n    element.result = {\n      language: result.language,\n      // TODO: remove with version 11.0\n      re: result.relevance,\n      relevance: result.relevance\n    };\n    if (result.secondBest) {\n      element.secondBest = {\n        language: result.secondBest.language,\n        relevance: result.secondBest.relevance\n      };\n    }\n\n    fire(\"after:highlightElement\", { el: element, result, text });\n  }\n\n  /**\n   * Updates highlight.js global options with the passed options\n   *\n   * @param {Partial<HLJSOptions>} userOptions\n   */\n  function configure(userOptions) {\n    options = inherit(options, userOptions);\n  }\n\n  // TODO: remove v12, deprecated\n  const initHighlighting = () => {\n    highlightAll();\n    deprecated(\"10.6.0\", \"initHighlighting() deprecated.  Use highlightAll() now.\");\n  };\n\n  // TODO: remove v12, deprecated\n  function initHighlightingOnLoad() {\n    highlightAll();\n    deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated.  Use highlightAll() now.\");\n  }\n\n  let wantsHighlight = false;\n\n  /**\n   * auto-highlights all pre>code elements on the page\n   */\n  function highlightAll() {\n    function boot() {\n      // if a highlight was requested before DOM was loaded, do now\n      highlightAll();\n    }\n\n    // if we are called too early in the loading process\n    if (document.readyState === \"loading\") {\n      // make sure the event listener is only added once\n      if (!wantsHighlight) {\n        window.addEventListener('DOMContentLoaded', boot, false);\n      }\n      wantsHighlight = true;\n      return;\n    }\n\n    const blocks = document.querySelectorAll(options.cssSelector);\n    blocks.forEach(highlightElement);\n  }\n\n  /**\n   * Register a language grammar module\n   *\n   * @param {string} languageName\n   * @param {LanguageFn} languageDefinition\n   */\n  function registerLanguage(languageName, languageDefinition) {\n    let lang = null;\n    try {\n      lang = languageDefinition(hljs);\n    } catch (error$1) {\n      error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n      // hard or soft error\n      if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n      // languages that have serious errors are replaced with essentially a\n      // \"plaintext\" stand-in so that the code blocks will still get normal\n      // css classes applied to them - and one bad language won't break the\n      // entire highlighter\n      lang = PLAINTEXT_LANGUAGE;\n    }\n    // give it a temporary name if it doesn't have one in the meta-data\n    if (!lang.name) lang.name = languageName;\n    languages[languageName] = lang;\n    lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n    if (lang.aliases) {\n      registerAliases(lang.aliases, { languageName });\n    }\n  }\n\n  /**\n   * Remove a language grammar module\n   *\n   * @param {string} languageName\n   */\n  function unregisterLanguage(languageName) {\n    delete languages[languageName];\n    for (const alias of Object.keys(aliases)) {\n      if (aliases[alias] === languageName) {\n        delete aliases[alias];\n      }\n    }\n  }\n\n  /**\n   * @returns {string[]} List of language internal names\n   */\n  function listLanguages() {\n    return Object.keys(languages);\n  }\n\n  /**\n   * @param {string} name - name of the language to retrieve\n   * @returns {Language | undefined}\n   */\n  function getLanguage(name) {\n    name = (name || '').toLowerCase();\n    return languages[name] || languages[aliases[name]];\n  }\n\n  /**\n   *\n   * @param {string|string[]} aliasList - single alias or list of aliases\n   * @param {{languageName: string}} opts\n   */\n  function registerAliases(aliasList, { languageName }) {\n    if (typeof aliasList === 'string') {\n      aliasList = [aliasList];\n    }\n    aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n  }\n\n  /**\n   * Determines if a given language has auto-detection enabled\n   * @param {string} name - name of the language\n   */\n  function autoDetection(name) {\n    const lang = getLanguage(name);\n    return lang && !lang.disableAutodetect;\n  }\n\n  /**\n   * Upgrades the old highlightBlock plugins to the new\n   * highlightElement API\n   * @param {HLJSPlugin} plugin\n   */\n  function upgradePluginAPI(plugin) {\n    // TODO: remove with v12\n    if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n      plugin[\"before:highlightElement\"] = (data) => {\n        plugin[\"before:highlightBlock\"](\n          Object.assign({ block: data.el }, data)\n        );\n      };\n    }\n    if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n      plugin[\"after:highlightElement\"] = (data) => {\n        plugin[\"after:highlightBlock\"](\n          Object.assign({ block: data.el }, data)\n        );\n      };\n    }\n  }\n\n  /**\n   * @param {HLJSPlugin} plugin\n   */\n  function addPlugin(plugin) {\n    upgradePluginAPI(plugin);\n    plugins.push(plugin);\n  }\n\n  /**\n   * @param {HLJSPlugin} plugin\n   */\n  function removePlugin(plugin) {\n    const index = plugins.indexOf(plugin);\n    if (index !== -1) {\n      plugins.splice(index, 1);\n    }\n  }\n\n  /**\n   *\n   * @param {PluginEvent} event\n   * @param {any} args\n   */\n  function fire(event, args) {\n    const cb = event;\n    plugins.forEach(function(plugin) {\n      if (plugin[cb]) {\n        plugin[cb](args);\n      }\n    });\n  }\n\n  /**\n   * DEPRECATED\n   * @param {HighlightedHTMLElement} el\n   */\n  function deprecateHighlightBlock(el) {\n    deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n    deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n    return highlightElement(el);\n  }\n\n  /* Interface definition */\n  Object.assign(hljs, {\n    highlight,\n    highlightAuto,\n    highlightAll,\n    highlightElement,\n    // TODO: Remove with v12 API\n    highlightBlock: deprecateHighlightBlock,\n    configure,\n    initHighlighting,\n    initHighlightingOnLoad,\n    registerLanguage,\n    unregisterLanguage,\n    listLanguages,\n    getLanguage,\n    registerAliases,\n    autoDetection,\n    inherit,\n    addPlugin,\n    removePlugin\n  });\n\n  hljs.debugMode = function() { SAFE_MODE = false; };\n  hljs.safeMode = function() { SAFE_MODE = true; };\n  hljs.versionString = version;\n\n  hljs.regex = {\n    concat: concat,\n    lookahead: lookahead,\n    either: either,\n    optional: optional,\n    anyNumberOfTimes: anyNumberOfTimes\n  };\n\n  for (const key in MODES) {\n    // @ts-ignore\n    if (typeof MODES[key] === \"object\") {\n      // @ts-ignore\n      deepFreeze(MODES[key]);\n    }\n  }\n\n  // merge all the modes/regexes into our main object\n  Object.assign(hljs, MODES);\n\n  return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiJob\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":77}};\n    doc.loc.source = {\"body\":\"fragment Job on CiJob {\\n  id\\n  detailedStatus {\\n    id\\n    detailsPath\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"Job\"] = oneQuery(doc, \"Job\");\n        \n","/**\n * An event hub with a Vue instance like API\n *\n * NOTE: This is a derivative work from [mitt][1] v1.2.0 which is licensed by\n * [MIT License][2] © [Jason Miller][3]\n *\n * [1]: https://github.com/developit/mitt\n * [2]: https://opensource.org/licenses/MIT\n * [3]: https://jasonformat.com/\n */\nclass EventHub {\n  constructor() {\n    this.$_all = new Map();\n  }\n\n  dispose() {\n    this.$_all.clear();\n  }\n\n  /**\n   * Register an event handler for the given type.\n   *\n   * @param {string|symbol} type Type of event to listen for\n   * @param {Function} handler Function to call in response to given event\n   */\n  $on(type, handler) {\n    const handlers = this.$_all.get(type);\n    const added = handlers && handlers.push(handler);\n\n    if (!added) {\n      this.$_all.set(type, [handler]);\n    }\n  }\n\n  /**\n   * Remove an event handler or all handlers for the given type.\n   *\n   * @param {string|symbol} type Type of event to unregister `handler`\n   * @param {Function} handler Handler function to remove\n   */\n  $off(type, handler) {\n    const handlers = this.$_all.get(type) || [];\n\n    const newHandlers = handler ? handlers.filter((x) => x !== handler) : [];\n\n    if (newHandlers.length) {\n      this.$_all.set(type, newHandlers);\n    } else {\n      this.$_all.delete(type);\n    }\n  }\n\n  /**\n   * Add an event listener to type but only trigger it once\n   *\n   * @param {string|symbol} type Type of event to listen for\n   * @param {Function} handler Handler function to call in response to event\n   */\n  $once(type, handler) {\n    const wrapHandler = (...args) => {\n      this.$off(type, wrapHandler);\n      handler(...args);\n    };\n    this.$on(type, wrapHandler);\n  }\n\n  /**\n   * Invoke all handlers for the given type.\n   *\n   * @param {string|symbol} type The event type to invoke\n   * @param {Any} [evt] Any value passed to each handler\n   */\n  $emit(type, ...args) {\n    const handlers = this.$_all.get(type) || [];\n\n    handlers.forEach((handler) => {\n      handler(...args);\n    });\n  }\n}\n\n/**\n * Return a Vue like event hub\n *\n * - $on\n * - $off\n * - $once\n * - $emit\n *\n * We'd like to shy away from using a full fledged Vue instance from this in the future.\n */\nexport default () => {\n  return new EventHub();\n};\n","import Vue from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\n\nconst itemValidator = item => {\n  var _item$text;\n  return (item === null || item === void 0 ? void 0 : (_item$text = item.text) === null || _item$text === void 0 ? void 0 : _item$text.length) > 0 && !Array.isArray(item === null || item === void 0 ? void 0 : item.items);\n};\nconst isItem = item => Boolean(item) && itemValidator(item);\nconst isGroup = group => Boolean(group) && Array.isArray(group.items) && Boolean(group.items.length) &&\n// eslint-disable-next-line unicorn/no-array-callback-reference\ngroup.items.every(isItem);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst itemsValidator = items => items.every(isItem) || items.every(isGroup);\nconst isListItem = tag => ['gl-disclosure-dropdown-group', 'gl-disclosure-dropdown-item', 'li'].includes(tag);\nconst isValidSlotTagVue2 = vNode => {\n  var _vNode$componentOptio;\n  return Boolean(vNode) && isListItem(((_vNode$componentOptio = vNode.componentOptions) === null || _vNode$componentOptio === void 0 ? void 0 : _vNode$componentOptio.tag) || vNode.tag);\n};\nconst isValidSlotTagVue3 = vNode => {\n  var _vNode$type;\n  return [DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME].includes((_vNode$type = vNode.type) === null || _vNode$type === void 0 ? void 0 : _vNode$type.name) || vNode.type === 'li';\n};\nconst hasOnlyListItemsVue2 = defaultSlot => {\n  const nodes = defaultSlot();\n  if (!Array.isArray(nodes)) {\n    return false;\n  }\n  const tags = nodes.filter(vNode => vNode.tag);\n  return tags.length && tags.every(tag => isValidSlotTagVue2(tag));\n};\nconst hasOnlyListItemsVue3 = defaultSlot => {\n  const nodes = defaultSlot();\n  const fragment = nodes.find(node => Array.isArray(node.children) && node.children.length);\n  const targetNodes = fragment ? fragment.children : nodes;\n  return targetNodes\n  // Remove empty text vNodes\n  .filter(vNode => !isString(vNode.text) || vNode.text.trim().length > 0).every(vNode => isValidSlotTagVue3(vNode));\n};\nconst hasOnlyListItems = defaultSlot => {\n  if (!isFunction(defaultSlot)) {\n    return false;\n  }\n  if (Vue.version.startsWith('3')) {\n    return hasOnlyListItemsVue3(defaultSlot);\n  }\n  return hasOnlyListItemsVue2(defaultSlot);\n};\n\nexport { hasOnlyListItems, isGroup, isItem, itemsValidator };\n","var toString = require('./toString'),\n    upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineSecuritySummary\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reportTypes\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportTypeEnum\"}}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"JobArtifacts\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityReportSummary\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dast\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitiesCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scannedResourcesCsvPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportSummaryScans\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sast\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitiesCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportSummaryScans\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"containerScanning\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitiesCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportSummaryScans\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dependencyScanning\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitiesCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportSummaryScans\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"apiFuzzing\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitiesCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportSummaryScans\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"coverageFuzzing\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitiesCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportSummaryScans\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"clusterImageScanning\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitiesCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportSummaryScans\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"secretDetection\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitiesCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportSummaryScans\"},\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":1651}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/security_report_scans.fragment.graphql\\\"\\n#import \\\"~/vue_shared/security_reports/graphql/fragments/job_artifacts.fragment.graphql\\\"\\n\\nquery pipelineSecuritySummary(\\n  $fullPath: ID!\\n  $pipelineIid: ID!\\n  $reportTypes: [SecurityReportTypeEnum!]\\n) {\\n  project(fullPath: $fullPath) {\\n    id\\n    pipeline(iid: $pipelineIid) {\\n      id\\n      # eslint-disable-next-line @graphql-eslint/require-id-when-available\\n      ...JobArtifacts\\n      securityReportSummary {\\n        dast {\\n          vulnerabilitiesCount\\n          scannedResourcesCsvPath\\n          ...SecurityReportSummaryScans\\n          # The following fields will be added in\\n          # https://gitlab.com/gitlab-org/gitlab/-/issues/321586\\n          # scannedResourcesCount\\n          # scannedResources {\\n          #   nodes {\\n          #     requestMethod\\n          #     url\\n          #   }\\n          # }\\n        }\\n        sast {\\n          vulnerabilitiesCount\\n          ...SecurityReportSummaryScans\\n        }\\n        containerScanning {\\n          vulnerabilitiesCount\\n          ...SecurityReportSummaryScans\\n        }\\n        dependencyScanning {\\n          vulnerabilitiesCount\\n          ...SecurityReportSummaryScans\\n        }\\n        apiFuzzing {\\n          vulnerabilitiesCount\\n          ...SecurityReportSummaryScans\\n        }\\n        coverageFuzzing {\\n          vulnerabilitiesCount\\n          ...SecurityReportSummaryScans\\n        }\\n        clusterImageScanning {\\n          vulnerabilitiesCount\\n          ...SecurityReportSummaryScans\\n        }\\n        secretDetection {\\n          vulnerabilitiesCount\\n          ...SecurityReportSummaryScans\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/security_report_scans.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"~/vue_shared/security_reports/graphql/fragments/job_artifacts.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"pipelineSecuritySummary\"] = oneQuery(doc, \"pipelineSecuritySummary\");\n        \n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","const fileExtensionIcons = {\n  html: 'html',\n  htm: 'html',\n  html_vm: 'html',\n  asp: 'html',\n  jade: 'pug',\n  pug: 'pug',\n  md: 'markdown',\n  markdown: 'markdown',\n  mdown: 'markdown',\n  mkd: 'markdown',\n  mkdn: 'markdown',\n  rst: 'markdown',\n  blink: 'blink',\n  css: 'css',\n  scss: 'sass',\n  sass: 'sass',\n  less: 'less',\n  json: 'json',\n  yaml: 'yaml',\n  yml: 'yaml',\n  xml: 'xml',\n  plist: 'xml',\n  xsd: 'xml',\n  dtd: 'xml',\n  xsl: 'xml',\n  xslt: 'xml',\n  resx: 'xml',\n  iml: 'xml',\n  xquery: 'xml',\n  tmLanguage: 'xml',\n  manifest: 'xml',\n  project: 'xml',\n  png: 'image',\n  jpeg: 'image',\n  jpg: 'image',\n  gif: 'image',\n  svg: 'image',\n  ico: 'image',\n  tif: 'image',\n  tiff: 'image',\n  psd: 'image',\n  psb: 'image',\n  ami: 'image',\n  apx: 'image',\n  bmp: 'image',\n  bpg: 'image',\n  brk: 'image',\n  cur: 'image',\n  dds: 'image',\n  dng: 'image',\n  exr: 'image',\n  fpx: 'image',\n  gbr: 'image',\n  img: 'image',\n  jbig2: 'image',\n  jb2: 'image',\n  jng: 'image',\n  jxr: 'image',\n  pbm: 'image',\n  pgf: 'image',\n  pic: 'image',\n  raw: 'image',\n  webp: 'image',\n  js: 'javascript',\n  cjs: 'javascript',\n  ejs: 'javascript',\n  esx: 'javascript',\n  mjs: 'javascript',\n  jsx: 'react',\n  tsx: 'react',\n  ini: 'settings',\n  dlc: 'settings',\n  dll: 'settings',\n  config: 'settings',\n  conf: 'settings',\n  properties: 'settings',\n  prop: 'settings',\n  settings: 'settings',\n  option: 'settings',\n  props: 'settings',\n  toml: 'settings',\n  prefs: 'settings',\n  ts: 'typescript',\n  cts: 'typescript',\n  mts: 'typescript',\n  marko: 'markojs',\n  pdf: 'pdf',\n  xlsx: 'table',\n  xls: 'table',\n  ods: 'table',\n  csv: 'table',\n  tsv: 'table',\n  vscodeignore: 'vscode',\n  vsixmanifest: 'vscode',\n  vsix: 'vscode',\n  suo: 'visualstudio',\n  sln: 'visualstudio',\n  csproj: 'visualstudio',\n  vb: 'visualstudio',\n  pdb: 'database',\n  sql: 'database',\n  pks: 'database',\n  pkb: 'database',\n  accdb: 'database',\n  mdb: 'database',\n  sqlite: 'database',\n  cs: 'csharp',\n  zip: 'zip',\n  tar: 'zip',\n  gz: 'zip',\n  xz: 'zip',\n  bzip2: 'zip',\n  gzip: 'zip',\n  rar: 'zip',\n  tgz: 'zip',\n  exe: 'exe',\n  msi: 'exe',\n  java: 'java',\n  jar: 'java',\n  jsp: 'java',\n  c: 'c',\n  m: 'c',\n  h: 'h',\n  cc: 'cpp',\n  cpp: 'cpp',\n  mm: 'cpp',\n  cxx: 'cpp',\n  hpp: 'hpp',\n  go: 'go',\n  py: 'python',\n  url: 'url',\n  sh: 'console',\n  ksh: 'console',\n  csh: 'console',\n  tcsh: 'console',\n  zsh: 'console',\n  bash: 'console',\n  bat: 'console',\n  cmd: 'console',\n  ps1: 'powershell',\n  psm1: 'powershell',\n  psd1: 'powershell',\n  ps1xml: 'powershell',\n  psc1: 'powershell',\n  pssc: 'powershell',\n  gradle: 'gradle',\n  doc: 'word',\n  docx: 'word',\n  odt: 'word',\n  rtf: 'word',\n  cer: 'certificate',\n  cert: 'certificate',\n  crt: 'certificate',\n  pub: 'key',\n  key: 'key',\n  pem: 'key',\n  asc: 'key',\n  gpg: 'key',\n  woff: 'font',\n  woff2: 'font',\n  ttf: 'font',\n  eot: 'font',\n  suit: 'font',\n  otf: 'font',\n  bmap: 'font',\n  fnt: 'font',\n  odttf: 'font',\n  ttc: 'font',\n  font: 'font',\n  fonts: 'font',\n  sui: 'font',\n  ntf: 'font',\n  mrf: 'font',\n  lib: 'lib',\n  bib: 'lib',\n  rb: 'ruby',\n  erb: 'ruby',\n  fs: 'fsharp',\n  fsx: 'fsharp',\n  fsi: 'fsharp',\n  fsproj: 'fsharp',\n  swift: 'swift',\n  ino: 'arduino',\n  dockerignore: 'docker',\n  dockerfile: 'docker',\n  tex: 'tex',\n  cls: 'tex',\n  sty: 'tex',\n  pptx: 'powerpoint',\n  ppt: 'powerpoint',\n  pptm: 'powerpoint',\n  potx: 'powerpoint',\n  pot: 'powerpoint',\n  potm: 'powerpoint',\n  ppsx: 'powerpoint',\n  ppsm: 'powerpoint',\n  pps: 'powerpoint',\n  ppam: 'powerpoint',\n  ppa: 'powerpoint',\n  odp: 'powerpoint',\n  webm: 'video',\n  mkv: 'video',\n  flv: 'video',\n  vob: 'video',\n  ogv: 'video',\n  ogg: 'audio',\n  gifv: 'video',\n  avi: 'video',\n  mov: 'video',\n  qt: 'video',\n  wmv: 'video',\n  yuv: 'video',\n  rm: 'video',\n  rmvb: 'video',\n  mp4: 'video',\n  m4v: 'video',\n  mpg: 'video',\n  mp2: 'video',\n  mpeg: 'video',\n  mpe: 'video',\n  mpv: 'video',\n  m2v: 'video',\n  vdi: 'virtual',\n  vbox: 'virtual',\n  ics: 'email',\n  mp3: 'audio',\n  flac: 'audio',\n  m4a: 'audio',\n  wma: 'audio',\n  aiff: 'audio',\n  coffee: 'coffee',\n  txt: 'document',\n  graphql: 'graphql',\n  rs: 'rust',\n  raml: 'raml',\n  xaml: 'xaml',\n  hs: 'haskell',\n  kt: 'kotlin',\n  kts: 'kotlin',\n  patch: 'git',\n  lua: 'lua',\n  clj: 'clojure',\n  cljs: 'clojure',\n  groovy: 'groovy',\n  r: 'r',\n  rmd: 'r',\n  dart: 'dart',\n  as: 'actionscript',\n  mxml: 'mxml',\n  ahk: 'autohotkey',\n  swf: 'flash',\n  swc: 'swc',\n  cmake: 'cmake',\n  asm: 'assembly',\n  a51: 'assembly',\n  inc: 'assembly',\n  nasm: 'assembly',\n  s: 'assembly',\n  ms: 'assembly',\n  agc: 'assembly',\n  ags: 'assembly',\n  aea: 'assembly',\n  argus: 'assembly',\n  mitigus: 'assembly',\n  binsource: 'assembly',\n  vue: 'vue',\n  ml: 'ocaml',\n  mli: 'ocaml',\n  cmx: 'ocaml',\n  lock: 'lock',\n  hbs: 'handlebars',\n  mustache: 'handlebars',\n  pl: 'perl',\n  pm: 'perl',\n  hx: 'haxe',\n  pp: 'puppet',\n  ex: 'elixir',\n  exs: 'elixir',\n  ls: 'livescript',\n  erl: 'erlang',\n  twig: 'twig',\n  jl: 'julia',\n  elm: 'elm',\n  pure: 'purescript',\n  tpl: 'smarty',\n  styl: 'stylus',\n  re: 'reason',\n  rei: 'reason',\n  cmj: 'bucklescript',\n  merlin: 'merlin',\n  v: 'verilog',\n  vhd: 'verilog',\n  sv: 'verilog',\n  svh: 'verilog',\n  nb: 'mathematica',\n  wl: 'wolframlanguage',\n  wls: 'wolframlanguage',\n  njk: 'nunjucks',\n  nunjucks: 'nunjucks',\n  robot: 'robot',\n  sol: 'solidity',\n  au3: 'autoit',\n  haml: 'haml',\n  yang: 'yang',\n  tf: 'terraform',\n  tfvars: 'terraform',\n  tfstate: 'terraform',\n  applescript: 'applescript',\n  cake: 'cake',\n  feature: 'cucumber',\n  nim: 'nim',\n  nimble: 'nim',\n  apib: 'apiblueprint',\n  apiblueprint: 'apiblueprint',\n  tag: 'riot',\n  vfl: 'vfl',\n  kl: 'kl',\n  pcss: 'postcss',\n  sss: 'postcss',\n  todo: 'todo',\n  cfml: 'coldfusion',\n  cfc: 'coldfusion',\n  lucee: 'coldfusion',\n  cabal: 'cabal',\n  nix: 'nix',\n  slim: 'slim',\n  http: 'http',\n  rest: 'http',\n  rql: 'restql',\n  restql: 'restql',\n  kv: 'kivy',\n  graphcool: 'graphcool',\n  sbt: 'sbt',\n  cr: 'crystal',\n  cu: 'cuda',\n  cuh: 'cuda',\n  log: 'log',\n};\n\nconst twoFileExtensionIcons = {\n  'gradle.kts': 'gradle',\n  'md.rendered': 'markdown',\n  'markdown.rendered': 'markdown',\n  'mdown.rendered': 'markdown',\n  'mkd.rendered': 'markdown',\n  'mkdn.rendered': 'markdown',\n  'YAML-tmLanguage': 'yaml',\n  'sln.dotsettings': 'settings',\n  'sln.dotsettings.user': 'settings',\n  'd.ts': 'typescript-def',\n  'code-workplace': 'vscode',\n  '7z': 'zip',\n  'c++': 'cpp',\n  'vbox-prev': 'virtual',\n  'js.map': 'javascript-map',\n  'css.map': 'css-map',\n  'spec.ts': 'test-ts',\n  'test.ts': 'test-ts',\n  'ts.snap': 'test-ts',\n  'spec.tsx': 'test-jsx',\n  'test.tsx': 'test-jsx',\n  'tsx.snap': 'test-jsx',\n  'spec.jsx': 'test-jsx',\n  'test.jsx': 'test-jsx',\n  'jsx.snap': 'test-jsx',\n  'spec.js': 'test-js',\n  'test.js': 'test-js',\n  'js.snap': 'test-js',\n  // 'routing.ts': 'angular-routing',\n  // 'routing.js': 'angular-routing',\n  'module.ts': 'angular',\n  'module.js': 'angular',\n  'ng-template': 'angular',\n  'component.ts': 'angular-component',\n  'component.js': 'angular-component',\n  'guard.ts': 'angular-guard',\n  'guard.js': 'angular-guard',\n  'service.ts': 'angular-service',\n  'service.js': 'angular-service',\n  'pipe.ts': 'angular-pipe',\n  'pipe.js': 'angular-pipe',\n  'filter.js': 'angular-pipe',\n  'directive.ts': 'angular-directive',\n  'directive.js': 'angular-directive',\n  'resolver.ts': 'angular-resolver',\n  'resolver.js': 'angular-resolver',\n  'tf.json': 'terraform',\n  'blade.php': 'laravel',\n  'inky.php': 'laravel',\n  'reducer.ts': 'ngrx-reducer',\n  'rootReducer.ts': 'ngrx-reducer',\n  'state.ts': 'ngrx-state',\n  'actions.ts': 'ngrx-actions',\n  'effects.ts': 'ngrx-effects',\n  'drone.yml': 'drone',\n};\n\nconst fileNameIcons = {\n  '.jscsrc': 'json',\n  '.jshintrc': 'json',\n  'tsconfig.json': 'json',\n  'tslint.json': 'json',\n  'composer.lock': 'json',\n  '.jsbeautifyrc': 'json',\n  '.esformatter': 'json',\n  'cdp.pid': 'json',\n  '.htaccess': 'xml',\n  '.jshintignore': 'settings',\n  '.buildignore': 'settings',\n  makefile: 'settings',\n  '.mrconfig': 'settings',\n  '.yardopts': 'settings',\n  'gradle.properties': 'gradle',\n  gradlew: 'gradle',\n  'gradle-wrapper.properties': 'gradle',\n  COPYING: 'certificate',\n  'COPYING.LESSER': 'certificate',\n  LICENSE: 'certificate',\n  LICENCE: 'certificate',\n  'LICENSE.md': 'certificate',\n  'LICENCE.md': 'certificate',\n  'LICENSE.txt': 'certificate',\n  'LICENCE.txt': 'certificate',\n  '.gitlab-license': 'certificate',\n  dockerfile: 'docker',\n  'docker-compose.yml': 'docker',\n  '.mailmap': 'email',\n  '.gitignore': 'git',\n  '.gitconfig': 'git',\n  '.gitattributes': 'git',\n  '.gitmodules': 'git',\n  '.gitkeep': 'git',\n  'git-history': 'git',\n  '.Rhistory': 'r',\n  'cmakelists.txt': 'cmake',\n  'cmakecache.txt': 'cmake',\n  'angular-cli.json': 'angular',\n  '.angular-cli.json': 'angular',\n  '.vfl': 'vfl',\n  '.kl': 'kl',\n  'postcss.config.js': 'postcss',\n  '.postcssrc.js': 'postcss',\n  'project.graphcool': 'graphcool',\n  'webpack.js': 'webpack',\n  'webpack.ts': 'webpack',\n  'webpack.base.js': 'webpack',\n  'webpack.base.ts': 'webpack',\n  'webpack.config.js': 'webpack',\n  'webpack.config.ts': 'webpack',\n  'webpack.common.js': 'webpack',\n  'webpack.common.ts': 'webpack',\n  'webpack.config.common.js': 'webpack',\n  'webpack.config.common.ts': 'webpack',\n  'webpack.config.common.babel.js': 'webpack',\n  'webpack.config.common.babel.ts': 'webpack',\n  'webpack.dev.js': 'webpack',\n  'webpack.dev.ts': 'webpack',\n  'webpack.config.dev.js': 'webpack',\n  'webpack.config.dev.ts': 'webpack',\n  'webpack.config.dev.babel.js': 'webpack',\n  'webpack.config.dev.babel.ts': 'webpack',\n  'webpack.prod.js': 'webpack',\n  'webpack.prod.ts': 'webpack',\n  'webpack.server.js': 'webpack',\n  'webpack.server.ts': 'webpack',\n  'webpack.client.js': 'webpack',\n  'webpack.client.ts': 'webpack',\n  'webpack.config.server.js': 'webpack',\n  'webpack.config.server.ts': 'webpack',\n  'webpack.config.client.js': 'webpack',\n  'webpack.config.client.ts': 'webpack',\n  'webpack.config.production.babel.js': 'webpack',\n  'webpack.config.production.babel.ts': 'webpack',\n  'webpack.config.prod.babel.js': 'webpack',\n  'webpack.config.prod.babel.ts': 'webpack',\n  'webpack.config.prod.js': 'webpack',\n  'webpack.config.prod.ts': 'webpack',\n  'webpack.config.production.js': 'webpack',\n  'webpack.config.production.ts': 'webpack',\n  'webpack.config.staging.js': 'webpack',\n  'webpack.config.staging.ts': 'webpack',\n  'webpack.config.babel.js': 'webpack',\n  'webpack.config.babel.ts': 'webpack',\n  'webpack.config.base.babel.js': 'webpack',\n  'webpack.config.base.babel.ts': 'webpack',\n  'webpack.config.base.js': 'webpack',\n  'webpack.config.base.ts': 'webpack',\n  'webpack.config.staging.babel.js': 'webpack',\n  'webpack.config.staging.babel.ts': 'webpack',\n  'webpack.config.coffee': 'webpack',\n  'webpack.config.test.js': 'webpack',\n  'webpack.config.test.ts': 'webpack',\n  'webpack.config.vendor.js': 'webpack',\n  'webpack.config.vendor.ts': 'webpack',\n  'webpack.config.vendor.production.js': 'webpack',\n  'webpack.config.vendor.production.ts': 'webpack',\n  'webpack.test.js': 'webpack',\n  'webpack.test.ts': 'webpack',\n  'webpack.dist.js': 'webpack',\n  'webpack.dist.ts': 'webpack',\n  'webpackfile.js': 'webpack',\n  'webpackfile.ts': 'webpack',\n  'ionic.config.json': 'ionic',\n  '.io-config.json': 'ionic',\n  'gulpfile.js': 'gulp',\n  'gulpfile.ts': 'gulp',\n  'gulpfile.babel.js': 'gulp',\n  'package.json': 'nodejs',\n  'package-lock.json': 'nodejs',\n  '.nvmrc': 'nodejs',\n  '.npmignore': 'npm',\n  '.npmrc': 'npm',\n  '.yarnrc': 'yarn',\n  '.yarnrc.yml': 'yarn',\n  'yarn.lock': 'yarn',\n  '.yarnclean': 'yarn',\n  '.yarn-integrity': 'yarn',\n  'yarn-error.log': 'yarn',\n  'androidmanifest.xml': 'android',\n  '.env': 'tune',\n  '.env.example': 'tune',\n  '.babelrc': 'babel',\n  'contributing.md': 'contributing',\n  'contributing.md.rendered': 'contributing',\n  'readme.md': 'readme',\n  'readme.md.rendered': 'readme',\n  changelog: 'changelog',\n  'changelog.md': 'changelog',\n  'changelog.md.rendered': 'changelog',\n  CREDITS: 'credits',\n  'credits.txt': 'credits',\n  'credits.md': 'credits',\n  'credits.md.rendered': 'credits',\n  '.flowconfig': 'flow',\n  'favicon.png': 'favicon',\n  'karma.conf.js': 'karma',\n  'karma.conf.ts': 'karma',\n  'karma.conf.coffee': 'karma',\n  'karma.config.js': 'karma',\n  'karma.config.ts': 'karma',\n  'karma-main.js': 'karma',\n  'karma-main.ts': 'karma',\n  '.bithoundrc': 'bithound',\n  'appveyor.yml': 'appveyor',\n  '.travis.yml': 'travis',\n  'protractor.conf.js': 'protractor',\n  'protractor.conf.ts': 'protractor',\n  'protractor.conf.coffee': 'protractor',\n  'protractor.config.js': 'protractor',\n  'protractor.config.ts': 'protractor',\n  'fuse.js': 'fusebox',\n  procfile: 'heroku',\n  '.editorconfig': 'editorconfig',\n  '.gitlab-ci.yml': 'gitlab',\n  '.bowerrc': 'bower',\n  'bower.json': 'bower',\n  '.eslintrc.js': 'eslint',\n  '.eslintrc.yaml': 'eslint',\n  '.eslintrc.yml': 'eslint',\n  '.eslintrc.json': 'eslint',\n  '.eslintrc': 'eslint',\n  '.eslintignore': 'eslint',\n  'code_of_conduct.md': 'conduct',\n  'code_of_conduct.md.rendered': 'conduct',\n  '.watchmanconfig': 'watchman',\n  'aurelia.json': 'aurelia',\n  'mocha.opts': 'mocha',\n  jenkinsfile: 'jenkins',\n  'firebase.json': 'firebase',\n  '.firebaserc': 'firebase',\n  Rakefile: 'ruby',\n  'rollup.config.js': 'rollup',\n  'rollup.config.ts': 'rollup',\n  'rollup-config.js': 'rollup',\n  'rollup-config.ts': 'rollup',\n  'rollup.config.prod.js': 'rollup',\n  'rollup.config.prod.ts': 'rollup',\n  'rollup.config.dev.js': 'rollup',\n  'rollup.config.dev.ts': 'rollup',\n  'rollup.config.prod.vendor.js': 'rollup',\n  'rollup.config.prod.vendor.ts': 'rollup',\n  '.hhconfig': 'hack',\n  '.stylelintrc': 'stylelint',\n  'stylelint.config.js': 'stylelint',\n  '.stylelintrc.json': 'stylelint',\n  '.stylelintrc.yaml': 'stylelint',\n  '.stylelintrc.yml': 'stylelint',\n  '.stylelintrc.js': 'stylelint',\n  '.stylelintignore': 'stylelint',\n  '.codeclimate.yml': 'code-climate',\n  '.prettierrc': 'prettier',\n  'prettier.config.js': 'prettier',\n  '.prettierrc.js': 'prettier',\n  '.prettierrc.json': 'prettier',\n  '.prettierrc.yaml': 'prettier',\n  '.prettierrc.yml': 'prettier',\n  '.prettierignore': 'prettier',\n  'nodemon.json': 'nodemon',\n  // '.sonarrc': 'sonar',\n  browserslist: 'browserlist',\n  '.browserslistrc': 'browserlist',\n  '.snyk': 'snyk',\n  '.drone.yml': 'drone',\n};\n\nfunction getIconForFile(name) {\n  return (\n    fileNameIcons[name] ||\n    twoFileExtensionIcons[name ? name.split('.').slice(-2).join('.') : ''] ||\n    fileExtensionIcons[name ? name.split('.').pop().toLowerCase() : ''] ||\n    ''\n  );\n}\n\nmodule.exports = {\n  fileNameIcons,\n  fileExtensionIcons,\n  twoFileExtensionIcons,\n  getIconForFile,\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[(_vm.loading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"inline\":true}}):(_vm.isSymlink)?_c('gl-icon',{attrs:{\"name\":\"symlink\",\"size\":_vm.size}}):(!_vm.folder)?_c('svg',{key:_vm.spriteHref,class:[_vm.iconSizeClass, _vm.cssClasses]},[_c('use',{attrs:{\"href\":_vm.spriteHref}})]):_c('gl-icon',{staticClass:\"folder-icon\",attrs:{\"name\":_vm.folderIconName,\"size\":_vm.size}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./file_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./file_icon.vue?vue&type=script&lang=js\"","<script>\nimport { getIconForFile } from '@gitlab/svgs/src/file_icon_map';\nimport { GlLoadingIcon, GlIcon } from '@gitlab/ui';\nimport { FILE_SYMLINK_MODE } from '../constants';\n\n/* This is a re-usable vue component for rendering a svg sprite\n    icon\n\n    Sample configuration:\n\n    <file-icon\n      name=\"retry\"\n      :size=\"32\"\n      css-classes=\"top\"\n    />\n\n  */\nexport default {\n  components: {\n    GlLoadingIcon,\n    GlIcon,\n  },\n  props: {\n    fileName: {\n      type: String,\n      required: true,\n    },\n    fileMode: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    folder: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    submodule: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    opened: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    size: {\n      type: Number,\n      required: false,\n      default: 16,\n    },\n    cssClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    isSymlink() {\n      return this.fileMode === FILE_SYMLINK_MODE;\n    },\n    spriteHref() {\n      const iconName = this.submodule ? 'folder-git' : getIconForFile(this.fileName) || 'file';\n\n      return `${gon.sprite_file_icons}#${iconName}`;\n    },\n    folderIconName() {\n      return this.opened ? 'folder-open' : 'folder';\n    },\n    iconSizeClass() {\n      return this.size ? `s${this.size}` : '';\n    },\n  },\n};\n</script>\n<template>\n  <span>\n    <gl-loading-icon v-if=\"loading\" size=\"sm\" :inline=\"true\" />\n    <gl-icon v-else-if=\"isSymlink\" name=\"symlink\" :size=\"size\" />\n    <svg v-else-if=\"!folder\" :key=\"spriteHref\" :class=\"[iconSizeClass, cssClasses]\">\n      <use :href=\"spriteHref\" />\n    </svg>\n    <gl-icon v-else :name=\"folderIconName\" :size=\"size\" class=\"folder-icon\" />\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./file_icon.vue?vue&type=template&id=baba2178\"\nimport script from \"./file_icon.vue?vue&type=script&lang=js\"\nexport * from \"./file_icon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getFailedJobs\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineIid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"statuses\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"FAILED\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"jobKind\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"BUILD\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooltip\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"buttonTitle\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"method\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stage\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"retryable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"readBuild\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updateBuild\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"trace\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"htmlSummary\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"failureMessage\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":866}};\n    doc.loc.source = {\"body\":\"query getFailedJobs($fullPath: ID!, $pipelineIid: ID!) {\\n  project(fullPath: $fullPath) {\\n    id\\n    pipeline(iid: $pipelineIid) {\\n      id\\n      jobs(statuses: FAILED, retried: false, jobKind: BUILD) {\\n        nodes {\\n          status\\n          detailedStatus {\\n            id\\n            detailsPath\\n            group\\n            icon\\n            label\\n            text\\n            tooltip\\n            action {\\n              id\\n              buttonTitle\\n              icon\\n              method\\n              path\\n              title\\n            }\\n          }\\n          id\\n          stage {\\n            id\\n            name\\n          }\\n          name\\n          retryable\\n          userPermissions {\\n            readBuild\\n            updateBuild\\n          }\\n          trace {\\n            htmlSummary\\n          }\\n          failureMessage\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getFailedJobs\"] = oneQuery(doc, \"getFailedJobs\");\n        \n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-gap-5 gl-py-5\"},[(_vm.$apollo.queries.project.loading)?_c('gl-loading-icon',{staticClass:\"flex-fill gl-flex gl-items-center gl-justify-center\",attrs:{\"size\":\"sm\"}}):(_vm.loadingError)?_c('gl-alert',{attrs:{\"dismissible\":false,\"variant\":\"danger\",\"data-testid\":\"loading-error\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.s__('Vulnerability|Something went wrong while trying to get the source file.'))+\"\\n  \")]):[_c('div',{staticClass:\"gl-z-0 gl-flex gl-flex-col gl-overflow-auto gl-pl-2 gl-pr-2\",class:{ 'gl-w-full': !_vm.showCodeFlowFileViewer, 'gl-w-4/10': _vm.showCodeFlowFileViewer },attrs:{\"data-testid\":\"code-flow-steps-section-container\"}},[_c('code-flow-steps-section',{ref:\"codeFlowStepSection\",class:{ 'code-flow-content': !_vm.insideModal, 'code-flow-content-modal': _vm.insideModal },style:({ '--modal-content-height': `${_vm.modalContentHeight}px` }),attrs:{\"description\":_vm.description,\"description-html\":_vm.descriptionHtml,\"details\":_vm.details,\"raw-text-blobs\":_vm.rawTextBlobs},on:{\"onSelectedStep\":_vm.onSelectedStep}})],1),_vm._v(\" \"),(_vm.showCodeFlowFileViewer)?_c('div',{staticClass:\"flex-fill gl-flex gl-w-12/20 gl-flex-col gl-gap-5 gl-overflow-auto gl-pt-2\",class:{ 'code-flow-content': !_vm.insideModal, 'code-flow-content-modal': _vm.insideModal },style:({ '--modal-content-height': `${_vm.modalContentHeight}px` }),attrs:{\"id\":\"code-flows-container\",\"data-testid\":\"code-flows-container\"}},_vm._l((_vm.codeSourceFiles),function(fileName){return _c('code-flow-file-viewer',{key:fileName,attrs:{\"file-path\":fileName,\"branch-ref\":_vm.branchRef,\"hl-info\":_vm.highlightSourcesInfo[fileName],\"blob-info\":_vm.specificBlobInfo(fileName),\"selected-step-number\":_vm.selectedStepNumber}})}),1):_vm._e()]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {\n  inlineItemMark,\n  inlineSectionMarker,\n  textMarkerIdPrefix,\n  textSpanMarkerIdPrefix,\n} from 'ee/vue_shared/components/code_flow/utils/constants';\n\n/**\n * Highlight.js plugin for wrapping lines in the correct classes and attributes.\n * Needed to highlight a large amount of lines\n *\n * Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\n *\n * @param {String} content - represent highlighted line of code\n * @param {number} lineNum - represent highlighted line number\n * @param {Object} markLineInfo - highlighting info for the current line\n */\nfunction markLinesWithDiv(content, lineNum, markLineInfo) {\n  let stepNumberSpan = '';\n  let stepNumberSpanNone = '';\n  let wrappedLine = content;\n\n  // Combines an array of step numbers into a comma-separated string\n  const stepNumbersArr = markLineInfo?.map((markLine) => markLine.stepNumber);\n  const stepNumbers = stepNumbersArr?.map(String).join(',') ?? '';\n\n  markLineInfo?.forEach((markLine) => {\n    stepNumberSpan +=\n      lineNum === markLine.startLine\n        ? `<span id=\"${textSpanMarkerIdPrefix}${markLine.stepNumber}\" class=\"${inlineItemMark}\">${markLine.stepNumber}</span>`\n        : '';\n    stepNumberSpanNone +=\n      lineNum !== markLine.startLine\n        ? `<span id=\"${textSpanMarkerIdPrefix}${markLine.stepNumber}\" class=\"${inlineItemMark} gl-opacity-0\">${markLine.stepNumber}</span>`\n        : '';\n  });\n\n  if (markLineInfo) {\n    const contentStartIndex = content.indexOf(content.trimStart());\n    wrappedLine = `${content.slice(\n      0,\n      contentStartIndex,\n    )}${stepNumberSpanNone}<span id=\"${textMarkerIdPrefix}${\n      stepNumbers\n    }-L${lineNum}\" class=\"${inlineSectionMarker}\">${stepNumberSpan}${content.slice(contentStartIndex)}</span>`;\n  }\n  return `<div class=\"line\">${wrappedLine}</div>`;\n}\n\nexport default (result, lineToMarkersInfo) => {\n  // eslint-disable-next-line no-param-reassign\n  result.value = result.value\n    .split(/\\r?\\n/)\n    .map((content, index) => markLinesWithDiv(content, index + 1, lineToMarkersInfo?.[index + 1]))\n    .join('\\n');\n};\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code_flow_file_viewer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code_flow_file_viewer.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert, GlButton, GlSprintf } from '@gitlab/ui';\nimport { isEmpty } from 'lodash';\nimport VulnerabilityFileContentViewer from 'ee/vue_shared/vulnerabilities/components/vulnerability_file_content_viewer.vue';\nimport BlobFilepath from '~/blob/components/blob_header_filepath.vue';\nimport { __, s__ } from '~/locale';\nimport { highlightContent } from '~/highlight_js';\nimport * as Sentry from '~/sentry/sentry_browser_wrapper';\nimport {\n  updateCodeBlocks,\n  updateLinesToMarker,\n} from 'ee/vue_shared/components/code_flow/utils/utils';\nimport markMultipleLines from './plugins/mark_multiple_lines';\n\nexport default {\n  name: 'CodeFlowFileViewer',\n  components: {\n    BlobFilepath,\n    VulnerabilityFileContentViewer,\n    GlButton,\n    GlSprintf,\n    GlAlert,\n    WebIdeLink: () => import('ee_else_ce/vue_shared/components/web_ide_link.vue'),\n  },\n  props: {\n    hlInfo: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    blobInfo: {\n      type: Object,\n      required: true,\n      default: () => {},\n    },\n    filePath: {\n      type: String,\n      required: true,\n      default: undefined,\n    },\n    branchRef: {\n      type: String,\n      required: true,\n    },\n    selectedStepNumber: {\n      type: Number,\n      required: false,\n      default: undefined,\n    },\n  },\n  data() {\n    return {\n      loadingError: false,\n      codeBlocks: [],\n      linesToMarker: {},\n      expanded: true,\n      highlightedContent: '',\n      blobContent: '',\n    };\n  },\n  computed: {\n    userColorScheme() {\n      return gon.user_color_scheme;\n    },\n    totalLines() {\n      return this.content?.split('\\n').length;\n    },\n    labelToggleFile() {\n      return this.expanded ? __('Hide file contents') : __('Show file contents');\n    },\n    collapseIcon() {\n      return this.expanded ? 'chevron-down' : 'chevron-right';\n    },\n    isHighlighted() {\n      return Boolean(this.highlightedContent);\n    },\n    content() {\n      return this.highlightedContent || this.blobContent;\n    },\n  },\n  created() {\n    this.getContent();\n    this.mergeCodeBlocks(this.hlInfo);\n  },\n  methods: {\n    getContent() {\n      if (!this.blobInfo || isEmpty(this.blobInfo)) {\n        this.loadingError = true;\n        return;\n      }\n      const { rawTextBlob, language } = this.blobInfo;\n      const plugins = [(result) => markMultipleLines(result, this.linesToMarker)];\n      highlightContent(language, rawTextBlob, plugins)\n        .then((res) => {\n          // res is undefined when the file language is not recognized.\n          // we need to mark the step in the viewer even if the language is not recognized.\n          if (!res) {\n            const markResult = { value: rawTextBlob };\n            markMultipleLines(markResult, this.linesToMarker);\n            this.highlightedContent = markResult.value;\n          } else {\n            this.highlightedContent = res;\n          }\n        })\n        .catch((error) => {\n          Sentry.captureException(error);\n        });\n      this.blobContent = rawTextBlob;\n    },\n    mergeCodeBlocks(codeBlocks) {\n      const newCodeBlocks = updateCodeBlocks(codeBlocks);\n      this.codeBlocks = newCodeBlocks;\n      this.linesToMarker = updateLinesToMarker(newCodeBlocks);\n    },\n    handleToggleFile() {\n      this.expanded = !this.expanded;\n    },\n    handleExpandLines(index) {\n      if (index === 0) {\n        // expand until line 1\n        this.codeBlocks[index].blockStartLine = 1;\n      } else if (index === this.codeBlocks.length) {\n        // expand until total lines\n        this.codeBlocks[this.codeBlocks.length - 1].blockEndLine = this.totalLines;\n      } else {\n        // expand in-between lines\n        this.codeBlocks[index].blockStartLine = this.codeBlocks[index - 1].blockEndLine;\n      }\n      this.mergeCodeBlocks(this.codeBlocks);\n    },\n    getExpandedIcon(index) {\n      return index !== 0 ? 'expand' : 'expand-up';\n    },\n    isEndOfCodeBlock(index) {\n      return (\n        index === this.codeBlocks.length - 1 &&\n        this.codeBlocks[index].blockEndLine !== this.totalLines\n      );\n    },\n  },\n  i18n: {\n    vulnerabilityNotFound: s__('Vulnerability|%{file} was not found in ref %{ref}'),\n    expandAllLines: __('Expand all lines'),\n  },\n};\n</script>\n\n<template>\n  <div class=\"file-holder\">\n    <gl-alert v-if=\"loadingError\" :dismissible=\"false\" variant=\"warning\">\n      <gl-sprintf :message=\"$options.i18n.vulnerabilityNotFound\">\n        <template #file>\n          <code>{{ filePath }}</code>\n        </template>\n        <template #ref>\n          <code>{{ branchRef }}</code>\n        </template>\n      </gl-sprintf>\n    </gl-alert>\n\n    <template v-else>\n      <div class=\"file-title-flex-parent\">\n        <div class=\"gl-flex\">\n          <blob-filepath\n            :blob=\"blobInfo\"\n            :show-path=\"true\"\n            :show-as-link=\"true\"\n            :show-blob-size=\"false\"\n          >\n            <template #filepath-prepend>\n              <gl-button\n                class=\"gl-mr-2\"\n                category=\"tertiary\"\n                size=\"small\"\n                :icon=\"collapseIcon\"\n                :aria-label=\"labelToggleFile\"\n                data-testid=\"collapse-expand-file\"\n                @click=\"handleToggleFile\"\n              />\n            </template>\n          </blob-filepath>\n        </div>\n\n        <div class=\"file-actions gl-flex gl-flex-wrap\">\n          <web-ide-link\n            button-variant=\"default\"\n            class=\"gl-mr-3\"\n            :edit-url=\"blobInfo.editBlobPath\"\n            :web-ide-url=\"blobInfo.ideEditPath\"\n            show-edit-button\n            is-blob\n            disable-fork-modal\n            v-on=\"$listeners\"\n          />\n        </div>\n      </div>\n\n      <div\n        v-if=\"expanded\"\n        class=\"file-content code js-syntax-highlight blob-content blob-viewer gl-flex gl-w-full gl-flex-col gl-overflow-auto\"\n        :class=\"userColorScheme\"\n        data-type=\"simple\"\n        data-testid=\"file-content\"\n      >\n        <div v-for=\"(highlightSectionInfo, index) in codeBlocks\" :key=\"index\">\n          <div\n            v-if=\"highlightSectionInfo.blockStartLine !== 1\"\n            class=\"expansion-line gl-bg-gray-50 gl-p-1\"\n          >\n            <gl-button\n              data-testid=\"expand-top-lines\"\n              :title=\"$options.i18n.expandAllLines\"\n              :aria-label=\"$options.i18n.expandAllLines\"\n              :icon=\"getExpandedIcon(index)\"\n              category=\"tertiary\"\n              size=\"small\"\n              class=\"mark-multiple-line-expand-button gl-border-0\"\n              @click=\"handleExpandLines(index)\"\n            />\n          </div>\n\n          <vulnerability-file-content-viewer\n            class=\"gl-border-none\"\n            :is-highlighted=\"isHighlighted\"\n            :content=\"content\"\n            :start-line=\"highlightSectionInfo.blockStartLine\"\n            :end-line=\"highlightSectionInfo.blockEndLine\"\n            :highlight-info=\"highlightSectionInfo.highlightInfo\"\n            :selected-step-number=\"selectedStepNumber\"\n          />\n\n          <div v-if=\"isEndOfCodeBlock(index)\" class=\"expansion-line gl-bg-gray-50 gl-p-1\">\n            <gl-button\n              data-testid=\"expand-bottom-lines\"\n              :title=\"$options.i18n.expandAllLines\"\n              :aria-label=\"$options.i18n.expandAllLines\"\n              icon=\"expand-down\"\n              category=\"tertiary\"\n              size=\"small\"\n              class=\"mark-multiple-line-expand-button gl-border-0\"\n              @click=\"handleExpandLines(codeBlocks.length)\"\n            />\n          </div>\n        </div>\n      </div>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./code_flow_file_viewer.vue?vue&type=template&id=5e91f75a\"\nimport script from \"./code_flow_file_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./code_flow_file_viewer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"file-holder\"},[(_vm.loadingError)?_c('gl-alert',{attrs:{\"dismissible\":false,\"variant\":\"warning\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.vulnerabilityNotFound},scopedSlots:_vm._u([{key:\"file\",fn:function(){return [_c('code',[_vm._v(_vm._s(_vm.filePath))])]},proxy:true},{key:\"ref\",fn:function(){return [_c('code',[_vm._v(_vm._s(_vm.branchRef))])]},proxy:true}],null,false,2038684176)})],1):[_c('div',{staticClass:\"file-title-flex-parent\"},[_c('div',{staticClass:\"gl-flex\"},[_c('blob-filepath',{attrs:{\"blob\":_vm.blobInfo,\"show-path\":true,\"show-as-link\":true,\"show-blob-size\":false},scopedSlots:_vm._u([{key:\"filepath-prepend\",fn:function(){return [_c('gl-button',{staticClass:\"gl-mr-2\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"icon\":_vm.collapseIcon,\"aria-label\":_vm.labelToggleFile,\"data-testid\":\"collapse-expand-file\"},on:{\"click\":_vm.handleToggleFile}})]},proxy:true}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"file-actions gl-flex gl-flex-wrap\"},[_c('web-ide-link',_vm._g({staticClass:\"gl-mr-3\",attrs:{\"button-variant\":\"default\",\"edit-url\":_vm.blobInfo.editBlobPath,\"web-ide-url\":_vm.blobInfo.ideEditPath,\"show-edit-button\":\"\",\"is-blob\":\"\",\"disable-fork-modal\":\"\"}},_vm.$listeners))],1)]),_vm._v(\" \"),(_vm.expanded)?_c('div',{staticClass:\"file-content code js-syntax-highlight blob-content blob-viewer gl-flex gl-w-full gl-flex-col gl-overflow-auto\",class:_vm.userColorScheme,attrs:{\"data-type\":\"simple\",\"data-testid\":\"file-content\"}},_vm._l((_vm.codeBlocks),function(highlightSectionInfo,index){return _c('div',{key:index},[(highlightSectionInfo.blockStartLine !== 1)?_c('div',{staticClass:\"expansion-line gl-bg-gray-50 gl-p-1\"},[_c('gl-button',{staticClass:\"mark-multiple-line-expand-button gl-border-0\",attrs:{\"data-testid\":\"expand-top-lines\",\"title\":_vm.$options.i18n.expandAllLines,\"aria-label\":_vm.$options.i18n.expandAllLines,\"icon\":_vm.getExpandedIcon(index),\"category\":\"tertiary\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleExpandLines(index)}}})],1):_vm._e(),_vm._v(\" \"),_c('vulnerability-file-content-viewer',{staticClass:\"gl-border-none\",attrs:{\"is-highlighted\":_vm.isHighlighted,\"content\":_vm.content,\"start-line\":highlightSectionInfo.blockStartLine,\"end-line\":highlightSectionInfo.blockEndLine,\"highlight-info\":highlightSectionInfo.highlightInfo,\"selected-step-number\":_vm.selectedStepNumber}}),_vm._v(\" \"),(_vm.isEndOfCodeBlock(index))?_c('div',{staticClass:\"expansion-line gl-bg-gray-50 gl-p-1\"},[_c('gl-button',{staticClass:\"mark-multiple-line-expand-button gl-border-0\",attrs:{\"data-testid\":\"expand-bottom-lines\",\"title\":_vm.$options.i18n.expandAllLines,\"aria-label\":_vm.$options.i18n.expandAllLines,\"icon\":\"expand-down\",\"category\":\"tertiary\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleExpandLines(_vm.codeBlocks.length)}}})],1):_vm._e()],1)}),0):_vm._e()]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code_flow_steps_section.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code_flow_steps_section.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlBadge,\n  GlButton,\n  GlButtonGroup,\n  GlCollapse,\n  GlLink,\n  GlPopover,\n  GlTruncate,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport { flattenDeep } from 'lodash';\nimport { __, s__, sprintf } from '~/locale';\n\nexport default {\n  name: 'CodeFlowStepsSection',\n  components: {\n    GlPopover,\n    GlButton,\n    GlButtonGroup,\n    GlCollapse,\n    GlBadge,\n    GlLink,\n    GlTruncate,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    description: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    descriptionHtml: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    details: {\n      type: Object,\n      required: true,\n    },\n    rawTextBlobs: {\n      type: Object,\n      required: false,\n      default: () => {},\n    },\n  },\n  data() {\n    return {\n      stepsExpanded: [],\n      selectedStepNumber: 1,\n      selectedVulnerability: this.details?.items[0][0],\n    };\n  },\n  computed: {\n    vulnerabilityFlowDetails() {\n      const groupedItems = this.details.items[0].reduce((acc, item, index) => {\n        const { fileName } = item.fileLocation;\n        if (!acc[fileName]) {\n          acc[fileName] = [];\n        }\n        const fileDescription = this.getDescription(\n          this.rawTextBlobs[item.fileLocation.fileName],\n          item.fileLocation.lineStart - 1,\n        );\n\n        acc[fileName].push({\n          ...item,\n          nodeType: item.nodeType.toLowerCase(),\n          stepNumber: index + 1,\n          rawTextBlob: this.rawTextBlobs[item.fileLocation.fileName],\n          fileDescription,\n        });\n        return acc;\n      }, {});\n      const vulnerabilityFlow = [{ items: Object.values(groupedItems) }];\n      return vulnerabilityFlow[0].items;\n    },\n    numOfSteps() {\n      return this.details.items[0].length;\n    },\n    numOfFiles() {\n      return this.vulnerabilityFlowDetails.length;\n    },\n    stepsHeader() {\n      return sprintf(__('%{numOfSteps} steps across %{numOfFiles} files'), {\n        numOfSteps: this.numOfSteps,\n        numOfFiles: this.numOfFiles,\n      });\n    },\n  },\n  mounted() {\n    this.stepsExpanded = Array(this.vulnerabilityFlowDetails.length).fill(true);\n  },\n  created() {\n    this.$emit('onSelectedStep', this.selectedStepNumber);\n  },\n  methods: {\n    openFileSteps(index) {\n      const copyStepsExpanded = [...this.stepsExpanded];\n      copyStepsExpanded[index] = !this.stepsExpanded[index];\n      this.stepsExpanded = copyStepsExpanded;\n    },\n    getPathIcon(index) {\n      return this.stepsExpanded[index] ? 'chevron-down' : 'chevron-right';\n    },\n    fileName(fileName) {\n      return fileName.split('/').pop();\n    },\n    filePath(fileName) {\n      return fileName.slice(0, fileName.lastIndexOf('/') + 1);\n    },\n    selectStep(vulnerabilityItem) {\n      this.selectedStepNumber = vulnerabilityItem.stepNumber;\n      this.selectedVulnerability = vulnerabilityItem;\n      this.$emit('onSelectedStep', this.selectedStepNumber);\n    },\n    getNextIndex(isNext) {\n      return isNext ? this.selectedStepNumber + 1 : this.selectedStepNumber - 1;\n    },\n    isOutOfRange(isNext) {\n      const calculation = this.getNextIndex(isNext);\n      return calculation > this.numOfSteps || calculation <= 0;\n    },\n    changeSelectedVulnerability(isNextVulnerability) {\n      if (this.isOutOfRange(isNextVulnerability)) return;\n      this.selectedVulnerability = flattenDeep(this.vulnerabilityFlowDetails).find(\n        (item) => item.stepNumber === this.getNextIndex(isNextVulnerability),\n      );\n      this.selectedStepNumber = this.selectedVulnerability.stepNumber;\n      this.$emit('onSelectedStep', this.selectedStepNumber);\n    },\n    showNodeTypePopover(nodeType) {\n      return nodeType === 'source'\n        ? this.$options.i18n.sourceNodeTypePopover\n        : this.$options.i18n.sinkNodeTypePopover;\n    },\n    toggleAriaLabel(index) {\n      return this.stepsExpanded[index] ? __('Collapse') : __('Expand');\n    },\n    getDescription(rawTextBlob, startLine) {\n      return rawTextBlob?.split(/\\r?\\n/)[startLine];\n    },\n    isVisibleCollapse(index) {\n      return Boolean(this.stepsExpanded[index]);\n    },\n  },\n  i18n: {\n    codeFlowInfoButton: s__('Vulnerability|What is code flow?'),\n    codeFlowInfoAnswer: s__(\n      \"Vulnerability|Code flow helps trace and flag risky data ('tainted data') as it moves through your software. Vulnerabilities are detected by pinpointing how untrusted inputs, like user data or network traffic, are utilized. This technique finds and fixes data handling flaws, securing software from injection and cross-site scripting attacks.\",\n    ),\n    steps: s__('Vulnerability|Steps'),\n    sourceNodeTypePopover: s__(\n      \"Vulnerability|A 'source' refers to untrusted inputs like user data or external data sources. These inputs can introduce security risks into the software system and are monitored to prevent vulnerabilities.\",\n    ),\n    sinkNodeTypePopover: s__(\n      \"Vulnerability|A 'sink' is where untrusted data is used in a potentially risky way, such as in SQL queries or HTML output. Sink points are monitored to prevent security vulnerabilities in the software.\",\n    ),\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div class=\"gl-flex gl-justify-between gl-pt-2\">\n      <div>\n        <div class=\"item-title gl-text-lg\">{{ $options.i18n.steps }}</div>\n        <div class=\"gl-pt-2\" data-testid=\"steps-header\">{{ stepsHeader }}</div>\n      </div>\n      <gl-button-group>\n        <gl-button\n          icon=\"chevron-up\"\n          :aria-label=\"__(`Previous step`)\"\n          :disabled=\"isOutOfRange(false)\"\n          @click=\"changeSelectedVulnerability(false)\"\n        />\n        <gl-button\n          icon=\"chevron-down\"\n          :aria-label=\"__(`Next step`)\"\n          :disabled=\"isOutOfRange(true)\"\n          @click=\"changeSelectedVulnerability(true)\"\n        />\n      </gl-button-group>\n    </div>\n    <div class=\"gl-ml-4 gl-pt-3\">\n      <div\n        v-for=\"(vulnerabilityFlow, index) in vulnerabilityFlowDetails\"\n        :key=\"index\"\n        class=\"-gl-ml-4\"\n        :data-testid=\"`file-steps-${index}`\"\n      >\n        <div\n          v-gl-tooltip\n          :title=\"vulnerabilityFlow[0].fileLocation.fileName\"\n          class=\"gl-inline-flex gl-max-w-full gl-items-center\"\n          :data-testid=\"`file-name-${index}`\"\n        >\n          <gl-button\n            :icon=\"getPathIcon(index)\"\n            category=\"tertiary\"\n            :aria-label=\"toggleAriaLabel(index)\"\n            @click=\"openFileSteps(index)\"\n          />\n          <gl-truncate\n            class=\"gl-min-w-0 gl-flex-shrink\"\n            :text=\"filePath(vulnerabilityFlow[0].fileLocation.fileName)\"\n            position=\"end\"\n          /><gl-truncate\n            class=\"gl-flex-shrink-0 gl-font-bold\"\n            :text=\"fileName(vulnerabilityFlow[0].fileLocation.fileName)\"\n            position=\"start\"\n          />\n        </div>\n        <gl-collapse class=\"gl-mt-2 gl-pl-6\" :visible=\"isVisibleCollapse(index)\">\n          <gl-link\n            v-for=\"(vulnerabilityItem, i) in vulnerabilityFlow\"\n            :key=\"i\"\n            class=\"align-content-center gl-flex gl-justify-between !gl-rounded-base gl-pb-2 gl-pl-2 gl-pr-2 gl-pt-2 !gl-text-inherit !gl-no-underline\"\n            :class=\"{\n              'gl-rounded-base gl-bg-blue-50': selectedStepNumber === vulnerabilityItem.stepNumber,\n            }\"\n            :data-testid=\"`step-row-${i}`\"\n            @click=\"selectStep(vulnerabilityItem)\"\n          >\n            <gl-badge\n              class=\"gl-mr-3 gl-h-6 gl-w-6 gl-rounded-base gl-pl-4 gl-pr-4\"\n              :class=\"{\n                '!gl-bg-blue-500 !gl-text-white':\n                  selectedStepNumber === vulnerabilityItem.stepNumber,\n              }\"\n              size=\"lg\"\n              variant=\"muted\"\n            >\n              <strong v-if=\"selectedStepNumber === vulnerabilityItem.stepNumber\">{{\n                vulnerabilityItem.stepNumber\n              }}</strong>\n              <span v-else>{{ vulnerabilityItem.stepNumber }}</span>\n            </gl-badge>\n            <span\n              class=\"align-content-center gl-mr-auto gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap\"\n            >\n              <gl-badge\n                v-if=\"['source', 'sink'].includes(vulnerabilityItem.nodeType)\"\n                :id=\"vulnerabilityItem.nodeType\"\n                :data-testid=\"vulnerabilityItem.nodeType\"\n                class=\"gl-mr-3 gl-pl-4 gl-pr-4\"\n                size=\"md\"\n                variant=\"muted\"\n              >\n                {{ vulnerabilityItem.nodeType }}\n              </gl-badge>\n              <gl-popover\n                triggers=\"hover focus\"\n                placement=\"top\"\n                :target=\"vulnerabilityItem.nodeType\"\n                :content=\"showNodeTypePopover(vulnerabilityItem.nodeType)\"\n                :show=\"false\"\n              />\n\n              {{ vulnerabilityItem.fileDescription }}\n            </span>\n            <span class=\"align-content-center gl-pr-3 gl-text-subtle\">{{\n              vulnerabilityItem.fileLocation.lineStart\n            }}</span>\n          </gl-link>\n        </gl-collapse>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./code_flow_steps_section.vue?vue&type=template&id=e7245044\"\nimport script from \"./code_flow_steps_section.vue?vue&type=script&lang=js\"\nexport * from \"./code_flow_steps_section.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"gl-flex gl-justify-between gl-pt-2\"},[_c('div',[_c('div',{staticClass:\"item-title gl-text-lg\"},[_vm._v(_vm._s(_vm.$options.i18n.steps))]),_vm._v(\" \"),_c('div',{staticClass:\"gl-pt-2\",attrs:{\"data-testid\":\"steps-header\"}},[_vm._v(_vm._s(_vm.stepsHeader))])]),_vm._v(\" \"),_c('gl-button-group',[_c('gl-button',{attrs:{\"icon\":\"chevron-up\",\"aria-label\":_vm.__(`Previous step`),\"disabled\":_vm.isOutOfRange(false)},on:{\"click\":function($event){return _vm.changeSelectedVulnerability(false)}}}),_vm._v(\" \"),_c('gl-button',{attrs:{\"icon\":\"chevron-down\",\"aria-label\":_vm.__(`Next step`),\"disabled\":_vm.isOutOfRange(true)},on:{\"click\":function($event){return _vm.changeSelectedVulnerability(true)}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-ml-4 gl-pt-3\"},_vm._l((_vm.vulnerabilityFlowDetails),function(vulnerabilityFlow,index){return _c('div',{key:index,staticClass:\"-gl-ml-4\",attrs:{\"data-testid\":`file-steps-${index}`}},[_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-inline-flex gl-max-w-full gl-items-center\",attrs:{\"title\":vulnerabilityFlow[0].fileLocation.fileName,\"data-testid\":`file-name-${index}`}},[_c('gl-button',{attrs:{\"icon\":_vm.getPathIcon(index),\"category\":\"tertiary\",\"aria-label\":_vm.toggleAriaLabel(index)},on:{\"click\":function($event){return _vm.openFileSteps(index)}}}),_vm._v(\" \"),_c('gl-truncate',{staticClass:\"gl-min-w-0 gl-flex-shrink\",attrs:{\"text\":_vm.filePath(vulnerabilityFlow[0].fileLocation.fileName),\"position\":\"end\"}}),_c('gl-truncate',{staticClass:\"gl-flex-shrink-0 gl-font-bold\",attrs:{\"text\":_vm.fileName(vulnerabilityFlow[0].fileLocation.fileName),\"position\":\"start\"}})],1),_vm._v(\" \"),_c('gl-collapse',{staticClass:\"gl-mt-2 gl-pl-6\",attrs:{\"visible\":_vm.isVisibleCollapse(index)}},_vm._l((vulnerabilityFlow),function(vulnerabilityItem,i){return _c('gl-link',{key:i,staticClass:\"align-content-center gl-flex gl-justify-between !gl-rounded-base gl-pb-2 gl-pl-2 gl-pr-2 gl-pt-2 !gl-text-inherit !gl-no-underline\",class:{\n            'gl-rounded-base gl-bg-blue-50': _vm.selectedStepNumber === vulnerabilityItem.stepNumber,\n          },attrs:{\"data-testid\":`step-row-${i}`},on:{\"click\":function($event){return _vm.selectStep(vulnerabilityItem)}}},[_c('gl-badge',{staticClass:\"gl-mr-3 gl-h-6 gl-w-6 gl-rounded-base gl-pl-4 gl-pr-4\",class:{\n              '!gl-bg-blue-500 !gl-text-white':\n                _vm.selectedStepNumber === vulnerabilityItem.stepNumber,\n            },attrs:{\"size\":\"lg\",\"variant\":\"muted\"}},[(_vm.selectedStepNumber === vulnerabilityItem.stepNumber)?_c('strong',[_vm._v(_vm._s(vulnerabilityItem.stepNumber))]):_c('span',[_vm._v(_vm._s(vulnerabilityItem.stepNumber))])]),_vm._v(\" \"),_c('span',{staticClass:\"align-content-center gl-mr-auto gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap\"},[(['source', 'sink'].includes(vulnerabilityItem.nodeType))?_c('gl-badge',{staticClass:\"gl-mr-3 gl-pl-4 gl-pr-4\",attrs:{\"id\":vulnerabilityItem.nodeType,\"data-testid\":vulnerabilityItem.nodeType,\"size\":\"md\",\"variant\":\"muted\"}},[_vm._v(\"\\n              \"+_vm._s(vulnerabilityItem.nodeType)+\"\\n            \")]):_vm._e(),_vm._v(\" \"),_c('gl-popover',{attrs:{\"triggers\":\"hover focus\",\"placement\":\"top\",\"target\":vulnerabilityItem.nodeType,\"content\":_vm.showNodeTypePopover(vulnerabilityItem.nodeType),\"show\":false}}),_vm._v(\"\\n\\n            \"+_vm._s(vulnerabilityItem.fileDescription)+\"\\n          \")],1),_vm._v(\" \"),_c('span',{staticClass:\"align-content-center gl-pr-3 gl-text-subtle\"},[_vm._v(_vm._s(vulnerabilityItem.fileLocation.lineStart))])],1)}),1)],1)}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_code_flow.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_code_flow.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert, GlLoadingIcon } from '@gitlab/ui';\nimport { uniq, map } from 'lodash';\nimport blobInfoQuery from 'shared_queries/repository/blob_info.query.graphql';\nimport CodeFlowFileViewer from 'ee/vue_shared/components/code_flow/code_flow_file_viewer.vue';\nimport CodeFlowStepsSection from 'ee/vue_shared/components/code_flow/code_flow_steps_section.vue';\nimport {\n  createHighlightSourcesInfo,\n  normalizeCodeFlowsInfo,\n} from 'ee/vue_shared/components/code_flow/utils/utils';\n\nexport default {\n  name: 'VulnerabilityCodeFlow',\n  components: {\n    GlAlert,\n    GlLoadingIcon,\n    CodeFlowFileViewer,\n    CodeFlowStepsSection,\n  },\n  props: {\n    branchRef: {\n      type: String,\n      required: true,\n    },\n    details: {\n      type: Object,\n      required: true,\n    },\n    projectFullPath: {\n      type: String,\n      required: true,\n      default: '',\n    },\n    description: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    descriptionHtml: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    insideModal: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showCodeFlowFileViewer: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  data() {\n    return {\n      loadingError: false,\n      blobInfo: [],\n      project: null,\n      rawTextBlobs: {},\n      highlightSourcesInfo: {},\n      modalContentHeight: 0,\n      selectedStepNumber: undefined,\n    };\n  },\n  computed: {\n    fileNames() {\n      const fileNames = map(this.details?.items[0], 'fileLocation.fileName');\n      return uniq(fileNames);\n    },\n    codeSourceFiles() {\n      return Object.keys(this.highlightSourcesInfo);\n    },\n  },\n  mounted() {\n    if (this.insideModal) {\n      this.updateModalContentHeight();\n    }\n  },\n  apollo: {\n    project: {\n      query: blobInfoQuery,\n      variables() {\n        return {\n          projectPath: this.projectFullPath,\n          filePath: this.fileNames,\n          ref: this.branchRef,\n          refType: null,\n          shouldFetchRawText: true,\n        };\n      },\n      update({ project }) {\n        const allBlobInfo = project?.repository?.blobs?.nodes || [];\n        allBlobInfo.forEach((blobInfo) => {\n          const { rawTextBlob, path } = blobInfo;\n\n          this.rawTextBlobs = {\n            ...this.rawTextBlobs,\n            [path]: rawTextBlob,\n          };\n\n          this.blobInfo = {\n            ...this.blobInfo,\n            [path]: { data: blobInfo },\n          };\n        });\n        const normalizedCodeFlows = normalizeCodeFlowsInfo(this.details);\n        this.highlightSourcesInfo = createHighlightSourcesInfo(\n          normalizedCodeFlows,\n          this.rawTextBlobs,\n        );\n      },\n      error() {\n        this.loadingError = true;\n      },\n    },\n  },\n  methods: {\n    onSelectedStep(value) {\n      this.selectedStepNumber = value;\n    },\n    specificBlobInfo(fileName) {\n      return this.blobInfo[fileName]?.data || {};\n    },\n    updateModalContentHeight() {\n      this.$nextTick(() => {\n        this.modalContentHeight =\n          document\n            .querySelector('#security-finding-modal .finding-modal-details')\n            ?.getBoundingClientRect().height || 0;\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex gl-gap-5 gl-py-5\">\n    <gl-loading-icon\n      v-if=\"$apollo.queries.project.loading\"\n      size=\"sm\"\n      class=\"flex-fill gl-flex gl-items-center gl-justify-center\"\n    />\n\n    <gl-alert\n      v-else-if=\"loadingError\"\n      :dismissible=\"false\"\n      variant=\"danger\"\n      data-testid=\"loading-error\"\n    >\n      {{ s__('Vulnerability|Something went wrong while trying to get the source file.') }}\n    </gl-alert>\n\n    <template v-else>\n      <div\n        data-testid=\"code-flow-steps-section-container\"\n        class=\"gl-z-0 gl-flex gl-flex-col gl-overflow-auto gl-pl-2 gl-pr-2\"\n        :class=\"{ 'gl-w-full': !showCodeFlowFileViewer, 'gl-w-4/10': showCodeFlowFileViewer }\"\n      >\n        <code-flow-steps-section\n          ref=\"codeFlowStepSection\"\n          :class=\"{ 'code-flow-content': !insideModal, 'code-flow-content-modal': insideModal }\"\n          :style=\"{ '--modal-content-height': `${modalContentHeight}px` }\"\n          :description=\"description\"\n          :description-html=\"descriptionHtml\"\n          :details=\"details\"\n          :raw-text-blobs=\"rawTextBlobs\"\n          @onSelectedStep=\"onSelectedStep\"\n        />\n      </div>\n\n      <div\n        v-if=\"showCodeFlowFileViewer\"\n        id=\"code-flows-container\"\n        data-testid=\"code-flows-container\"\n        class=\"flex-fill gl-flex gl-w-12/20 gl-flex-col gl-gap-5 gl-overflow-auto gl-pt-2\"\n        :class=\"{ 'code-flow-content': !insideModal, 'code-flow-content-modal': insideModal }\"\n        :style=\"{ '--modal-content-height': `${modalContentHeight}px` }\"\n      >\n        <code-flow-file-viewer\n          v-for=\"fileName in codeSourceFiles\"\n          :key=\"fileName\"\n          :file-path=\"fileName\"\n          :branch-ref=\"branchRef\"\n          :hl-info=\"highlightSourcesInfo[fileName]\"\n          :blob-info=\"specificBlobInfo(fileName)\"\n          :selected-step-number=\"selectedStepNumber\"\n        />\n      </div>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./vulnerability_code_flow.vue?vue&type=template&id=a55887f4\"\nimport script from \"./vulnerability_code_flow.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_code_flow.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CiNeeds\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"JobNeedUnion\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildNeedFields\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"CiJobNeedFields\"},\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildNeedFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildNeed\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CiJobNeedFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiJob\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LinkedPipelineData\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Pipeline\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cancelable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"retryable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatePipeline\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"status\"},\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceJob\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineDetails\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"complete\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"usesNeeds\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatePipeline\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"downstream\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LinkedPipelineData\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"upstream\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LinkedPipelineData\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stages\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"status\"},\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"groups\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"status\"},\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"kind\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduledAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"needs\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"previousStageJobsOrNeeds\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"CiNeeds\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"status\"},\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooltip\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasDetails\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"buttonTitle\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":3299}};\n    doc.loc.source = {\"body\":\"fragment CiNeeds on JobNeedUnion {\\n  ...CiBuildNeedFields\\n  ...CiJobNeedFields\\n}\\n\\nfragment CiBuildNeedFields on CiBuildNeed {\\n  id\\n  name\\n}\\n\\nfragment CiJobNeedFields on CiJob {\\n  id\\n  name\\n}\\n\\nfragment LinkedPipelineData on Pipeline {\\n  __typename\\n  id\\n  iid\\n  path\\n  cancelable\\n  retryable\\n  userPermissions {\\n    updatePipeline\\n  }\\n  status: detailedStatus {\\n    __typename\\n    group\\n    label\\n    icon\\n    text\\n  }\\n  sourceJob {\\n    __typename\\n    id\\n    name\\n    retried\\n  }\\n  project {\\n    __typename\\n    id\\n    name\\n    fullPath\\n  }\\n}\\n\\nquery getPipelineDetails($projectPath: ID!, $iid: ID!) {\\n  project(fullPath: $projectPath) {\\n    __typename\\n    id\\n    pipeline(iid: $iid) {\\n      __typename\\n      id\\n      iid\\n      complete\\n      usesNeeds\\n      userPermissions {\\n        updatePipeline\\n      }\\n      downstream {\\n        __typename\\n        nodes {\\n          # eslint-disable-next-line @graphql-eslint/require-id-when-available -- for detailedStatus.id\\n          ...LinkedPipelineData\\n        }\\n      }\\n      upstream {\\n        # eslint-disable-next-line @graphql-eslint/require-id-when-available -- for detailedStatus.id\\n        ...LinkedPipelineData\\n      }\\n      stages {\\n        __typename\\n        nodes {\\n          __typename\\n          id\\n          name\\n          # eslint-disable-next-line @graphql-eslint/require-id-when-available\\n          status: detailedStatus {\\n            __typename\\n            action {\\n              __typename\\n              id\\n              icon\\n              path\\n              title\\n              confirmationMessage\\n            }\\n          }\\n          groups {\\n            __typename\\n            nodes {\\n              __typename\\n              id\\n              # eslint-disable-next-line @graphql-eslint/require-id-when-available\\n              status: detailedStatus {\\n                __typename\\n                label\\n                group\\n                icon\\n                text\\n              }\\n              name\\n              size\\n              jobs {\\n                __typename\\n                nodes {\\n                  __typename\\n                  id\\n                  name\\n                  kind\\n                  scheduledAt\\n                  needs {\\n                    __typename\\n                    nodes {\\n                      __typename\\n                      id\\n                      name\\n                    }\\n                  }\\n                  previousStageJobsOrNeeds {\\n                    __typename\\n                    nodes {\\n                      ...CiNeeds\\n                    }\\n                  }\\n                  # eslint-disable-next-line @graphql-eslint/require-id-when-available\\n                  status: detailedStatus {\\n                    __typename\\n                    icon\\n                    tooltip\\n                    hasDetails\\n                    detailsPath\\n                    group\\n                    label\\n                    text\\n                    action {\\n                      __typename\\n                      id\\n                      buttonTitle\\n                      confirmationMessage\\n                      icon\\n                      path\\n                      title\\n                    }\\n                  }\\n                }\\n              }\\n            }\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"CiNeeds\"] = oneQuery(doc, \"CiNeeds\");\n        \n        module.exports[\"CiBuildNeedFields\"] = oneQuery(doc, \"CiBuildNeedFields\");\n        \n        module.exports[\"CiJobNeedFields\"] = oneQuery(doc, \"CiJobNeedFields\");\n        \n        module.exports[\"LinkedPipelineData\"] = oneQuery(doc, \"LinkedPipelineData\");\n        \n        module.exports[\"getPipelineDetails\"] = oneQuery(doc, \"getPipelineDetails\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"playPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobPlay\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":182}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation playPipelineMiniGraphJob($id: CiProcessableID!) {\\n  jobPlay(input: { id: $id }) {\\n    job {\\n      ...Job\\n    }\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"playPipelineMiniGraphJob\"] = oneQuery(doc, \"playPipelineMiniGraphJob\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportSummaryScans\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SecurityReportSummarySection\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scans\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"warnings\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":156}};\n    doc.loc.source = {\"body\":\"fragment SecurityReportSummaryScans on SecurityReportSummarySection {\\n  scans {\\n    nodes {\\n      name\\n      status\\n      errors\\n      warnings\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"SecurityReportSummaryScans\"] = oneQuery(doc, \"SecurityReportSummaryScans\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-badge',{attrs:{\"variant\":_vm.stateVariant}},[(_vm.loading)?_c('gl-loading-icon',{staticClass:\"gl-mx-5\",attrs:{\"size\":\"sm\"}}):[_vm._v(_vm._s(_vm.stateName))]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlBadge, GlLoadingIcon } from '@gitlab/ui';\n\nimport { VULNERABILITY_STATES } from 'ee/vulnerabilities/constants';\n\nexport const VARIANTS = {\n  confirmed: 'danger',\n  resolved: 'success',\n  detected: 'warning',\n  dismissed: 'neutral',\n};\n\nexport default {\n  components: {\n    GlBadge,\n    GlLoadingIcon,\n  },\n  props: {\n    state: {\n      type: String,\n      required: true,\n      validator: (state) => Object.keys(VARIANTS).includes(state),\n    },\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    stateName() {\n      return VULNERABILITY_STATES[this.state];\n    },\n    stateVariant() {\n      return VARIANTS[this.state];\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-badge :variant=\"stateVariant\">\n    <gl-loading-icon v-if=\"loading\" size=\"sm\" class=\"gl-mx-5\" />\n    <template v-else>{{ stateName }}</template>\n  </gl-badge>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status_badge.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./status_badge.vue?vue&type=template&id=11375582\"\nimport script from \"./status_badge.vue?vue&type=script&lang=js\"\nexport * from \"./status_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:({ placement: _vm.tooltipPlacement, container: _vm.tooltipContainer }),expression:\"{ placement: tooltipPlacement, container: tooltipContainer }\"}],class:_vm.cssClasses,attrs:{\"id\":_vm.id,\"data-clipboard-target\":_vm.target,\"data-clipboard-text\":_vm.text,\"title\":_vm.title,\"aria-label\":_vm.title,\"category\":_vm.category,\"icon\":\"copy-to-clipboard\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal_copy_button.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal_copy_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlTooltipDirective } from '@gitlab/ui';\nimport ClipboardJS from 'clipboard';\nimport { uniqueId } from 'lodash';\nimport { __ } from '~/locale';\nimport { BV_HIDE_TOOLTIP } from '~/lib/utils/constants';\n\nexport default {\n  components: {\n    GlButton,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    text: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    id: {\n      type: String,\n      required: false,\n      default: () => uniqueId('modal-copy-button-'),\n    },\n    container: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    cssClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    modalId: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    target: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    title: {\n      type: String,\n      required: false,\n      default: __('Copy'),\n    },\n    tooltipPlacement: {\n      type: String,\n      required: false,\n      default: 'top',\n    },\n    tooltipContainer: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    category: {\n      type: String,\n      required: false,\n      default: 'primary',\n    },\n  },\n  computed: {\n    modalDomId() {\n      return this.modalId ? `#${this.modalId}` : '';\n    },\n  },\n  mounted() {\n    this.$nextTick(() => {\n      this.clipboard = new ClipboardJS(this.$el, {\n        container:\n          document.querySelector(`${this.modalDomId} div.modal-content`) ||\n          document.getElementById(this.container) ||\n          document.body,\n      });\n      this.clipboard\n        .on('success', (e) => {\n          this.$root.$emit(BV_HIDE_TOOLTIP, this.id);\n          this.$emit('success', e);\n          // Clear the selection and blur the trigger so it loses its border\n          e.clearSelection();\n          e.trigger.blur();\n        })\n        .on('error', (e) => this.$emit('error', e));\n    });\n  },\n  destroyed() {\n    if (this.clipboard) {\n      this.clipboard.destroy();\n    }\n  },\n};\n</script>\n<template>\n  <gl-button\n    :id=\"id\"\n    v-gl-tooltip=\"{ placement: tooltipPlacement, container: tooltipContainer }\"\n    :class=\"cssClasses\"\n    :data-clipboard-target=\"target\"\n    :data-clipboard-text=\"text\"\n    :title=\"title\"\n    :aria-label=\"title\"\n    :category=\"category\"\n    icon=\"copy-to-clipboard\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./modal_copy_button.vue?vue&type=template&id=4c7472d6\"\nimport script from \"./modal_copy_button.vue?vue&type=script&lang=js\"\nexport * from \"./modal_copy_button.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.textOnly)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.title),expression:\"title\"}]},[_vm._v(\"\\n  \"+_vm._s(_vm.__('Imported'))+\"\\n\")]):_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.title),expression:\"title\"}],staticClass:\"gl-shrink-0\"},[_vm._v(\"\\n  \"+_vm._s(_vm.__('Imported'))+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlBadge, GlTooltipDirective } from '@gitlab/ui';\nimport { __, s__, sprintf } from '~/locale';\n\nimport { TYPE_EPIC, TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { TYPE_ACTIVITY, TYPE_COMMENT, TYPE_DESIGN, TYPE_SNIPPET } from '~/import/constants';\n\nconst importableTypeText = {\n  [TYPE_ACTIVITY]: __('activity'),\n  [TYPE_COMMENT]: __('comment'),\n  [TYPE_DESIGN]: __('design'),\n  [TYPE_EPIC]: __('epic'),\n  [TYPE_ISSUE]: __('issue'),\n  [TYPE_MERGE_REQUEST]: __('merge request'),\n  [TYPE_SNIPPET]: __('snippet'),\n};\n\nexport default {\n  components: {\n    GlBadge,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    importableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    textOnly: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    title() {\n      return sprintf(s__('BulkImport|This %{importable} was imported from another instance.'), {\n        importable: importableTypeText[this.importableType],\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <span v-if=\"textOnly\" v-gl-tooltip=\"title\">\n    {{ __('Imported') }}\n  </span>\n  <gl-badge v-else v-gl-tooltip=\"title\" class=\"gl-shrink-0\">\n    {{ __('Imported') }}\n  </gl-badge>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./imported_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./imported_badge.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./imported_badge.vue?vue&type=template&id=03c38d80\"\nimport script from \"./imported_badge.vue?vue&type=script&lang=js\"\nexport * from \"./imported_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","const DISCLOSURE_DROPDOWN_ITEM_NAME = 'GlDisclosureDropdownItem';\nconst DISCLOSURE_DROPDOWN_GROUP_NAME = 'GlDisclosureDropdownGroup';\nconst DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS = {\n  top: 'top',\n  bottom: 'bottom'\n};\n\nexport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME, DISCLOSURE_DROPDOWN_ITEM_NAME };\n","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nmodule.exports = groupBy;\n","var mapping = require('./_mapping'),\n    fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n  return n == 2\n    ? function(a, b) { return func.apply(undefined, arguments); }\n    : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n  return n == 2\n    ? function(a, b) { return func(a, b); }\n    : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n  var length = array ? array.length : 0,\n      result = Array(length);\n\n  while (length--) {\n    result[length] = array[length];\n  }\n  return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n  return function(object) {\n    return func({}, object);\n  };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n  return function() {\n    var length = arguments.length,\n        lastIndex = length - 1,\n        args = Array(length);\n\n    while (length--) {\n      args[length] = arguments[length];\n    }\n    var array = args[start],\n        otherArgs = args.slice(0, start);\n\n    if (array) {\n      push.apply(otherArgs, array);\n    }\n    if (start != lastIndex) {\n      push.apply(otherArgs, args.slice(start + 1));\n    }\n    return func.apply(this, otherArgs);\n  };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n  return function() {\n    var length = arguments.length;\n    if (!length) {\n      return;\n    }\n    var args = Array(length);\n    while (length--) {\n      args[length] = arguments[length];\n    }\n    var result = args[0] = cloner.apply(undefined, args);\n    func.apply(undefined, args);\n    return result;\n  };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n  var isLib = typeof name == 'function',\n      isObj = name === Object(name);\n\n  if (isObj) {\n    options = func;\n    func = name;\n    name = undefined;\n  }\n  if (func == null) {\n    throw new TypeError;\n  }\n  options || (options = {});\n\n  var config = {\n    'cap': 'cap' in options ? options.cap : true,\n    'curry': 'curry' in options ? options.curry : true,\n    'fixed': 'fixed' in options ? options.fixed : true,\n    'immutable': 'immutable' in options ? options.immutable : true,\n    'rearg': 'rearg' in options ? options.rearg : true\n  };\n\n  var defaultHolder = isLib ? func : fallbackHolder,\n      forceCurry = ('curry' in options) && options.curry,\n      forceFixed = ('fixed' in options) && options.fixed,\n      forceRearg = ('rearg' in options) && options.rearg,\n      pristine = isLib ? func.runInContext() : undefined;\n\n  var helpers = isLib ? func : {\n    'ary': util.ary,\n    'assign': util.assign,\n    'clone': util.clone,\n    'curry': util.curry,\n    'forEach': util.forEach,\n    'isArray': util.isArray,\n    'isError': util.isError,\n    'isFunction': util.isFunction,\n    'isWeakMap': util.isWeakMap,\n    'iteratee': util.iteratee,\n    'keys': util.keys,\n    'rearg': util.rearg,\n    'toInteger': util.toInteger,\n    'toPath': util.toPath\n  };\n\n  var ary = helpers.ary,\n      assign = helpers.assign,\n      clone = helpers.clone,\n      curry = helpers.curry,\n      each = helpers.forEach,\n      isArray = helpers.isArray,\n      isError = helpers.isError,\n      isFunction = helpers.isFunction,\n      isWeakMap = helpers.isWeakMap,\n      keys = helpers.keys,\n      rearg = helpers.rearg,\n      toInteger = helpers.toInteger,\n      toPath = helpers.toPath;\n\n  var aryMethodKeys = keys(mapping.aryMethod);\n\n  var wrappers = {\n    'castArray': function(castArray) {\n      return function() {\n        var value = arguments[0];\n        return isArray(value)\n          ? castArray(cloneArray(value))\n          : castArray.apply(undefined, arguments);\n      };\n    },\n    'iteratee': function(iteratee) {\n      return function() {\n        var func = arguments[0],\n            arity = arguments[1],\n            result = iteratee(func, arity),\n            length = result.length;\n\n        if (config.cap && typeof arity == 'number') {\n          arity = arity > 2 ? (arity - 2) : 1;\n          return (length && length <= arity) ? result : baseAry(result, arity);\n        }\n        return result;\n      };\n    },\n    'mixin': function(mixin) {\n      return function(source) {\n        var func = this;\n        if (!isFunction(func)) {\n          return mixin(func, Object(source));\n        }\n        var pairs = [];\n        each(keys(source), function(key) {\n          if (isFunction(source[key])) {\n            pairs.push([key, func.prototype[key]]);\n          }\n        });\n\n        mixin(func, Object(source));\n\n        each(pairs, function(pair) {\n          var value = pair[1];\n          if (isFunction(value)) {\n            func.prototype[pair[0]] = value;\n          } else {\n            delete func.prototype[pair[0]];\n          }\n        });\n        return func;\n      };\n    },\n    'nthArg': function(nthArg) {\n      return function(n) {\n        var arity = n < 0 ? 1 : (toInteger(n) + 1);\n        return curry(nthArg(n), arity);\n      };\n    },\n    'rearg': function(rearg) {\n      return function(func, indexes) {\n        var arity = indexes ? indexes.length : 0;\n        return curry(rearg(func, indexes), arity);\n      };\n    },\n    'runInContext': function(runInContext) {\n      return function(context) {\n        return baseConvert(util, runInContext(context), options);\n      };\n    }\n  };\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Casts `func` to a function with an arity capped iteratee if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @returns {Function} Returns the cast function.\n   */\n  function castCap(name, func) {\n    if (config.cap) {\n      var indexes = mapping.iterateeRearg[name];\n      if (indexes) {\n        return iterateeRearg(func, indexes);\n      }\n      var n = !isLib && mapping.iterateeAry[name];\n      if (n) {\n        return iterateeAry(func, n);\n      }\n    }\n    return func;\n  }\n\n  /**\n   * Casts `func` to a curried function if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @param {number} n The arity of `func`.\n   * @returns {Function} Returns the cast function.\n   */\n  function castCurry(name, func, n) {\n    return (forceCurry || (config.curry && n > 1))\n      ? curry(func, n)\n      : func;\n  }\n\n  /**\n   * Casts `func` to a fixed arity function if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @param {number} n The arity cap.\n   * @returns {Function} Returns the cast function.\n   */\n  function castFixed(name, func, n) {\n    if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n      var data = mapping.methodSpread[name],\n          start = data && data.start;\n\n      return start  === undefined ? ary(func, n) : flatSpread(func, start);\n    }\n    return func;\n  }\n\n  /**\n   * Casts `func` to an rearged function if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @param {number} n The arity of `func`.\n   * @returns {Function} Returns the cast function.\n   */\n  function castRearg(name, func, n) {\n    return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n      ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n      : func;\n  }\n\n  /**\n   * Creates a clone of `object` by `path`.\n   *\n   * @private\n   * @param {Object} object The object to clone.\n   * @param {Array|string} path The path to clone by.\n   * @returns {Object} Returns the cloned object.\n   */\n  function cloneByPath(object, path) {\n    path = toPath(path);\n\n    var index = -1,\n        length = path.length,\n        lastIndex = length - 1,\n        result = clone(Object(object)),\n        nested = result;\n\n    while (nested != null && ++index < length) {\n      var key = path[index],\n          value = nested[key];\n\n      if (value != null &&\n          !(isFunction(value) || isError(value) || isWeakMap(value))) {\n        nested[key] = clone(index == lastIndex ? value : Object(value));\n      }\n      nested = nested[key];\n    }\n    return result;\n  }\n\n  /**\n   * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n   * version with conversion `options` applied.\n   *\n   * @param {Object} [options] The options object. See `baseConvert` for more details.\n   * @returns {Function} Returns the converted `lodash`.\n   */\n  function convertLib(options) {\n    return _.runInContext.convert(options)(undefined);\n  }\n\n  /**\n   * Create a converter function for `func` of `name`.\n   *\n   * @param {string} name The name of the function to convert.\n   * @param {Function} func The function to convert.\n   * @returns {Function} Returns the new converter function.\n   */\n  function createConverter(name, func) {\n    var realName = mapping.aliasToReal[name] || name,\n        methodName = mapping.remap[realName] || realName,\n        oldOptions = options;\n\n    return function(options) {\n      var newUtil = isLib ? pristine : helpers,\n          newFunc = isLib ? pristine[methodName] : func,\n          newOptions = assign(assign({}, oldOptions), options);\n\n      return baseConvert(newUtil, realName, newFunc, newOptions);\n    };\n  }\n\n  /**\n   * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n   * arguments, ignoring any additional arguments.\n   *\n   * @private\n   * @param {Function} func The function to cap iteratee arguments for.\n   * @param {number} n The arity cap.\n   * @returns {Function} Returns the new function.\n   */\n  function iterateeAry(func, n) {\n    return overArg(func, function(func) {\n      return typeof func == 'function' ? baseAry(func, n) : func;\n    });\n  }\n\n  /**\n   * Creates a function that wraps `func` to invoke its iteratee with arguments\n   * arranged according to the specified `indexes` where the argument value at\n   * the first index is provided as the first argument, the argument value at\n   * the second index is provided as the second argument, and so on.\n   *\n   * @private\n   * @param {Function} func The function to rearrange iteratee arguments for.\n   * @param {number[]} indexes The arranged argument indexes.\n   * @returns {Function} Returns the new function.\n   */\n  function iterateeRearg(func, indexes) {\n    return overArg(func, function(func) {\n      var n = indexes.length;\n      return baseArity(rearg(baseAry(func, n), indexes), n);\n    });\n  }\n\n  /**\n   * Creates a function that invokes `func` with its first argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function() {\n      var length = arguments.length;\n      if (!length) {\n        return func();\n      }\n      var args = Array(length);\n      while (length--) {\n        args[length] = arguments[length];\n      }\n      var index = config.rearg ? 0 : (length - 1);\n      args[index] = transform(args[index]);\n      return func.apply(undefined, args);\n    };\n  }\n\n  /**\n   * Creates a function that wraps `func` and applys the conversions\n   * rules by `name`.\n   *\n   * @private\n   * @param {string} name The name of the function to wrap.\n   * @param {Function} func The function to wrap.\n   * @returns {Function} Returns the converted function.\n   */\n  function wrap(name, func, placeholder) {\n    var result,\n        realName = mapping.aliasToReal[name] || name,\n        wrapped = func,\n        wrapper = wrappers[realName];\n\n    if (wrapper) {\n      wrapped = wrapper(func);\n    }\n    else if (config.immutable) {\n      if (mapping.mutate.array[realName]) {\n        wrapped = wrapImmutable(func, cloneArray);\n      }\n      else if (mapping.mutate.object[realName]) {\n        wrapped = wrapImmutable(func, createCloner(func));\n      }\n      else if (mapping.mutate.set[realName]) {\n        wrapped = wrapImmutable(func, cloneByPath);\n      }\n    }\n    each(aryMethodKeys, function(aryKey) {\n      each(mapping.aryMethod[aryKey], function(otherName) {\n        if (realName == otherName) {\n          var data = mapping.methodSpread[realName],\n              afterRearg = data && data.afterRearg;\n\n          result = afterRearg\n            ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n            : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n          result = castCap(realName, result);\n          result = castCurry(realName, result, aryKey);\n          return false;\n        }\n      });\n      return !result;\n    });\n\n    result || (result = wrapped);\n    if (result == func) {\n      result = forceCurry ? curry(result, 1) : function() {\n        return func.apply(this, arguments);\n      };\n    }\n    result.convert = createConverter(realName, func);\n    result.placeholder = func.placeholder = placeholder;\n\n    return result;\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  if (!isObj) {\n    return wrap(name, func, defaultHolder);\n  }\n  var _ = func;\n\n  // Convert methods by ary cap.\n  var pairs = [];\n  each(aryMethodKeys, function(aryKey) {\n    each(mapping.aryMethod[aryKey], function(key) {\n      var func = _[mapping.remap[key] || key];\n      if (func) {\n        pairs.push([key, wrap(key, func, _)]);\n      }\n    });\n  });\n\n  // Convert remaining methods.\n  each(keys(_), function(key) {\n    var func = _[key];\n    if (typeof func == 'function') {\n      var length = pairs.length;\n      while (length--) {\n        if (pairs[length][0] == key) {\n          return;\n        }\n      }\n      func.convert = createConverter(key, func);\n      pairs.push([key, func]);\n    }\n  });\n\n  // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n  each(pairs, function(pair) {\n    _[pair[0]] = pair[1];\n  });\n\n  _.convert = convertLib;\n  _.placeholder = _;\n\n  // Assign aliases.\n  each(keys(_), function(key) {\n    each(mapping.realToAlias[key] || [], function(alias) {\n      _[alias] = _[key];\n    });\n  });\n\n  return _;\n}\n\nmodule.exports = baseConvert;\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport { stopEvent, filterVisible } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_FOCUS_CONTENT, POSITION_ABSOLUTE, POSITION_FIXED, HOME, END, ARROW_UP, ARROW_DOWN, ENTER, SPACE, GL_DROPDOWN_CONTENTS_CLASS } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlBaseDropdown, { BASE_DROPDOWN_CLASS } from '../base_dropdown/base_dropdown';\nimport GlDisclosureDropdownItem, { ITEM_CLASS } from './disclosure_dropdown_item';\nimport GlDisclosureDropdownGroup from './disclosure_dropdown_group';\nimport { itemsValidator, hasOnlyListItems, isItem } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst DROPDOWN_SELECTOR = `.${BASE_DROPDOWN_CLASS}`;\nconst ITEM_SELECTOR = `.${ITEM_CLASS}`;\nvar script = {\n  name: 'GlDisclosureDropdown',\n  events: {\n    GL_DROPDOWN_SHOWN,\n    GL_DROPDOWN_HIDDEN,\n    GL_DROPDOWN_BEFORE_CLOSE,\n    GL_DROPDOWN_FOCUS_CONTENT\n  },\n  components: {\n    GlBaseDropdown,\n    GlDisclosureDropdownItem,\n    GlDisclosureDropdownGroup\n  },\n  props: {\n    /**\n     * Items to display in the dropdown\n     */\n    items: {\n      type: Array,\n      required: false,\n      default: () => [],\n      validator: itemsValidator\n    },\n    /**\n     * Toggle button text\n     */\n    toggleText: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Toggle text to be read by screen readers only\n     */\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Styling option - dropdown's toggle category\n     */\n    category: {\n      type: String,\n      required: false,\n      default: buttonCategoryOptions.primary,\n      validator: value => value in buttonCategoryOptions\n    },\n    /**\n     * Styling option - dropdown's toggle variant\n     */\n    variant: {\n      type: String,\n      required: false,\n      default: dropdownVariantOptions.default,\n      validator: value => value in dropdownVariantOptions\n    },\n    /**\n     * The size of the dropdown toggle\n     */\n    size: {\n      type: String,\n      required: false,\n      default: 'medium',\n      validator: value => value in buttonSizeOptions\n    },\n    /**\n     * Icon name that will be rendered in the toggle button\n     */\n    icon: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Set to \"true\" to disable the dropdown\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Set to \"true\" when dropdown content (items) is loading\n     * It will render a small loader in the dropdown toggle and make it disabled\n     */\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Custom toggle id.\n     * For instance, it can be referenced by tooltip or popover\n     */\n    toggleId: {\n      type: String,\n      required: false,\n      default: () => uniqueId('dropdown-toggle-btn-')\n    },\n    /**\n     * Additional CSS classes to customize toggle appearance\n     */\n    toggleClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    /**\n     * Set to \"true\" to hide the caret\n     */\n    noCaret: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Align disclosure dropdown with respect to the toggle button\n     */\n    placement: {\n      type: String,\n      required: false,\n      default: 'bottom-start',\n      validator: value => Object.keys(dropdownPlacements).includes(value)\n    },\n    /**\n     * The `aria-labelledby` attribute value for the toggle button\n     * Provide the string of ids seperated by space\n     */\n    toggleAriaLabelledBy: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The `aria-labelledby` attribute value for the list of options\n     * Provide the string of ids seperated by space\n     */\n    listAriaLabelledBy: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Render the toggle button as a block element\n     */\n    block: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Custom offset to be applied to Floating UI's offset middleware.\n     * https://floating-ui.com/docs/offset\n     */\n    dropdownOffset: {\n      type: [Number, Object],\n      required: false,\n      default: undefined\n    },\n    /**\n     * Lets the dropdown extend to match its content's width, up to a maximum width\n     * defined by the `$gl-new-dropdown-max-width` variable.\n     */\n    fluidWidth: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Close the dropdown on item click (action)\n     */\n    autoClose: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    /**\n     * Strategy to be applied by computePosition. If the dropdown's container is too short for it to\n     * fit in, setting this to fixed will let it position itself above its container.\n     * https://floating-ui.com/docs/computePosition#strategy\n     */\n    positioningStrategy: {\n      type: String,\n      required: false,\n      default: POSITION_ABSOLUTE,\n      validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n    },\n    /**\n     * Opens dropdown on render\n     */\n    startOpened: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      disclosureId: uniqueId('disclosure-'),\n      nextFocusedItemIndex: null\n    };\n  },\n  computed: {\n    disclosureTag() {\n      var _this$items;\n      if ((_this$items = this.items) !== null && _this$items !== void 0 && _this$items.length ||\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      hasOnlyListItems(this.$scopedSlots.default || this.$slots.default)) {\n        return 'ul';\n      }\n      return 'div';\n    },\n    hasCustomToggle() {\n      return Boolean(this.$scopedSlots.toggle);\n    }\n  },\n  mounted() {\n    if (this.startOpened) {\n      this.open();\n    }\n  },\n  methods: {\n    open() {\n      this.$refs.baseDropdown.open();\n    },\n    close() {\n      this.$refs.baseDropdown.close();\n    },\n    onShow() {\n      /**\n       * Emitted when dropdown is shown\n       *\n       * @event shown\n       */\n      this.$emit(GL_DROPDOWN_SHOWN);\n    },\n    onBeforeClose(event) {\n      /**\n       * Emitted when dropdown is about to be closed\n       *\n       * @event beforeClose\n       */\n      this.$emit(GL_DROPDOWN_BEFORE_CLOSE, event);\n    },\n    onHide() {\n      /**\n       * Emitted when dropdown is hidden\n       *\n       * @event hidden\n       */\n      this.$emit(GL_DROPDOWN_HIDDEN);\n      this.nextFocusedItemIndex = null;\n    },\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      const elements = this.getFocusableListItemElements();\n      if (elements.length < 1) return;\n      let stop = true;\n      if (code === HOME) {\n        this.focusItem(0, elements);\n      } else if (code === END) {\n        this.focusItem(elements.length - 1, elements);\n      } else if (code === ARROW_UP) {\n        this.focusNextItem(event, elements, -1);\n      } else if (code === ARROW_DOWN) {\n        this.focusNextItem(event, elements, 1);\n      } else if (code === ENTER || code === SPACE) {\n        this.handleAutoClose(event);\n      } else {\n        stop = false;\n      }\n      if (stop) {\n        stopEvent(event);\n      }\n    },\n    getFocusableListItemElements() {\n      var _this$$refs$content;\n      const items = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelectorAll(ITEM_SELECTOR);\n      return filterVisible(Array.from(items || []));\n    },\n    focusNextItem(event, elements, offset) {\n      const {\n        target\n      } = event;\n      const currentIndex = elements.indexOf(target);\n      const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n      this.focusItem(nextIndex, elements);\n    },\n    focusItem(index, elements) {\n      var _elements$index;\n      this.nextFocusedItemIndex = index;\n      (_elements$index = elements[index]) === null || _elements$index === void 0 ? void 0 : _elements$index.focus();\n    },\n    closeAndFocus() {\n      this.$refs.baseDropdown.closeAndFocus();\n    },\n    handleAction(action) {\n      // See https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4376 for\n      // detailed explanation why we need requestAnimationFrame\n      window.requestAnimationFrame(() => {\n        /**\n         * Emitted when one of disclosure dropdown items is clicked\n         *\n         * @event action\n         */\n        this.$emit('action', action);\n      });\n    },\n    handleAutoClose(e) {\n      if (this.autoClose && e.target.closest(ITEM_SELECTOR) && e.target.closest(DROPDOWN_SELECTOR) === this.$refs.baseDropdown.$el) {\n        this.closeAndFocus();\n      }\n    },\n    uniqueItemId() {\n      return uniqueId(`disclosure-item-`);\n    },\n    isItem\n  },\n  GL_DROPDOWN_CONTENTS_CLASS\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:\"baseDropdown\",staticClass:\"gl-disclosure-dropdown\",attrs:{\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.toggleText,\"toggle-class\":_vm.toggleClass,\"text-sr-only\":_vm.textSrOnly,\"category\":_vm.category,\"variant\":_vm.variant,\"size\":_vm.size,\"icon\":_vm.icon,\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"no-caret\":_vm.noCaret,\"placement\":_vm.placement,\"block\":_vm.block,\"offset\":_vm.dropdownOffset,\"fluid-width\":_vm.fluidWidth,\"positioning-strategy\":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide,_vm.$options.events.GL_DROPDOWN_BEFORE_CLOSE,_vm.onBeforeClose,_vm.$options.events.GL_DROPDOWN_FOCUS_CONTENT,_vm.onKeydown]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._t(\"header\"),_vm._v(\" \"),_c(_vm.disclosureTag,{ref:\"content\",tag:\"component\",class:_vm.$options.GL_DROPDOWN_CONTENTS_CLASS,attrs:{\"id\":_vm.disclosureId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.toggleId,\"data-testid\":\"disclosure-content\",\"tabindex\":\"-1\"},on:{\"keydown\":_vm.onKeydown,\"click\":_vm.handleAutoClose}},[_vm._t(\"default\",function(){return [_vm._l((_vm.items),function(item,index){return [(_vm.isItem(item))?[_c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([('list-item' in _vm.$scopedSlots)?{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}:null],null,true)})]:[_c('gl-disclosure-dropdown-group',{key:item.name,attrs:{\"bordered\":index !== 0,\"group\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:\"group-label\",fn:function(){return [_vm._t(\"group-label\",null,{\"group\":item})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.$scopedSlots['list-item'])?_vm._l((item.items),function(groupItem){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":groupItem},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":groupItem})]},proxy:true}],null,true)})}):_vm._e()],2)]]})]})],2),_vm._v(\" \"),_vm._t(\"footer\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { DROPDOWN_SELECTOR, ITEM_SELECTOR };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"groupProjects\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ids\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"projects\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeSubgroups\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeArchived\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"ids\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ids\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageSize\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"edges\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"node\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":449}};\n    doc.loc.source = {\"body\":\"query groupProjects($fullPath: ID!, $ids: [ID!], $search: String, $pageSize: Int, $after: String) {\\n  group(fullPath: $fullPath) {\\n    id\\n    projects(\\n      includeSubgroups: true\\n      includeArchived: false\\n      ids: $ids\\n      search: $search\\n      first: $pageSize\\n      after: $after\\n    ) {\\n      edges {\\n        node {\\n          id\\n          name\\n        }\\n      }\\n      pageInfo {\\n        endCursor\\n        hasNextPage\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"groupProjects\"] = oneQuery(doc, \"groupProjects\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"unschedulePipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobUnschedule\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":188}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation unschedulePipelineMiniGraphJob($id: CiBuildID!) {\\n  jobUnschedule(input: { id: $id }) {\\n    job {\\n      ...Job\\n    }\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"unschedulePipelineMiniGraphJob\"] = oneQuery(doc, \"unschedulePipelineMiniGraphJob\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"file-holder\"},[_c('div',{staticClass:\"code blob-viewer file-content gl-flex gl-items-center gl-overflow-auto gl-rounded-base\",class:_vm.userColorScheme},[_c('div',{staticClass:\"line-numbers diff-line-num gl-border-r gl-sticky gl-left-0 gl-z-1 !gl-min-w-fit !gl-pl-3 !gl-pr-0\"},_vm._l((_vm.lineNumbers),function(line){return _c('gl-link',{key:line.lineNumber,staticClass:\"file-line-num gl-cursor-default !gl-no-underline\",class:_vm.$options.unselectedInlineNumberMarkClassName,attrs:{\"id\":_vm.lineNumberId(line),\"data-testid\":\"line-number\"}},[_vm._v(\"\\n        \"+_vm._s(line.lineNumber)+\"\\n      \")])}),1),_vm._v(\" \"),_c('code-block',{staticClass:\"highlight gl-grow !gl-overflow-visible !gl-border-none !gl-p-0 !gl-leading-20\"},[(_vm.isHighlighted)?_c('code',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.sourceCodeLines),expression:\"sourceCodeLines\"}],staticClass:\"!gl-block\"}):_c('span',{staticClass:\"plain-lines\"},[_vm._v(_vm._s(_vm.sourceCodeLines))])])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_file_content_viewer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_file_content_viewer.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink } from '@gitlab/ui';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport CodeBlock from '~/vue_shared/components/code_block.vue';\nimport {\n  unselectedInlineNumberMark,\n  numMarkerIdPrefix,\n} from 'ee/vue_shared/components/code_flow/utils/constants';\nimport {\n  markdownBlobData,\n  scrollToSpecificCodeFlow,\n} from 'ee/vue_shared/components/code_flow/utils/utils';\n\nexport default {\n  name: 'VulnerabilityFileContentViewer',\n  components: { CodeBlock, GlLink },\n  directives: {\n    SafeHtml,\n  },\n  props: {\n    startLine: { type: Number, required: false, default: null },\n    endLine: { type: Number, required: false, default: null },\n    isHighlighted: { type: Boolean, required: false, default: false },\n    content: { type: String, required: true },\n    highlightInfo: { type: Array, required: false, default: () => [] },\n    selectedStepNumber: { type: Number, required: false, default: undefined },\n  },\n  computed: {\n    lineNumbers() {\n      const linesNumbers = this.highlightInfo.map((highlight) => {\n        return {\n          lineNumber: highlight.startLine,\n          stepNumber: highlight.stepNumber,\n        };\n      });\n      return Array.from({ length: this.endLine - this.startLine + 1 }, (_, i) => {\n        const currentLineNumber = this.startLine + i;\n        return {\n          lineNumber: currentLineNumber,\n          // Combines the step numbers into a comma-separated string\n          stepNumbers: linesNumbers\n            .filter((line) => line.lineNumber === currentLineNumber)\n            .map((step) => step.stepNumber),\n        };\n      });\n    },\n    sourceCodeLines() {\n      const lines = this.content.split('\\n');\n      // content is the entire file, the GraphQL query does not have the ability to get only certain lines of the\n      // file. Because we only need certain lines, we'll split the lines into an array, slice out only those lines, then\n      // rejoin it back into a string so that the code block component can render it properly.\n      return lines\n        .slice(Math.max(this.startLine - 1, 0), Math.min(this.endLine, lines.length))\n        .map((line) => line || ' ') // to display empty lines as well!\n        .join('\\n');\n    },\n    userColorScheme() {\n      return gon.user_color_scheme;\n    },\n  },\n  watch: {\n    /**\n     * when the user selects a different step in the code flow\n     * we need to highlight the new row and scroll to it\n     */\n    selectedStepNumber() {\n      markdownBlobData(this.selectedStepNumber);\n      scrollToSpecificCodeFlow(this.selectedStepNumber);\n    },\n  },\n  mounted() {\n    /**\n     * when the user closes and opens the collapse, this component is mounted again,\n     * so we need to highlight the new row and scroll to it\n     */\n    markdownBlobData(this.selectedStepNumber);\n    scrollToSpecificCodeFlow(this.selectedStepNumber);\n  },\n  /**\n   * 1. when the component is load for the first time, the sourceCodeLines is empty\n   * (because of async function 'highlightContent' in the parent),\n   * so when sourceCodeLines is updated, we need to highlight the new row and scroll to it\n   * 2. when the user opens more code blocks, this component is updated,\n   * so we need to highlight the new row and scroll to it\n   */\n  updated() {\n    markdownBlobData(this.selectedStepNumber);\n    scrollToSpecificCodeFlow(this.selectedStepNumber);\n  },\n  methods: {\n    lineNumberId(line) {\n      return `${numMarkerIdPrefix}${line.stepNumbers}-L${line.lineNumber}`;\n    },\n  },\n  unselectedInlineNumberMarkClassName: unselectedInlineNumberMark,\n};\n</script>\n\n<template>\n  <div class=\"file-holder\">\n    <div\n      :class=\"userColorScheme\"\n      class=\"code blob-viewer file-content gl-flex gl-items-center gl-overflow-auto gl-rounded-base\"\n    >\n      <div\n        class=\"line-numbers diff-line-num gl-border-r gl-sticky gl-left-0 gl-z-1 !gl-min-w-fit !gl-pl-3 !gl-pr-0\"\n      >\n        <gl-link\n          v-for=\"line in lineNumbers\"\n          :id=\"lineNumberId(line)\"\n          :key=\"line.lineNumber\"\n          class=\"file-line-num gl-cursor-default !gl-no-underline\"\n          :class=\"$options.unselectedInlineNumberMarkClassName\"\n          data-testid=\"line-number\"\n        >\n          {{ line.lineNumber }}\n        </gl-link>\n      </div>\n\n      <code-block\n        class=\"highlight gl-grow !gl-overflow-visible !gl-border-none !gl-p-0 !gl-leading-20\"\n      >\n        <code v-if=\"isHighlighted\" v-safe-html=\"sourceCodeLines\" class=\"!gl-block\"></code>\n        <span v-else class=\"plain-lines\">{{ sourceCodeLines }}</span>\n      </code-block>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./vulnerability_file_content_viewer.vue?vue&type=template&id=95f11142\"\nimport script from \"./vulnerability_file_content_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_file_content_viewer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./local_storage_sync.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./local_storage_sync.vue?vue&type=script&lang=js\"","<script>\nimport { isEqual, isString } from 'lodash';\n\n/**\n * This component will save and restore a value to and from localStorage.\n * The value will be saved only when the value changes; the initial value won't be saved.\n *\n * By default, the value will be saved using JSON.stringify(), and retrieved back using JSON.parse().\n *\n * If you would like to save the raw string instead, you may set the 'asString' prop to true, though be aware that this is a\n * legacy prop to maintain backwards compatibility.\n *\n * For new components saving data for the first time, it's recommended to not use 'asString' even if you're saving a string; it will still be\n * saved and restored properly using JSON.stringify()/JSON.parse().\n */\nexport default {\n  props: {\n    storageKey: {\n      type: String,\n      required: true,\n    },\n    value: {\n      type: [String, Number, Boolean, Array, Object],\n      required: false,\n      default: '',\n    },\n    asString: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    persist: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    clear: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  watch: {\n    value(newVal) {\n      if (!this.persist) return;\n\n      this.saveValue(this.serialize(newVal));\n    },\n    clear(newVal) {\n      if (newVal) {\n        localStorage.removeItem(this.storageKey);\n      }\n    },\n  },\n  mounted() {\n    // On mount, trigger update if we actually have a localStorageValue\n    const { exists, value } = this.getStorageValue();\n\n    if (exists && !isEqual(value, this.value)) {\n      this.$emit('input', value);\n    }\n  },\n  methods: {\n    getStorageValue() {\n      const value = localStorage.getItem(this.storageKey);\n\n      if (value === null) {\n        return { exists: false };\n      }\n\n      try {\n        return { exists: true, value: this.deserialize(value) };\n      } catch {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `[gitlab] Failed to deserialize value from localStorage (key=${this.storageKey})`,\n          value,\n        );\n        // default to \"don't use localStorage value\"\n        return { exists: false };\n      }\n    },\n    saveValue(val) {\n      localStorage.setItem(this.storageKey, val);\n    },\n    serialize(val) {\n      if (!isString(val) && this.asString) {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `[gitlab] LocalStorageSync is saving`,\n          val,\n          `to the key \"${this.storageKey}\", but it is not a string and the 'asString' prop is true. This will save and restore the stringified value rather than the original value. If this is not intended, please remove or set the 'asString' prop to false.`,\n        );\n      }\n\n      return this.asString ? val : JSON.stringify(val);\n    },\n    deserialize(val) {\n      return this.asString ? val : JSON.parse(val);\n    },\n  },\n  render() {\n    return this.$scopedSlots.default?.();\n  },\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./local_storage_sync.vue?vue&type=script&lang=js\"\nexport * from \"./local_storage_sync.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getVulnerabilityExternalIssues\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityId\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalIssueLinks\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalIssue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"relativeReference\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":271}};\n    doc.loc.source = {\"body\":\"query getVulnerabilityExternalIssues($vulnerabilityId: VulnerabilityID!) {\\n  vulnerability(id: $vulnerabilityId) {\\n    id\\n    externalIssueLinks {\\n      nodes {\\n        id\\n        externalIssue {\\n          webUrl\\n          relativeReference\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getVulnerabilityExternalIssues\"] = oneQuery(doc, \"getVulnerabilityExternalIssues\");\n        \n","export default \"<svg enable-background=\\\"new 0 0 50 50\\\" viewBox=\\\"0 0 50 50\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><linearGradient id=\\\"a\\\" gradientUnits=\\\"userSpaceOnUse\\\" x1=\\\"10.2941\\\" x2=\\\"50\\\" y1=\\\"17.8247\\\" y2=\\\"17.8247\\\"><stop offset=\\\"0\\\" stop-color=\\\"#f39c63\\\"/><stop offset=\\\"1\\\" stop-color=\\\"#ef5d4f\\\"/></linearGradient><linearGradient id=\\\"b\\\"><stop offset=\\\"0\\\" stop-color=\\\"#231c4f\\\"/><stop offset=\\\"1\\\" stop-color=\\\"#0a0430\\\"/></linearGradient><linearGradient id=\\\"c\\\" gradientUnits=\\\"userSpaceOnUse\\\" x1=\\\"16.9118\\\" x2=\\\"25\\\" xlink:href=\\\"#b\\\" y1=\\\"27.2046\\\" y2=\\\"27.2046\\\"/><linearGradient id=\\\"d\\\" gradientUnits=\\\"userSpaceOnUse\\\" x1=\\\"27.9412\\\" x2=\\\"33.0882\\\" xlink:href=\\\"#b\\\" y1=\\\"22.0575\\\" y2=\\\"22.0575\\\"/><g clip-rule=\\\"evenodd\\\" fill-rule=\\\"evenodd\\\"><path d=\\\"m31.94 41.71-31.94 8.41v-21.23c0-4.73 3.19-8.87 7.77-10.07l19.29-5.08c6.4-1.68 12.65 3.14 12.65 9.75v8.14c0 4.74-3.19 8.88-7.77 10.08z\\\" fill=\\\"#2b6af9\\\"/><path d=\\\"m50 0v21.23c0 4.73-3.19 8.87-7.77 10.07l-14.79 3.89c-8.67 2.28-17.15-4.26-17.15-13.22v-3.49c0-4.73 3.19-8.87 7.77-10.07z\\\" fill=\\\"url(#a)\\\"/><path d=\\\"m23.36 36.33 16.35-4.3v-8.16c0-6.83-6.46-11.81-13.06-10.07l-16.35 4.3v8.16c-.01 6.82 6.45 11.8 13.06 10.07z\\\" fill=\\\"#fff\\\"/><circle cx=\\\"20.96\\\" cy=\\\"27.2\\\" fill=\\\"url(#c)\\\" r=\\\"4.04\\\"/><circle cx=\\\"30.51\\\" cy=\\\"22.06\\\" fill=\\\"url(#d)\\\" r=\\\"2.57\\\"/></g></svg>\";","import kontraLogo from 'images/vulnerability/kontra-logo.svg?raw';\nimport scwLogo from 'images/vulnerability/scw-logo.svg?raw';\nimport secureflagLogo from 'images/vulnerability/secureflag-logo.svg?raw';\nimport { __, s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nimport {\n  REPORT_TYPE_SAST,\n  REPORT_TYPE_SAST_IAC,\n  REPORT_TYPE_SECRET_DETECTION,\n} from '~/vue_shared/security_reports/constants';\n\nimport configureSastMutation from './graphql/configure_sast.mutation.graphql';\nimport configureSastIacMutation from './graphql/configure_iac.mutation.graphql';\nimport configureSecretDetectionMutation from './graphql/configure_secret_detection.mutation.graphql';\n\n/**\n * Translations for Security Configuration Page\n * Make sure to add new scanner translations to the SCANNER_NAMES_MAP below.\n */\nexport const SAST_NAME = __('Static Application Security Testing (SAST)');\nexport const SAST_SHORT_NAME = s__('ciReport|SAST');\n\nexport const ADVANCED_SAST_NAME = s__('ciReport|Advanced SAST Scanning');\n\nexport const SAST_IAC_NAME = __('Infrastructure as Code (IaC) Scanning');\nexport const SAST_IAC_SHORT_NAME = s__('ciReport|SAST IaC');\n\nexport const DAST_NAME = __('Dynamic Application Security Testing (DAST)');\nexport const DAST_SHORT_NAME = s__('ciReport|DAST');\n\nexport const DAST_PROFILES_NAME = __('DAST profiles');\nexport const DAST_HELP_PATH = helpPagePath('user/application_security/dast/index');\n\nexport const SECRET_DETECTION_NAME = __('Secret Detection');\n\nexport const DEPENDENCY_SCANNING_NAME = __('Dependency Scanning');\n\nexport const CONTAINER_SCANNING_NAME = __('Container Scanning');\n\nexport const CONTAINER_SCANNING_FOR_REGISTRY_NAME = __('Container Scanning For Registry');\n\nexport const COVERAGE_FUZZING_NAME = __('Coverage Fuzzing');\n\nexport const CORPUS_MANAGEMENT_NAME = __('Corpus Management');\n\nexport const API_FUZZING_NAME = __('API Fuzzing');\n\nexport const CLUSTER_IMAGE_SCANNING_NAME = s__('ciReport|Cluster Image Scanning');\n\nexport const PRE_RECEIVE_SECRET_DETECTION = 'pre_receive_secret_detection';\n\nexport const PRE_RECEIVE_SECRET_DETECTION_NAME = __('Secret push protection');\n\nexport const SCANNER_NAMES_MAP = {\n  SAST: SAST_SHORT_NAME,\n  SAST_ADVANCED: ADVANCED_SAST_NAME,\n  SAST_IAC: SAST_IAC_NAME,\n  DAST: DAST_SHORT_NAME,\n  API_FUZZING: API_FUZZING_NAME,\n  CONTAINER_SCANNING: CONTAINER_SCANNING_NAME,\n  CONTAINER_SCANNING_FOR_REGISTRY: CONTAINER_SCANNING_FOR_REGISTRY_NAME,\n  COVERAGE_FUZZING: COVERAGE_FUZZING_NAME,\n  SECRET_DETECTION: SECRET_DETECTION_NAME,\n  DEPENDENCY_SCANNING: DEPENDENCY_SCANNING_NAME,\n  CLUSTER_IMAGE_SCANNING: CLUSTER_IMAGE_SCANNING_NAME,\n  PRE_RECEIVE_SECRET_DETECTION: PRE_RECEIVE_SECRET_DETECTION_NAME,\n  GENERIC: s__('ciReport|Manually added'),\n};\n\nexport const featureToMutationMap = {\n  [REPORT_TYPE_SAST]: {\n    mutationId: 'configureSast',\n    getMutationPayload: (projectPath) => ({\n      mutation: configureSastMutation,\n      variables: {\n        input: {\n          projectPath,\n          configuration: { global: [], pipeline: [], analyzers: [] },\n        },\n      },\n    }),\n  },\n  [REPORT_TYPE_SAST_IAC]: {\n    mutationId: 'configureSastIac',\n    getMutationPayload: (projectPath) => ({\n      mutation: configureSastIacMutation,\n      variables: {\n        input: {\n          projectPath,\n        },\n      },\n    }),\n  },\n  [REPORT_TYPE_SECRET_DETECTION]: {\n    mutationId: 'configureSecretDetection',\n    getMutationPayload: (projectPath) => ({\n      mutation: configureSecretDetectionMutation,\n      variables: {\n        input: {\n          projectPath,\n        },\n      },\n    }),\n  },\n};\n\nexport const AUTO_DEVOPS_ENABLED_ALERT_DISMISSED_STORAGE_KEY =\n  'security_configuration_auto_devops_enabled_dismissed_projects';\n\n// Fetch the svg path from the GraphQL query once this issue is resolved\n// https://gitlab.com/gitlab-org/gitlab/-/issues/346899\nexport const TEMP_PROVIDER_LOGOS = {\n  Kontra: {\n    svg: kontraLogo,\n  },\n  [__('Secure Code Warrior')]: {\n    svg: scwLogo,\n  },\n  SecureFlag: {\n    svg: secureflagLogo,\n  },\n};\n\n// Use the `url` field from the GraphQL query once this issue is resolved\n// https://gitlab.com/gitlab-org/gitlab/-/issues/356129\nexport const TEMP_PROVIDER_URLS = {\n  Kontra: 'https://application.security/',\n  [__('Secure Code Warrior')]: 'https://www.securecodewarrior.com/',\n  SecureFlag: 'https://www.secureflag.com/',\n};\n\nexport const TAB_VULNERABILITY_MANAGEMENT_INDEX = 1;\n\nexport const TRACK_TOGGLE_TRAINING_PROVIDER_ACTION = 'toggle_security_training_provider';\nexport const TRACK_TOGGLE_TRAINING_PROVIDER_LABEL = 'update_security_training_provider';\nexport const TRACK_CLICK_TRAINING_LINK_ACTION = 'click_security_training_link';\nexport const TRACK_PROVIDER_LEARN_MORE_CLICK_ACTION = 'click_link';\nexport const TRACK_PROVIDER_LEARN_MORE_CLICK_LABEL = 'security_training_provider';\nexport const TRACK_TRAINING_LOADED_ACTION = 'security_training_link_loaded';\nexport const TRACK_PROMOTION_BANNER_CTA_CLICK_ACTION = 'click_button';\nexport const TRACK_PROMOTION_BANNER_CTA_CLICK_LABEL = 'security_training_promotion_cta';\n\nexport const i18n = {\n  configurationHistory: s__('SecurityConfiguration|Configuration history'),\n  securityTesting: s__('SecurityConfiguration|Security testing'),\n  latestPipelineDescription: s__(\n    `SecurityConfiguration|The status of the tools only applies to the\n       default branch and is based on the %{linkStart}latest pipeline%{linkEnd}.`,\n  ),\n  description: s__(\n    `SecurityConfiguration|Once you've enabled a scan for the default branch,\n       any subsequent feature branch you create will include the scan. An enabled\n       scanner will not be reflected as such until the pipeline has been\n       successfully executed and it has generated valid artifacts.`,\n  ),\n  securityConfiguration: __('Security configuration'),\n  vulnerabilityManagement: s__('SecurityConfiguration|Vulnerability Management'),\n  securityTraining: s__('SecurityConfiguration|Security training'),\n  securityTrainingDescription: s__(\n    'SecurityConfiguration|Enable security training to help your developers learn how to fix vulnerabilities. Developers can view security training from selected educational providers, relevant to the detected vulnerability. Please note that security training is not accessible in an environment that is offline.',\n  ),\n  securityTrainingDoc: s__('SecurityConfiguration|Learn more about vulnerability training'),\n};\n","export default \"<svg enable-background=\\\"new 0 0 0 0\\\" viewBox=\\\"0 0 800 780\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m594.4 737.87c-.75-1.93-1.86-3.7-3.34-5.29-1.48-1.6-3.29-2.86-5.44-3.8-2.15-.93-4.62-1.4-7.41-1.4s-5.26.47-7.41 1.4c-2.14.94-3.96 2.21-5.43 3.8-1.48 1.59-2.59 3.36-3.34 5.29s-1.13 3.91-1.13 5.95v.96c0 1.96.36 3.91 1.1 5.86.73 1.96 1.82 3.74 3.28 5.35s3.27 2.91 5.43 3.89c2.17.98 4.67 1.46 7.5 1.46s5.33-.49 7.5-1.46c2.16-.98 3.98-2.28 5.43-3.89 1.46-1.61 2.55-3.4 3.28-5.35s1.1-3.91 1.1-5.86v-.96c.01-2.04-.37-4.02-1.12-5.95zm-4.01 13.45c-1.15 2.1-2.78 3.77-4.86 5.02-2.09 1.25-4.52 1.89-7.32 1.89-2.79 0-5.24-.63-7.32-1.89-2.09-1.25-3.71-2.93-4.86-5.02s-1.73-4.42-1.73-6.97c0-2.63.58-4.99 1.73-7.09 1.15-2.09 2.77-3.74 4.86-4.96 2.08-1.21 4.52-1.82 7.32-1.82 2.79 0 5.23.61 7.32 1.82 2.08 1.22 3.71 2.87 4.86 4.96 1.15 2.1 1.73 4.46 1.73 7.09 0 2.56-.58 4.88-1.73 6.97z\\\" fill=\\\"#f79200\\\"/><path d=\\\"m584.11 746.03c1.42-1.12 2.12-2.73 2.12-4.84s-.71-3.73-2.12-4.85c-1.42-1.11-3.4-1.67-5.95-1.67h-2.55-2.37-2.12v18.66h4.49v-5.62h2.55c.09 0 .17-.01.25-.01l3.81 5.64h5.1l-4.69-6.45c.54-.25 1.04-.52 1.48-.86zm-8.5-7.6h2.85c1.1 0 1.9.23 2.43.69s.79 1.15.79 2.07-.26 1.6-.79 2.06-1.33.68-2.43.68h-2.85z\\\" fill=\\\"#f79200\\\"/><path d=\\\"m333.8 753.41-17.62 7.9v-88.45s76.18-50.47 93.76-64.21c46.25-36.15 101.39-92.54 101.39-155.86v-22.33l40.76-32.62h-235.91v-83.73h280.18v138.69c0 180.72-251.84 295.81-262.56 300.61zm-17.53-638.54c21.22 2.88 121.7 20.25 195.07 97.32v62.85h85.03v-94.02l-10-11.68c-104.42-122.2-259.7-137.72-266.27-138.32l-3.92-.36v84.23c.03-.01.06-.01.09-.02z\\\" fill=\\\"#ffbe12\\\"/><path d=\\\"m316.18 397.85h-280.18v-216.82l9.99-11.68c104.42-122.21 259.7-137.73 266.25-138.33l3.94-.36v84.23c-21.06 2.97-122.24 20.87-195.17 97.32v74.53l-36.5 27.39h231.66v83.72zm-93.77 210.81c-46.27-36.15-101.4-87.26-101.4-143.31l20.24-28.41h-105.25v28.41c0 171.17 251.84 283.27 262.56 288.07l17.63 7.9v-88.45c-.01 0-76.2-50.47-93.78-64.21z\\\" fill=\\\"#f79200\\\"/></svg>\";","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\n<svg viewBox=\\\"0 0 500 500\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:bx=\\\"https://boxy-svg.com\\\">\\n  <defs>\\n    <linearGradient id=\\\"paint1_linear_117_388\\\" x1=\\\"8.32922\\\" y1=\\\"0.701083\\\" x2=\\\"25.6103\\\" y2=\\\"8.8381\\\"\\n      gradientUnits=\\\"userSpaceOnUse\\\"\\n      gradientTransform=\\\"matrix(5.965987, 0, 0, 5.965987, -1.949537, -0.014549)\\\">\\n      <stop stop-color=\\\"#005AEC\\\" />\\n      <stop offset=\\\"1\\\" stop-color=\\\"#12DFE7\\\" />\\n    </linearGradient>\\n    <linearGradient id=\\\"paint2_linear_117_388\\\" x1=\\\"3.30485\\\" y1=\\\"11.2131\\\" x2=\\\"20.4972\\\" y2=\\\"19.4227\\\"\\n      gradientUnits=\\\"userSpaceOnUse\\\"\\n      gradientTransform=\\\"matrix(5.965987, 0, 0, 5.965987, -1.949537, -0.014549)\\\">\\n      <stop stop-color=\\\"#005AEC\\\" />\\n      <stop offset=\\\"1\\\" stop-color=\\\"#12DFE7\\\" />\\n    </linearGradient>\\n  </defs>\\n  <g style=\\\"\\\" transform=\\\"matrix(3.098345, 0, 0, 3.098345, 46.765705, 8.335629)\\\"\\n    bx:origin=\\\"0.503455 0.502894\\\">\\n    <path d=\\\"M 65.436 0.003 L 65.436 26.662 L 87.144 12.772 L 65.436 0.003 Z\\\"\\n      fill=\\\"url(#paint1_linear_117_388)\\\" style=\\\"\\\" />\\n    <path\\n      d=\\\"M 108.686 77.337 L 87.143 65.001 L 87.143 38.543 L 65.434 51.815 L 43.562 38.543 L 43.809 64.746 L 22.512 77.592 L 0.393 64.321 L 0.393 116.301 L 65.352 155.095 L 129.901 116.301 L 129.901 64.406 L 108.686 77.337 Z M 65.434 103.2 L 43.562 90.609 L 43.562 114.344 L 22.923 102.945 L 43.562 90.609 L 65.434 77.848 C 65.434 77.848 85.663 90.694 86.156 90.609 C 86.65 90.523 65.434 103.2 65.434 103.2 Z M 86.156 114.344 L 86.156 90.609 L 106.795 102.945 L 86.156 114.344 Z\\\"\\n      fill=\\\"url(#paint2_linear_117_388)\\\" style=\\\"\\\" />\\n  </g>\\n</svg>\";","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilitySeveritiesCount\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilitySeveritiesCount\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"critical\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"high\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"info\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"low\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"medium\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"unknown\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":124}};\n    doc.loc.source = {\"body\":\"fragment VulnerabilitySeveritiesCount on VulnerabilitySeveritiesCount {\\n  critical\\n  high\\n  info\\n  low\\n  medium\\n  unknown\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"VulnerabilitySeveritiesCount\"] = oneQuery(doc, \"VulnerabilitySeveritiesCount\");\n        \n","export const stateToComponentMap = {\n  merged: 'mr-widget-merged',\n  closed: 'mr-widget-closed',\n  merging: 'mr-widget-merging',\n  missingBranch: 'mr-widget-missing-branch',\n  readyToMerge: 'mr-widget-ready-to-merge',\n  nothingToMerge: 'mr-widget-nothing-to-merge',\n  archived: 'mr-widget-archived',\n  checking: 'mr-widget-checking',\n  preparing: 'mr-widget-preparing',\n  pipelineFailed: 'mr-widget-pipeline-failed',\n  failedToMerge: 'mr-widget-failed-to-merge',\n  shaMismatch: 'sha-mismatch',\n  mergeChecksFailed: 'mergeChecksFailed',\n};\n\nexport const stateKey = {\n  archived: 'archived',\n  missingBranch: 'missingBranch',\n  nothingToMerge: 'nothingToMerge',\n  preparing: 'preparing',\n  checking: 'checking',\n  pipelineFailed: 'pipelineFailed',\n  shaMismatch: 'shaMismatch',\n  readyToMerge: 'readyToMerge',\n  merging: 'merging',\n  merged: 'merged',\n  mergeChecksFailed: 'mergeChecksFailed',\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"file-header-content gl-flex gl-items-center gl-leading-1\"},[_vm._t(\"filepath-prepend\"),_vm._v(\" \"),(_vm.fileName)?[_c('file-icon',{attrs:{\"file-name\":_vm.fileName,\"size\":16,\"aria-hidden\":\"true\",\"css-classes\":\"gl-mr-3\"}}),_vm._v(\" \"),_c(_vm.showAsLink ? 'gl-link' : 'strong',_vm._b({tag:\"component\",staticClass:\"file-title-name mr-1 js-blob-header-filepath gl-break-all gl-font-bold\",class:{ '!gl-text-blue-700 hover:gl-cursor-pointer': _vm.showAsLink },attrs:{\"data-testid\":\"file-title-content\"}},'component',_vm.linkHref,false),[_vm._v(_vm._s(_vm.fileName))])]:_vm._e(),_vm._v(\" \"),_c('clipboard-button',{attrs:{\"text\":_vm.blob.path,\"gfm\":_vm.gfmCopyText,\"title\":_vm.__('Copy file path'),\"category\":\"tertiary\",\"css-class\":\"gl-mr-2\"}}),_vm._v(\" \"),(_vm.showBlobSize)?_c('small',{staticClass:\"gl-mr-3\"},[_vm._v(_vm._s(_vm.blobSize))]):_vm._e(),_vm._v(\" \"),(_vm.showLfsBadge)?_c('gl-badge',[_vm._v(_vm._s(_vm.__('LFS')))]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./blob_header_filepath.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./blob_header_filepath.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlLink } from '@gitlab/ui';\nimport { numberToHumanSize } from '~/lib/utils/number_utils';\nimport ClipboardButton from '~/vue_shared/components/clipboard_button.vue';\nimport FileIcon from '~/vue_shared/components/file_icon.vue';\n\nexport default {\n  components: {\n    FileIcon,\n    ClipboardButton,\n    GlBadge,\n    GlLink,\n  },\n  props: {\n    blob: {\n      type: Object,\n      required: true,\n    },\n    showPath: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    showAsLink: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showBlobSize: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    blobSize() {\n      return numberToHumanSize(this.blob.size);\n    },\n    gfmCopyText() {\n      return `\\`${this.blob.path}\\``;\n    },\n    showLfsBadge() {\n      return this.blob.storedExternally && this.blob.externalStorage === 'lfs';\n    },\n    fileName() {\n      if (this.showPath) {\n        return this.blob.path;\n      }\n\n      return this.blob.name;\n    },\n    linkHref() {\n      return this.showAsLink ? { href: this.blob?.webPath } : {};\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"file-header-content gl-flex gl-items-center gl-leading-1\">\n    <slot name=\"filepath-prepend\"></slot>\n\n    <template v-if=\"fileName\">\n      <file-icon :file-name=\"fileName\" :size=\"16\" aria-hidden=\"true\" css-classes=\"gl-mr-3\" />\n      <component\n        :is=\"showAsLink ? 'gl-link' : 'strong'\"\n        v-bind=\"linkHref\"\n        class=\"file-title-name mr-1 js-blob-header-filepath gl-break-all gl-font-bold\"\n        :class=\"{ '!gl-text-blue-700 hover:gl-cursor-pointer': showAsLink }\"\n        data-testid=\"file-title-content\"\n        >{{ fileName }}</component\n      >\n    </template>\n\n    <clipboard-button\n      :text=\"blob.path\"\n      :gfm=\"gfmCopyText\"\n      :title=\"__('Copy file path')\"\n      category=\"tertiary\"\n      css-class=\"gl-mr-2\"\n    />\n\n    <small v-if=\"showBlobSize\" class=\"gl-mr-3\">{{ blobSize }}</small>\n\n    <gl-badge v-if=\"showLfsBadge\">{{ __('LFS') }}</gl-badge>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./blob_header_filepath.vue?vue&type=template&id=e3787d72\"\nimport script from \"./blob_header_filepath.vue?vue&type=script&lang=js\"\nexport * from \"./blob_header_filepath.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-modal',{attrs:{\"data-testid\":\"test-case-details-modal\",\"modal-id\":_vm.modalId,\"title\":_vm.testCase.classname,\"action-primary\":_vm.$options.modalCloseButton,\"visible\":_vm.visible},on:{\"hidden\":function($event){return _vm.$emit('hidden')}}},[_c('div',{staticClass:\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\"},[_c('strong',{staticClass:\"col-sm-3\"},[_vm._v(_vm._s(_vm.$options.text.name))]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-9\",attrs:{\"data-testid\":\"test-case-name\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.testCase.name)+\"\\n    \")])]),_vm._v(\" \"),(_vm.testCase.file)?_c('div',{staticClass:\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\"},[_c('strong',{staticClass:\"col-sm-3\"},[_vm._v(_vm._s(_vm.$options.text.file))]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-9\",attrs:{\"data-testid\":\"test-case-file\"}},[(_vm.testCase.filePath)?_c('gl-link',{staticClass:\"gl-break-words\",attrs:{\"href\":_vm.testCase.filePath}},[_vm._v(\"\\n        \"+_vm._s(_vm.testCase.file)+\"\\n      \")]):_c('span',[_vm._v(_vm._s(_vm.testCase.file))]),_vm._v(\" \"),_c('modal-copy-button',{staticClass:\"gl-ml-1\",attrs:{\"title\":_vm.$options.text.copyTestName,\"text\":_vm.testCase.file,\"modal-id\":_vm.modalId,\"category\":\"tertiary\"}})],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\"},[_c('strong',{staticClass:\"col-sm-3\"},[_vm._v(_vm._s(_vm.$options.text.duration))]),_vm._v(\" \"),(_vm.testCase.formattedTime)?_c('div',{staticClass:\"col-sm-9\",attrs:{\"data-testid\":\"test-case-duration\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.testCase.formattedTime)+\"\\n    \")]):(_vm.testCase.execution_time)?_c('div',{staticClass:\"col-sm-9\",attrs:{\"data-testid\":\"test-case-duration\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.sprintf('%{value} s', { value: _vm.testCase.execution_time }))+\"\\n    \")]):_vm._e()]),_vm._v(\" \"),(_vm.testCase.recent_failures)?_c('div',{staticClass:\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\"},[_c('strong',{staticClass:\"col-sm-3\"},[_vm._v(_vm._s(_vm.$options.text.history))]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-9\",attrs:{\"data-testid\":\"test-case-recent-failures\"}},[_c('gl-badge',{attrs:{\"variant\":\"warning\"}},[_vm._v(_vm._s(_vm.failureHistoryMessage))])],1)]):_vm._e(),_vm._v(\" \"),(_vm.testCase.attachment_url)?_c('div',{staticClass:\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\"},[_c('strong',{staticClass:\"col-sm-3\"},[_vm._v(_vm._s(_vm.$options.text.attachment))]),_vm._v(\" \"),_c('gl-link',{staticClass:\"col-sm-9\",attrs:{\"href\":_vm.testCase.attachment_url,\"target\":\"_blank\",\"data-testid\":\"test-case-attachment-url\"}},[_c('gl-friendly-wrap',{attrs:{\"symbols\":_vm.$options.wrapSymbols,\"text\":_vm.testCase.attachment_url}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.testCase.system_output)?_c('div',{staticClass:\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\",attrs:{\"data-testid\":\"test-case-trace\"}},[_c('strong',{staticClass:\"col-sm-3 gl-mb-2\"},[_vm._v(_vm._s(_vm.$options.text.trace))]),_vm._v(\" \"),_c('code-block',{staticClass:\"gl-p-4\",attrs:{\"code\":_vm.testCase.system_output}})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./test_case_details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./test_case_details.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlFriendlyWrap, GlLink, GlModal, GlTooltipDirective } from '@gitlab/ui';\nimport ModalCopyButton from '~/vue_shared/components/modal_copy_button.vue';\nimport { __, n__, s__, sprintf } from '~/locale';\nimport CodeBlock from '~/vue_shared/components/code_block.vue';\n\nexport default {\n  name: 'TestCaseDetails',\n  components: {\n    CodeBlock,\n    GlBadge,\n    GlFriendlyWrap,\n    GlLink,\n    GlModal,\n    ModalCopyButton,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    modalId: {\n      type: String,\n      required: true,\n    },\n    testCase: {\n      type: Object,\n      required: false,\n      default: () => {\n        return {};\n      },\n    },\n    visible: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    failureHistoryMessage() {\n      if (!this.hasRecentFailures) {\n        return null;\n      }\n\n      return sprintf(\n        n__(\n          'Reports|Failed %{count} time in %{baseBranch} in the last 14 days',\n          'Reports|Failed %{count} times in %{baseBranch} in the last 14 days',\n          this.recentFailures.count,\n        ),\n        {\n          count: this.recentFailures.count,\n          baseBranch: this.recentFailures.base_branch,\n        },\n      );\n    },\n    hasRecentFailures() {\n      return Boolean(this.recentFailures);\n    },\n    recentFailures() {\n      return this.testCase.recent_failures;\n    },\n  },\n  text: {\n    name: __('Name'),\n    file: __('File'),\n    duration: __('Execution time'),\n    history: __('History'),\n    trace: __('System output'),\n    attachment: s__('TestReports|Attachment'),\n    copyTestName: s__('TestReports|Copy test name to rerun locally'),\n  },\n  modalCloseButton: {\n    text: __('Close'),\n    attributes: { variant: 'confirm' },\n  },\n};\n</script>\n\n<template>\n  <gl-modal\n    data-testid=\"test-case-details-modal\"\n    :modal-id=\"modalId\"\n    :title=\"testCase.classname\"\n    :action-primary=\"$options.modalCloseButton\"\n    :visible=\"visible\"\n    @hidden=\"$emit('hidden')\"\n  >\n    <div class=\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\">\n      <strong class=\"col-sm-3\">{{ $options.text.name }}</strong>\n      <div class=\"col-sm-9\" data-testid=\"test-case-name\">\n        {{ testCase.name }}\n      </div>\n    </div>\n\n    <div v-if=\"testCase.file\" class=\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\">\n      <strong class=\"col-sm-3\">{{ $options.text.file }}</strong>\n      <div class=\"col-sm-9\" data-testid=\"test-case-file\">\n        <gl-link v-if=\"testCase.filePath\" class=\"gl-break-words\" :href=\"testCase.filePath\">\n          {{ testCase.file }}\n        </gl-link>\n        <span v-else>{{ testCase.file }}</span>\n        <modal-copy-button\n          :title=\"$options.text.copyTestName\"\n          :text=\"testCase.file\"\n          :modal-id=\"modalId\"\n          category=\"tertiary\"\n          class=\"gl-ml-1\"\n        />\n      </div>\n    </div>\n\n    <div class=\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\">\n      <strong class=\"col-sm-3\">{{ $options.text.duration }}</strong>\n      <div v-if=\"testCase.formattedTime\" class=\"col-sm-9\" data-testid=\"test-case-duration\">\n        {{ testCase.formattedTime }}\n      </div>\n      <div v-else-if=\"testCase.execution_time\" class=\"col-sm-9\" data-testid=\"test-case-duration\">\n        {{ sprintf('%{value} s', { value: testCase.execution_time }) }}\n      </div>\n    </div>\n\n    <div v-if=\"testCase.recent_failures\" class=\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\">\n      <strong class=\"col-sm-3\">{{ $options.text.history }}</strong>\n      <div class=\"col-sm-9\" data-testid=\"test-case-recent-failures\">\n        <gl-badge variant=\"warning\">{{ failureHistoryMessage }}</gl-badge>\n      </div>\n    </div>\n\n    <div v-if=\"testCase.attachment_url\" class=\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\">\n      <strong class=\"col-sm-3\">{{ $options.text.attachment }}</strong>\n      <gl-link\n        class=\"col-sm-9\"\n        :href=\"testCase.attachment_url\"\n        target=\"_blank\"\n        data-testid=\"test-case-attachment-url\"\n      >\n        <gl-friendly-wrap :symbols=\"$options.wrapSymbols\" :text=\"testCase.attachment_url\" />\n      </gl-link>\n    </div>\n\n    <div\n      v-if=\"testCase.system_output\"\n      class=\"-gl-mx-4 gl-my-3 gl-flex gl-flex-wrap\"\n      data-testid=\"test-case-trace\"\n    >\n      <strong class=\"col-sm-3 gl-mb-2\">{{ $options.text.trace }}</strong>\n      <code-block class=\"gl-p-4\" :code=\"testCase.system_output\" />\n    </div>\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./test_case_details.vue?vue&type=template&id=0d1c415e\"\nimport script from \"./test_case_details.vue?vue&type=script&lang=js\"\nexport * from \"./test_case_details.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { invert } from 'lodash';\n\nexport const FEEDBACK_TYPE_DISMISSAL = 'dismissal';\nexport const FEEDBACK_TYPE_ISSUE = 'issue';\nexport const FEEDBACK_TYPE_MERGE_REQUEST = 'merge_request';\n\n/**\n * Security artifact file types\n */\nexport const REPORT_FILE_TYPES = {\n  ARCHIVE: 'ARCHIVE',\n  TRACE: 'TRACE',\n  METADATA: 'METADATA',\n};\n\n/**\n * Security scan report types, as provided by the backend.\n */\nexport const REPORT_TYPE_SAST = 'sast';\nexport const REPORT_TYPE_SAST_IAC = 'sast_iac';\nexport const REPORT_TYPE_DAST = 'dast';\nexport const REPORT_TYPE_DAST_PROFILES = 'dast_profiles';\nexport const REPORT_TYPE_SECRET_DETECTION = 'secret_detection';\nexport const REPORT_TYPE_DEPENDENCY_SCANNING = 'dependency_scanning';\nexport const REPORT_TYPE_CONTAINER_SCANNING = 'container_scanning';\nexport const REPORT_TYPE_CONTAINER_SCANNING_FOR_REGISTRY = 'container_scanning_for_registry';\nexport const REPORT_TYPE_CLUSTER_IMAGE_SCANNING = 'cluster_image_scanning';\nexport const REPORT_TYPE_COVERAGE_FUZZING = 'coverage_fuzzing';\nexport const REPORT_TYPE_CORPUS_MANAGEMENT = 'corpus_management';\nexport const REPORT_TYPE_API_FUZZING = 'api_fuzzing';\n\n/**\n * SecurityReportTypeEnum values for use with GraphQL.\n *\n * These should correspond to the lowercase security scan report types.\n */\nexport const SECURITY_REPORT_TYPE_ENUM_SAST = 'SAST';\nexport const SECURITY_REPORT_TYPE_ENUM_SECRET_DETECTION = 'SECRET_DETECTION';\n\n/**\n * A mapping from security scan report types to SecurityReportTypeEnum values.\n */\nexport const reportTypeToSecurityReportTypeEnum = {\n  [REPORT_TYPE_SAST]: SECURITY_REPORT_TYPE_ENUM_SAST,\n  [REPORT_TYPE_SECRET_DETECTION]: SECURITY_REPORT_TYPE_ENUM_SECRET_DETECTION,\n};\n\n/**\n * A mapping from SecurityReportTypeEnum values to security scan report types.\n */\nexport const securityReportTypeEnumToReportType = invert(reportTypeToSecurityReportTypeEnum);\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-relative gl-mr-3 gl-rounded-full\",class:{\n    [_vm.backgroundClass]: !_vm.isLoading && _vm.level === 1,\n    'gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center': _vm.level === 1,\n  }},[(_vm.isLoading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"inline\":\"\"}}):[(_vm.level === 1)?[_c('svg',{staticClass:\"gl-absolute\",class:_vm.iconClass,attrs:{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\"}},[_c('circle',{attrs:{\"cx\":\"8\",\"cy\":\"8\",\"r\":\"8\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"gl-absolute gl-h-3 gl-w-3 gl-rounded-full gl-bg-section\"})]:_vm._e(),_vm._v(\" \"),_c('gl-icon',{staticClass:\"gl-relative gl-z-1\",class:_vm.iconClass,attrs:{\"name\":_vm.$options.EXTENSION_ICON_NAMES[_vm.iconName],\"size\":12,\"aria-label\":_vm.iconAriaLabel,\"data-testid\":`status-${_vm.iconName}-icon`}})]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlLoadingIcon, GlIcon } from '@gitlab/ui';\nimport { capitalizeFirstCharacter } from '~/lib/utils/text_utility';\nimport { EXTENSION_ICON_CLASS, EXTENSION_ICON_NAMES } from '../../constants';\n\nexport default {\n  components: {\n    GlLoadingIcon,\n    GlIcon,\n  },\n  props: {\n    level: {\n      type: Number,\n      required: false,\n      default: 1,\n    },\n    name: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    iconName: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    iconAriaLabel() {\n      return `${capitalizeFirstCharacter(this.iconName)} ${this.name}`;\n    },\n    backgroundClass() {\n      return this.$options.EXTENSION_ICON_CLASS[this.iconName]?.backgroundClass;\n    },\n    iconClass() {\n      return this.$options.EXTENSION_ICON_CLASS[this.iconName]?.iconClass;\n    },\n  },\n  EXTENSION_ICON_NAMES,\n  EXTENSION_ICON_CLASS,\n};\n</script>\n\n<template>\n  <div\n    :class=\"{\n      [backgroundClass]: !isLoading && level === 1,\n      'gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center': level === 1,\n    }\"\n    class=\"gl-relative gl-mr-3 gl-rounded-full\"\n  >\n    <gl-loading-icon v-if=\"isLoading\" size=\"sm\" inline />\n    <template v-else>\n      <template v-if=\"level === 1\">\n        <svg class=\"gl-absolute\" :class=\"iconClass\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\">\n          <circle cx=\"8\" cy=\"8\" r=\"8\" />\n        </svg>\n        <div class=\"gl-absolute gl-h-3 gl-w-3 gl-rounded-full gl-bg-section\"></div>\n      </template>\n      <gl-icon\n        :name=\"$options.EXTENSION_ICON_NAMES[iconName]\"\n        :size=\"12\"\n        :aria-label=\"iconAriaLabel\"\n        :data-testid=\"`status-${iconName}-icon`\"\n        class=\"gl-relative gl-z-1\"\n        :class=\"iconClass\"\n      />\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./status_icon.vue?vue&type=template&id=3883cc8c\"\nimport script from \"./status_icon.vue?vue&type=script&lang=js\"\nexport * from \"./status_icon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseFlatten = require('./_baseFlatten');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[_c('gl-button',{ref:\"popoverTrigger\",class:_vm.triggerClass,attrs:{\"variant\":\"link\",\"icon\":_vm.icon,\"aria-label\":_vm.ariaLabel}}),_vm._v(\" \"),_c('gl-popover',_vm._b({attrs:{\"target\":_vm.targetFn},scopedSlots:_vm._u([(_vm.options.title)?{key:\"title\",fn:function(){return [_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.options.title),expression:\"options.title\"}]})]},proxy:true}:null,{key:\"default\",fn:function(){return [_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.options.content),expression:\"options.content\"}]})]},proxy:true},_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}})],null,true)},'gl-popover',_vm.options,false))],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./help_popover.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./help_popover.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlPopover } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\n\n/**\n * Render a button with a question mark icon\n * On hover shows a popover. The popover will be dismissed on mouseleave\n */\nexport default {\n  name: 'HelpPopover',\n  components: {\n    GlButton,\n    GlPopover,\n  },\n  directives: {\n    SafeHtml,\n  },\n  props: {\n    options: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    icon: {\n      type: String,\n      required: false,\n      default: 'question-o',\n    },\n    triggerClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: '',\n    },\n    ariaLabel: {\n      type: String,\n      required: false,\n      default: __('Help'),\n    },\n  },\n  methods: {\n    targetFn() {\n      return this.$refs.popoverTrigger?.$el;\n    },\n  },\n};\n</script>\n<template>\n  <span>\n    <gl-button\n      ref=\"popoverTrigger\"\n      :class=\"triggerClass\"\n      variant=\"link\"\n      :icon=\"icon\"\n      :aria-label=\"ariaLabel\"\n    />\n    <gl-popover :target=\"targetFn\" v-bind=\"options\">\n      <template v-if=\"options.title\" #title>\n        <span v-safe-html=\"options.title\"></span>\n      </template>\n      <template #default>\n        <div v-safe-html=\"options.content\"></div>\n      </template>\n      <!-- eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots -->\n      <template v-for=\"slot in Object.keys($slots)\" #[slot]>\n        <slot :name=\"slot\"></slot>\n      </template>\n    </gl-popover>\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./help_popover.vue?vue&type=template&id=7a170f82\"\nimport script from \"./help_popover.vue?vue&type=script&lang=js\"\nexport * from \"./help_popover.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';\nimport { __, s__ } from '~/locale';\n\nexport const TYPE_ACTIVITY = 'activity';\nexport const TYPE_COMMENT = 'comment';\nexport const TYPE_DESIGN = 'design';\nexport const TYPE_SNIPPET = 'snippet';\n\nexport const BULK_IMPORT_STATIC_ITEMS = {\n  badges: __('Badge'),\n  boards: s__('Boards|Board'),\n  epics: __('Epic'),\n  issues: __('Issue'),\n  labels: __('Label'),\n  iterations: __('Iteration'),\n  iterations_cadences: s__('Iterations|Iteration cadence'),\n  members: __('Member'),\n  merge_requests: __('Merge request'),\n  milestones: __('Milestone'),\n  namespace_settings: s__('GroupSettings|Namespace setting'),\n  project: __('Project'),\n  self: __('Group'),\n  auto_devops: __('Auto DevOps'),\n  ci_pipelines: __('CI pipeline'),\n  container_expiration_policy: __('Container expiration policy'),\n  design: __('Design'),\n  project_feature: __('Project feature'),\n  protected_branches: __('Protected Branch'),\n  push_rule: __('Push rule'),\n  repository: __('Repository'),\n  service_desk_setting: __('Service Desk'),\n  vulnerabilities: __('Vulnerabilities'),\n  commit_notes: __('Commit notes'),\n};\n\nconst STATISTIC_ITEMS = {\n  diff_note: __('Diff notes'),\n  issue: __('Issues'),\n  issue_attachment: s__('GithubImporter|Issue attachments'),\n  issue_event: __('Issue events'),\n  label: __('Labels'),\n  lfs_object: __('LFS objects'),\n  merge_request_attachment: s__('GithubImporter|PR attachments'),\n  milestone: __('Milestones'),\n  note: __('Notes'),\n  note_attachment: s__('GithubImporter|Note attachments'),\n  protected_branch: __('Protected branches'),\n  collaborator: s__('GithubImporter|Collaborators'),\n  pull_request: s__('GithubImporter|Pull requests'),\n  pull_request_merged_by: s__('GithubImporter|PR mergers'),\n  pull_request_review: s__('GithubImporter|PR reviews'),\n  pull_request_review_request: s__('GithubImporter|PR reviewers'),\n  release: __('Releases'),\n  release_attachment: s__('GithubImporter|Release attachments'),\n};\n\n// support both camel case and snake case versions\nObject.assign(STATISTIC_ITEMS, convertObjectPropsToCamelCase(STATISTIC_ITEMS));\n\nexport { STATISTIC_ITEMS };\n","var baseGet = require('./_baseGet'),\n    baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canViewFalsePositive)?_c('gl-alert',{attrs:{\"title\":_vm.$options.i18n.title,\"dismissible\":false,\"variant\":\"warning\",\"data-testid\":\"false-positive-alert\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.message},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.DOC_PATH_VULNERABILITY_DETAILS,\"target\":\"_blank\"}},[_vm._v(\"\\n        \"+_vm._s(content)+\"\\n      \")])]}}],null,false,1567235034)})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./false_positive_alert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./false_positive_alert.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert, GlSprintf, GlLink } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { DOC_PATH_VULNERABILITY_DETAILS } from 'ee/security_dashboard/constants';\n\nexport default {\n  components: {\n    GlAlert,\n    GlSprintf,\n    GlLink,\n  },\n  inject: {\n    canViewFalsePositive: {\n      default: false,\n    },\n  },\n  i18n: {\n    title: s__('Vulnerability|False positive detected'),\n    message: s__(\n      'Vulnerability|The scanner determined this vulnerability to be a false positive. Verify the evaluation before changing its status. %{linkStart}Learn more about false positive detection.%{linkEnd}',\n    ),\n  },\n  DOC_PATH_VULNERABILITY_DETAILS,\n};\n</script>\n\n<template>\n  <gl-alert\n    v-if=\"canViewFalsePositive\"\n    :title=\"$options.i18n.title\"\n    :dismissible=\"false\"\n    variant=\"warning\"\n    data-testid=\"false-positive-alert\"\n  >\n    <gl-sprintf :message=\"$options.i18n.message\">\n      <template #link=\"{ content }\">\n        <gl-link :href=\"$options.DOC_PATH_VULNERABILITY_DETAILS\" target=\"_blank\">\n          {{ content }}\n        </gl-link>\n      </template>\n    </gl-sprintf>\n  </gl-alert>\n</template>\n","import { render, staticRenderFns } from \"./false_positive_alert.vue?vue&type=template&id=4ab92cb4\"\nimport script from \"./false_positive_alert.vue?vue&type=script&lang=js\"\nexport * from \"./false_positive_alert.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSecretDetection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ConfigureSecretDetectionInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSecretDetection\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"successPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":153}};\n    doc.loc.source = {\"body\":\"mutation configureSecretDetection($input: ConfigureSecretDetectionInput!) {\\n  configureSecretDetection(input: $input) {\\n    successPath\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"configureSecretDetection\"] = oneQuery(doc, \"configureSecretDetection\");\n        \n","module.exports = {\n  'ary': require('../ary'),\n  'assign': require('../_baseAssign'),\n  'clone': require('../clone'),\n  'curry': require('../curry'),\n  'forEach': require('../_arrayEach'),\n  'isArray': require('../isArray'),\n  'isError': require('../isError'),\n  'isFunction': require('../isFunction'),\n  'isWeakMap': require('../isWeakMap'),\n  'iteratee': require('../iteratee'),\n  'keys': require('../_baseKeys'),\n  'rearg': require('../rearg'),\n  'toInteger': require('../toInteger'),\n  'toPath': require('../toPath')\n};\n","import { translate } from '../../../utils/i18n';\nimport { progressBarVariantOptions } from '../../../utils/constants';\nimport { toFloat } from '../../../utils/number_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst backgroundClasses = {\n  [progressBarVariantOptions.primary]: 'gl-progress-bar-primary',\n  [progressBarVariantOptions.success]: 'gl-progress-bar-success',\n  [progressBarVariantOptions.danger]: 'gl-progress-bar-danger',\n  [progressBarVariantOptions.warning]: 'gl-progress-bar-warning'\n};\nvar script = {\n  name: 'GlProgressBar',\n  props: {\n    ariaLabel: {\n      type: String,\n      required: false,\n      default: translate('GlProgressBar.ariaLabel', 'Progress bar')\n    },\n    value: {\n      type: [Number, String],\n      required: false,\n      default: 0\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: 'primary',\n      validator: value => Object.keys(progressBarVariantOptions).includes(value)\n    },\n    max: {\n      type: [Number, String],\n      required: false,\n      default: 100\n    },\n    height: {\n      type: String,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    progressHeight() {\n      return {\n        height: this.height\n      };\n    },\n    computedValue() {\n      return toFloat(this.value, 0);\n    },\n    computedMax() {\n      const max = toFloat(this.max, 100);\n      return max > 0 ? max : 100;\n    },\n    progressBarStyles() {\n      return {\n        transform: `scaleX(${this.computedValue / this.computedMax})`\n      };\n    },\n    classes() {\n      return ['gl-progress', backgroundClasses[this.variant]];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-progress-bar progress\",style:(_vm.progressHeight)},[_c('div',{class:_vm.classes,style:(_vm.progressBarStyles),attrs:{\"role\":\"progressbar\",\"aria-label\":_vm.ariaLabel,\"aria-valuemin\":\"0\",\"aria-valuemax\":String(_vm.computedMax),\"aria-valuenow\":_vm.computedValue}})])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"report-block-list-icon\",class:{\n    failed: _vm.isStatusFailed,\n    success: _vm.isStatusSuccess,\n    neutral: _vm.isStatusNeutral,\n  }},[_c('gl-icon',{staticClass:\"gl-mb-1\",attrs:{\"name\":_vm.iconName,\"size\":_vm.statusIconSize,\"data-testid\":`status-${_vm.status}-icon`}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./license_status_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./license_status_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport { STATUS_FAILED, STATUS_NEUTRAL, STATUS_SUCCESS } from '~/ci/reports/constants';\n\nexport default {\n  name: 'LicenseStatusIcon',\n  components: {\n    GlIcon,\n  },\n  props: {\n    status: {\n      type: String,\n      required: true,\n    },\n    statusIconSize: {\n      type: Number,\n      required: false,\n      default: 12,\n    },\n  },\n  computed: {\n    iconName() {\n      if (this.isStatusFailed) {\n        return 'status-failed';\n      }\n      if (this.isStatusSuccess) {\n        return 'status-success';\n      }\n\n      return 'status-alert';\n    },\n    isStatusFailed() {\n      return this.status === STATUS_FAILED;\n    },\n    isStatusSuccess() {\n      return this.status === STATUS_SUCCESS;\n    },\n    isStatusNeutral() {\n      return this.status === STATUS_NEUTRAL;\n    },\n  },\n};\n</script>\n<template>\n  <div\n    :class=\"{\n      failed: isStatusFailed,\n      success: isStatusSuccess,\n      neutral: isStatusNeutral,\n    }\"\n    class=\"report-block-list-icon\"\n  >\n    <gl-icon\n      class=\"gl-mb-1\"\n      :name=\"iconName\"\n      :size=\"statusIconSize\"\n      :data-testid=\"`status-${status}-icon`\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./license_status_icon.vue?vue&type=template&id=6ea5e745\"\nimport script from \"./license_status_icon.vue?vue&type=script&lang=js\"\nexport * from \"./license_status_icon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issue_status_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issue_status_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport { STATUS_FAILED, STATUS_NEUTRAL, STATUS_SUCCESS } from '../constants';\n\nexport default {\n  name: 'IssueStatusIcon',\n  components: {\n    GlIcon,\n  },\n  props: {\n    status: {\n      type: String,\n      required: true,\n    },\n    statusIconSize: {\n      type: Number,\n      required: false,\n      default: 24,\n    },\n  },\n  computed: {\n    iconName() {\n      if (this.isStatusFailed) {\n        return 'status_failed_borderless';\n      }\n      if (this.isStatusSuccess) {\n        return 'status_success_borderless';\n      }\n\n      return 'dash';\n    },\n    isStatusFailed() {\n      return this.status === STATUS_FAILED;\n    },\n    isStatusSuccess() {\n      return this.status === STATUS_SUCCESS;\n    },\n    isStatusNeutral() {\n      return this.status === STATUS_NEUTRAL;\n    },\n  },\n};\n</script>\n<template>\n  <div\n    :class=\"{\n      failed: isStatusFailed,\n      success: isStatusSuccess,\n      neutral: isStatusNeutral,\n    }\"\n    class=\"report-block-list-icon\"\n  >\n    <gl-icon :name=\"iconName\" :size=\"statusIconSize\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./issue_status_icon.vue?vue&type=template&id=3d10e10c\"\nimport script from \"./issue_status_icon.vue?vue&type=script&lang=js\"\nexport * from \"./issue_status_icon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"report-block-list-icon\",class:{\n    failed: _vm.isStatusFailed,\n    success: _vm.isStatusSuccess,\n    neutral: _vm.isStatusNeutral,\n  }},[_c('gl-icon',{attrs:{\"name\":_vm.iconName,\"size\":_vm.statusIconSize}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import IssueStatusIcon from '~/ci/reports/components/issue_status_icon.vue';\n\nexport const components = {\n  CodequalityIssueBody: () => import('../codequality_report/components/codequality_issue_body.vue'),\n};\n\nexport const componentNames = {\n  CodequalityIssueBody: 'CodequalityIssueBody',\n};\n\nexport const iconComponents = {\n  IssueStatusIcon,\n};\n\nexport const iconComponentNames = {\n  IssueStatusIcon: IssueStatusIcon.name,\n};\n","import LicenseStatusIcon from 'ee/vue_shared/license_compliance/components/license_status_icon.vue';\nimport {\n  components as componentsCE,\n  componentNames as componentNamesCE,\n  iconComponents as iconComponentsCE,\n  iconComponentNames as iconComponentNamesCE,\n} from '~/ci/reports/components/issue_body';\n\nexport const components = {\n  ...componentsCE,\n  LicenseIssueBody: () =>\n    import('ee/vue_shared/license_compliance/components/license_issue_body.vue'),\n  BlockingMergeRequestsBody: () =>\n    import(\n      'ee/vue_merge_request_widget/components/blocking_merge_requests/blocking_merge_request_body.vue'\n    ),\n};\n\nexport const componentNames = {\n  ...componentNamesCE,\n  LicenseIssueBody: 'LicenseIssueBody',\n  BlockingMergeRequestsBody: 'BlockingMergeRequestsBody',\n};\n\nexport const iconComponents = {\n  ...iconComponentsCE,\n  LicenseStatusIcon,\n};\n\nexport const iconComponentNames = {\n  ...iconComponentNamesCE,\n  LicenseStatusIcon: LicenseStatusIcon.name,\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"js-pipeline-graph\"},[_c('div',{ref:\"mainPipelineContainer\",staticClass:\"pipeline-graph gl-position-relative gl-flex gl-whitespace-nowrap gl-rounded-lg\",class:{\n      'pipeline-graph-container gl-pipeline-min-h gl-mt-3 gl-items-start gl-overflow-auto gl-bg-subtle gl-pb-8 gl-pt-3':\n        !_vm.isLinkedPipeline,\n      'gl-bg-gray-50 sm:gl-ml-5': _vm.isLinkedPipeline,\n    },attrs:{\"data-testid\":\"pipeline-container\"}},[_c('linked-graph-wrapper',{scopedSlots:_vm._u([{key:\"upstream\",fn:function(){return [(_vm.showUpstreamPipelines)?_c('linked-pipelines-column',{attrs:{\"config-paths\":_vm.configPaths,\"linked-pipelines\":_vm.upstreamPipelines,\"column-title\":_vm.__('Upstream'),\"show-links\":_vm.showJobLinks,\"skip-retry-modal\":_vm.skipRetryModal,\"type\":_vm.$options.pipelineTypeConstants.UPSTREAM,\"view-type\":_vm.viewType},on:{\"error\":_vm.onError,\"setSkipRetryModal\":function($event){return _vm.$emit('setSkipRetryModal')}}}):_vm._e()]},proxy:true},{key:\"main\",fn:function(){return [_c('div',{ref:_vm.containerId,staticClass:\"pipeline-links-container\",attrs:{\"id\":_vm.containerId}},[_c('links-layer',{attrs:{\"pipeline-data\":_vm.layout,\"pipeline-id\":_vm.pipeline.id,\"container-id\":_vm.containerId,\"container-measurements\":_vm.measurements,\"highlighted-job\":_vm.hoveredJobName,\"links-data\":_vm.linksData,\"metrics-config\":_vm.metricsConfig,\"show-links\":_vm.showJobLinks,\"view-type\":_vm.viewType},on:{\"error\":_vm.onError,\"highlightedJobsChange\":_vm.updateHighlightedJobs}},_vm._l((_vm.layout),function(column){return _c('stage-column-component',{key:column.id || column.name,attrs:{\"name\":column.name,\"groups\":column.groups,\"action\":column.status.action,\"highlighted-jobs\":_vm.highlightedJobs,\"is-stage-view\":_vm.isStageView,\"job-hovered\":_vm.hoveredJobName,\"skip-retry-modal\":_vm.skipRetryModal,\"source-job-hovered\":_vm.hoveredSourceJobName,\"pipeline-expanded\":_vm.pipelineExpanded,\"pipeline-id\":_vm.pipeline.id,\"user-permissions\":_vm.pipeline.userPermissions},on:{\"refreshPipelineGraph\":function($event){return _vm.$emit('refreshPipelineGraph')},\"setSkipRetryModal\":function($event){return _vm.$emit('setSkipRetryModal')},\"jobHover\":_vm.setJob,\"updateMeasurements\":_vm.getMeasurements}})}),1)],1)]},proxy:true},{key:\"downstream\",fn:function(){return [(_vm.showDownstreamPipelines)?_c('linked-pipelines-column',{staticClass:\"sm:gl-ml-3\",attrs:{\"config-paths\":_vm.configPaths,\"linked-pipelines\":_vm.downstreamPipelines,\"column-title\":_vm.__('Downstream'),\"skip-retry-modal\":_vm.skipRetryModal,\"show-links\":_vm.showJobLinks,\"type\":_vm.$options.pipelineTypeConstants.DOWNSTREAM,\"view-type\":_vm.viewType,\"data-testid\":\"downstream-pipelines\"},on:{\"downstreamHovered\":_vm.setSourceJob,\"pipelineExpandToggle\":_vm.togglePipelineExpanded,\"refreshPipelineGraph\":function($event){return _vm.$emit('refreshPipelineGraph')},\"setSkipRetryModal\":function($event){return _vm.$emit('setSkipRetryModal')},\"scrollContainer\":_vm.slidePipelineContainer,\"error\":_vm.onError}}):_vm._e()]},proxy:true}])})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./linked_graph_wrapper.vue?vue&type=template&id=2eee1f50\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-w-full gl-flex-wrap sm:gl-flex-nowrap\"},[_vm._t(\"upstream\"),_vm._v(\" \"),_vm._t(\"main\"),_vm._v(\" \"),_vm._t(\"downstream\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./linked_pipeline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./linked_pipeline.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlBadge,\n  GlButton,\n  GlLink,\n  GlLoadingIcon,\n  GlTooltip,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport { TYPENAME_CI_PIPELINE } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport { BV_HIDE_TOOLTIP } from '~/lib/utils/constants';\nimport { __, sprintf } from '~/locale';\nimport CancelPipelineMutation from '~/ci/pipeline_details/graphql/mutations/cancel_pipeline.mutation.graphql';\nimport RetryPipelineMutation from '~/ci/pipeline_details/graphql/mutations/retry_pipeline.mutation.graphql';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport { ACTION_FAILURE, DOWNSTREAM, UPSTREAM } from '../constants';\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    CiIcon,\n    GlBadge,\n    GlButton,\n    GlLink,\n    GlLoadingIcon,\n    GlTooltip,\n  },\n  styles: {\n    actionSizeClasses: ['gl-h-7 gl-w-7'],\n    flatLeftBorder: ['!gl-rounded-bl-none', '!gl-rounded-tl-none'],\n    flatRightBorder: ['!gl-rounded-br-none', '!gl-rounded-tr-none'],\n  },\n  props: {\n    columnTitle: {\n      type: String,\n      required: true,\n    },\n    expanded: {\n      type: Boolean,\n      required: true,\n    },\n    isLoading: {\n      type: Boolean,\n      required: true,\n    },\n    pipeline: {\n      type: Object,\n      required: true,\n    },\n    type: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      hasActionTooltip: false,\n      isActionLoading: false,\n      isExpandBtnFocus: false,\n    };\n  },\n  computed: {\n    action() {\n      if (this.isDownstream) {\n        if (this.isCancelable) {\n          return {\n            icon: 'cancel',\n            method: this.cancelPipeline,\n            ariaLabel: __('Cancel downstream pipeline'),\n          };\n        }\n        if (this.isRetryable) {\n          return {\n            icon: 'retry',\n            method: this.retryPipeline,\n            ariaLabel: __('Retry downstream pipeline'),\n          };\n        }\n      }\n\n      return {};\n    },\n    buttonBorderClasses() {\n      return this.isUpstream\n        ? ['!gl-border-r-0', ...this.$options.styles.flatRightBorder]\n        : ['!gl-border-l-0', ...this.$options.styles.flatLeftBorder];\n    },\n    buttonShadowClass() {\n      return this.isExpandBtnFocus ? '' : '!gl-shadow-none';\n    },\n    buttonId() {\n      return `js-linked-pipeline-${this.pipeline.id}`;\n    },\n    cardClasses() {\n      return this.isDownstream\n        ? this.$options.styles.flatRightBorder\n        : this.$options.styles.flatLeftBorder;\n    },\n    expandedIcon() {\n      if (this.isUpstream) {\n        return this.expanded ? 'chevron-lg-right' : 'chevron-lg-left';\n      }\n      return this.expanded ? 'chevron-lg-left' : 'chevron-lg-right';\n    },\n    expandBtnText() {\n      return this.expanded ? __('Collapse jobs') : __('Expand jobs');\n    },\n    childPipeline() {\n      return this.isDownstream && this.isSameProject;\n    },\n    downstreamTitle() {\n      return this.childPipeline ? this.sourceJobName : this.pipeline.project.name;\n    },\n    graphqlPipelineId() {\n      return convertToGraphQLId(TYPENAME_CI_PIPELINE, this.pipeline.id);\n    },\n    hasUpdatePipelinePermissions() {\n      return Boolean(this.pipeline?.userPermissions?.updatePipeline);\n    },\n    isCancelable() {\n      return Boolean(this.pipeline?.cancelable && this.hasUpdatePipelinePermissions);\n    },\n    isDownstream() {\n      return this.type === DOWNSTREAM;\n    },\n    isRetryable() {\n      return Boolean(this.pipeline?.retryable && this.hasUpdatePipelinePermissions);\n    },\n    isSameProject() {\n      return !this.pipeline.multiproject;\n    },\n    isUpstream() {\n      return this.type === UPSTREAM;\n    },\n    label() {\n      if (this.parentPipeline) {\n        return __('Parent');\n      }\n      if (this.childPipeline) {\n        return __('Child');\n      }\n      return __('Multi-project');\n    },\n    parentPipeline() {\n      return this.isUpstream && this.isSameProject;\n    },\n    pipelineIsLoading() {\n      return Boolean(this.isLoading || this.pipeline.isLoading);\n    },\n    pipelineStatus() {\n      return this.pipeline.status;\n    },\n    projectName() {\n      return this.pipeline.project.name;\n    },\n    showAction() {\n      return Boolean(this.action?.method && this.action?.icon && this.action?.ariaLabel);\n    },\n    showCardTooltip() {\n      return !this.hasActionTooltip && !this.isExpandBtnFocus;\n    },\n    sourceJobName() {\n      return this.pipeline.sourceJob?.name ?? '';\n    },\n    sourceJobInfo() {\n      return this.isDownstream ? sprintf(__('Created by %{job}'), { job: this.sourceJobName }) : '';\n    },\n    cardTooltipText() {\n      return `${this.downstreamTitle} #${this.pipeline.id} - ${this.pipelineStatus.label} -\n      ${this.sourceJobInfo}`;\n    },\n  },\n  methods: {\n    cancelPipeline() {\n      this.executePipelineAction(CancelPipelineMutation);\n    },\n    async executePipelineAction(mutation) {\n      try {\n        this.isActionLoading = true;\n\n        await this.$apollo.mutate({\n          mutation,\n          variables: {\n            id: this.graphqlPipelineId,\n          },\n        });\n        this.$emit('refreshPipelineGraph');\n      } catch {\n        this.$emit('error', { type: ACTION_FAILURE });\n      } finally {\n        this.isActionLoading = false;\n      }\n    },\n    hideTooltips() {\n      this.$root.$emit(BV_HIDE_TOOLTIP);\n    },\n    onClickLinkedPipeline() {\n      this.hideTooltips();\n      this.$emit('pipelineClicked', this.$refs.linkedPipeline);\n      this.$emit('pipelineExpandToggle', this.sourceJobName, !this.expanded);\n    },\n    onDownstreamHovered() {\n      this.$emit('downstreamHovered', this.sourceJobName);\n    },\n    onDownstreamHoverLeave() {\n      this.$emit('downstreamHovered', '');\n    },\n    retryPipeline() {\n      this.executePipelineAction(RetryPipelineMutation);\n    },\n    setActionTooltip(flag) {\n      this.hasActionTooltip = flag;\n    },\n    setExpandBtnActiveState(flag) {\n      this.isExpandBtnFocus = flag;\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    ref=\"linkedPipeline\"\n    class=\"linked-pipeline-container !gl-flex gl-h-full gl-w-full sm:gl-w-auto\"\n    :class=\"{\n      'gl-flex-row-reverse': isUpstream,\n      'gl-flex-row': !isUpstream,\n    }\"\n    data-testid=\"linked-pipeline-container\"\n    :aria-expanded=\"expanded\"\n    @mouseover=\"onDownstreamHovered\"\n    @mouseleave=\"onDownstreamHoverLeave\"\n  >\n    <gl-tooltip v-if=\"showCardTooltip\" :target=\"() => $refs.linkedPipeline\">\n      {{ cardTooltipText }}\n    </gl-tooltip>\n    <div\n      class=\"gl-border gl-w-full gl-rounded-lg gl-border-l-section gl-bg-section gl-p-3\"\n      :class=\"cardClasses\"\n    >\n      <div class=\"gl-flex gl-gap-x-3\">\n        <ci-icon\n          v-if=\"!pipelineIsLoading\"\n          :status=\"pipelineStatus\"\n          :use-link=\"false\"\n          class=\"gl-self-start\"\n        />\n        <div v-else class=\"gl-pr-3\"><gl-loading-icon size=\"sm\" inline /></div>\n        <div class=\"gl-downstream-pipeline-job-width gl-flex gl-flex-col gl-leading-normal\">\n          <span class=\"gl-truncate\" data-testid=\"downstream-title-content\">\n            {{ downstreamTitle }}\n          </span>\n          <div class=\"-gl-m-2 gl-truncate gl-p-2\">\n            <gl-link class=\"gl-text-sm\" :href=\"pipeline.path\" data-testid=\"pipelineLink\"\n              >#{{ pipeline.id }}</gl-link\n            >\n          </div>\n        </div>\n        <gl-button\n          v-if=\"showAction\"\n          v-gl-tooltip\n          :title=\"action.ariaLabel\"\n          :loading=\"isActionLoading\"\n          :icon=\"action.icon\"\n          class=\"!gl-rounded-full\"\n          :class=\"$options.styles.actionSizeClasses\"\n          :aria-label=\"action.ariaLabel\"\n          @click=\"action.method\"\n          @mouseover=\"setActionTooltip(true)\"\n          @mouseout=\"setActionTooltip(false)\"\n        />\n        <div v-else :class=\"$options.styles.actionSizeClasses\"></div>\n      </div>\n      <div class=\"gl-ml-7 gl-pt-2\">\n        <gl-badge variant=\"info\" data-testid=\"downstream-pipeline-label\">\n          {{ label }}\n        </gl-badge>\n      </div>\n    </div>\n    <div class=\"gl-flex\">\n      <gl-button\n        :id=\"buttonId\"\n        v-gl-tooltip\n        :title=\"expandBtnText\"\n        class=\"!gl-border !gl-rounded-lg !gl-bg-section\"\n        :class=\"[`js-pipeline-expand-${pipeline.id}`, buttonBorderClasses, buttonShadowClass]\"\n        :icon=\"expandedIcon\"\n        :aria-label=\"expandBtnText\"\n        data-testid=\"expand-pipeline-button\"\n        @mouseover=\"setExpandBtnActiveState(true)\"\n        @mouseout=\"setExpandBtnActiveState(false)\"\n        @focus=\"setExpandBtnActiveState(true)\"\n        @blur=\"setExpandBtnActiveState(false)\"\n        @click=\"onClickLinkedPipeline\"\n      />\n    </div>\n  </div>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./linked_pipelines_column.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./linked_pipelines_column.vue?vue&type=script&lang=js\"","<script>\nimport getPipelineDetails from 'shared_queries/pipelines/get_pipeline_details.query.graphql';\nimport { reportToSentry } from '~/ci/utils';\nimport { LOAD_FAILURE } from '../../constants';\nimport { ONE_COL_WIDTH, UPSTREAM, LAYER_VIEW, STAGE_VIEW } from '../constants';\nimport {\n  calculatePipelineLayersInfo,\n  getQueryHeaders,\n  serializeLoadErrors,\n  toggleQueryPollingByVisibility,\n  unwrapPipelineData,\n  validateConfigPaths,\n} from '../utils';\nimport LinkedPipeline from './linked_pipeline.vue';\n\nexport default {\n  components: {\n    LinkedPipeline,\n    PipelineGraph: () => import('./graph_component.vue'),\n  },\n  props: {\n    columnTitle: {\n      type: String,\n      required: true,\n    },\n    configPaths: {\n      type: Object,\n      required: true,\n      validator: validateConfigPaths,\n    },\n    linkedPipelines: {\n      type: Array,\n      required: true,\n    },\n    showLinks: {\n      type: Boolean,\n      required: true,\n    },\n    skipRetryModal: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    type: {\n      type: String,\n      required: true,\n    },\n    viewType: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      currentPipeline: null,\n      loadingPipelineId: null,\n      pipelineLayers: {},\n      pipelineExpanded: false,\n    };\n  },\n  titleClasses: ['gl-font-bold', 'gl-pipeline-job-width', 'gl-truncate', 'gl-leading-36'],\n  minWidth: `${ONE_COL_WIDTH}px`,\n  computed: {\n    columnClass() {\n      const positionValues = {\n        right: 'gl-mx-5',\n        left: 'gl-mx-4 gl-basis-full',\n      };\n\n      return `graph-position-${this.graphPosition} ${positionValues[this.graphPosition]}`;\n    },\n    computedTitleClasses() {\n      const positionalClasses = this.isUpstream ? ['gl-w-full', 'gl-linked-pipeline-padding'] : [];\n\n      return [...this.$options.titleClasses, ...positionalClasses];\n    },\n    graphPosition() {\n      return this.isUpstream ? 'left' : 'right';\n    },\n    graphViewType() {\n      return this.currentPipeline?.usesNeeds ? this.viewType : STAGE_VIEW;\n    },\n    isUpstream() {\n      return this.type === UPSTREAM;\n    },\n    minWidth() {\n      return this.isUpstream ? 0 : this.$options.minWidth;\n    },\n  },\n  methods: {\n    getPipelineData(pipeline) {\n      const projectPath = pipeline.project.fullPath;\n\n      this.$apollo.addSmartQuery('currentPipeline', {\n        query: getPipelineDetails,\n        pollInterval: 10000,\n        context() {\n          return getQueryHeaders(this.configPaths.graphqlResourceEtag);\n        },\n        variables() {\n          return {\n            projectPath,\n            iid: pipeline.iid,\n          };\n        },\n        update(data) {\n          /*\n            This check prevents the pipeline from being overwritten\n            when a poll times out and the data returned is empty.\n            This can be removed once the timeout behavior is updated.\n            See: https://gitlab.com/gitlab-org/gitlab/-/issues/323213.\n          */\n\n          if (!data?.project?.pipeline) {\n            return this.currentPipeline;\n          }\n\n          return unwrapPipelineData(projectPath, JSON.parse(JSON.stringify(data)));\n        },\n        result() {\n          this.loadingPipelineId = null;\n          this.$emit('scrollContainer');\n        },\n        error(err) {\n          this.$emit('error', { type: LOAD_FAILURE, skipSentry: true });\n\n          reportToSentry(\n            'linked_pipelines_column',\n            `error type: ${LOAD_FAILURE}, error: ${serializeLoadErrors(err)}`,\n          );\n        },\n      });\n\n      toggleQueryPollingByVisibility(this.$apollo.queries.currentPipeline);\n    },\n    getPipelineLayers(id) {\n      if (this.viewType === LAYER_VIEW && !this.pipelineLayers[id]) {\n        this.pipelineLayers[id] = calculatePipelineLayersInfo(\n          this.currentPipeline,\n          this.$options.name,\n          this.configPaths.metricsPath,\n        );\n      }\n\n      return this.pipelineLayers[id];\n    },\n    isExpanded(id) {\n      return Boolean(this.currentPipeline?.id && id === this.currentPipeline.id);\n    },\n    isLoadingPipeline(id) {\n      return this.loadingPipelineId === id;\n    },\n    onPipelineClick(pipeline) {\n      /* If the clicked pipeline has been expanded already, close it, clear, exit */\n      if (this.currentPipeline?.id === pipeline.id) {\n        this.pipelineExpanded = false;\n        this.currentPipeline = null;\n        return;\n      }\n\n      /* Set the loading id */\n      this.loadingPipelineId = pipeline.id;\n\n      /*\n        Expand the pipeline.\n        If this was not a toggle close action, and\n        it was already showing a different pipeline, then\n        this will be a no-op, but that doesn't matter.\n      */\n      this.pipelineExpanded = true;\n\n      this.getPipelineData(pipeline);\n    },\n    onDownstreamHovered(jobName) {\n      this.$emit('downstreamHovered', jobName);\n    },\n    onPipelineExpandToggle(jobName, expanded) {\n      // Highlighting only applies to downstream pipelines\n      if (this.isUpstream) {\n        return;\n      }\n\n      this.$emit('pipelineExpandToggle', jobName, expanded);\n    },\n    showContainer(id) {\n      return this.isExpanded(id) || this.isLoadingPipeline(id);\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex gl-w-full sm:gl-w-auto\">\n    <div :class=\"columnClass\" class=\"linked-pipelines-column\">\n      <div data-testid=\"linked-column-title\" :class=\"computedTitleClasses\">\n        {{ columnTitle }}\n      </div>\n      <ul class=\"gl-pl-0\">\n        <li\n          v-for=\"pipeline in linkedPipelines\"\n          :key=\"pipeline.id\"\n          class=\"gl-mb-6 gl-flex gl-flex-wrap sm:gl-flex-nowrap\"\n        >\n          <linked-pipeline\n            class=\"gl-inline-block\"\n            :is-loading=\"isLoadingPipeline(pipeline.id)\"\n            :pipeline=\"pipeline\"\n            :column-title=\"columnTitle\"\n            :type=\"type\"\n            :expanded=\"isExpanded(pipeline.id)\"\n            @downstreamHovered=\"onDownstreamHovered\"\n            @pipelineClicked=\"onPipelineClick(pipeline)\"\n            @pipelineExpandToggle=\"onPipelineExpandToggle\"\n            @refreshPipelineGraph=\"$emit('refreshPipelineGraph')\"\n          />\n          <div\n            v-if=\"showContainer(pipeline.id)\"\n            :style=\"{ minWidth }\"\n            class=\"pipeline-show-container gl-inline-block\"\n          >\n            <pipeline-graph\n              v-if=\"isExpanded(pipeline.id)\"\n              :type=\"type\"\n              class=\"gl-inline-block\"\n              :config-paths=\"configPaths\"\n              :pipeline=\"currentPipeline\"\n              :computed-pipeline-info=\"getPipelineLayers(pipeline.id)\"\n              :show-links=\"showLinks\"\n              :skip-retry-modal=\"skipRetryModal\"\n              :is-linked-pipeline=\"true\"\n              :view-type=\"graphViewType\"\n              @setSkipRetryModal=\"$emit('setSkipRetryModal')\"\n            />\n          </div>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./linked_pipeline.vue?vue&type=template&id=6f8aaf0d\"\nimport script from \"./linked_pipeline.vue?vue&type=script&lang=js\"\nexport * from \"./linked_pipeline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"linkedPipeline\",staticClass:\"linked-pipeline-container !gl-flex gl-h-full gl-w-full sm:gl-w-auto\",class:{\n    'gl-flex-row-reverse': _vm.isUpstream,\n    'gl-flex-row': !_vm.isUpstream,\n  },attrs:{\"data-testid\":\"linked-pipeline-container\",\"aria-expanded\":_vm.expanded},on:{\"mouseover\":_vm.onDownstreamHovered,\"mouseleave\":_vm.onDownstreamHoverLeave}},[(_vm.showCardTooltip)?_c('gl-tooltip',{attrs:{\"target\":() => _vm.$refs.linkedPipeline}},[_vm._v(\"\\n    \"+_vm._s(_vm.cardTooltipText)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gl-border gl-w-full gl-rounded-lg gl-border-l-section gl-bg-section gl-p-3\",class:_vm.cardClasses},[_c('div',{staticClass:\"gl-flex gl-gap-x-3\"},[(!_vm.pipelineIsLoading)?_c('ci-icon',{staticClass:\"gl-self-start\",attrs:{\"status\":_vm.pipelineStatus,\"use-link\":false}}):_c('div',{staticClass:\"gl-pr-3\"},[_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"inline\":\"\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-downstream-pipeline-job-width gl-flex gl-flex-col gl-leading-normal\"},[_c('span',{staticClass:\"gl-truncate\",attrs:{\"data-testid\":\"downstream-title-content\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.downstreamTitle)+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"-gl-m-2 gl-truncate gl-p-2\"},[_c('gl-link',{staticClass:\"gl-text-sm\",attrs:{\"href\":_vm.pipeline.path,\"data-testid\":\"pipelineLink\"}},[_vm._v(\"#\"+_vm._s(_vm.pipeline.id))])],1)]),_vm._v(\" \"),(_vm.showAction)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"!gl-rounded-full\",class:_vm.$options.styles.actionSizeClasses,attrs:{\"title\":_vm.action.ariaLabel,\"loading\":_vm.isActionLoading,\"icon\":_vm.action.icon,\"aria-label\":_vm.action.ariaLabel},on:{\"click\":_vm.action.method,\"mouseover\":function($event){return _vm.setActionTooltip(true)},\"mouseout\":function($event){return _vm.setActionTooltip(false)}}}):_c('div',{class:_vm.$options.styles.actionSizeClasses})],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-ml-7 gl-pt-2\"},[_c('gl-badge',{attrs:{\"variant\":\"info\",\"data-testid\":\"downstream-pipeline-label\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.label)+\"\\n      \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex\"},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"!gl-border !gl-rounded-lg !gl-bg-section\",class:[`js-pipeline-expand-${_vm.pipeline.id}`, _vm.buttonBorderClasses, _vm.buttonShadowClass],attrs:{\"id\":_vm.buttonId,\"title\":_vm.expandBtnText,\"icon\":_vm.expandedIcon,\"aria-label\":_vm.expandBtnText,\"data-testid\":\"expand-pipeline-button\"},on:{\"mouseover\":function($event){return _vm.setExpandBtnActiveState(true)},\"mouseout\":function($event){return _vm.setExpandBtnActiveState(false)},\"focus\":function($event){return _vm.setExpandBtnActiveState(true)},\"blur\":function($event){return _vm.setExpandBtnActiveState(false)},\"click\":_vm.onClickLinkedPipeline}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./linked_pipelines_column.vue?vue&type=template&id=63ff9deb\"\nimport script from \"./linked_pipelines_column.vue?vue&type=script&lang=js\"\nexport * from \"./linked_pipelines_column.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-w-full sm:gl-w-auto\"},[_c('div',{staticClass:\"linked-pipelines-column\",class:_vm.columnClass},[_c('div',{class:_vm.computedTitleClasses,attrs:{\"data-testid\":\"linked-column-title\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.columnTitle)+\"\\n    \")]),_vm._v(\" \"),_c('ul',{staticClass:\"gl-pl-0\"},_vm._l((_vm.linkedPipelines),function(pipeline){return _c('li',{key:pipeline.id,staticClass:\"gl-mb-6 gl-flex gl-flex-wrap sm:gl-flex-nowrap\"},[_c('linked-pipeline',{staticClass:\"gl-inline-block\",attrs:{\"is-loading\":_vm.isLoadingPipeline(pipeline.id),\"pipeline\":pipeline,\"column-title\":_vm.columnTitle,\"type\":_vm.type,\"expanded\":_vm.isExpanded(pipeline.id)},on:{\"downstreamHovered\":_vm.onDownstreamHovered,\"pipelineClicked\":function($event){return _vm.onPipelineClick(pipeline)},\"pipelineExpandToggle\":_vm.onPipelineExpandToggle,\"refreshPipelineGraph\":function($event){return _vm.$emit('refreshPipelineGraph')}}}),_vm._v(\" \"),(_vm.showContainer(pipeline.id))?_c('div',{staticClass:\"pipeline-show-container gl-inline-block\",style:({ minWidth: _vm.minWidth })},[(_vm.isExpanded(pipeline.id))?_c('pipeline-graph',{staticClass:\"gl-inline-block\",attrs:{\"type\":_vm.type,\"config-paths\":_vm.configPaths,\"pipeline\":_vm.currentPipeline,\"computed-pipeline-info\":_vm.getPipelineLayers(pipeline.id),\"show-links\":_vm.showLinks,\"skip-retry-modal\":_vm.skipRetryModal,\"is-linked-pipeline\":true,\"view-type\":_vm.graphViewType},on:{\"setSkipRetryModal\":function($event){return _vm.$emit('setSkipRetryModal')}}}):_vm._e()],1):_vm._e()],1)}),0)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_component.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_component.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlButton, GlLoadingIcon, GlIcon } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport axios from '~/lib/utils/axios_utils';\nimport { BV_HIDE_TOOLTIP } from '~/lib/utils/constants';\nimport { dasherize } from '~/lib/utils/text_utility';\nimport { __ } from '~/locale';\nimport { reportToSentry } from '~/ci/utils';\n\n/**\n * Renders either a cancel, retry or play icon button and handles the post request\n *\n * Used in:\n * - mr widget mini pipeline graph: `mr_widget_pipeline.vue`\n * - pipelines table\n * - pipelines table in merge request page\n * - pipelines table in commit page\n * - pipelines detail page in big graph\n */\nexport default {\n  components: {\n    GlIcon,\n    GlButton,\n    GlLoadingIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    tooltipText: {\n      type: String,\n      required: true,\n    },\n    link: {\n      type: String,\n      required: true,\n    },\n    actionIcon: {\n      type: String,\n      required: true,\n    },\n    withConfirmationModal: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    shouldTriggerClick: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      isDisabled: false,\n      isLoading: false,\n    };\n  },\n  computed: {\n    cssClass() {\n      const actionIconDash = dasherize(this.actionIcon);\n      return `${actionIconDash} js-icon-${actionIconDash}`;\n    },\n  },\n  watch: {\n    shouldTriggerClick(flag) {\n      if (flag && this.withConfirmationModal) {\n        this.executeAction();\n        this.$emit('actionButtonClicked');\n      }\n    },\n  },\n  methods: {\n    /**\n     * The request should not be handled here.\n     * However due to this component being used in several\n     * different apps it avoids repetition & complexity.\n     *\n     */\n    onClickAction(e) {\n      e.preventDefault();\n\n      if (this.withConfirmationModal) {\n        this.$emit('showActionConfirmationModal');\n      } else {\n        this.executeAction();\n      }\n    },\n    executeAction() {\n      this.$root.$emit(BV_HIDE_TOOLTIP, `js-ci-action-${this.link}`);\n      this.isDisabled = true;\n      this.isLoading = true;\n\n      axios\n        .post(`${this.link}.json`)\n        .then(() => {\n          this.isLoading = false;\n          this.isDisabled = false;\n\n          this.$emit('pipelineActionRequestComplete');\n        })\n        .catch((err) => {\n          this.isDisabled = false;\n          this.isLoading = false;\n\n          reportToSentry('action_component', err);\n\n          createAlert({\n            message: __('An error occurred while making the request.'),\n          });\n        });\n    },\n  },\n};\n</script>\n<template>\n  <gl-button\n    :id=\"`js-ci-action-${link}`\"\n    ref=\"button\"\n    v-gl-tooltip.viewport.right\n    :title=\"tooltipText\"\n    :class=\"cssClass\"\n    :disabled=\"isDisabled\"\n    size=\"small\"\n    class=\"js-ci-action gl-ci-action-icon-container ci-action-icon-container ci-action-icon-wrapper gl-flex gl-items-center gl-justify-center\"\n    data-testid=\"ci-action-button\"\n    @click.stop=\"onClickAction\"\n  >\n    <div class=\"gl-flex gl-h-full gl-items-center gl-justify-center\">\n      <gl-loading-icon\n        v-if=\"isLoading\"\n        size=\"sm\"\n        class=\"gl-button-icon js-action-icon-loading gl-m-2\"\n      />\n      <gl-icon\n        v-else\n        :name=\"actionIcon\"\n        class=\"gl-button-icon !gl-mr-0 gl-p-1\"\n        :aria-label=\"actionIcon\"\n      />\n    </div>\n  </gl-button>\n</template>\n","import { render, staticRenderFns } from \"./job_action_component.vue?vue&type=template&id=553166fe\"\nimport script from \"./job_action_component.vue?vue&type=script&lang=js\"\nexport * from \"./job_action_component.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.right\",modifiers:{\"viewport\":true,\"right\":true}}],ref:\"button\",staticClass:\"js-ci-action gl-ci-action-icon-container ci-action-icon-container ci-action-icon-wrapper gl-flex gl-items-center gl-justify-center\",class:_vm.cssClass,attrs:{\"id\":`js-ci-action-${_vm.link}`,\"title\":_vm.tooltipText,\"disabled\":_vm.isDisabled,\"size\":\"small\",\"data-testid\":\"ci-action-button\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClickAction.apply(null, arguments)}}},[_c('div',{staticClass:\"gl-flex gl-h-full gl-items-center gl-justify-center\"},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-button-icon js-action-icon-loading gl-m-2\",attrs:{\"size\":\"sm\"}}):_c('gl-icon',{staticClass:\"gl-button-icon !gl-mr-0 gl-p-1\",attrs:{\"name\":_vm.actionIcon,\"aria-label\":_vm.actionIcon}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./root_graph_layout.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./root_graph_layout.vue?vue&type=script&lang=js\"","<script>\nimport { GlCard } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlCard,\n  },\n  props: {\n    stageClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    jobClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n};\n</script>\n<template>\n  <div>\n    <gl-card\n      class=\"gl-rounded-lg gl-bg-section\"\n      header-class=\"gl-rounded-lg gl-px-0 gl-py-0 gl-bg-section gl-border-b-0\"\n      body-class=\"gl-pt-2 gl-pb-0 gl-px-2\"\n    >\n      <template #header>\n        <slot name=\"stages\"></slot>\n      </template>\n\n      <slot name=\"jobs\"></slot>\n    </gl-card>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./root_graph_layout.vue?vue&type=template&id=5dcfb710\"\nimport script from \"./root_graph_layout.vue?vue&type=script&lang=js\"\nexport * from \"./root_graph_layout.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('gl-card',{staticClass:\"gl-rounded-lg gl-bg-section\",attrs:{\"header-class\":\"gl-rounded-lg gl-px-0 gl-py-0 gl-bg-section gl-border-b-0\",\"body-class\":\"gl-pt-2 gl-pb-0 gl-px-2\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._t(\"stages\")]},proxy:true}],null,true)},[_vm._v(\" \"),_vm._t(\"jobs\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlForm, GlFormCheckbox, GlLink, GlModal, GlTooltipDirective } from '@gitlab/ui';\nimport delayedJobMixin from '~/ci/mixins/delayed_job_mixin';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { BV_HIDE_TOOLTIP } from '~/lib/utils/constants';\nimport { __, s__, sprintf } from '~/locale';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport ActionComponent from '../../../common/private/job_action_component.vue';\nimport JobNameComponent from '../../../common/private/job_name_component.vue';\nimport { BRIDGE_KIND, RETRY_ACTION_TITLE, SINGLE_JOB, SKIP_RETRY_MODAL_KEY } from '../constants';\n\n/**\n * Renders the badge for the pipeline graph and the job's dropdown.\n *\n * The following object should be provided as `job`:\n *\n * {\n *   \"id\": 4256,\n *   \"name\": \"test\",\n *   \"status\": {\n *     \"icon\": \"status_success\",\n *     \"text\": \"passed\",\n *     \"label\": \"passed\",\n *     \"group\": \"success\",\n *     \"tooltip\": \"passed\",\n *     \"details_path\": \"/root/ci-mock/builds/4256\",\n *     \"action\": {\n *       \"icon\": \"retry\",\n *       \"title\": \"Retry\",\n *       \"path\": \"/root/ci-mock/builds/4256/retry\",\n *       \"method\": \"post\"\n *     }\n *   }\n * }\n */\n\nexport default {\n  confirmationModalDocLink: helpPagePath('/ci/pipelines/downstream_pipelines'),\n  i18n: {\n    bridgeBadgeText: __('Trigger job'),\n    bridgeRetryText: s__(\n      'PipelineGraph|Downstream pipeline might not display in the graph while the new downstream pipeline is being created.',\n    ),\n    unauthorizedTooltip: __('You are not authorized to run this manual job'),\n    manualConfirmationModal: {\n      title: s__('PipelineGraph|Are you sure you want to run %{jobName}?'),\n      confirmationText: s__('PipelineGraph|Do you want to continue?'),\n    },\n    confirmationModal: {\n      title: s__('PipelineGraph|Are you sure you want to retry %{jobName}?'),\n      description: s__(\n        'PipelineGraph|Retrying a trigger job will create a new downstream pipeline.',\n      ),\n      linkText: s__('PipelineGraph|What is a downstream pipeline?'),\n      footer: __(\"Don't show this again\"),\n      actionCancel: { text: __('Cancel') },\n      actionPrimary: { text: __('Retry') },\n    },\n    runAgainTooltipText: __('Run again'),\n  },\n  hoverClass: 'gl-shadow-x0-y0-b3-s1-blue-500',\n  components: {\n    ActionComponent,\n    CiIcon,\n    GlBadge,\n    GlForm,\n    GlFormCheckbox,\n    GlLink,\n    GlModal,\n    JobNameComponent,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [delayedJobMixin],\n  props: {\n    job: {\n      type: Object,\n      required: true,\n    },\n    cssClassJobName: {\n      type: [String, Array, Object],\n      required: false,\n      default: '',\n    },\n    hideTooltip: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    jobHovered: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    pipelineExpanded: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    pipelineId: {\n      type: Number,\n      required: false,\n      default: -1,\n    },\n    skipRetryModal: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    sourceJobHovered: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    stageName: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    type: {\n      type: String,\n      required: false,\n      default: SINGLE_JOB,\n    },\n    isLink: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  data() {\n    return {\n      currentSkipModalValue: this.skipRetryModal,\n      showConfirmationModal: false,\n      shouldTriggerActionClick: false,\n    };\n  },\n  computed: {\n    computedJobId() {\n      return this.pipelineId > -1 ? `${this.job.name}-${this.pipelineId}` : '';\n    },\n    detailsPath() {\n      if (this.isLink) {\n        return this.status.detailsPath;\n      }\n      return null;\n    },\n    hasDetails() {\n      return this.status.hasDetails;\n    },\n    hasRetryAction() {\n      return Boolean(this.job?.status?.action?.title === RETRY_ACTION_TITLE);\n    },\n    isRetryableBridge() {\n      return this.isBridge && this.hasRetryAction;\n    },\n    isSingleItem() {\n      return this.type === SINGLE_JOB;\n    },\n    isBridge() {\n      return this.kind === BRIDGE_KIND;\n    },\n    kind() {\n      return this.job?.kind || '';\n    },\n    isFailed() {\n      return this.job?.status?.group === 'failed';\n    },\n    shouldRenderLink() {\n      return this.isLink && this.hasDetails;\n    },\n    nameComponent() {\n      return this.shouldRenderLink ? 'gl-link' : 'div';\n    },\n    confirmationTitle() {\n      const modal = this.hasManualConfirmationMessage\n        ? this.$options.i18n.manualConfirmationModal\n        : this.$options.i18n.confirmationModal;\n      return sprintf(modal.title, {\n        jobName: this.job.name,\n      });\n    },\n    confirmationPrimaryText() {\n      const modal = this.hasManualConfirmationMessage\n        ? {\n            actionPrimary: {\n              text: sprintf(__('Yes, run %{jobName}'), {\n                jobName: this.job.name,\n              }),\n            },\n          }\n        : this.$options.i18n.confirmationModal;\n      return modal.actionPrimary;\n    },\n    showStageName() {\n      return Boolean(this.stageName);\n    },\n    status() {\n      return this.job && this.job.status ? this.job.status : {};\n    },\n    tooltipText() {\n      if (this.hideTooltip) {\n        return '';\n      }\n\n      const { tooltip: statusTooltip } = this.status;\n      const { text: statusText } = this.status;\n\n      if (statusTooltip) {\n        if (this.isDelayedJob) {\n          return sprintf(statusTooltip, { remainingTime: this.remainingTime });\n        }\n        return statusTooltip;\n      }\n      return statusText;\n    },\n    /**\n     * Verifies if the provided job has an action path\n     *\n     * @return {Boolean}\n     */\n    hasAction() {\n      return this.job.status && this.job.status.action && this.job.status.action.path;\n    },\n    hasManualConfirmationMessage() {\n      return this.job.status.action.confirmationMessage !== null;\n    },\n    hasUnauthorizedManualAction() {\n      return (\n        !this.hasAction &&\n        this.job.status?.group === 'manual' &&\n        this.job.status?.label?.includes('(not allowed)')\n      );\n    },\n    unauthorizedManualActionIcon() {\n      /*\n        The action object is not available when the user cannot run the action.\n        So we can show the correct icon, extract the action name from the label instead:\n        \"manual play action (not allowed)\" or \"manual stop action (not allowed)\"\n      */\n      return this.job.status?.label?.split(' ')[1];\n    },\n    relatedDownstreamHovered() {\n      return this.job.name === this.sourceJobHovered;\n    },\n    relatedDownstreamExpanded() {\n      return this.job.name === this.pipelineExpanded.jobName && this.pipelineExpanded.expanded;\n    },\n    jobClasses() {\n      return [\n        {\n          [this.$options.hoverClass]:\n            this.relatedDownstreamHovered || this.relatedDownstreamExpanded,\n        },\n        { 'gl-rounded-lg': this.isBridge },\n        this.cssClassJobName,\n        {\n          'ci-job-item-failed': this.isSingleItem && this.isFailed,\n        },\n      ];\n    },\n    withConfirmationModal() {\n      return (this.isRetryableBridge && !this.skipRetryModal) || this.hasManualConfirmationMessage;\n    },\n    manualConfirmationMessage() {\n      return sprintf(__('Custom confirmation message: %{message}'), {\n        message: this.job.status.action.confirmationMessage,\n      });\n    },\n    jobActionTooltipText() {\n      const { group } = this.status;\n      const { title, icon } = this.status.action;\n\n      return icon === 'retry' && group === 'success'\n        ? this.$options.i18n.runAgainTooltipText\n        : title;\n    },\n  },\n  watch: {\n    skipRetryModal(val) {\n      this.currentSkipModalValue = val;\n      this.shouldTriggerActionClick = false;\n    },\n  },\n  methods: {\n    handleConfirmationModalPreferences() {\n      if (this.currentSkipModalValue) {\n        this.$emit('setSkipRetryModal');\n        localStorage.setItem(SKIP_RETRY_MODAL_KEY, String(this.currentSkipModalValue));\n      }\n    },\n    hideTooltips() {\n      this.$root.$emit(BV_HIDE_TOOLTIP);\n    },\n    jobItemClick(evt) {\n      if (this.isSingleItem) {\n        /*\n          This is so the jobDropdown still toggles. Issue to refactor:\n          https://gitlab.com/gitlab-org/gitlab/-/issues/267117\n        */\n        evt.stopPropagation();\n      }\n\n      this.hideTooltips();\n    },\n    pipelineActionRequestComplete() {\n      this.$emit('pipelineActionRequestComplete');\n\n      if (this.isBridge) {\n        this.$toast.show(this.$options.i18n.bridgeRetryText);\n      }\n    },\n    executePendingAction() {\n      this.shouldTriggerActionClick = true;\n    },\n    showActionConfirmationModal() {\n      this.showConfirmationModal = true;\n    },\n    toggleSkipRetryModalCheckbox() {\n      this.currentSkipModalValue = !this.currentSkipModalValue;\n    },\n  },\n};\n</script>\n<template>\n  <div\n    :id=\"computedJobId\"\n    class=\"ci-job-component gl-pipeline-job-width gl-flex gl-justify-between\"\n    data-testid=\"ci-job-item\"\n  >\n    <component\n      :is=\"nameComponent\"\n      v-gl-tooltip.viewport.left=\"{ customClass: 'ci-job-component-tooltip' }\"\n      :title=\"tooltipText\"\n      :href=\"detailsPath\"\n      :class=\"jobClasses\"\n      class=\"menu-item gl-w-full gl-rounded-base gl-text-strong hover:gl-bg-gray-50 hover:gl-no-underline focus:gl-bg-gray-50 focus:gl-no-underline active:gl-no-underline dark:hover:gl-bg-gray-200 dark:focus:gl-bg-gray-200\"\n      data-testid=\"ci-job-item-content\"\n      @click=\"jobItemClick\"\n      @mouseout=\"hideTooltips\"\n    >\n      <div class=\"gl-flex gl-grow gl-items-center\">\n        <ci-icon :status=\"job.status\" :use-link=\"false\" :show-tooltip=\"false\" />\n        <div class=\"gl-pipeline-job-width gl-flex gl-flex-col gl-pl-3 gl-pr-3\">\n          <div\n            class=\"gl-truncate gl-pr-9 gl-text-left gl-leading-normal gl-text-default\"\n            :title=\"job.name\"\n          >\n            {{ job.name }}\n          </div>\n          <div\n            v-if=\"showStageName\"\n            data-testid=\"stage-name-in-job\"\n            class=\"gl-truncate gl-pr-9 gl-text-left gl-text-sm gl-leading-normal gl-text-subtle\"\n          >\n            {{ stageName }}\n          </div>\n        </div>\n      </div>\n      <gl-badge\n        v-if=\"isBridge\"\n        class=\"gl-ml-7 gl-mt-3\"\n        variant=\"info\"\n        data-testid=\"job-bridge-badge\"\n      >\n        {{ $options.i18n.bridgeBadgeText }}\n      </gl-badge>\n    </component>\n\n    <action-component\n      v-if=\"hasAction\"\n      :tooltip-text=\"jobActionTooltipText\"\n      :link=\"status.action.path\"\n      :action-icon=\"status.action.icon\"\n      class=\"gl-mr-1\"\n      :should-trigger-click=\"shouldTriggerActionClick\"\n      :with-confirmation-modal=\"withConfirmationModal\"\n      @actionButtonClicked=\"handleConfirmationModalPreferences\"\n      @pipelineActionRequestComplete=\"pipelineActionRequestComplete\"\n      @showActionConfirmationModal=\"showActionConfirmationModal\"\n      @focus.native=\"hideTooltips\"\n    />\n    <action-component\n      v-if=\"hasUnauthorizedManualAction\"\n      disabled\n      :tooltip-text=\"$options.i18n.unauthorizedTooltip\"\n      :action-icon=\"unauthorizedManualActionIcon\"\n      :link=\"`unauthorized-${computedJobId}`\"\n      class=\"gl-mr-1\"\n    />\n    <gl-modal\n      v-if=\"showConfirmationModal\"\n      ref=\"modal\"\n      v-model=\"showConfirmationModal\"\n      modal-id=\"action-confirmation-modal\"\n      :title=\"confirmationTitle\"\n      :action-cancel=\"$options.i18n.confirmationModal.actionCancel\"\n      :action-primary=\"confirmationPrimaryText\"\n      @primary=\"executePendingAction\"\n      @close=\"handleConfirmationModalPreferences\"\n      @hide=\"handleConfirmationModalPreferences\"\n    >\n      <div v-if=\"job.status.action.confirmationMessage\">\n        <p>{{ manualConfirmationMessage }}</p>\n        <p>{{ $options.i18n.manualConfirmationModal.confirmationText }}</p>\n      </div>\n      <div v-else>\n        <p class=\"gl-mb-1\">{{ $options.i18n.confirmationModal.description }}</p>\n        <gl-link :href=\"$options.confirmationModalDocLink\" target=\"_blank\"\n          >{{ $options.i18n.confirmationModal.linkText }}\n        </gl-link>\n        <div class=\"gl-mt-4 gl-flex\">\n          <gl-form>\n            <gl-form-checkbox class=\"gl-min-h-0\" @input=\"toggleSkipRetryModalCheckbox\" />\n          </gl-form>\n          <p class=\"gl-m-0\">{{ $options.i18n.confirmationModal.footer }}</p>\n        </div>\n      </div>\n    </gl-modal>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./job_item.vue?vue&type=template&id=0b4ae10e\"\nimport script from \"./job_item.vue?vue&type=script&lang=js\"\nexport * from \"./job_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"ci-job-component gl-pipeline-job-width gl-flex gl-justify-between\",attrs:{\"id\":_vm.computedJobId,\"data-testid\":\"ci-job-item\"}},[_c(_vm.nameComponent,{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",value:({ customClass: 'ci-job-component-tooltip' }),expression:\"{ customClass: 'ci-job-component-tooltip' }\",modifiers:{\"viewport\":true,\"left\":true}}],tag:\"component\",staticClass:\"menu-item gl-w-full gl-rounded-base gl-text-strong hover:gl-bg-gray-50 hover:gl-no-underline focus:gl-bg-gray-50 focus:gl-no-underline active:gl-no-underline dark:hover:gl-bg-gray-200 dark:focus:gl-bg-gray-200\",class:_vm.jobClasses,attrs:{\"title\":_vm.tooltipText,\"href\":_vm.detailsPath,\"data-testid\":\"ci-job-item-content\"},on:{\"click\":_vm.jobItemClick,\"mouseout\":_vm.hideTooltips}},[_c('div',{staticClass:\"gl-flex gl-grow gl-items-center\"},[_c('ci-icon',{attrs:{\"status\":_vm.job.status,\"use-link\":false,\"show-tooltip\":false}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-pipeline-job-width gl-flex gl-flex-col gl-pl-3 gl-pr-3\"},[_c('div',{staticClass:\"gl-truncate gl-pr-9 gl-text-left gl-leading-normal gl-text-default\",attrs:{\"title\":_vm.job.name}},[_vm._v(\"\\n          \"+_vm._s(_vm.job.name)+\"\\n        \")]),_vm._v(\" \"),(_vm.showStageName)?_c('div',{staticClass:\"gl-truncate gl-pr-9 gl-text-left gl-text-sm gl-leading-normal gl-text-subtle\",attrs:{\"data-testid\":\"stage-name-in-job\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.stageName)+\"\\n        \")]):_vm._e()])],1),_vm._v(\" \"),(_vm.isBridge)?_c('gl-badge',{staticClass:\"gl-ml-7 gl-mt-3\",attrs:{\"variant\":\"info\",\"data-testid\":\"job-bridge-badge\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.bridgeBadgeText)+\"\\n    \")]):_vm._e()],1),_vm._v(\" \"),(_vm.hasAction)?_c('action-component',{staticClass:\"gl-mr-1\",attrs:{\"tooltip-text\":_vm.jobActionTooltipText,\"link\":_vm.status.action.path,\"action-icon\":_vm.status.action.icon,\"should-trigger-click\":_vm.shouldTriggerActionClick,\"with-confirmation-modal\":_vm.withConfirmationModal},on:{\"actionButtonClicked\":_vm.handleConfirmationModalPreferences,\"pipelineActionRequestComplete\":_vm.pipelineActionRequestComplete,\"showActionConfirmationModal\":_vm.showActionConfirmationModal},nativeOn:{\"focus\":function($event){return _vm.hideTooltips.apply(null, arguments)}}}):_vm._e(),_vm._v(\" \"),(_vm.hasUnauthorizedManualAction)?_c('action-component',{staticClass:\"gl-mr-1\",attrs:{\"disabled\":\"\",\"tooltip-text\":_vm.$options.i18n.unauthorizedTooltip,\"action-icon\":_vm.unauthorizedManualActionIcon,\"link\":`unauthorized-${_vm.computedJobId}`}}):_vm._e(),_vm._v(\" \"),(_vm.showConfirmationModal)?_c('gl-modal',{ref:\"modal\",attrs:{\"modal-id\":\"action-confirmation-modal\",\"title\":_vm.confirmationTitle,\"action-cancel\":_vm.$options.i18n.confirmationModal.actionCancel,\"action-primary\":_vm.confirmationPrimaryText},on:{\"primary\":_vm.executePendingAction,\"close\":_vm.handleConfirmationModalPreferences,\"hide\":_vm.handleConfirmationModalPreferences},model:{value:(_vm.showConfirmationModal),callback:function ($$v) {_vm.showConfirmationModal=$$v},expression:\"showConfirmationModal\"}},[(_vm.job.status.action.confirmationMessage)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.manualConfirmationMessage))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$options.i18n.manualConfirmationModal.confirmationText))])]):_c('div',[_c('p',{staticClass:\"gl-mb-1\"},[_vm._v(_vm._s(_vm.$options.i18n.confirmationModal.description))]),_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":_vm.$options.confirmationModalDocLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$options.i18n.confirmationModal.linkText)+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-4 gl-flex\"},[_c('gl-form',[_c('gl-form-checkbox',{staticClass:\"gl-min-h-0\",on:{\"input\":_vm.toggleSkipRetryModalCheckbox}})],1),_vm._v(\" \"),_c('p',{staticClass:\"gl-m-0\"},[_vm._v(_vm._s(_vm.$options.i18n.confirmationModal.footer))])],1)],1)]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_group_dropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_group_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlBadge,\n  GlDisclosureDropdown,\n  GlTooltipDirective,\n  GlResizeObserverDirective,\n} from '@gitlab/ui';\nimport { GlBreakpointInstance } from '@gitlab/ui/dist/utils';\nimport JobDropdownItem from '~/ci/common/private/job_dropdown_item.vue';\nimport { JOB_DROPDOWN } from '../constants';\nimport JobItem from './job_item.vue';\n\n/**\n * Renders the dropdown for the pipeline graph.\n *\n * The object provided as `group` corresponds to app/serializers/job_group_entity.rb.\n *\n */\nexport default {\n  components: {\n    JobDropdownItem,\n    JobItem,\n    GlBadge,\n    GlDisclosureDropdown,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n    GlResizeObserver: GlResizeObserverDirective,\n  },\n  props: {\n    group: {\n      type: Object,\n      required: true,\n    },\n    pipelineId: {\n      type: Number,\n      required: false,\n      default: -1,\n    },\n    cssClassJobName: {\n      type: [String, Array],\n      required: false,\n      default: '',\n    },\n    stageName: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  jobItemTypes: {\n    jobDropdown: JOB_DROPDOWN,\n  },\n  data() {\n    return {\n      isMobile: false,\n      showTooltip: false,\n    };\n  },\n  computed: {\n    computedJobId() {\n      return this.pipelineId > -1 ? `${this.group.name}-${this.pipelineId}` : '';\n    },\n    dropdownTooltip() {\n      return !this.showTooltip ? this.group?.status?.tooltip || this.group?.status?.text : '';\n    },\n    placement() {\n      // MR !49053:\n      // We change the placement of the dropdown based on the breakpoint.\n      // This is not an ideal solution, but rather a temporary solution\n      // until we find a better solution in\n      // https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2615\n      return this.isMobile ? 'bottom-start' : 'right-start';\n    },\n  },\n  methods: {\n    handleResize() {\n      this.isMobile = GlBreakpointInstance.getBreakpointSize() === 'xs';\n    },\n    showDropdown() {\n      this.showTooltip = true;\n    },\n    hideDropdown() {\n      this.showTooltip = false;\n    },\n  },\n};\n</script>\n<template>\n  <gl-disclosure-dropdown\n    :id=\"computedJobId\"\n    v-gl-resize-observer=\"handleResize\"\n    v-gl-tooltip.viewport.left=\"{ customClass: 'ci-job-component-tooltip' }\"\n    :title=\"dropdownTooltip\"\n    block\n    fluid-width\n    :placement=\"placement\"\n    data-testid=\"job-dropdown-container\"\n    @shown=\"showDropdown\"\n    @hidden=\"hideDropdown\"\n  >\n    <template #toggle>\n      <button type=\"button\" :class=\"cssClassJobName\" class=\"gl-w-full gl-bg-transparent gl-pr-4\">\n        <div class=\"gl-flex gl-items-stretch gl-justify-between\">\n          <job-item\n            :type=\"$options.jobItemTypes.jobDropdown\"\n            :job=\"group\"\n            :stage-name=\"stageName\"\n            hide-tooltip\n          />\n          <gl-badge variant=\"muted\" class=\"-gl-ml-5 -gl-mr-2 gl-self-center\">\n            {{ group.size }}\n          </gl-badge>\n        </div>\n      </button>\n    </template>\n    <ul class=\"gl-m-0 gl-w-34 gl-overflow-y-auto gl-p-0\" @click.stop>\n      <job-dropdown-item\n        v-for=\"job in group.jobs\"\n        :key=\"job.id\"\n        :job=\"job\"\n        @jobActionExecuted=\"$emit('pipelineActionRequestComplete')\"\n      />\n    </ul>\n  </gl-disclosure-dropdown>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./stage_column_component.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./stage_column_component.vue?vue&type=script&lang=js\"","<script>\nimport { escape, isEmpty } from 'lodash';\nimport ActionComponent from '~/ci/common/private/job_action_component.vue';\nimport { reportToSentry } from '~/ci/utils';\nimport { __, s__, sprintf } from '~/locale';\nimport { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';\nimport { sanitize } from '~/lib/dompurify';\nimport RootGraphLayout from './root_graph_layout.vue';\nimport JobGroupDropdown from './job_group_dropdown.vue';\nimport JobItem from './job_item.vue';\n\nexport default {\n  components: {\n    ActionComponent,\n    JobGroupDropdown,\n    JobItem,\n    RootGraphLayout,\n  },\n  i18n: {\n    confirmationModal: {\n      title: s__('PipelineGraph|Are you sure you want to run %{stageName}?'),\n      actionCancel: { text: __('Cancel') },\n      actionPrimary: { text: __('Confirm') },\n    },\n  },\n  props: {\n    groups: {\n      type: Array,\n      required: true,\n    },\n    name: {\n      type: String,\n      required: true,\n    },\n    pipelineId: {\n      type: Number,\n      required: true,\n    },\n    action: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    highlightedJobs: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    isStageView: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    jobHovered: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    pipelineExpanded: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    skipRetryModal: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    sourceJobHovered: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    userPermissions: {\n      type: Object,\n      required: true,\n    },\n  },\n  jobClasses: [\n    'gl-p-3',\n    'gl-border-0',\n    '!gl-rounded-base',\n    'hover:gl-bg-gray-50',\n    'dark:hover:gl-bg-gray-200',\n    'focus:gl-bg-gray-50',\n    'dark:focus:gl-bg-gray-200',\n    'hover:gl-text-strong',\n    'focus:gl-text-strong',\n  ],\n  data() {\n    return {\n      showConfirmationModal: false,\n      shouldTriggerActionClick: false,\n    };\n  },\n  computed: {\n    canUpdatePipeline() {\n      return this.userPermissions.updatePipeline;\n    },\n    columnSpacingClass() {\n      return this.isStageView ? 'is-stage-view gl-m-5' : 'gl-my-5 gl-mx-7';\n    },\n    hasAction() {\n      return !isEmpty(this.action);\n    },\n    showStageName() {\n      return !this.isStageView;\n    },\n    withConfirmationModal() {\n      return this.action.confirmationMessage !== null;\n    },\n    confirmationTitle() {\n      return sprintf(this.$options.i18n.confirmationModal.title, {\n        stageName: this.name,\n      });\n    },\n  },\n  mounted() {\n    this.$emit('updateMeasurements');\n  },\n  methods: {\n    getGroupId(group) {\n      return group.name;\n    },\n    groupId(group) {\n      return `ci-badge-${escape(group.name)}`;\n    },\n    isFadedOut(jobName) {\n      return this.highlightedJobs.length > 1 && !this.highlightedJobs.includes(jobName);\n    },\n    isParallel(group) {\n      return group.size > 1 && group.jobs.length > 1;\n    },\n    singleJobExists(group) {\n      const firstJobDefined = Boolean(group.jobs?.[0]);\n\n      if (!firstJobDefined) {\n        reportToSentry('stage_column_component', 'undefined_job_hunt');\n      }\n\n      return group.size === 1 && firstJobDefined;\n    },\n    showActionConfirmationModal() {\n      this.showConfirmationModal = true;\n    },\n    executePendingAction() {\n      this.shouldTriggerActionClick = true;\n    },\n    async actionClicked() {\n      if (this.action.confirmationMessage !== null) {\n        const confirmed = await confirmAction(null, {\n          title: sprintf(this.$options.i18n.confirmationModal.title, {\n            stageName: sanitize(this.name),\n          }),\n          modalHtmlMessage: `\n            <p>${sprintf(__('Custom confirmation message: %{message}'), {\n              message: sanitize(this.action.confirmationMessage),\n            })}</p>\n            <p>${s__('PipelineGraph|Do you want to continue?')}</p>\n          `,\n          primaryBtnText: sprintf(__('Yes, run all manual')),\n        });\n\n        if (!confirmed) {\n          return;\n        }\n      }\n      this.executePendingAction();\n    },\n  },\n};\n</script>\n<template>\n  <root-graph-layout\n    :class=\"columnSpacingClass\"\n    class=\"stage-column gl-relative gl-basis-full\"\n    data-testid=\"stage-column\"\n  >\n    <template #stages>\n      <div\n        data-testid=\"stage-column-title\"\n        class=\"stage-column-title gl-pipeline-job-width gl-relative -gl-mb-2 gl-flex gl-justify-between gl-truncate gl-pl-4 gl-font-bold gl-leading-36\"\n      >\n        <span :title=\"name\" class=\"gl-w-17/20 gl-truncate gl-pr-3\">\n          {{ name }}\n        </span>\n        <action-component\n          v-if=\"hasAction && canUpdatePipeline\"\n          :should-trigger-click=\"shouldTriggerActionClick\"\n          :action-icon=\"action.icon\"\n          :tooltip-text=\"action.title\"\n          :link=\"action.path\"\n          :with-confirmation-modal=\"withConfirmationModal\"\n          class=\"js-stage-action\"\n          @click.native=\"actionClicked\"\n          @pipelineActionRequestComplete=\"$emit('refreshPipelineGraph')\"\n        />\n      </div>\n    </template>\n    <template #jobs>\n      <div\n        v-for=\"group in groups\"\n        :id=\"groupId(group)\"\n        :key=\"getGroupId(group)\"\n        data-testid=\"stage-column-group\"\n        class=\"gl-pipeline-job-width gl-relative gl-mb-2 gl-whitespace-normal\"\n        @mouseenter=\"$emit('jobHover', group.name)\"\n        @mouseleave=\"$emit('jobHover', '')\"\n      >\n        <job-item\n          v-if=\"singleJobExists(group)\"\n          :job=\"group.jobs[0]\"\n          :job-hovered=\"jobHovered\"\n          :skip-retry-modal=\"skipRetryModal\"\n          :source-job-hovered=\"sourceJobHovered\"\n          :pipeline-expanded=\"pipelineExpanded\"\n          :pipeline-id=\"pipelineId\"\n          :stage-name=\"showStageName ? group.stageName : ''\"\n          :css-class-job-name=\"$options.jobClasses\"\n          :class=\"[{ 'gl-opacity-3': isFadedOut(group.name) }, 'gl-duration-slow gl-ease-ease']\"\n          @pipelineActionRequestComplete=\"$emit('refreshPipelineGraph')\"\n          @setSkipRetryModal=\"$emit('setSkipRetryModal')\"\n        />\n        <div v-else-if=\"isParallel(group)\" :class=\"{ 'gl-opacity-3': isFadedOut(group.name) }\">\n          <job-group-dropdown\n            :group=\"group\"\n            :stage-name=\"showStageName ? group.stageName : ''\"\n            :pipeline-id=\"pipelineId\"\n            :css-class-job-name=\"$options.jobClasses\"\n          />\n        </div>\n      </div>\n    </template>\n  </root-graph-layout>\n</template>\n","import { render, staticRenderFns } from \"./job_group_dropdown.vue?vue&type=template&id=b9998030\"\nimport script from \"./job_group_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./job_group_dropdown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown',{directives:[{name:\"gl-resize-observer\",rawName:\"v-gl-resize-observer\",value:(_vm.handleResize),expression:\"handleResize\"},{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",value:({ customClass: 'ci-job-component-tooltip' }),expression:\"{ customClass: 'ci-job-component-tooltip' }\",modifiers:{\"viewport\":true,\"left\":true}}],attrs:{\"id\":_vm.computedJobId,\"title\":_vm.dropdownTooltip,\"block\":\"\",\"fluid-width\":\"\",\"placement\":_vm.placement,\"data-testid\":\"job-dropdown-container\"},on:{\"shown\":_vm.showDropdown,\"hidden\":_vm.hideDropdown},scopedSlots:_vm._u([{key:\"toggle\",fn:function(){return [_c('button',{staticClass:\"gl-w-full gl-bg-transparent gl-pr-4\",class:_vm.cssClassJobName,attrs:{\"type\":\"button\"}},[_c('div',{staticClass:\"gl-flex gl-items-stretch gl-justify-between\"},[_c('job-item',{attrs:{\"type\":_vm.$options.jobItemTypes.jobDropdown,\"job\":_vm.group,\"stage-name\":_vm.stageName,\"hide-tooltip\":\"\"}}),_vm._v(\" \"),_c('gl-badge',{staticClass:\"-gl-ml-5 -gl-mr-2 gl-self-center\",attrs:{\"variant\":\"muted\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.group.size)+\"\\n        \")])],1)])]},proxy:true}])},[_vm._v(\" \"),_c('ul',{staticClass:\"gl-m-0 gl-w-34 gl-overflow-y-auto gl-p-0\",on:{\"click\":function($event){$event.stopPropagation();}}},_vm._l((_vm.group.jobs),function(job){return _c('job-dropdown-item',{key:job.id,attrs:{\"job\":job},on:{\"jobActionExecuted\":function($event){return _vm.$emit('pipelineActionRequestComplete')}}})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./stage_column_component.vue?vue&type=template&id=a6200b42\"\nimport script from \"./stage_column_component.vue?vue&type=script&lang=js\"\nexport * from \"./stage_column_component.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('root-graph-layout',{staticClass:\"stage-column gl-relative gl-basis-full\",class:_vm.columnSpacingClass,attrs:{\"data-testid\":\"stage-column\"},scopedSlots:_vm._u([{key:\"stages\",fn:function(){return [_c('div',{staticClass:\"stage-column-title gl-pipeline-job-width gl-relative -gl-mb-2 gl-flex gl-justify-between gl-truncate gl-pl-4 gl-font-bold gl-leading-36\",attrs:{\"data-testid\":\"stage-column-title\"}},[_c('span',{staticClass:\"gl-w-17/20 gl-truncate gl-pr-3\",attrs:{\"title\":_vm.name}},[_vm._v(\"\\n        \"+_vm._s(_vm.name)+\"\\n      \")]),_vm._v(\" \"),(_vm.hasAction && _vm.canUpdatePipeline)?_c('action-component',{staticClass:\"js-stage-action\",attrs:{\"should-trigger-click\":_vm.shouldTriggerActionClick,\"action-icon\":_vm.action.icon,\"tooltip-text\":_vm.action.title,\"link\":_vm.action.path,\"with-confirmation-modal\":_vm.withConfirmationModal},on:{\"pipelineActionRequestComplete\":function($event){return _vm.$emit('refreshPipelineGraph')}},nativeOn:{\"click\":function($event){return _vm.actionClicked.apply(null, arguments)}}}):_vm._e()],1)]},proxy:true},{key:\"jobs\",fn:function(){return _vm._l((_vm.groups),function(group){return _c('div',{key:_vm.getGroupId(group),staticClass:\"gl-pipeline-job-width gl-relative gl-mb-2 gl-whitespace-normal\",attrs:{\"id\":_vm.groupId(group),\"data-testid\":\"stage-column-group\"},on:{\"mouseenter\":function($event){return _vm.$emit('jobHover', group.name)},\"mouseleave\":function($event){return _vm.$emit('jobHover', '')}}},[(_vm.singleJobExists(group))?_c('job-item',{class:[{ 'gl-opacity-3': _vm.isFadedOut(group.name) }, 'gl-duration-slow gl-ease-ease'],attrs:{\"job\":group.jobs[0],\"job-hovered\":_vm.jobHovered,\"skip-retry-modal\":_vm.skipRetryModal,\"source-job-hovered\":_vm.sourceJobHovered,\"pipeline-expanded\":_vm.pipelineExpanded,\"pipeline-id\":_vm.pipelineId,\"stage-name\":_vm.showStageName ? group.stageName : '',\"css-class-job-name\":_vm.$options.jobClasses},on:{\"pipelineActionRequestComplete\":function($event){return _vm.$emit('refreshPipelineGraph')},\"setSkipRetryModal\":function($event){return _vm.$emit('setSkipRetryModal')}}}):(_vm.isParallel(group))?_c('div',{class:{ 'gl-opacity-3': _vm.isFadedOut(group.name) }},[_c('job-group-dropdown',{attrs:{\"group\":group,\"stage-name\":_vm.showStageName ? group.stageName : '',\"pipeline-id\":_vm.pipelineId,\"css-class-job-name\":_vm.$options.jobClasses}})],1):_vm._e()],1)})},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./graph_component.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./graph_component.vue?vue&type=script&lang=js\"","<script>\nimport {\n  generateColumnsFromLayersListMemoized,\n  keepLatestDownstreamPipelines,\n} from '~/ci/pipeline_details/utils/parsing_utils';\nimport LinksLayer from '../../../common/private/job_links_layer.vue';\nimport { DOWNSTREAM, MAIN, UPSTREAM, ONE_COL_WIDTH, STAGE_VIEW } from '../constants';\nimport { validateConfigPaths } from '../utils';\nimport LinkedGraphWrapper from './linked_graph_wrapper.vue';\nimport LinkedPipelinesColumn from './linked_pipelines_column.vue';\nimport StageColumnComponent from './stage_column_component.vue';\n\nexport default {\n  name: 'PipelineGraph',\n  components: {\n    LinksLayer,\n    LinkedGraphWrapper,\n    LinkedPipelinesColumn,\n    StageColumnComponent,\n  },\n  props: {\n    configPaths: {\n      type: Object,\n      required: true,\n      validator: validateConfigPaths,\n    },\n    pipeline: {\n      type: Object,\n      required: true,\n    },\n    showLinks: {\n      type: Boolean,\n      required: true,\n    },\n    viewType: {\n      type: String,\n      required: true,\n    },\n    isLinkedPipeline: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    computedPipelineInfo: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    skipRetryModal: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    type: {\n      type: String,\n      required: false,\n      default: MAIN,\n    },\n  },\n  pipelineTypeConstants: {\n    DOWNSTREAM,\n    UPSTREAM,\n  },\n  CONTAINER_REF: 'PIPELINE_LINKS_CONTAINER_REF',\n  BASE_CONTAINER_ID: 'pipeline-links-container',\n  data() {\n    return {\n      hoveredJobName: '',\n      hoveredSourceJobName: '',\n      highlightedJobs: [],\n      measurements: {\n        width: 0,\n        height: 0,\n      },\n      pipelineExpanded: {\n        jobName: '',\n        expanded: false,\n      },\n    };\n  },\n  computed: {\n    containerId() {\n      return `${this.$options.BASE_CONTAINER_ID}-${this.pipeline.id}`;\n    },\n    downstreamPipelines() {\n      return this.hasDownstreamPipelines\n        ? keepLatestDownstreamPipelines(this.pipeline.downstream)\n        : [];\n    },\n    layout() {\n      return this.isStageView\n        ? this.pipeline.stages\n        : generateColumnsFromLayersListMemoized(\n            this.pipeline,\n            this.computedPipelineInfo.pipelineLayers,\n          );\n    },\n    hasDownstreamPipelines() {\n      return Boolean(this.pipeline?.downstream?.length > 0);\n    },\n    hasUpstreamPipelines() {\n      return Boolean(this.pipeline?.upstream?.length > 0);\n    },\n    isStageView() {\n      return this.viewType === STAGE_VIEW;\n    },\n    linksData() {\n      return this.computedPipelineInfo?.linksData ?? null;\n    },\n    metricsConfig() {\n      return {\n        path: this.configPaths.metricsPath,\n        collectMetrics: true,\n      };\n    },\n    showJobLinks() {\n      return !this.isStageView && this.showLinks;\n    },\n    // The show downstream check prevents showing redundant linked columns\n    showDownstreamPipelines() {\n      return (\n        this.hasDownstreamPipelines && this.type !== this.$options.pipelineTypeConstants.UPSTREAM\n      );\n    },\n    // The show upstream check prevents showing redundant linked columns\n    showUpstreamPipelines() {\n      return (\n        this.hasUpstreamPipelines && this.type !== this.$options.pipelineTypeConstants.DOWNSTREAM\n      );\n    },\n    upstreamPipelines() {\n      return this.hasUpstreamPipelines ? this.pipeline.upstream : [];\n    },\n  },\n  mounted() {\n    this.getMeasurements();\n  },\n  methods: {\n    getMeasurements() {\n      this.measurements = {\n        width: this.$refs[this.containerId].scrollWidth,\n        height: this.$refs[this.containerId].scrollHeight,\n      };\n    },\n    onError(payload) {\n      this.$emit('error', payload);\n    },\n    setJob(jobName) {\n      this.hoveredJobName = jobName;\n    },\n    setSourceJob(jobName) {\n      this.hoveredSourceJobName = jobName;\n    },\n    slidePipelineContainer() {\n      this.$refs.mainPipelineContainer.scrollBy({\n        left: ONE_COL_WIDTH,\n        top: 0,\n        behavior: 'smooth',\n      });\n    },\n    togglePipelineExpanded(jobName, expanded) {\n      this.pipelineExpanded = {\n        expanded,\n        jobName: expanded ? jobName : '',\n      };\n    },\n    updateHighlightedJobs(jobs) {\n      this.highlightedJobs = jobs;\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"js-pipeline-graph\">\n    <div\n      ref=\"mainPipelineContainer\"\n      class=\"pipeline-graph gl-position-relative gl-flex gl-whitespace-nowrap gl-rounded-lg\"\n      :class=\"{\n        'pipeline-graph-container gl-pipeline-min-h gl-mt-3 gl-items-start gl-overflow-auto gl-bg-subtle gl-pb-8 gl-pt-3':\n          !isLinkedPipeline,\n        'gl-bg-gray-50 sm:gl-ml-5': isLinkedPipeline,\n      }\"\n      data-testid=\"pipeline-container\"\n    >\n      <linked-graph-wrapper>\n        <template #upstream>\n          <linked-pipelines-column\n            v-if=\"showUpstreamPipelines\"\n            :config-paths=\"configPaths\"\n            :linked-pipelines=\"upstreamPipelines\"\n            :column-title=\"__('Upstream')\"\n            :show-links=\"showJobLinks\"\n            :skip-retry-modal=\"skipRetryModal\"\n            :type=\"$options.pipelineTypeConstants.UPSTREAM\"\n            :view-type=\"viewType\"\n            @error=\"onError\"\n            @setSkipRetryModal=\"$emit('setSkipRetryModal')\"\n          />\n        </template>\n        <template #main>\n          <div :id=\"containerId\" :ref=\"containerId\" class=\"pipeline-links-container\">\n            <links-layer\n              :pipeline-data=\"layout\"\n              :pipeline-id=\"pipeline.id\"\n              :container-id=\"containerId\"\n              :container-measurements=\"measurements\"\n              :highlighted-job=\"hoveredJobName\"\n              :links-data=\"linksData\"\n              :metrics-config=\"metricsConfig\"\n              :show-links=\"showJobLinks\"\n              :view-type=\"viewType\"\n              @error=\"onError\"\n              @highlightedJobsChange=\"updateHighlightedJobs\"\n            >\n              <stage-column-component\n                v-for=\"column in layout\"\n                :key=\"column.id || column.name\"\n                :name=\"column.name\"\n                :groups=\"column.groups\"\n                :action=\"column.status.action\"\n                :highlighted-jobs=\"highlightedJobs\"\n                :is-stage-view=\"isStageView\"\n                :job-hovered=\"hoveredJobName\"\n                :skip-retry-modal=\"skipRetryModal\"\n                :source-job-hovered=\"hoveredSourceJobName\"\n                :pipeline-expanded=\"pipelineExpanded\"\n                :pipeline-id=\"pipeline.id\"\n                :user-permissions=\"pipeline.userPermissions\"\n                @refreshPipelineGraph=\"$emit('refreshPipelineGraph')\"\n                @setSkipRetryModal=\"$emit('setSkipRetryModal')\"\n                @jobHover=\"setJob\"\n                @updateMeasurements=\"getMeasurements\"\n              />\n            </links-layer>\n          </div>\n        </template>\n        <template #downstream>\n          <linked-pipelines-column\n            v-if=\"showDownstreamPipelines\"\n            class=\"sm:gl-ml-3\"\n            :config-paths=\"configPaths\"\n            :linked-pipelines=\"downstreamPipelines\"\n            :column-title=\"__('Downstream')\"\n            :skip-retry-modal=\"skipRetryModal\"\n            :show-links=\"showJobLinks\"\n            :type=\"$options.pipelineTypeConstants.DOWNSTREAM\"\n            :view-type=\"viewType\"\n            data-testid=\"downstream-pipelines\"\n            @downstreamHovered=\"setSourceJob\"\n            @pipelineExpandToggle=\"togglePipelineExpanded\"\n            @refreshPipelineGraph=\"$emit('refreshPipelineGraph')\"\n            @setSkipRetryModal=\"$emit('setSkipRetryModal')\"\n            @scrollContainer=\"slidePipelineContainer\"\n            @error=\"onError\"\n          />\n        </template>\n      </linked-graph-wrapper>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./graph_component.vue?vue&type=template&id=152b82e8\"\nimport script from \"./graph_component.vue?vue&type=script&lang=js\"\nexport * from \"./graph_component.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar charAt = require('../internals/string-multibyte').charAt;\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\n\n// `String.prototype.at` method\n// https://github.com/mathiasbynens/String.prototype.at\n$({ target: 'String', proto: true, forced: true }, {\n  at: function at(index) {\n    var S = toString(requireObjectCoercible(this));\n    var len = S.length;\n    var relativeIndex = toIntegerOrInfinity(index);\n    var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n    return (k < 0 || k >= len) ? undefined : charAt(S, k);\n  }\n});\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissFinding\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDismissalReason\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFindingDismiss\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFinding\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"id\"},\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stateTransitions\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"author\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"toState\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":630}};\n    doc.loc.source = {\"body\":\"mutation dismissFinding(\\n  $uuid: String!\\n  $comment: String\\n  $dismissalReason: VulnerabilityDismissalReason\\n) {\\n  securityFindingDismiss(\\n    input: { uuid: $uuid, comment: $comment, dismissalReason: $dismissalReason }\\n  ) {\\n    errors\\n    securityFinding {\\n      id: uuid\\n      state\\n      dismissalReason\\n      vulnerability {\\n        id\\n        stateTransitions(last: 1) {\\n          nodes {\\n            author {\\n              id\\n              name\\n              username\\n              webUrl\\n            }\\n            id\\n            comment\\n            createdAt\\n            toState\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"dismissFinding\"] = oneQuery(doc, \"dismissFinding\");\n        \n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_counts.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_counts.vue?vue&type=script&lang=js\"","<script>\nimport { GlCard, GlSkeletonLoader } from '@gitlab/ui';\nimport SeverityBadge from 'ee/vue_shared/security_reports/components/severity_badge.vue';\nimport {\n  DASHBOARD_TYPE_PROJECT,\n  DASHBOARD_TYPE_GROUP,\n  DASHBOARD_TYPE_INSTANCE,\n} from 'ee/security_dashboard/constants';\nimport { createAlert } from '~/alert';\nimport { s__, sprintf } from '~/locale';\nimport countsQuery from 'ee/security_dashboard/graphql/queries/vulnerability_severities_count.query.graphql';\nimport { SEVERITIES, SEVERITY_COUNT_LIMIT } from 'ee/vulnerabilities/constants';\n\nexport default {\n  components: { GlCard, GlSkeletonLoader, SeverityBadge },\n  inject: ['fullPath', 'dashboardType'],\n  props: {\n    filters: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n  },\n  data() {\n    return {\n      counts: {},\n    };\n  },\n  apollo: {\n    counts: {\n      query: countsQuery,\n      errorPolicy: 'none',\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          isProject: this.dashboardType === DASHBOARD_TYPE_PROJECT,\n          isGroup: this.dashboardType === DASHBOARD_TYPE_GROUP,\n          isInstance: this.dashboardType === DASHBOARD_TYPE_INSTANCE,\n          capped: true,\n          ...this.filters,\n        };\n      },\n      update(data) {\n        return data[this.dashboardType].vulnerabilitySeveritiesCount;\n      },\n      error() {\n        createAlert({\n          message: s__(\n            'SecurityReports|Error fetching the vulnerability counts. Please check your network connection and try again.',\n          ),\n        });\n      },\n      skip() {\n        return !this.filters;\n      },\n    },\n  },\n  computed: {\n    isLoadingCounts() {\n      return !this.filters || this.$apollo.queries.counts.loading;\n    },\n    severityCounts() {\n      return SEVERITIES.map((severity) => ({\n        severity,\n        count: this.counts[severity] || 0,\n      }));\n    },\n  },\n  watch: {\n    severityCounts() {\n      this.$emit('counts-changed', this.severityCounts);\n    },\n  },\n  methods: {\n    formattedCounts(counts) {\n      return counts > SEVERITY_COUNT_LIMIT\n        ? sprintf(s__('SecurityReports|%{count}+'), { count: SEVERITY_COUNT_LIMIT })\n        : counts;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"vulnerability-counts gl-text-center gl-font-bold\">\n    <gl-card\n      v-for=\"{ severity, count } in severityCounts\"\n      :key=\"severity\"\n      :data-testid=\"severity\"\n      header-class=\"gl-p-3\"\n      body-class=\"gl-flex gl-justify-center gl-items-center\"\n    >\n      <template #header>\n        <severity-badge :severity=\"severity\" class=\"!gl-text-center\" />\n      </template>\n\n      <template #default>\n        <gl-skeleton-loader v-if=\"isLoadingCounts\" :equal-width-lines=\"true\" :lines=\"1\" />\n        <span v-else class=\"gl-text-size-h2\">{{ formattedCounts(count) }}</span>\n      </template>\n    </gl-card>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./vulnerability_counts.vue?vue&type=template&id=267197ee\"\nimport script from \"./vulnerability_counts.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_counts.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"vulnerability-counts gl-text-center gl-font-bold\"},_vm._l((_vm.severityCounts),function({ severity, count }){return _c('gl-card',{key:severity,attrs:{\"data-testid\":severity,\"header-class\":\"gl-p-3\",\"body-class\":\"gl-flex gl-justify-center gl-items-center\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('severity-badge',{staticClass:\"!gl-text-center\",attrs:{\"severity\":severity}})]},proxy:true},{key:\"default\",fn:function(){return [(_vm.isLoadingCounts)?_c('gl-skeleton-loader',{attrs:{\"equal-width-lines\":true,\"lines\":1}}):_c('span',{staticClass:\"gl-text-size-h2\"},[_vm._v(_vm._s(_vm.formattedCounts(count)))])]},proxy:true}],null,true)})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard_has_no_vulnerabilities.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard_has_no_vulnerabilities.vue?vue&type=script&lang=js\"","<script>\nimport { GlEmptyState, GlSprintf, GlLink } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { DOC_PATH_SECURITY_CONFIGURATION } from 'ee/security_dashboard/constants';\n\nexport default {\n  components: {\n    GlEmptyState,\n    GlSprintf,\n    GlLink,\n  },\n  inject: ['emptyStateSvgPath'],\n  i18n: {\n    title: s__('SecurityReports|No vulnerabilities to report'),\n    primaryButtonText: s__('SecurityReports|Learn more about security configuration'),\n    description: s__(\n      `SecurityReports|If you were expecting vulnerabilities to be shown here, check that you've completed the %{linkStart}security scanning prerequisites%{linkEnd}, or check the other vulnerability types in the tabs above.`,\n    ),\n    descriptionLinkText: s__('SecurityReports|security scanning prerequisites'),\n  },\n  DOC_PATH_SECURITY_CONFIGURATION,\n};\n</script>\n\n<template>\n  <gl-empty-state\n    :title=\"$options.i18n.title\"\n    :svg-path=\"emptyStateSvgPath\"\n    :svg-height=\"null\"\n    :primary-button-link=\"$options.DOC_PATH_SECURITY_CONFIGURATION\"\n    :primary-button-text=\"$options.i18n.primaryButtonText\"\n  >\n    <template #description>\n      <gl-sprintf :message=\"$options.i18n.description\">\n        <template #link>\n          <gl-link :href=\"$options.DOC_PATH_SECURITY_CONFIGURATION\">\n            {{ $options.i18n.descriptionLinkText }}</gl-link\n          >\n        </template>\n      </gl-sprintf>\n    </template>\n  </gl-empty-state>\n</template>\n","import { render, staticRenderFns } from \"./dashboard_has_no_vulnerabilities.vue?vue&type=template&id=47491aaf\"\nimport script from \"./dashboard_has_no_vulnerabilities.vue?vue&type=script&lang=js\"\nexport * from \"./dashboard_has_no_vulnerabilities.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-empty-state',{attrs:{\"title\":_vm.$options.i18n.title,\"svg-path\":_vm.emptyStateSvgPath,\"svg-height\":null,\"primary-button-link\":_vm.$options.DOC_PATH_SECURITY_CONFIGURATION,\"primary-button-text\":_vm.$options.i18n.primaryButtonText},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.description},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.$options.DOC_PATH_SECURITY_CONFIGURATION}},[_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.descriptionLinkText))])]},proxy:true}])})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filters_produced_no_results.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filters_produced_no_results.vue?vue&type=script&lang=js\"","<script>\nimport { GlEmptyState } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlEmptyState,\n  },\n  inject: ['noVulnerabilitiesSvgPath'],\n};\n</script>\n\n<template>\n  <gl-empty-state\n    :title=\"s__('SecurityReports|Sorry, your filter produced no results')\"\n    :svg-path=\"noVulnerabilitiesSvgPath\"\n    :svg-height=\"150\"\n    :description=\"s__(`SecurityReports|To widen your search, change or remove filters above`)\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./filters_produced_no_results.vue?vue&type=template&id=9d68612a\"\nimport script from \"./filters_produced_no_results.vue?vue&type=script&lang=js\"\nexport * from \"./filters_produced_no_results.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-empty-state',{attrs:{\"title\":_vm.s__('SecurityReports|Sorry, your filter produced no results'),\"svg-path\":_vm.noVulnerabilitiesSvgPath,\"svg-height\":150,\"description\":_vm.s__(`SecurityReports|To widen your search, change or remove filters above`)}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const PRIMARY_IDENTIFIER_TYPE = 'cve';\n\n/**\n * Finds the name of the primary identifier or returns the name of the first identifier\n *\n * @param {Array} identifiers all available identifiers\n * @returns {String} the primary identifier's name\n */\nconst getPrimaryIdentifier = (identifiers = [], property) => {\n  const identifier = identifiers.find((value) => value[property] === PRIMARY_IDENTIFIER_TYPE);\n  return identifier?.name || identifiers[0]?.name || '';\n};\n\nexport default getPrimaryIdentifier;\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./false_positive_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./false_positive_badge.vue?vue&type=script&lang=js\"","<script>\nimport { GlPopover, GlBadge, GlSprintf, GlLink } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { DOC_PATH_VULNERABILITY_DETAILS } from 'ee/security_dashboard/constants';\n\nexport default {\n  components: {\n    GlPopover,\n    GlBadge,\n    GlSprintf,\n    GlLink,\n  },\n  inject: {\n    canViewFalsePositive: {\n      default: false,\n    },\n  },\n  methods: {\n    /**\n     * BVPopover retrieves the target during the `beforeDestroy` hook to deregister attached\n     * events. Since during `beforeDestroy` refs are `undefined`, it throws a warning in the\n     * console because we're trying to access the `$el` property of `undefined`. Optional\n     * chaining is not working in templates, which is why the method is used.\n     *\n     * See more on https://gitlab.com/gitlab-org/gitlab/-/merge_requests/49628#note_464803276\n     */\n    target() {\n      return this.$refs.badge?.$el;\n    },\n  },\n  i18n: {\n    title: s__('Vulnerability|False positive detected'),\n    message: s__(\n      'Vulnerability|The scanner determined this vulnerability to be a false positive. Verify the evaluation before changing its status. %{linkStart}Learn more about false positive detection.%{linkEnd}',\n    ),\n  },\n  DOC_PATH_VULNERABILITY_DETAILS,\n};\n</script>\n\n<template>\n  <div v-if=\"canViewFalsePositive\" class=\"gl-inline-block\">\n    <gl-badge ref=\"badge\" icon=\"false-positive\" variant=\"warning\" />\n    <gl-popover ref=\"popover\" :target=\"target\" :title=\"$options.i18n.title\" placement=\"top\">\n      <gl-sprintf :message=\"$options.i18n.message\">\n        <template #link=\"{ content }\">\n          <gl-link\n            class=\"gl-text-sm\"\n            :href=\"$options.DOC_PATH_VULNERABILITY_DETAILS\"\n            target=\"_blank\"\n          >\n            {{ content }}\n          </gl-link>\n        </template>\n      </gl-sprintf>\n    </gl-popover>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./false_positive_badge.vue?vue&type=template&id=5c8e9219\"\nimport script from \"./false_positive_badge.vue?vue&type=script&lang=js\"\nexport * from \"./false_positive_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canViewFalsePositive)?_c('div',{staticClass:\"gl-inline-block\"},[_c('gl-badge',{ref:\"badge\",attrs:{\"icon\":\"false-positive\",\"variant\":\"warning\"}}),_vm._v(\" \"),_c('gl-popover',{ref:\"popover\",attrs:{\"target\":_vm.target,\"title\":_vm.$options.i18n.title,\"placement\":\"top\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.message},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-text-sm\",attrs:{\"href\":_vm.$options.DOC_PATH_VULNERABILITY_DETAILS,\"target\":\"_blank\"}},[_vm._v(\"\\n          \"+_vm._s(content)+\"\\n        \")])]}}],null,false,3730078706)})],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resolution_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resolution_badge.vue?vue&type=script&lang=js\"","<script>\nimport { GlPopover, GlBadge } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlPopover,\n    GlBadge,\n  },\n  methods: {\n    /**\n     * BVPopover retrieves the target during the `beforeDestroy` hook to deregister attached\n     * events. Since during `beforeDestroy` refs are `undefined`, it throws a warning in the\n     * console because we're trying to access the `$el` property of `undefined`. Optional\n     * chaining is not working in templates, which is why the method is used.\n     *\n     * See more on https://gitlab.com/gitlab-org/gitlab/-/merge_requests/49628#note_464803276\n     */\n    target() {\n      return this.$refs.badge?.$el;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-inline-block\">\n    <gl-badge ref=\"badge\" variant=\"info\" icon=\"check-circle-dashed\" />\n    <gl-popover\n      ref=\"popover\"\n      :content=\"\n        __(\n          'The vulnerability is no longer detected. Verify the vulnerability has been fixed or removed before changing its status.',\n        )\n      \"\n      :target=\"target\"\n      :title=\"__('Vulnerability remediated. Review before resolving.')\"\n      placement=\"top\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./resolution_badge.vue?vue&type=template&id=4daff5f2\"\nimport script from \"./resolution_badge.vue?vue&type=script&lang=js\"\nexport * from \"./resolution_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-inline-block\"},[_c('gl-badge',{ref:\"badge\",attrs:{\"variant\":\"info\",\"icon\":\"check-circle-dashed\"}}),_vm._v(\" \"),_c('gl-popover',{ref:\"popover\",attrs:{\"content\":_vm.__(\n        'The vulnerability is no longer detected. Verify the vulnerability has been fixed or removed before changing its status.',\n      ),\"target\":_vm.target,\"title\":_vm.__('Vulnerability remediated. Review before resolving.'),\"placement\":\"top\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlBadge, GlPopover, GlIcon, GlLink, GlSprintf } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nconst ICON_COLOR = {\n  opened: 'success',\n  closed: 'danger',\n  merged: 'info',\n};\n\nconst ICON = {\n  opened: 'issue-open-m',\n  closed: 'issue-close',\n  merged: 'merge',\n};\n\nexport default {\n  components: {\n    GlBadge,\n    GlIcon,\n    GlPopover,\n    GlLink,\n    GlSprintf,\n  },\n  props: {\n    mergeRequest: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    mergeRequestIdString() {\n      return s__('AutoRemediation|!%{mergeRequestIid}');\n    },\n  },\n  methods: {\n    getIconVariant(state) {\n      return ICON_COLOR[state] || 'subtle';\n    },\n    getIcon(state) {\n      return ICON[state] || 'issue-open-m';\n    },\n  },\n};\n</script>\n\n<template>\n  <div ref=\"popover\" data-testid=\"vulnerability-solutions-bulb\">\n    <gl-badge ref=\"badge\" variant=\"neutral\" icon=\"merge-request\" />\n    <gl-popover :target=\"() => $refs.popover\" placement=\"top\">\n      <template #title>\n        <span>{{ s__('AutoRemediation| 1 Merge Request') }}</span>\n      </template>\n      <ul class=\"gl-mb-0 gl-list-none gl-pl-0\">\n        <li class=\"gl-mb-2 gl-flex gl-items-center\">\n          <gl-icon\n            :name=\"getIcon(mergeRequest.state)\"\n            :size=\"16\"\n            :variant=\"getIconVariant(mergeRequest.state)\"\n          />\n          <gl-link :href=\"mergeRequest.webUrl\" class=\"gl-ml-3\">\n            <gl-sprintf :message=\"mergeRequestIdString\">\n              <template #mergeRequestIid>{{ mergeRequest.iid }}</template>\n            </gl-sprintf>\n          </gl-link>\n        </li>\n      </ul>\n    </gl-popover>\n  </div>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_request_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_request_badge.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./merge_request_badge.vue?vue&type=template&id=30cad289\"\nimport script from \"./merge_request_badge.vue?vue&type=script&lang=js\"\nexport * from \"./merge_request_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"popover\",attrs:{\"data-testid\":\"vulnerability-solutions-bulb\"}},[_c('gl-badge',{ref:\"badge\",attrs:{\"variant\":\"neutral\",\"icon\":\"merge-request\"}}),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":() => _vm.$refs.popover,\"placement\":\"top\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',[_vm._v(_vm._s(_vm.s__('AutoRemediation| 1 Merge Request')))])]},proxy:true}])},[_vm._v(\" \"),_c('ul',{staticClass:\"gl-mb-0 gl-list-none gl-pl-0\"},[_c('li',{staticClass:\"gl-mb-2 gl-flex gl-items-center\"},[_c('gl-icon',{attrs:{\"name\":_vm.getIcon(_vm.mergeRequest.state),\"size\":16,\"variant\":_vm.getIconVariant(_vm.mergeRequest.state)}}),_vm._v(\" \"),_c('gl-link',{staticClass:\"gl-ml-3\",attrs:{\"href\":_vm.mergeRequest.webUrl}},[_c('gl-sprintf',{attrs:{\"message\":_vm.mergeRequestIdString},scopedSlots:_vm._u([{key:\"mergeRequestIid\",fn:function(){return [_vm._v(_vm._s(_vm.mergeRequest.iid))]},proxy:true}])})],1)],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issue_link.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issue_link.vue?vue&type=script&lang=js\"","<script>\nimport jiraLogo from '@gitlab/svgs/dist/illustrations/logos/jira.svg?raw';\nimport { GlIcon, GlLink, GlTooltipDirective, GlSprintf } from '@gitlab/ui';\nimport { STATUS_CLOSED } from '~/issues/constants';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\n\nexport default {\n  components: {\n    GlIcon,\n    GlLink,\n    GlSprintf,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n    SafeHtml,\n  },\n  props: {\n    issue: {\n      type: Object,\n      required: true,\n    },\n    isJira: {\n      type: Boolean,\n      required: false,\n    },\n  },\n  computed: {\n    iconName() {\n      return this.issueIsClosed ? 'issue-closed' : 'issues';\n    },\n    iconVariant() {\n      return this.issueIsClosed ? 'current' : 'success';\n    },\n    issueIsClosed() {\n      return this.issue.state === STATUS_CLOSED;\n    },\n  },\n  jiraLogo,\n};\n</script>\n<template>\n  <gl-link\n    v-gl-tooltip=\"issue.title\"\n    :href=\"issue.webUrl\"\n    target=\"__blank\"\n    class=\"gl-inline-flex gl-shrink-0 gl-items-center\"\n  >\n    <span\n      v-if=\"isJira\"\n      v-safe-html=\"$options.jiraLogo\"\n      class=\"gl-mr-3 gl-inline-flex gl-min-h-6 gl-items-center\"\n      data-testid=\"jira-logo\"\n    ></span>\n    <gl-icon v-else class=\"gl-mr-2\" :name=\"iconName\" :variant=\"iconVariant\" />\n    <gl-sprintf v-if=\"issueIsClosed\" :message=\"__('#%{issueIid} (closed)')\">\n      <template #issueIid>{{ issue.iid }}</template>\n    </gl-sprintf>\n    <span v-else>#{{ issue.iid }}</span>\n    <gl-icon v-if=\"isJira\" :size=\"12\" name=\"external-link\" class=\"gl-ml-1\" />\n  </gl-link>\n</template>\n","import { render, staticRenderFns } from \"./issue_link.vue?vue&type=template&id=2e0ca269\"\nimport script from \"./issue_link.vue?vue&type=script&lang=js\"\nexport * from \"./issue_link.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.issue.title),expression:\"issue.title\"}],staticClass:\"gl-inline-flex gl-shrink-0 gl-items-center\",attrs:{\"href\":_vm.issue.webUrl,\"target\":\"__blank\"}},[(_vm.isJira)?_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.$options.jiraLogo),expression:\"$options.jiraLogo\"}],staticClass:\"gl-mr-3 gl-inline-flex gl-min-h-6 gl-items-center\",attrs:{\"data-testid\":\"jira-logo\"}}):_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"name\":_vm.iconName,\"variant\":_vm.iconVariant}}),_vm._v(\" \"),(_vm.issueIsClosed)?_c('gl-sprintf',{attrs:{\"message\":_vm.__('#%{issueIid} (closed)')},scopedSlots:_vm._u([{key:\"issueIid\",fn:function(){return [_vm._v(_vm._s(_vm.issue.iid))]},proxy:true}],null,false,938776478)}):_c('span',[_vm._v(\"#\"+_vm._s(_vm.issue.iid))]),_vm._v(\" \"),(_vm.isJira)?_c('gl-icon',{staticClass:\"gl-ml-1\",attrs:{\"size\":12,\"name\":\"external-link\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issues_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issues_badge.vue?vue&type=script&lang=js\"","<script>\nimport { GlPopover, GlBadge } from '@gitlab/ui';\nimport IssueLink from 'ee/vulnerabilities/components/issue_link.vue';\nimport { n__ } from '~/locale';\n\nexport default {\n  components: {\n    GlBadge,\n    GlPopover,\n    IssueLink,\n  },\n  props: {\n    issues: {\n      type: Array,\n      required: true,\n    },\n    isJira: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    numberOfIssues() {\n      return this.issues.length;\n    },\n    popoverTitle() {\n      return n__('1 Issue', '%d Issues', this.numberOfIssues);\n    },\n    issueBadgeEl() {\n      return () => this.$refs.issueBadge?.$el;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-inline-block\">\n    <gl-badge ref=\"issueBadge\" icon=\"issues\" class=\"gl-px-3\">\n      {{ numberOfIssues }}\n    </gl-badge>\n    <gl-popover ref=\"popover\" :target=\"issueBadgeEl\" placement=\"top\">\n      <template #title>\n        {{ popoverTitle }}\n      </template>\n      <ul class=\"gl-m-0 gl-list-none gl-p-0\">\n        <li v-for=\"{ issue } in issues\" :key=\"issue.iid\">\n          <issue-link :issue=\"issue\" :is-jira=\"isJira\" />\n        </li>\n      </ul>\n    </gl-popover>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./issues_badge.vue?vue&type=template&id=9aeda9ca\"\nimport script from \"./issues_badge.vue?vue&type=script&lang=js\"\nexport * from \"./issues_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-inline-block\"},[_c('gl-badge',{ref:\"issueBadge\",staticClass:\"gl-px-3\",attrs:{\"icon\":\"issues\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.numberOfIssues)+\"\\n  \")]),_vm._v(\" \"),_c('gl-popover',{ref:\"popover\",attrs:{\"target\":_vm.issueBadgeEl,\"placement\":\"top\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\"\\n      \"+_vm._s(_vm.popoverTitle)+\"\\n    \")]},proxy:true}])},[_vm._v(\" \"),_c('ul',{staticClass:\"gl-m-0 gl-list-none gl-p-0\"},_vm._l((_vm.issues),function({ issue }){return _c('li',{key:issue.iid},[_c('issue-link',{attrs:{\"issue\":issue,\"is-jira\":_vm.isJira}})],1)}),0)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./solution_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./solution_badge.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlPopover } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nexport default {\n  components: {\n    GlPopover,\n    GlBadge,\n  },\n  i18n: {\n    title: s__('Vulnerability|A solution is available for this vulnerability'),\n    message: s__(\n      'Vulnerability|Create a merge request to implement this solution, or download and apply the patch manually.',\n    ),\n  },\n};\n</script>\n\n<template>\n  <div ref=\"popover\">\n    <gl-badge variant=\"neutral\" icon=\"bulb\" />\n    <gl-popover\n      :target=\"() => $refs.popover\"\n      placement=\"top\"\n      :title=\"$options.i18n.title\"\n      :content=\"$options.i18n.message\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./solution_badge.vue?vue&type=template&id=78336428\"\nimport script from \"./solution_badge.vue?vue&type=script&lang=js\"\nexport * from \"./solution_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"popover\"},[_c('gl-badge',{attrs:{\"variant\":\"neutral\",\"icon\":\"bulb\"}}),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":() => _vm.$refs.popover,\"placement\":\"top\",\"title\":_vm.$options.i18n.title,\"content\":_vm.$options.i18n.message}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ai_resolution_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ai_resolution_badge.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nexport default {\n  components: {\n    GlIcon,\n    GlBadge,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  i18n: {\n    tooltip: s__('Vulnerability|Use AI to understand a vulnerability and suggest a fix'),\n  },\n};\n</script>\n\n<template>\n  <gl-badge v-gl-tooltip :title=\"$options.i18n.tooltip\" variant=\"info\">\n    <gl-icon name=\"tanuki-ai\" />\n    <span data-testid=\"ai-resolution-badge-text\" class=\"gl-sr-only\">{{\n      $options.i18n.tooltip\n    }}</span>\n  </gl-badge>\n</template>\n","import { render, staticRenderFns } from \"./ai_resolution_badge.vue?vue&type=template&id=00ecf8d8\"\nimport script from \"./ai_resolution_badge.vue?vue&type=script&lang=js\"\nexport * from \"./ai_resolution_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.$options.i18n.tooltip,\"variant\":\"info\"}},[_c('gl-icon',{attrs:{\"name\":\"tanuki-ai\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-sr-only\",attrs:{\"data-testid\":\"ai-resolution-badge-text\"}},[_vm._v(_vm._s(_vm.$options.i18n.tooltip))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_comment_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_comment_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlLink, GlTooltipDirective } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlIcon,\n    GlLink,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    vulnerability: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n<template>\n  <gl-link\n    v-gl-tooltip=\"s__('Vulnerability|Comments')\"\n    :href=\"vulnerability.vulnerabilityPath\"\n    :data-testid=\"`vulnerability-comments-${vulnerability.id}`\"\n    class=\"gl-ml-3 gl-inline-flex gl-shrink-0 gl-items-center gl-text-default\"\n  >\n    <gl-icon name=\"comment\" />\n  </gl-link>\n</template>\n","import { render, staticRenderFns } from \"./vulnerability_comment_icon.vue?vue&type=template&id=c4197ea2\"\nimport script from \"./vulnerability_comment_icon.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_comment_icon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.s__('Vulnerability|Comments')),expression:\"s__('Vulnerability|Comments')\"}],staticClass:\"gl-ml-3 gl-inline-flex gl-shrink-0 gl-items-center gl-text-default\",attrs:{\"href\":_vm.vulnerability.vulnerabilityPath,\"data-testid\":`vulnerability-comments-${_vm.vulnerability.id}`}},[_c('gl-icon',{attrs:{\"name\":\"comment\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_path.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_path.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlTruncate } from '@gitlab/ui';\n\nexport default {\n  name: 'VulnerabilityPath',\n  components: {\n    GlLink,\n    GlTruncate,\n  },\n  props: {\n    location: {\n      type: Object,\n      required: true,\n      default: () => ({}),\n    },\n  },\n  computed: {\n    fileUrl() {\n      const { startLine: start, endLine: end, blobPath } = this.location;\n\n      if (!start || blobPath.includes('#')) {\n        return blobPath;\n      }\n\n      const lineNumber = end > start ? `${start}-${end}` : start;\n\n      return `${blobPath}#L${lineNumber}`;\n    },\n    locationString() {\n      const { image, file, startLine, path } = this.location;\n\n      if (image) {\n        return image;\n      }\n\n      if (file && startLine) {\n        return `${file}:${startLine}`;\n      }\n\n      if (path && !file) {\n        return path;\n      }\n\n      return file;\n    },\n    hasBlobPath() {\n      return Boolean(this.location.blobPath);\n    },\n    shouldShowVulnerabilityPath() {\n      return Boolean(this.locationString);\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"shouldShowVulnerabilityPath\">\n    <gl-link v-if=\"hasBlobPath\" :href=\"fileUrl\">\n      <gl-truncate :text=\"locationString\" position=\"middle\" />\n    </gl-link>\n    <gl-truncate v-else :text=\"locationString\" position=\"middle\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./vulnerability_path.vue?vue&type=template&id=29b97b1d\"\nimport script from \"./vulnerability_path.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_path.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.shouldShowVulnerabilityPath)?_c('div',[(_vm.hasBlobPath)?_c('gl-link',{attrs:{\"href\":_vm.fileUrl}},[_c('gl-truncate',{attrs:{\"text\":_vm.locationString,\"position\":\"middle\"}})],1):_c('gl-truncate',{attrs:{\"text\":_vm.locationString,\"position\":\"middle\"}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_summary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_summary.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlCollapse,\n  GlButton,\n  GlAlert,\n  GlCollapsibleListbox,\n  GlSprintf,\n  GlFormInput,\n  GlFormGroup,\n  GlLink,\n} from '@gitlab/ui';\nimport * as Sentry from '~/sentry/sentry_browser_wrapper';\nimport eventHub from 'ee/security_dashboard/utils/event_hub';\nimport { __, s__, n__ } from '~/locale';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport { VULNERABILITY_STATE_OBJECTS, DISMISSAL_REASONS } from 'ee/vulnerabilities/constants';\nimport vulnerabilitiesDismiss from 'ee/security_dashboard/graphql/mutations/vulnerabilities_dismiss.mutation.graphql';\nimport { DASHBOARD_TYPE_PIPELINE } from 'ee/security_dashboard/constants';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\n\nexport default {\n  components: {\n    GlCollapse,\n    GlButton,\n    GlAlert,\n    GlSprintf,\n    GlCollapsibleListbox,\n    GlFormInput,\n    GlFormGroup,\n    GlLink,\n  },\n  inject: {\n    vulnerabilitiesQuery: {\n      required: true,\n    },\n    vulnerabilitiesCountsQuery: {\n      required: false,\n      default: null,\n    },\n    dismissalDescriptions: {\n      required: true,\n    },\n    dashboardType: {\n      required: true,\n    },\n  },\n  props: {\n    selectedVulnerabilities: {\n      type: Array,\n      required: true,\n    },\n    visible: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      isSubmitting: false,\n      rejectedVulnerabilities: [],\n      selectedStatus: null,\n      selectedDismissalReason: null,\n      comment: null,\n      statusInvalid: false,\n      dismissalReasonInvalid: false,\n      commentInvalid: false,\n    };\n  },\n  computed: {\n    selectedStatusObject() {\n      return VULNERABILITY_STATE_OBJECTS[this.selectedStatus];\n    },\n    statusToggleText() {\n      return this.selectedStatusObject?.dropdownText || this.$options.i18n.statusTogglePlaceholder;\n    },\n    dismissalReasonToggleText() {\n      return (\n        DISMISSAL_REASONS[this.selectedDismissalReason] ||\n        this.$options.i18n.dismissalReasonTogglePlaceholder\n      );\n    },\n    commentPlaceholder() {\n      return this.isDismissedStatus\n        ? this.$options.i18n.requiredCommentPlaceholder\n        : this.$options.i18n.commentPlaceholder;\n    },\n    statusItems() {\n      const items = Object.values(VULNERABILITY_STATE_OBJECTS).map((item) => ({\n        ...item,\n        value: item.state,\n      }));\n\n      if (!this.isPipeline) {\n        return items;\n      }\n\n      return items.filter((item) => Boolean(item.findingMutation));\n    },\n    dismissalReasonItems() {\n      return Object.entries(DISMISSAL_REASONS).map(([reason, text]) => ({\n        value: reason,\n        text,\n        description: this.dismissalDescriptions[reason],\n      }));\n    },\n    isDismissedStatus() {\n      return this.selectedStatus === 'dismissed';\n    },\n    commentAndDismissalReason() {\n      const { comment, selectedDismissalReason } = this;\n\n      return {\n        comment,\n        ...(selectedDismissalReason && { dismissalReason: selectedDismissalReason.toUpperCase() }),\n      };\n    },\n    hasDismissalError() {\n      return this.rejectedVulnerabilities.length > 0;\n    },\n    isPipeline() {\n      return this.dashboardType === DASHBOARD_TYPE_PIPELINE;\n    },\n    idKey() {\n      return this.isPipeline ? 'uuid' : 'id';\n    },\n  },\n  methods: {\n    resetSelected() {\n      this.$emit('cancel-selection');\n      this.resetState();\n    },\n    resetInvalidInputs() {\n      this.statusInvalid = false;\n      this.dismissalReasonInvalid = false;\n      this.commentInvalid = false;\n    },\n    resetState() {\n      this.selectedStatus = null;\n      this.selectedDismissalReason = null;\n      this.comment = null;\n      this.rejectedVulnerabilities = [];\n      this.resetInvalidInputs();\n    },\n    updateStatus() {\n      this.resetInvalidInputs();\n      this.selectedDismissalReason = null;\n      this.comment = null;\n    },\n    async dismissMultipleVulnerabilities() {\n      const { selectedVulnerabilities } = this;\n      const ids = selectedVulnerabilities.map((vulnerability) => vulnerability.id);\n\n      try {\n        const {\n          data: {\n            vulnerabilitiesDismiss: { errors },\n          },\n        } = await this.$apollo.mutate({\n          mutation: vulnerabilitiesDismiss,\n          variables: {\n            ids,\n            ...this.commentAndDismissalReason,\n          },\n          refetchQueries: [this.vulnerabilitiesQuery, this.vulnerabilitiesCountsQuery],\n          awaitRefetchQueries: true,\n        });\n\n        if (errors.length > 0) {\n          throw new Error(errors.join(','));\n        }\n\n        this.isSubmitting = false;\n\n        this.$emit('vulnerabilities-updated', ids);\n\n        this.handleUpdateStateSuccess(ids.length);\n      } catch (error) {\n        Sentry.captureException(error);\n        // the mutation works like a transaction, if there is an error, nothing will be dismissed\n        this.rejectedVulnerabilities = selectedVulnerabilities;\n      }\n    },\n    setInvalidInputs() {\n      if (!this.selectedStatus) {\n        this.statusInvalid = true;\n      } else if (this.isDismissedStatus) {\n        if (!this.selectedDismissalReason) {\n          this.dismissalReasonInvalid = true;\n        }\n        if (!this.comment) {\n          this.commentInvalid = true;\n        }\n      }\n    },\n    handleSubmit() {\n      this.setInvalidInputs();\n\n      if (this.statusInvalid || this.dismissalReasonInvalid || this.commentInvalid) {\n        return false;\n      }\n\n      this.isSubmitting = true;\n\n      // Only use bulk dismissal mutation for non-pipeline dashboard type\n      if (this.isDismissedStatus && !this.isPipeline) {\n        return this.dismissMultipleVulnerabilities();\n      }\n\n      this.rejectedVulnerabilities = [];\n      let fulfilledCount = 0;\n\n      const mutation = this.isPipeline\n        ? this.selectedStatusObject.findingMutation\n        : this.selectedStatusObject.mutation;\n\n      const promises = this.selectedVulnerabilities.map((vulnerability) => {\n        return this.$apollo\n          .mutate({\n            mutation,\n            variables: {\n              [this.idKey]: vulnerability.id,\n              ...this.commentAndDismissalReason,\n            },\n            refetchQueries: [this.vulnerabilitiesQuery, this.vulnerabilitiesCountsQuery],\n            awaitRefetchQueries: true,\n          })\n          .then(({ data }) => {\n            const [queryName] = Object.keys(data);\n\n            if (data[queryName].errors?.length > 0) {\n              throw data[queryName].errors;\n            }\n\n            fulfilledCount += 1;\n            this.$emit('vulnerabilities-updated', [vulnerability.id]);\n          })\n          .catch(() => {\n            this.rejectedVulnerabilities.push(vulnerability);\n          });\n      });\n\n      return Promise.all(promises).then(async () => {\n        this.isSubmitting = false;\n\n        if (fulfilledCount > 0) {\n          await this.handleUpdateStateSuccess(fulfilledCount);\n        }\n      });\n    },\n    handleUpdateStateSuccess(updatedVulnerabilitiesCount) {\n      toast(\n        this.$options.i18n.statusChanged(\n          this.selectedStatusObject.action,\n          updatedVulnerabilitiesCount,\n        ),\n      );\n      eventHub.$emit('vulnerabilities-updated', this);\n      this.resetState();\n\n      // ensure that previously made queries with status filters will be freshly fetched, to not show stale data\n      return this.$apollo.getClient().clearStore();\n    },\n  },\n  i18n: {\n    cancel: __('Cancel'),\n    selected: s__('SecurityReports|%{count} Selected'),\n    statusTogglePlaceholder: s__('SecurityReports|Select status'),\n    dismissalReasonTogglePlaceholder: s__('SecurityReports|Select dismissal reason'),\n    commentPlaceholder: s__('SecurityReports|Add a comment'),\n    requiredCommentPlaceholder: s__('SecurityReports|Add a comment (required)'),\n    requiredSelection: s__('SecurityReports|This selection is required.'),\n    requiredComment: s__('SecurityReports|A comment is required when dismissing.'),\n    changeStatus: s__('SecurityReports|Change status'),\n    statusChanged: (status, count) =>\n      ({\n        confirm: n__(\n          '%d vulnerability set to confirmed',\n          '%d vulnerabilities set to confirmed',\n          count,\n        ),\n        resolve: n__(\n          '%d vulnerability set to resolved',\n          '%d vulnerabilities set to resolved',\n          count,\n        ),\n        dismiss: n__(\n          '%d vulnerability set to dismissed',\n          '%d vulnerabilities set to dismissed',\n          count,\n        ),\n        revert: n__(\n          '%d vulnerability set to needs triage',\n          '%d vulnerabilities set to needs triage',\n          count,\n        ),\n      })[status],\n    vulnerabilitiesUpdateFailed: s__(\n      'SecurityReports|Failed updating vulnerabilities with the following IDs: %{ids}',\n    ),\n  },\n  getIdFromGraphQLId,\n};\n</script>\n\n<template>\n  <gl-collapse :visible=\"visible\">\n    <div\n      class=\"selection-summary\"\n      :class=\"{\n        'with-validation-error': dismissalReasonInvalid,\n        'with-dismissal-error': hasDismissalError,\n      }\"\n    >\n      <gl-alert v-if=\"hasDismissalError\" variant=\"danger\" :dismissible=\"false\">\n        <gl-sprintf :message=\"$options.i18n.vulnerabilitiesUpdateFailed\">\n          <template #ids>\n            <span v-for=\"({ id, vulnerabilityPath }, index) in rejectedVulnerabilities\" :key=\"id\">\n              <template v-if=\"index > 0\">,</template>\n              <gl-link :href=\"vulnerabilityPath\">{{ $options.getIdFromGraphQLId(id) }}</gl-link>\n            </span>\n          </template>\n        </gl-sprintf>\n      </gl-alert>\n\n      <form\n        class=\"gl-mt-5 gl-flex gl-flex-wrap gl-items-start gl-gap-3 gl-border-b-1 gl-border-b-default gl-bg-gray-10 gl-p-5 gl-border-b-solid\"\n        @submit.prevent=\"handleSubmit\"\n      >\n        <div class=\"gl-mt-3\">\n          <gl-sprintf :message=\"$options.i18n.selected\">\n            <template #count>\n              <span class=\"gl-font-bold\">{{ selectedVulnerabilities.length }}</span>\n            </template>\n          </gl-sprintf>\n        </div>\n\n        <gl-form-group\n          label-class=\"gl-hidden\"\n          :state=\"!statusInvalid\"\n          :invalid-feedback=\"$options.i18n.requiredSelection\"\n          class=\"gl-border-l gl-mb-0 gl-ml-3 gl-pl-5\"\n          data-testid=\"status-form-group\"\n        >\n          <gl-collapsible-listbox\n            v-model=\"selectedStatus\"\n            :items=\"statusItems\"\n            :toggle-text=\"statusToggleText\"\n            :disabled=\"isSubmitting\"\n            :aria-invalid=\"statusInvalid\"\n            :variant=\"statusInvalid ? 'danger' : 'default'\"\n            :category=\"statusInvalid ? 'secondary' : 'primary'\"\n            block\n            :class=\"{ 'is-invalid gl-mb-3': statusInvalid }\"\n            data-testid=\"status-listbox\"\n            @select=\"updateStatus\"\n          >\n            <template #list-item=\"{ item }\">\n              <span class=\"gl-flex gl-flex-col\" :data-testid=\"item.action\">\n                <span class=\"gl-whitespace-nowrap gl-font-bold\">{{ item.dropdownText }}</span>\n                <span class=\"gl-text-subtle\"> {{ item.dropdownDescription }}</span>\n              </span>\n            </template>\n          </gl-collapsible-listbox>\n        </gl-form-group>\n\n        <gl-form-group\n          v-if=\"isDismissedStatus\"\n          label-class=\"gl-hidden\"\n          :state=\"!dismissalReasonInvalid\"\n          :invalid-feedback=\"$options.i18n.requiredSelection\"\n          class=\"gl-mb-0\"\n          data-testid=\"dismissal-reason-form-group\"\n        >\n          <gl-collapsible-listbox\n            v-model=\"selectedDismissalReason\"\n            :items=\"dismissalReasonItems\"\n            :toggle-text=\"dismissalReasonToggleText\"\n            :disabled=\"isSubmitting\"\n            :variant=\"dismissalReasonInvalid ? 'danger' : 'default'\"\n            :category=\"dismissalReasonInvalid ? 'secondary' : 'primary'\"\n            :aria-invalid=\"dismissalReasonInvalid\"\n            block\n            :class=\"{ 'is-invalid gl-mb-3': dismissalReasonInvalid }\"\n            data-testid=\"dismissal-reason-listbox\"\n            @select=\"dismissalReasonInvalid = false\"\n          >\n            <template #list-item=\"{ item }\">\n              <span class=\"gl-flex gl-flex-col\">\n                <span class=\"gl-whitespace-nowrap gl-font-bold\">{{ item.text }}</span>\n                <span class=\"gl-text-sm gl-text-subtle\"> {{ item.description }}</span>\n              </span>\n            </template>\n          </gl-collapsible-listbox>\n        </gl-form-group>\n\n        <gl-form-group\n          v-if=\"selectedStatus\"\n          label-class=\"gl-hidden\"\n          :state=\"!commentInvalid\"\n          :invalid-feedback=\"$options.i18n.requiredComment\"\n          class=\"gl-mb-0 gl-min-w-20 gl-grow gl-basis-0\"\n          data-testid=\"comment-form-group\"\n        >\n          <gl-form-input\n            v-model=\"comment\"\n            :placeholder=\"commentPlaceholder\"\n            :disabled=\"isSubmitting\"\n            :state=\"!commentInvalid\"\n            data-testid=\"change-status-comment-textbox\"\n            @input=\"commentInvalid = false\"\n          />\n        </gl-form-group>\n\n        <gl-button\n          class=\"gl-ml-auto\"\n          :disabled=\"isSubmitting\"\n          data-testid=\"cancel-button\"\n          @click=\"resetSelected\"\n        >\n          {{ $options.i18n.cancel }}\n        </gl-button>\n        <gl-button\n          data-testid=\"change-status-button\"\n          type=\"submit\"\n          variant=\"confirm\"\n          :loading=\"isSubmitting\"\n          class=\"js-no-auto-disable\"\n        >\n          {{ $options.i18n.changeStatus }}\n        </gl-button>\n      </form>\n    </div>\n  </gl-collapse>\n</template>\n","import { render, staticRenderFns } from \"./selection_summary.vue?vue&type=template&id=248c951a\"\nimport script from \"./selection_summary.vue?vue&type=script&lang=js\"\nexport * from \"./selection_summary.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-collapse',{attrs:{\"visible\":_vm.visible}},[_c('div',{staticClass:\"selection-summary\",class:{\n      'with-validation-error': _vm.dismissalReasonInvalid,\n      'with-dismissal-error': _vm.hasDismissalError,\n    }},[(_vm.hasDismissalError)?_c('gl-alert',{attrs:{\"variant\":\"danger\",\"dismissible\":false}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.vulnerabilitiesUpdateFailed},scopedSlots:_vm._u([{key:\"ids\",fn:function(){return _vm._l((_vm.rejectedVulnerabilities),function({ id, vulnerabilityPath },index){return _c('span',{key:id},[(index > 0)?[_vm._v(\",\")]:_vm._e(),_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":vulnerabilityPath}},[_vm._v(_vm._s(_vm.$options.getIdFromGraphQLId(id)))])],2)})},proxy:true}],null,false,1136023224)})],1):_vm._e(),_vm._v(\" \"),_c('form',{staticClass:\"gl-mt-5 gl-flex gl-flex-wrap gl-items-start gl-gap-3 gl-border-b-1 gl-border-b-default gl-bg-gray-10 gl-p-5 gl-border-b-solid\",on:{\"submit\":function($event){$event.preventDefault();return _vm.handleSubmit.apply(null, arguments)}}},[_c('div',{staticClass:\"gl-mt-3\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.selected},scopedSlots:_vm._u([{key:\"count\",fn:function(){return [_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(_vm.selectedVulnerabilities.length))])]},proxy:true}])})],1),_vm._v(\" \"),_c('gl-form-group',{staticClass:\"gl-border-l gl-mb-0 gl-ml-3 gl-pl-5\",attrs:{\"label-class\":\"gl-hidden\",\"state\":!_vm.statusInvalid,\"invalid-feedback\":_vm.$options.i18n.requiredSelection,\"data-testid\":\"status-form-group\"}},[_c('gl-collapsible-listbox',{class:{ 'is-invalid gl-mb-3': _vm.statusInvalid },attrs:{\"items\":_vm.statusItems,\"toggle-text\":_vm.statusToggleText,\"disabled\":_vm.isSubmitting,\"aria-invalid\":_vm.statusInvalid,\"variant\":_vm.statusInvalid ? 'danger' : 'default',\"category\":_vm.statusInvalid ? 'secondary' : 'primary',\"block\":\"\",\"data-testid\":\"status-listbox\"},on:{\"select\":_vm.updateStatus},scopedSlots:_vm._u([{key:\"list-item\",fn:function({ item }){return [_c('span',{staticClass:\"gl-flex gl-flex-col\",attrs:{\"data-testid\":item.action}},[_c('span',{staticClass:\"gl-whitespace-nowrap gl-font-bold\"},[_vm._v(_vm._s(item.dropdownText))]),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(\" \"+_vm._s(item.dropdownDescription))])])]}}]),model:{value:(_vm.selectedStatus),callback:function ($$v) {_vm.selectedStatus=$$v},expression:\"selectedStatus\"}})],1),_vm._v(\" \"),(_vm.isDismissedStatus)?_c('gl-form-group',{staticClass:\"gl-mb-0\",attrs:{\"label-class\":\"gl-hidden\",\"state\":!_vm.dismissalReasonInvalid,\"invalid-feedback\":_vm.$options.i18n.requiredSelection,\"data-testid\":\"dismissal-reason-form-group\"}},[_c('gl-collapsible-listbox',{class:{ 'is-invalid gl-mb-3': _vm.dismissalReasonInvalid },attrs:{\"items\":_vm.dismissalReasonItems,\"toggle-text\":_vm.dismissalReasonToggleText,\"disabled\":_vm.isSubmitting,\"variant\":_vm.dismissalReasonInvalid ? 'danger' : 'default',\"category\":_vm.dismissalReasonInvalid ? 'secondary' : 'primary',\"aria-invalid\":_vm.dismissalReasonInvalid,\"block\":\"\",\"data-testid\":\"dismissal-reason-listbox\"},on:{\"select\":function($event){_vm.dismissalReasonInvalid = false}},scopedSlots:_vm._u([{key:\"list-item\",fn:function({ item }){return [_c('span',{staticClass:\"gl-flex gl-flex-col\"},[_c('span',{staticClass:\"gl-whitespace-nowrap gl-font-bold\"},[_vm._v(_vm._s(item.text))]),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-sm gl-text-subtle\"},[_vm._v(\" \"+_vm._s(item.description))])])]}}],null,false,2728827519),model:{value:(_vm.selectedDismissalReason),callback:function ($$v) {_vm.selectedDismissalReason=$$v},expression:\"selectedDismissalReason\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.selectedStatus)?_c('gl-form-group',{staticClass:\"gl-mb-0 gl-min-w-20 gl-grow gl-basis-0\",attrs:{\"label-class\":\"gl-hidden\",\"state\":!_vm.commentInvalid,\"invalid-feedback\":_vm.$options.i18n.requiredComment,\"data-testid\":\"comment-form-group\"}},[_c('gl-form-input',{attrs:{\"placeholder\":_vm.commentPlaceholder,\"disabled\":_vm.isSubmitting,\"state\":!_vm.commentInvalid,\"data-testid\":\"change-status-comment-textbox\"},on:{\"input\":function($event){_vm.commentInvalid = false}},model:{value:(_vm.comment),callback:function ($$v) {_vm.comment=$$v},expression:\"comment\"}})],1):_vm._e(),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-ml-auto\",attrs:{\"disabled\":_vm.isSubmitting,\"data-testid\":\"cancel-button\"},on:{\"click\":_vm.resetSelected}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.cancel)+\"\\n      \")]),_vm._v(\" \"),_c('gl-button',{staticClass:\"js-no-auto-disable\",attrs:{\"data-testid\":\"change-status-button\",\"type\":\"submit\",\"variant\":\"confirm\",\"loading\":_vm.isSubmitting}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.changeStatus)+\"\\n      \")])],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_list_status.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_list_status.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge } from '@gitlab/ui';\nimport { VULNERABILITY_STATES, DISMISSAL_REASONS } from 'ee/vulnerabilities/constants';\n\nexport default {\n  components: {\n    GlBadge,\n  },\n  props: {\n    state: {\n      type: String,\n      required: true,\n    },\n    dismissalReason: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    stateText() {\n      return VULNERABILITY_STATES[this.state.toLowerCase()];\n    },\n    dismissalReasonText() {\n      return DISMISSAL_REASONS[this.dismissalReason.toLowerCase()];\n    },\n    showDismissalReason() {\n      return this.state === 'DISMISSED' && this.dismissalReason;\n    },\n  },\n};\n</script>\n\n<template>\n  <span class=\"gl-flex gl-flex-wrap gl-gap-2\">\n    <span class=\"gl-capitalize\" data-testid=\"state-text\">{{ stateText }}</span>\n    <gl-badge v-if=\"showDismissalReason\" variant=\"neutral\">{{ dismissalReasonText }}</gl-badge>\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./vulnerability_list_status.vue?vue&type=template&id=1f7b1893\"\nimport script from \"./vulnerability_list_status.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_list_status.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"gl-flex gl-flex-wrap gl-gap-2\"},[_c('span',{staticClass:\"gl-capitalize\",attrs:{\"data-testid\":\"state-text\"}},[_vm._v(_vm._s(_vm.stateText))]),_vm._v(\" \"),(_vm.showDismissalReason)?_c('gl-badge',{attrs:{\"variant\":\"neutral\"}},[_vm._v(_vm._s(_vm.dismissalReasonText))]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlPopover, GlLink } from '@gitlab/ui';\nimport { __, s__, sprintf } from '~/locale';\n\nlet popoverId = 0;\n\nexport default {\n  components: {\n    GlPopover,\n    GlLink,\n  },\n  props: {\n    /**\n     * Not required because SAST vulnerabilities don't have an EPSS score system.\n     *\n     * {\n     *   // This is the KEV value, it tells whether the exploit is known or not.\n     *   \"isKnownExploit\": Boolean,\n     *\n     *   // Likelihood of vulnerability being exploited in the next 30 days (value between 0 and 1)\n     *   \"epssScore\": Float\n     * }\n     */\n    cveEnrichment: {\n      type: Object,\n      required: false,\n      default: undefined,\n    },\n    cvss: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n  },\n  computed: {\n    popoverId() {\n      return `security-score-${popoverId}`;\n    },\n    isKnownExploit() {\n      return this.cveEnrichment.isKnownExploit;\n    },\n    cvssText() {\n      return sprintf(this.$options.i18n.cvss, { version: this.cvss?.[0]?.version });\n    },\n    cvssOverallScore() {\n      // Product decision to use overallScore: https://gitlab.com/gitlab-org/gitlab/-/issues/497388#note_2247367803\n      return this.cvss?.[0]?.overallScore;\n    },\n    cveEnrichmentPopoverText() {\n      // Product decision to always use +2 more: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/173317#note_2251105162\n      return sprintf(__('+%{count} more'), { count: 2 });\n    },\n    hasCveEnrichment() {\n      return Boolean(this.cveEnrichment);\n    },\n    epssScore() {\n      return Math.round((this.cveEnrichment.epssScore || 0) * 100);\n    },\n  },\n  created() {\n    popoverId += 1;\n  },\n  i18n: {\n    cvss: s__('SecurityReports|CVSS v%{version}:'),\n    epss: s__('SecurityReports|EPSS:'),\n    kev: s__('SecurityReports|KEV:'),\n  },\n};\n</script>\n<template>\n  <div v-if=\"cvssOverallScore\" :id=\"popoverId\" class=\"gl-mt-3 gl-text-secondary\">\n    <div>\n      <p class=\"gl-mb-1\">{{ cvssText }} {{ cvssOverallScore }}</p>\n      <p v-if=\"hasCveEnrichment\" class=\"gl-mb-0\">\n        <gl-link href=\"#\">{{ cveEnrichmentPopoverText }}</gl-link>\n      </p>\n    </div>\n    <gl-popover\n      v-if=\"hasCveEnrichment\"\n      triggers=\"hover focus\"\n      placement=\"bottom\"\n      :show-close-button=\"false\"\n      :css-classes=\"['gl-w-20']\"\n      :target=\"popoverId\"\n    >\n      <p class=\"gl-mb-1\">\n        {{ $options.i18n.epss }} <strong>{{ epssScore }}%</strong>\n      </p>\n      <p class=\"gl-mb-1\">\n        {{ $options.i18n.kev }}\n        <strong>{{ isKnownExploit ? __('Yes') : __('No') }}</strong>\n      </p>\n    </gl-popover>\n  </div>\n</template>\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./security_scores.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./security_scores.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./security_scores.vue?vue&type=template&id=50cf4b5a\"\nimport script from \"./security_scores.vue?vue&type=script&lang=js\"\nexport * from \"./security_scores.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.cvssOverallScore)?_c('div',{staticClass:\"gl-mt-3 gl-text-secondary\",attrs:{\"id\":_vm.popoverId}},[_c('div',[_c('p',{staticClass:\"gl-mb-1\"},[_vm._v(_vm._s(_vm.cvssText)+\" \"+_vm._s(_vm.cvssOverallScore))]),_vm._v(\" \"),(_vm.hasCveEnrichment)?_c('p',{staticClass:\"gl-mb-0\"},[_c('gl-link',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(_vm.cveEnrichmentPopoverText))])],1):_vm._e()]),_vm._v(\" \"),(_vm.hasCveEnrichment)?_c('gl-popover',{attrs:{\"triggers\":\"hover focus\",\"placement\":\"bottom\",\"show-close-button\":false,\"css-classes\":['gl-w-20'],\"target\":_vm.popoverId}},[_c('p',{staticClass:\"gl-mb-1\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.epss)+\" \"),_c('strong',[_vm._v(_vm._s(_vm.epssScore)+\"%\")])]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-1\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.kev)+\"\\n      \"),_c('strong',[_vm._v(_vm._s(_vm.isKnownExploit ? _vm.__('Yes') : _vm.__('No')))])])]):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_list.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlFormCheckbox,\n  GlLink,\n  GlSprintf,\n  GlSkeletonLoader,\n  GlTooltipDirective,\n  GlTable,\n  GlTruncate,\n  GlPopover,\n  GlFriendlyWrap,\n} from '@gitlab/ui';\nimport { Portal } from 'portal-vue';\nimport glAbilitiesMixin from '~/vue_shared/mixins/gl_abilities_mixin';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { s__, sprintf } from '~/locale';\nimport DashboardHasNoVulnerabilities from 'ee/security_dashboard/components/shared/empty_states/dashboard_has_no_vulnerabilities.vue';\nimport FiltersProducedNoResults from 'ee/security_dashboard/components/shared/empty_states/filters_produced_no_results.vue';\nimport SeverityBadge from 'ee/vue_shared/security_reports/components/severity_badge.vue';\nimport convertReportType from 'ee/vue_shared/security_reports/store/utils/convert_report_type';\nimport getPrimaryIdentifier from 'ee/vue_shared/security_reports/store/utils/get_primary_identifier';\nimport FalsePositiveBadge from 'ee/vulnerabilities/components/false_positive_badge.vue';\nimport ResolutionBadge from 'ee/vulnerabilities/components/resolution_badge.vue';\nimport { DASHBOARD_TYPE_PIPELINE } from 'ee/security_dashboard/constants';\nimport { formatDate } from '~/lib/utils/datetime_utility';\nimport MergeRequestBadge from '../merge_request_badge.vue';\nimport IssuesBadge from '../issues_badge.vue';\nimport SolutionBadge from '../solution_badge.vue';\nimport AiResolutionBadge from '../ai_resolution_badge.vue';\nimport VulnerabilityCommentIcon from '../vulnerability_comment_icon.vue';\nimport VulnerabilityPath from './vulnerability_path.vue';\nimport SelectionSummary from './selection_summary.vue';\nimport VulnerabilityListStatus from './vulnerability_list_status.vue';\nimport SecurityScores from './security_scores.vue';\nimport { FIELDS } from './constants';\n\nexport default {\n  components: {\n    GlFormCheckbox,\n    GlLink,\n    GlFriendlyWrap,\n    GlSkeletonLoader,\n    GlSprintf,\n    GlTable,\n    GlTruncate,\n    GlPopover,\n    IssuesBadge,\n    MergeRequestBadge,\n    ResolutionBadge,\n    FalsePositiveBadge,\n    SelectionSummary,\n    SeverityBadge,\n    SecurityScores,\n    VulnerabilityCommentIcon,\n    VulnerabilityPath,\n    VulnerabilityListStatus,\n    FiltersProducedNoResults,\n    DashboardHasNoVulnerabilities,\n    Portal,\n    SolutionBadge,\n    AiResolutionBadge,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [glAbilitiesMixin(), glFeatureFlagsMixin()],\n  inject: {\n    hasVulnerabilities: {\n      default: false,\n    },\n    canAdminVulnerability: {\n      default: false,\n    },\n    hasJiraVulnerabilitiesIntegrationEnabled: {\n      default: false,\n    },\n    dashboardType: {},\n  },\n  props: {\n    fields: {\n      type: Array,\n      required: true,\n    },\n    vulnerabilities: {\n      type: Array,\n      required: true,\n    },\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    shouldShowProjectNamespace: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    portalName: {\n      type: String,\n      required: true,\n    },\n    pageSize: {\n      type: Number,\n      required: true,\n    },\n    sort: {\n      type: Object,\n      required: false,\n      default: () => ({\n        sortBy: FIELDS.SEVERITY.key,\n        sortDesc: true,\n      }),\n    },\n  },\n  data() {\n    return {\n      selectedVulnerabilities: {},\n    };\n  },\n  i18n: {\n    image: s__('Vulnerability|Image: %{linkStart}%{image}%{linkEnd}'),\n  },\n  computed: {\n    isSecurityScoresEnabled() {\n      return this.glFeatures.vulnerabilityReportSecurityScores;\n    },\n    displayFields() {\n      // Add the checkbox field if the user can use the bulk select feature.\n      return this.canAdminVulnerability ? [FIELDS.CHECKBOX, ...this.fields] : this.fields;\n    },\n    hasAnyScannersOtherThanGitLab() {\n      return this.vulnerabilities.some(\n        (v) => v.scanner?.vendor !== 'GitLab' && v.scanner?.vendor !== '',\n      );\n    },\n    hasSelectedSomeVulnerabilities() {\n      // Whether the user has selected at least 1, but not all vulnerabilities.\n      return this.numOfSelectedVulnerabilities > 0 && !this.hasSelectedAllVulnerabilities;\n    },\n    hasSelectedAllVulnerabilities() {\n      if (!this.vulnerabilities.length) {\n        return false;\n      }\n      return this.numOfSelectedVulnerabilities === this.vulnerabilities.length;\n    },\n    numOfSelectedVulnerabilities() {\n      return Object.keys(this.selectedVulnerabilities).length;\n    },\n    shouldShowSelectionSummary() {\n      return this.numOfSelectedVulnerabilities > 0;\n    },\n    shouldShowTable() {\n      return this.isLoading || this.vulnerabilities.length;\n    },\n  },\n  watch: {\n    vulnerabilities() {\n      const ids = new Set(this.vulnerabilities.map((v) => v.id));\n\n      Object.keys(this.selectedVulnerabilities).forEach((vulnerabilityId) => {\n        if (!ids.has(vulnerabilityId)) {\n          this.deleteVulnerability(vulnerabilityId);\n        }\n      });\n    },\n  },\n  methods: {\n    deleteVulnerability(vulnerabilityId) {\n      const copy = { ...this.selectedVulnerabilities };\n      delete copy[vulnerabilityId];\n      this.selectedVulnerabilities = copy;\n    },\n    setVulnerability(vulnerabilityId, vulnerability) {\n      const copy = { ...this.selectedVulnerabilities };\n      copy[vulnerabilityId] = vulnerability;\n      this.selectedVulnerabilities = copy;\n    },\n    hasCluster(item) {\n      return item.location.kubernetesResource?.agent;\n    },\n    clusterName(item) {\n      return item.location.kubernetesResource?.agent?.name;\n    },\n    clusterUrl(item) {\n      return item.location.kubernetesResource?.agent?.webPath;\n    },\n    deselectVulnerabilities(vulnerabilityIds) {\n      vulnerabilityIds.forEach((id) => {\n        this.deleteVulnerability(id);\n      });\n    },\n    deselectAllVulnerabilities() {\n      this.selectedVulnerabilities = {};\n    },\n    extraIdentifierCount(identifiers) {\n      return identifiers.length - 1;\n    },\n    primaryIdentifier(identifiers) {\n      return getPrimaryIdentifier(identifiers, 'externalType');\n    },\n    isSelected(vulnerability = {}) {\n      return Boolean(this.selectedVulnerabilities[vulnerability.id]);\n    },\n    selectAllVulnerabilities() {\n      this.selectedVulnerabilities = this.vulnerabilities.reduce((acc, curr) => {\n        acc[curr.id] = curr;\n        return acc;\n      }, {});\n    },\n    shouldShowExtraIdentifierCount(identifiers) {\n      return identifiers?.length > 1;\n    },\n    toggleAllVulnerabilities() {\n      if (this.hasSelectedAllVulnerabilities) {\n        this.deselectAllVulnerabilities();\n      } else {\n        this.selectAllVulnerabilities();\n      }\n    },\n    toggleVulnerability(vulnerability) {\n      // If the user can't use the bulk select feature (like the auditor user), don't do anything.\n      if (!this.canAdminVulnerability) {\n        return;\n      }\n\n      if (this.selectedVulnerabilities[vulnerability.id]) {\n        this.deleteVulnerability(vulnerability.id);\n      } else {\n        this.setVulnerability(vulnerability.id, vulnerability);\n      }\n    },\n    gitlabIssues(item) {\n      return item.issueLinks?.nodes || [];\n    },\n    externalIssues(item) {\n      if (this.dashboardType === DASHBOARD_TYPE_PIPELINE) {\n        return item.vulnerability?.externalIssueLinks?.nodes || [];\n      }\n      return item.externalIssueLinks?.nodes || [];\n    },\n    jiraIssues(item) {\n      return this.externalIssues(item).filter(({ issue }) => issue?.externalTracker === 'jira');\n    },\n    badgeIssues(item) {\n      return this.hasJiraVulnerabilitiesIntegrationEnabled\n        ? this.jiraIssues(item)\n        : this.gitlabIssues(item);\n    },\n    formatDate(item) {\n      return formatDate(item.detectedAt, 'yyyy-mm-dd');\n    },\n    formatDateTooltip(item) {\n      return formatDate(item.detectedAt);\n    },\n    hasComments(item) {\n      return item.userNotesCount > 0;\n    },\n    useConvertReportType(reportType) {\n      return convertReportType(reportType);\n    },\n    handleSortChange({ sortBy, sortDesc }) {\n      this.$emit('update:sort', { sortBy, sortDesc });\n    },\n    containerImageAndTag(item) {\n      return item.location?.image;\n    },\n    containerImageAndTagUrl(item) {\n      return item.location?.containerRepositoryUrl;\n    },\n    getImageText(item) {\n      return sprintf(this.$options.i18n.image, {\n        image: this.containerImageAndTag(item),\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <portal :to=\"portalName\">\n      <selection-summary\n        :selected-vulnerabilities=\"Object.values(selectedVulnerabilities)\"\n        :visible=\"shouldShowSelectionSummary\"\n        @cancel-selection=\"deselectAllVulnerabilities\"\n        @vulnerabilities-updated=\"deselectVulnerabilities\"\n      />\n    </portal>\n\n    <gl-table\n      v-if=\"shouldShowTable\"\n      class=\"vulnerability-list\"\n      :busy=\"isLoading\"\n      :fields=\"displayFields\"\n      :items=\"vulnerabilities\"\n      :thead-class=\"{\n        'below-selection-summary': shouldShowSelectionSummary,\n        'gl-bg-white': true,\n      }\"\n      :sort-desc=\"sort.sortDesc\"\n      :sort-by=\"sort.sortBy\"\n      no-local-sorting\n      stacked=\"sm\"\n      hover\n      primary-key=\"id\"\n      :tbody-tr-class=\"{ 'gl-cursor-pointer': canAdminVulnerability }\"\n      head-variant=\"white\"\n      @sort-changed=\"handleSortChange\"\n      @row-clicked=\"toggleVulnerability\"\n    >\n      <template #head(checkbox)>\n        <gl-form-checkbox\n          class=\"gl-table-cell gl-min-h-0\"\n          data-testid=\"vulnerability-checkbox-all\"\n          :checked=\"hasSelectedAllVulnerabilities\"\n          :indeterminate=\"hasSelectedSomeVulnerabilities\"\n          @change=\"toggleAllVulnerabilities\"\n        />\n      </template>\n\n      <template #cell(checkbox)=\"{ item }\">\n        <gl-form-checkbox\n          class=\"gl-pointer-events-none gl-table-cell\"\n          data-testid=\"vulnerability-checkbox\"\n          :checked=\"isSelected(item)\"\n          @change=\"toggleVulnerability(item)\"\n        />\n      </template>\n\n      <template #cell(detected)=\"{ item }\">\n        <time v-gl-tooltip :data-testid=\"`detected-${item.id}`\" :title=\"formatDateTooltip(item)\">\n          {{ formatDate(item) }}\n        </time>\n      </template>\n\n      <template #cell(state)=\"{ item }\">\n        <vulnerability-list-status\n          :state=\"item.state\"\n          :dismissal-reason=\"item.dismissalReason\"\n          :data-qa-status-description=\"item.title || item.name\"\n          data-testid=\"vulnerability-status-content\"\n        />\n      </template>\n\n      <template #cell(severity)=\"{ item }\">\n        <severity-badge class=\"js-severity\" :severity=\"item.severity\" />\n        <security-scores\n          v-if=\"isSecurityScoresEnabled\"\n          :cve-enrichment=\"item.cveEnrichment\"\n          :cvss=\"item.cvss\"\n          :data-testid=\"`security-scores-${item.id}`\"\n        />\n      </template>\n\n      <template #cell(title)=\"{ item }\">\n        <div\n          class=\"gl-align-items-end gl-flex gl-flex-col sm:!gl-flex-row sm:gl-items-center\"\n          :data-testid=\"`title-${item.id}`\"\n        >\n          <gl-link\n            class=\"vulnerability-title js-description gl-text-default\"\n            :href=\"item.vulnerabilityPath\"\n            :data-qa-vulnerability-description=\"item.title || item.name\"\n            data-testid=\"vulnerability\"\n            @click=\"$emit('vulnerability-clicked', item)\"\n          >\n            {{ item.title || item.name }}\n          </gl-link>\n          <vulnerability-comment-icon v-if=\"hasComments(item)\" :vulnerability=\"item\" />\n        </div>\n        <div\n          v-if=\"item.location\"\n          :data-testid=\"`location-${item.id}`\"\n          class=\"gl-text-sm gl-text-subtle\"\n        >\n          <div v-if=\"shouldShowProjectNamespace\">\n            {{ item.project.nameWithNamespace }}\n          </div>\n          <vulnerability-path :location=\"item.location\" />\n        </div>\n      </template>\n\n      <template #cell(identifier)=\"{ item }\">\n        <div data-testid=\"vulnerability-identifier\">\n          {{ primaryIdentifier(item.identifiers) }}\n        </div>\n        <div\n          v-if=\"shouldShowExtraIdentifierCount(item.identifiers)\"\n          data-testid=\"vulnerability-more-identifiers\"\n          class=\"gl-text-gray-300\"\n        >\n          <gl-sprintf :message=\"__('+ %{count} more')\">\n            <template #count>\n              {{ extraIdentifierCount(item.identifiers) }}\n            </template>\n          </gl-sprintf>\n        </div>\n      </template>\n\n      <template #cell(reportType)=\"{ item }\">\n        <div\n          data-testid=\"vulnerability-report-type\"\n          :class=\"{ 'gl-capitalize': item.reportType !== 'GENERIC' }\"\n        >\n          {{ useConvertReportType(item.reportType) }}\n        </div>\n        <div\n          v-if=\"hasAnyScannersOtherThanGitLab && item.scanner\"\n          data-testid=\"vulnerability-vendor\"\n          class=\"gl-text-gray-300\"\n        >\n          {{ item.scanner.vendor }}\n        </div>\n      </template>\n\n      <template #cell(cluster)=\"{ item }\">\n        <gl-link\n          v-if=\"hasCluster(item)\"\n          :data-testid=\"`cluster-${item.id}`\"\n          :href=\"clusterUrl(item)\"\n        >\n          {{ clusterName(item) }}\n        </gl-link>\n      </template>\n\n      <template #cell(activity)=\"{ item }\">\n        <div class=\"gl-flex gl-justify-end gl-gap-3\">\n          <resolution-badge\n            v-if=\"item.resolvedOnDefaultBranch\"\n            data-testid=\"vulnerability-resolution-badge-content\"\n            :data-qa-activity-description=\"item.title || item.name\"\n          />\n          <issues-badge\n            v-if=\"badgeIssues(item).length > 0\"\n            :issues=\"badgeIssues(item)\"\n            :is-jira=\"hasJiraVulnerabilitiesIntegrationEnabled\"\n            data-testid=\"vulnerability-issue-created-badge-content\"\n            :data-qa-badge-description=\"item.title || item.name\"\n          />\n          <merge-request-badge v-if=\"item.mergeRequest\" :merge-request=\"item.mergeRequest\" />\n          <false-positive-badge\n            v-if=\"item.falsePositive\"\n            data-testid=\"false-positive-vulnerability\"\n          />\n          <solution-badge v-if=\"item.hasRemediations\" />\n          <ai-resolution-badge\n            v-if=\"\n              item.aiResolutionAvailable &&\n              item.aiResolutionEnabled &&\n              glAbilities.resolveVulnerabilityWithAi &&\n              glFeatures.vulnerabilityReportVrBadge\n            \"\n          />\n        </div>\n      </template>\n\n      <template #cell(imageAndTag)=\"{ item }\">\n        <gl-truncate\n          v-if=\"containerImageAndTag(item)\"\n          :id=\"`image-and-tag-${item.id}-popover-target`\"\n          :data-testid=\"`image-and-tag-${item.id}`\"\n          :text=\"containerImageAndTag(item)\"\n          position=\"middle\"\n        />\n        <gl-popover\n          triggers=\"hover focus\"\n          :show-close-button=\"false\"\n          placement=\"top\"\n          :target=\"`image-and-tag-${item.id}-popover-target`\"\n          :data-testid=\"`image-and-tag-${item.id}-popover`\"\n        >\n          <gl-sprintf :message=\"getImageText(item)\">\n            <template #link=\"{ content }\">\n              <gl-link :href=\"containerImageAndTagUrl(item)\" target=\"_blank\">\n                <gl-friendly-wrap :text=\"content\" />\n              </gl-link>\n            </template>\n          </gl-sprintf>\n        </gl-popover>\n      </template>\n\n      <template #table-busy>\n        <gl-skeleton-loader v-for=\"n in pageSize\" :key=\"n\" :lines=\"2\" />\n      </template>\n    </gl-table>\n\n    <filters-produced-no-results v-else-if=\"hasVulnerabilities\" />\n    <dashboard-has-no-vulnerabilities v-else />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./vulnerability_list.vue?vue&type=template&id=37f5950a\"\nimport script from \"./vulnerability_list.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_list.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('portal',{attrs:{\"to\":_vm.portalName}},[_c('selection-summary',{attrs:{\"selected-vulnerabilities\":Object.values(_vm.selectedVulnerabilities),\"visible\":_vm.shouldShowSelectionSummary},on:{\"cancel-selection\":_vm.deselectAllVulnerabilities,\"vulnerabilities-updated\":_vm.deselectVulnerabilities}})],1),_vm._v(\" \"),(_vm.shouldShowTable)?_c('gl-table',{staticClass:\"vulnerability-list\",attrs:{\"busy\":_vm.isLoading,\"fields\":_vm.displayFields,\"items\":_vm.vulnerabilities,\"thead-class\":{\n      'below-selection-summary': _vm.shouldShowSelectionSummary,\n      'gl-bg-white': true,\n    },\"sort-desc\":_vm.sort.sortDesc,\"sort-by\":_vm.sort.sortBy,\"no-local-sorting\":\"\",\"stacked\":\"sm\",\"hover\":\"\",\"primary-key\":\"id\",\"tbody-tr-class\":{ 'gl-cursor-pointer': _vm.canAdminVulnerability },\"head-variant\":\"white\"},on:{\"sort-changed\":_vm.handleSortChange,\"row-clicked\":_vm.toggleVulnerability},scopedSlots:_vm._u([{key:\"head(checkbox)\",fn:function(){return [_c('gl-form-checkbox',{staticClass:\"gl-table-cell gl-min-h-0\",attrs:{\"data-testid\":\"vulnerability-checkbox-all\",\"checked\":_vm.hasSelectedAllVulnerabilities,\"indeterminate\":_vm.hasSelectedSomeVulnerabilities},on:{\"change\":_vm.toggleAllVulnerabilities}})]},proxy:true},{key:\"cell(checkbox)\",fn:function({ item }){return [_c('gl-form-checkbox',{staticClass:\"gl-pointer-events-none gl-table-cell\",attrs:{\"data-testid\":\"vulnerability-checkbox\",\"checked\":_vm.isSelected(item)},on:{\"change\":function($event){return _vm.toggleVulnerability(item)}}})]}},{key:\"cell(detected)\",fn:function({ item }){return [_c('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"data-testid\":`detected-${item.id}`,\"title\":_vm.formatDateTooltip(item)}},[_vm._v(\"\\n        \"+_vm._s(_vm.formatDate(item))+\"\\n      \")])]}},{key:\"cell(state)\",fn:function({ item }){return [_c('vulnerability-list-status',{attrs:{\"state\":item.state,\"dismissal-reason\":item.dismissalReason,\"data-qa-status-description\":item.title || item.name,\"data-testid\":\"vulnerability-status-content\"}})]}},{key:\"cell(severity)\",fn:function({ item }){return [_c('severity-badge',{staticClass:\"js-severity\",attrs:{\"severity\":item.severity}}),_vm._v(\" \"),(_vm.isSecurityScoresEnabled)?_c('security-scores',{attrs:{\"cve-enrichment\":item.cveEnrichment,\"cvss\":item.cvss,\"data-testid\":`security-scores-${item.id}`}}):_vm._e()]}},{key:\"cell(title)\",fn:function({ item }){return [_c('div',{staticClass:\"gl-align-items-end gl-flex gl-flex-col sm:!gl-flex-row sm:gl-items-center\",attrs:{\"data-testid\":`title-${item.id}`}},[_c('gl-link',{staticClass:\"vulnerability-title js-description gl-text-default\",attrs:{\"href\":item.vulnerabilityPath,\"data-qa-vulnerability-description\":item.title || item.name,\"data-testid\":\"vulnerability\"},on:{\"click\":function($event){return _vm.$emit('vulnerability-clicked', item)}}},[_vm._v(\"\\n          \"+_vm._s(item.title || item.name)+\"\\n        \")]),_vm._v(\" \"),(_vm.hasComments(item))?_c('vulnerability-comment-icon',{attrs:{\"vulnerability\":item}}):_vm._e()],1),_vm._v(\" \"),(item.location)?_c('div',{staticClass:\"gl-text-sm gl-text-subtle\",attrs:{\"data-testid\":`location-${item.id}`}},[(_vm.shouldShowProjectNamespace)?_c('div',[_vm._v(\"\\n          \"+_vm._s(item.project.nameWithNamespace)+\"\\n        \")]):_vm._e(),_vm._v(\" \"),_c('vulnerability-path',{attrs:{\"location\":item.location}})],1):_vm._e()]}},{key:\"cell(identifier)\",fn:function({ item }){return [_c('div',{attrs:{\"data-testid\":\"vulnerability-identifier\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.primaryIdentifier(item.identifiers))+\"\\n      \")]),_vm._v(\" \"),(_vm.shouldShowExtraIdentifierCount(item.identifiers))?_c('div',{staticClass:\"gl-text-gray-300\",attrs:{\"data-testid\":\"vulnerability-more-identifiers\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.__('+ %{count} more')},scopedSlots:_vm._u([{key:\"count\",fn:function(){return [_vm._v(\"\\n            \"+_vm._s(_vm.extraIdentifierCount(item.identifiers))+\"\\n          \")]},proxy:true}],null,true)})],1):_vm._e()]}},{key:\"cell(reportType)\",fn:function({ item }){return [_c('div',{class:{ 'gl-capitalize': item.reportType !== 'GENERIC' },attrs:{\"data-testid\":\"vulnerability-report-type\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.useConvertReportType(item.reportType))+\"\\n      \")]),_vm._v(\" \"),(_vm.hasAnyScannersOtherThanGitLab && item.scanner)?_c('div',{staticClass:\"gl-text-gray-300\",attrs:{\"data-testid\":\"vulnerability-vendor\"}},[_vm._v(\"\\n        \"+_vm._s(item.scanner.vendor)+\"\\n      \")]):_vm._e()]}},{key:\"cell(cluster)\",fn:function({ item }){return [(_vm.hasCluster(item))?_c('gl-link',{attrs:{\"data-testid\":`cluster-${item.id}`,\"href\":_vm.clusterUrl(item)}},[_vm._v(\"\\n        \"+_vm._s(_vm.clusterName(item))+\"\\n      \")]):_vm._e()]}},{key:\"cell(activity)\",fn:function({ item }){return [_c('div',{staticClass:\"gl-flex gl-justify-end gl-gap-3\"},[(item.resolvedOnDefaultBranch)?_c('resolution-badge',{attrs:{\"data-testid\":\"vulnerability-resolution-badge-content\",\"data-qa-activity-description\":item.title || item.name}}):_vm._e(),_vm._v(\" \"),(_vm.badgeIssues(item).length > 0)?_c('issues-badge',{attrs:{\"issues\":_vm.badgeIssues(item),\"is-jira\":_vm.hasJiraVulnerabilitiesIntegrationEnabled,\"data-testid\":\"vulnerability-issue-created-badge-content\",\"data-qa-badge-description\":item.title || item.name}}):_vm._e(),_vm._v(\" \"),(item.mergeRequest)?_c('merge-request-badge',{attrs:{\"merge-request\":item.mergeRequest}}):_vm._e(),_vm._v(\" \"),(item.falsePositive)?_c('false-positive-badge',{attrs:{\"data-testid\":\"false-positive-vulnerability\"}}):_vm._e(),_vm._v(\" \"),(item.hasRemediations)?_c('solution-badge'):_vm._e(),_vm._v(\" \"),(\n            item.aiResolutionAvailable &&\n            item.aiResolutionEnabled &&\n            _vm.glAbilities.resolveVulnerabilityWithAi &&\n            _vm.glFeatures.vulnerabilityReportVrBadge\n          )?_c('ai-resolution-badge'):_vm._e()],1)]}},{key:\"cell(imageAndTag)\",fn:function({ item }){return [(_vm.containerImageAndTag(item))?_c('gl-truncate',{attrs:{\"id\":`image-and-tag-${item.id}-popover-target`,\"data-testid\":`image-and-tag-${item.id}`,\"text\":_vm.containerImageAndTag(item),\"position\":\"middle\"}}):_vm._e(),_vm._v(\" \"),_c('gl-popover',{attrs:{\"triggers\":\"hover focus\",\"show-close-button\":false,\"placement\":\"top\",\"target\":`image-and-tag-${item.id}-popover-target`,\"data-testid\":`image-and-tag-${item.id}-popover`}},[_c('gl-sprintf',{attrs:{\"message\":_vm.getImageText(item)},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.containerImageAndTagUrl(item),\"target\":\"_blank\"}},[_c('gl-friendly-wrap',{attrs:{\"text\":content}})],1)]}}],null,true)})],1)]}},{key:\"table-busy\",fn:function(){return _vm._l((_vm.pageSize),function(n){return _c('gl-skeleton-loader',{key:n,attrs:{\"lines\":2}})})},proxy:true}],null,false,3433945188)}):(_vm.hasVulnerabilities)?_c('filters-produced-no-results'):_c('dashboard-has-no-vulnerabilities')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlKeysetPagination } from '@gitlab/ui';\nimport { get, isEqual } from 'lodash';\nimport { createAlert } from '~/alert';\nimport { s__ } from '~/locale';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { convertToSnakeCase } from '~/lib/utils/text_utility';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport {\n  DASHBOARD_TYPE_PROJECT,\n  DASHBOARD_TYPE_GROUP,\n  DASHBOARD_TYPE_INSTANCE,\n  DASHBOARD_TYPE_PIPELINE,\n} from 'ee/security_dashboard/constants';\nimport LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue';\nimport PageSizeSelector from '~/vue_shared/components/page_size_selector.vue';\nimport { DEFAULT_PAGE_SIZE } from '~/vue_shared/issuable/list/constants';\nimport VulnerabilityList from './vulnerability_list.vue';\nimport { FIELDS } from './constants';\n\nexport const PAGE_SIZE_STORAGE_KEY = 'vulnerability_list_page_size';\n\nconst GRAPHQL_DATA_PATH = {\n  [DASHBOARD_TYPE_PROJECT]: 'project.vulnerabilities',\n  [DASHBOARD_TYPE_GROUP]: 'group.vulnerabilities',\n  [DASHBOARD_TYPE_INSTANCE]: 'vulnerabilities',\n  [DASHBOARD_TYPE_PIPELINE]: 'project.pipeline.securityReportFindings',\n};\n\nexport default {\n  components: {\n    VulnerabilityList,\n    GlKeysetPagination,\n    PageSizeSelector,\n    LocalStorageSync,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  inject: {\n    dashboardType: 'dashboardType',\n    vulnerabilitiesQuery: 'vulnerabilitiesQuery',\n    fullPath: 'fullPath',\n    canViewFalsePositive: {\n      default: false,\n    },\n    hasJiraVulnerabilitiesIntegrationEnabled: {\n      default: false,\n    },\n    pipeline: {\n      default: {},\n    },\n  },\n  props: {\n    filters: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    reportGroupFilters: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    fields: {\n      type: Array,\n      required: true,\n    },\n    showProjectNamespace: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    portalName: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      vulnerabilities: [],\n      pageInfo: {},\n      // The \"before\" querystring value on page load.\n      initialBefore: this.$route.query.before,\n      pageSize: Number(localStorage.getItem(PAGE_SIZE_STORAGE_KEY) ?? DEFAULT_PAGE_SIZE),\n    };\n  },\n  apollo: {\n    vulnerabilities: {\n      query() {\n        return this.vulnerabilitiesQuery;\n      },\n      errorPolicy: 'all',\n      variables() {\n        return this.queryVariables;\n      },\n      update(data) {\n        const vulnerabilities = this.getVulnerabilitiesFromData(data);\n        this.pageInfo = vulnerabilities.pageInfo;\n\n        return vulnerabilities.nodes;\n      },\n      error({ message }) {\n        const fallbackMessage = s__(\n          'SecurityReports|Error fetching the vulnerability list. Please check your network connection and try again.',\n        );\n        createAlert({\n          message: message || fallbackMessage,\n          renderMessageHTML: true,\n        });\n      },\n      skip() {\n        return !this.filters;\n      },\n    },\n  },\n  computed: {\n    before: {\n      get() {\n        // The GraphQL query can only have a \"before\" or an \"after\" but not both, so if both are in\n        // the querystring, we'll only use \"after\" and pretend the \"before\" doesn't exist.\n        return this.after ? undefined : this.$route.query.before;\n      },\n      set(before) {\n        // Check if before will change, otherwise Vue Router will throw a \"you're navigating to the\n        // same route\" error.\n        if (before !== this.before) {\n          this.pushQuerystring({ before, after: undefined });\n        }\n      },\n    },\n    after: {\n      get() {\n        return this.$route.query.after;\n      },\n      set(after) {\n        // Check if after will change, otherwise Vue Router will throw a \"you're navigating to the\n        // same route\" error.\n        if (after !== this.after) {\n          this.pushQuerystring({ before: undefined, after });\n        }\n      },\n    },\n    sort: {\n      get() {\n        return {\n          sortBy: this.$route.query.sortBy || FIELDS.SEVERITY.key,\n          sortDesc: this.$route.query.sortDesc ? parseBoolean(this.$route.query.sortDesc) : true,\n        };\n      },\n      set({ sortBy, sortDesc }) {\n        this.pushQuerystring({ sortBy, sortDesc });\n      },\n    },\n    isLoadingVulnerabilities() {\n      return this.$apollo.queries.vulnerabilities.loading;\n    },\n    queryVariables() {\n      return {\n        fullPath: this.fullPath,\n        sort: `${convertToSnakeCase(this.sort.sortBy)}_${this.sort.sortDesc ? 'desc' : 'asc'}`,\n        vetEnabled: this.canViewFalsePositive,\n        includeExternalIssueLinks: this.hasJiraVulnerabilitiesIntegrationEnabled,\n        pipelineId: this.pipeline.iid,\n        // If we're using \"after\" we need to use \"first\", and if we're using \"before\" we need to\n        // use \"last\". See this comment for more info:\n        // https://gitlab.com/gitlab-org/gitlab/-/merge_requests/79834#note_831878506\n        first: this.before ? null : this.pageSize,\n        last: this.before ? this.pageSize : null,\n        before: this.before,\n        after: this.after,\n        ...this.filters,\n        ...this.reportGroupFilters,\n      };\n    },\n    hasPagination() {\n      return this.pageInfo.hasPreviousPage || this.pageInfo.hasNextPage;\n    },\n  },\n  watch: {\n    filters(newFilters, oldFilters) {\n      // The first time the filters are set, it's done by the vulnerability-filters component, so\n      // we don't want to reset the paging. Every time after that will be from user interaction.\n      if (oldFilters !== null) {\n        this.resetPaging();\n      }\n    },\n    sort(newSort, oldSort) {\n      // Anything that changes the querystring will also trigger this watcher (because sort is\n      // recomputed), so we need to check that the sort has changed before we reset the paging.\n      if (newSort.sortBy !== oldSort.sortBy || newSort.sortDesc !== oldSort.sortDesc) {\n        this.resetPaging();\n      }\n    },\n    queryVariables(newVariables, oldVariables) {\n      // For some reason queryVariables is called twice, but the first time the variables won't\n      // change. We'll only emit the event the second time after the variables have changed.\n      if (!isEqual(newVariables, oldVariables)) {\n        this.$emit('query-variables-changed', newVariables);\n      }\n    },\n  },\n  methods: {\n    getNextPage() {\n      this.after = this.pageInfo.endCursor || this.before;\n    },\n    getPrevPage() {\n      this.before = this.pageInfo.startCursor || this.after;\n    },\n    resetPaging() {\n      this.before = undefined;\n      this.after = undefined;\n    },\n    pushQuerystring(data) {\n      this.$router.push({ query: { ...this.$route.query, ...data } });\n    },\n    getVulnerabilitiesFromData(data) {\n      return get(data, GRAPHQL_DATA_PATH[this.dashboardType]);\n    },\n  },\n  PAGE_SIZE_STORAGE_KEY,\n};\n</script>\n\n<template>\n  <div>\n    <vulnerability-list\n      :is-loading=\"isLoadingVulnerabilities\"\n      :vulnerabilities=\"vulnerabilities\"\n      :fields=\"fields\"\n      :sort.sync=\"sort\"\n      :page-size=\"pageSize\"\n      :should-show-project-namespace=\"showProjectNamespace\"\n      :portal-name=\"portalName\"\n      @vulnerability-clicked=\"$emit('vulnerability-clicked', $event)\"\n    />\n\n    <div\n      v-if=\"isLoadingVulnerabilities || vulnerabilities.length\"\n      class=\"gl-mt-6\"\n      :class=\"{\n        'vulnerability-report-footer-mobile gl-relative gl-text-center': hasPagination,\n        'gl-text-right': !hasPagination,\n      }\"\n    >\n      <gl-keyset-pagination\n        :has-previous-page=\"pageInfo.hasPreviousPage\"\n        :has-next-page=\"pageInfo.hasNextPage\"\n        :start-cursor=\"pageInfo.startCursor\"\n        :end-cursor=\"pageInfo.endCursor\"\n        :disabled=\"isLoadingVulnerabilities\"\n        @next=\"getNextPage\"\n        @prev=\"getPrevPage\"\n      />\n\n      <local-storage-sync v-model=\"pageSize\" :storage-key=\"$options.PAGE_SIZE_STORAGE_KEY\">\n        <page-size-selector\n          v-model=\"pageSize\"\n          :class=\"{ 'gl-absolute gl-right-0 gl-top-0': hasPagination }\"\n        />\n      </local-storage-sync>\n    </div>\n  </div>\n</template>\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_list_graphql.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_list_graphql.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vulnerability_list_graphql.vue?vue&type=template&id=9fb40858\"\nimport script from \"./vulnerability_list_graphql.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_list_graphql.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('vulnerability-list',{attrs:{\"is-loading\":_vm.isLoadingVulnerabilities,\"vulnerabilities\":_vm.vulnerabilities,\"fields\":_vm.fields,\"sort\":_vm.sort,\"page-size\":_vm.pageSize,\"should-show-project-namespace\":_vm.showProjectNamespace,\"portal-name\":_vm.portalName},on:{\"update:sort\":function($event){_vm.sort=$event},\"vulnerability-clicked\":function($event){return _vm.$emit('vulnerability-clicked', $event)}}}),_vm._v(\" \"),(_vm.isLoadingVulnerabilities || _vm.vulnerabilities.length)?_c('div',{staticClass:\"gl-mt-6\",class:{\n      'vulnerability-report-footer-mobile gl-relative gl-text-center': _vm.hasPagination,\n      'gl-text-right': !_vm.hasPagination,\n    }},[_c('gl-keyset-pagination',{attrs:{\"has-previous-page\":_vm.pageInfo.hasPreviousPage,\"has-next-page\":_vm.pageInfo.hasNextPage,\"start-cursor\":_vm.pageInfo.startCursor,\"end-cursor\":_vm.pageInfo.endCursor,\"disabled\":_vm.isLoadingVulnerabilities},on:{\"next\":_vm.getNextPage,\"prev\":_vm.getPrevPage}}),_vm._v(\" \"),_c('local-storage-sync',{attrs:{\"storage-key\":_vm.$options.PAGE_SIZE_STORAGE_KEY},model:{value:(_vm.pageSize),callback:function ($$v) {_vm.pageSize=$$v},expression:\"pageSize\"}},[_c('page-size-selector',{class:{ 'gl-absolute gl-right-0 gl-top-0': _vm.hasPagination },model:{value:(_vm.pageSize),callback:function ($$v) {_vm.pageSize=$$v},expression:\"pageSize\"}})],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlCollapsibleListbox, GlLoadingIcon } from '@gitlab/ui';\nimport { escapeRegExp, debounce } from 'lodash';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { DASHBOARD_TYPE_GROUP, DASHBOARD_TYPE_INSTANCE } from 'ee/security_dashboard/constants';\nimport { createAlert } from '~/alert';\nimport { getSelectedOptionsText } from '~/lib/utils/listbox_helpers';\nimport { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';\nimport { convertToGraphQLIds, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { __, s__ } from '~/locale';\nimport groupProjectsQuery from 'ee/security_dashboard/graphql/queries/group_projects.query.graphql';\nimport instanceProjectsQuery from 'ee/security_dashboard/graphql/queries/instance_projects.query.graphql';\nimport QuerystringSync from './querystring_sync.vue';\nimport { ALL_ID } from './constants';\n\nconst SEARCH_TERM_MINIMUM_LENGTH = 3;\nconst SELECTED_PROJECTS_MAX_COUNT = 100;\nconst PROJECT_ENTITY_NAME = 'Project';\n\nconst QUERIES = {\n  [DASHBOARD_TYPE_GROUP]: groupProjectsQuery,\n  [DASHBOARD_TYPE_INSTANCE]: instanceProjectsQuery,\n};\n\n// Convert the project IDs from \"gid://gitlab/Project/1\" to \"1\". It needs to be a string because\n// the IDs saved on the querystring are restored as strings.\nconst mapProjects = (projects) =>\n  projects.map(({ id, name }) => ({ value: getIdFromGraphQLId(id).toString(), text: name }));\n\nexport default {\n  components: {\n    GlCollapsibleListbox,\n    GlLoadingIcon,\n    QuerystringSync,\n  },\n  directives: { SafeHtml },\n  inject: ['groupFullPath', 'dashboardType'],\n  data: () => ({\n    projectNames: {},\n    projects: [],\n    selected: [],\n    pageInfo: { hasNextPage: true },\n    searchTerm: '',\n    hasDropdownBeenOpened: false,\n  }),\n  computed: {\n    // IDs of projects that actually exist.\n    validIds() {\n      return this.selected.filter((value) => Boolean(this.projectNames[value]));\n    },\n    selectedProjects() {\n      return this.validIds.map((value) => ({ value, text: this.projectNames[value] }));\n    },\n    unselectedProjects() {\n      return this.projects.filter(({ value }) => !this.selected.includes(value));\n    },\n    items() {\n      if (this.isMaxProjectsSelected) {\n        return this.selectedProjects;\n      }\n\n      if (this.searchTerm) {\n        return this.projects;\n      }\n\n      return [\n        ...this.selectedProjects,\n        { text: this.$options.i18n.allItemsText, value: ALL_ID },\n        ...this.unselectedProjects,\n      ];\n    },\n    selectedValues() {\n      return this.validIds.length ? this.validIds : [ALL_ID];\n    },\n    toggleText() {\n      return getSelectedOptionsText({\n        options: this.selectedProjects,\n        selected: this.selectedValues,\n        placeholder: this.$options.i18n.allItemsText,\n      });\n    },\n    isLoadingProjects() {\n      return this.$apollo.queries.projects.loading;\n    },\n    isLoadingProjectsById() {\n      return this.$apollo.queries.projectsById.loading;\n    },\n    isSearchTooShort() {\n      return this.searchTerm && this.searchTerm.length < SEARCH_TERM_MINIMUM_LENGTH;\n    },\n    isMaxProjectsSelected() {\n      return this.selected.length >= SELECTED_PROJECTS_MAX_COUNT;\n    },\n    // Project IDs that we didn't fetch the project data for.\n    unfetchedIds() {\n      return this.selected.filter((value) => !Object.hasOwn(this.projectNames, value));\n    },\n    hasInfiniteScroll() {\n      return this.pageInfo.hasNextPage && !this.isLoadingProjects;\n    },\n    noResultsText() {\n      const { noMatchingResults, enterMoreCharactersToSearch } = this.$options.i18n;\n      if (this.isSearchTooShort) {\n        return enterMoreCharactersToSearch;\n      }\n\n      return noMatchingResults;\n    },\n  },\n  apollo: {\n    // Gets the project data for the project IDs in the querystring and adds them to projectNames.\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    projectsById: {\n      query() {\n        return QUERIES[this.dashboardType];\n      },\n      // This prevents the query from creating a projectsById variable on the component. The query\n      // is only used to populate projectNames.\n      manual: true,\n      variables() {\n        return {\n          fullPath: this.groupFullPath,\n          pageSize: SELECTED_PROJECTS_MAX_COUNT,\n          // The IDs have to be in the format \"gid://gitlab/Project/${projectId}\"\n          ids: convertToGraphQLIds(PROJECT_ENTITY_NAME, this.unfetchedIds),\n        };\n      },\n      result({ data }) {\n        // Add each unfetched ID to projectNames so that we know we fetched the project data for it.\n        this.unfetchedIds.forEach((id) => {\n          this.projectNames = {\n            ...this.projectNames,\n            [id]: undefined,\n          };\n        });\n\n        const projects = mapProjects(data[this.dashboardType].projects.edges.map((x) => x.node));\n        this.saveProjectNames(projects);\n      },\n      error() {\n        createAlert({ message: this.$options.i18n.loadingError });\n      },\n      skip() {\n        // Skip if we've already fetched all the projects for every project ID.\n        return !this.unfetchedIds.length;\n      },\n    },\n    // Gets the projects to show in the dropdown, with search if there's a search term.\n    projects: {\n      query() {\n        return QUERIES[this.dashboardType];\n      },\n      variables() {\n        return {\n          fullPath: this.groupFullPath,\n          search: this.searchTerm,\n        };\n      },\n      update(data) {\n        const { projects } = data[this.dashboardType];\n        const mappedProjects = mapProjects(projects.edges.map((x) => x.node));\n        this.saveProjectNames(mappedProjects);\n        this.pageInfo = projects.pageInfo;\n\n        return mappedProjects;\n      },\n      error() {\n        createAlert({ message: this.$options.i18n.loadingError });\n      },\n      skip() {\n        return !this.hasDropdownBeenOpened || this.isSearchTooShort || this.isMaxProjectsSelected;\n      },\n    },\n  },\n  watch: {\n    searchTerm() {\n      // When the search term is changed, clear out projects so that the old results aren't shown\n      // while loading new results, and set pageInfo.hasNextPage to true so that the query will\n      // run even if the previous results set it to false.\n      this.projects = [];\n      this.pageInfo = { hasNextPage: true };\n    },\n    validIds() {\n      // If there are project IDs that we didn't check yet to see if they're valid, or if there's\n      // at least one valid ID, use the selected IDs. Otherwise, none of the IDs are valid, so use\n      // an empty array to disable the filter.\n      const projectIds = this.unfetchedIds.length || this.validIds.length ? this.selected : [];\n\n      this.$emit('filter-changed', { projectId: projectIds });\n    },\n  },\n  methods: {\n    async setDropdownOpened() {\n      this.hasDropdownBeenOpened = true;\n    },\n    highlightSearchTerm(name) {\n      // Don't use the regex if there's no search term, otherwise it will wrap every character with\n      // <b>, i.e. '<b>1</b><b>2</b><b>3</b>'.\n      if (!this.searchTerm) {\n        return name;\n      }\n      // If the search term is \"sec rep\", split it into \"sec|rep\" so that a project with the name\n      // \"Security Reports\" is highlighted as \"SECurity REPorts\".\n      const terms = escapeRegExp(this.searchTerm).split(' ').join('|');\n      const regex = new RegExp(`(${terms})`, 'gi');\n      return name.replace(regex, '<b>$1</b>');\n    },\n    saveProjectNames(projects) {\n      projects.forEach(({ value, text }) => {\n        this.projectNames = {\n          ...this.projectNames,\n          [value]: text,\n        };\n      });\n    },\n    fetchNextPage() {\n      this.$apollo.queries.projects.fetchMore({ variables: { after: this.pageInfo.endCursor } });\n    },\n    onSearch: debounce(function debouncedSearch(searchTerm) {\n      this.searchTerm = searchTerm;\n    }, DEFAULT_DEBOUNCE_AND_THROTTLE_MS),\n    updateSelected(selected) {\n      if (selected.at(-1) === ALL_ID) {\n        this.selected = [];\n      } else {\n        this.selected = selected.filter((value) => value !== ALL_ID);\n      }\n    },\n  },\n  i18n: {\n    searchPlaceholder: __('Search'),\n    noMatchingResults: __('No matching results'),\n    loadingError: __('An error occurred while retrieving projects.'),\n    enterMoreCharactersToSearch: __('Enter at least three characters to search'),\n    label: s__('SecurityReports|Project'),\n    allItemsText: s__('SecurityReports|All projects'),\n    maxProjectsSelected: s__('SecurityReports|Maximum selected projects limit reached'),\n  },\n  ALL_ID,\n};\n</script>\n\n<template>\n  <div>\n    <querystring-sync v-model=\"selected\" querystring-key=\"projectId\" />\n    <label class=\"gl-mb-2\">{{ $options.i18n.label }}</label>\n    <gl-collapsible-listbox\n      :items=\"items\"\n      :selected=\"selectedValues\"\n      :toggle-text=\"toggleText\"\n      :header-text=\"$options.i18n.label\"\n      :loading=\"isLoadingProjectsById\"\n      :search-placeholder=\"$options.i18n.searchPlaceholder\"\n      :no-results-text=\"noResultsText\"\n      :infinite-scroll=\"hasInfiniteScroll\"\n      :searchable=\"!isMaxProjectsSelected\"\n      data-testid=\"filter-project-dropdown\"\n      block\n      multiple\n      @shown=\"setDropdownOpened\"\n      @bottom-reached=\"fetchNextPage\"\n      @search=\"onSearch\"\n      @select=\"updateSelected\"\n    >\n      <template #list-item=\"{ item }\">\n        <div v-safe-html=\"highlightSearchTerm(item.text)\"></div>\n      </template>\n      <template v-if=\"isMaxProjectsSelected\" #footer>\n        <div class=\"gl-py-3 gl-pl-7 gl-pr-5 gl-text-subtle\" data-testid=\"max-projects-message\">\n          {{ $options.i18n.maxProjectsSelected }}\n        </div>\n      </template>\n      <template v-else-if=\"isLoadingProjects\" #footer>\n        <gl-loading-icon class=\"gl-mx-auto gl-p-3\" />\n      </template>\n    </gl-collapsible-listbox>\n  </div>\n</template>\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project_filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project_filter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./project_filter.vue?vue&type=template&id=61634453\"\nimport script from \"./project_filter.vue?vue&type=script&lang=js\"\nexport * from \"./project_filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('querystring-sync',{attrs:{\"querystring-key\":\"projectId\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}}),_vm._v(\" \"),_c('label',{staticClass:\"gl-mb-2\"},[_vm._v(_vm._s(_vm.$options.i18n.label))]),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"items\":_vm.items,\"selected\":_vm.selectedValues,\"toggle-text\":_vm.toggleText,\"header-text\":_vm.$options.i18n.label,\"loading\":_vm.isLoadingProjectsById,\"search-placeholder\":_vm.$options.i18n.searchPlaceholder,\"no-results-text\":_vm.noResultsText,\"infinite-scroll\":_vm.hasInfiniteScroll,\"searchable\":!_vm.isMaxProjectsSelected,\"data-testid\":\"filter-project-dropdown\",\"block\":\"\",\"multiple\":\"\"},on:{\"shown\":_vm.setDropdownOpened,\"bottom-reached\":_vm.fetchNextPage,\"search\":_vm.onSearch,\"select\":_vm.updateSelected},scopedSlots:_vm._u([{key:\"list-item\",fn:function({ item }){return [_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.highlightSearchTerm(item.text)),expression:\"highlightSearchTerm(item.text)\"}]})]}},(_vm.isMaxProjectsSelected)?{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"gl-py-3 gl-pl-7 gl-pr-5 gl-text-subtle\",attrs:{\"data-testid\":\"max-projects-message\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.maxProjectsSelected)+\"\\n      \")])]},proxy:true}:(_vm.isLoadingProjects)?{key:\"footer\",fn:function(){return [_c('gl-loading-icon',{staticClass:\"gl-mx-auto gl-p-3\"})]},proxy:true}:null],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cluster_filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cluster_filter.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport getClusterAgentsQuery from 'ee/security_dashboard/graphql/queries/cluster_agents.query.graphql';\nimport { createAlert } from '~/alert';\nimport { getSelectedOptionsText } from '~/lib/utils/listbox_helpers';\nimport QuerystringSync from './querystring_sync.vue';\nimport { ALL_ID } from './constants';\n\nexport default {\n  components: {\n    GlCollapsibleListbox,\n    QuerystringSync,\n  },\n  apollo: {\n    clusterAgents: {\n      query: getClusterAgentsQuery,\n      variables() {\n        return {\n          projectPath: this.projectFullPath,\n        };\n      },\n      update: (data) =>\n        data.project?.clusterAgents?.nodes.map((c) => ({\n          value: c.name,\n          text: c.name,\n          gid: c.id,\n        })) || [],\n      error() {\n        createAlert({ message: this.$options.i18n.loadingError });\n      },\n    },\n  },\n  inject: ['projectFullPath'],\n  data: () => ({\n    clusterAgents: [],\n    selected: [],\n  }),\n  computed: {\n    toggleText() {\n      const options = this.clusterAgents?.filter(({ value }) => this.selected.includes(value));\n      return getSelectedOptionsText({\n        options,\n        selected: this.selected,\n        placeholder: this.$options.i18n.allItemsText,\n      });\n    },\n    isLoading() {\n      return this.$apollo.queries.clusterAgents.loading;\n    },\n    items() {\n      return [\n        {\n          text: this.$options.i18n.allItemsText,\n          value: ALL_ID,\n        },\n        ...this.clusterAgents,\n      ];\n    },\n    selectedItems() {\n      return this.selected.length ? this.selected : [ALL_ID];\n    },\n    clusterAgentIds() {\n      return this.clusterAgents\n        .filter(({ value }) => this.selected.includes(value))\n        .map(({ gid }) => gid);\n    },\n  },\n  watch: {\n    clusterAgentIds: {\n      immediate: true,\n      handler() {\n        this.$emit('filter-changed', { clusterAgentId: this.clusterAgentIds });\n      },\n    },\n  },\n  methods: {\n    updateSelected(selected) {\n      if (selected?.at(-1) === ALL_ID) {\n        this.selected = [];\n      } else {\n        this.selected = selected.filter((value) => value !== ALL_ID);\n      }\n    },\n  },\n  i18n: {\n    label: s__('SecurityReports|Cluster'),\n    allItemsText: s__('SecurityReports|All clusters'),\n    loadingError: s__('SecurityOrchestration|Failed to load cluster agents.'),\n  },\n  ALL_ID,\n};\n</script>\n\n<template>\n  <div>\n    <querystring-sync v-model=\"selected\" querystring-key=\"cluster\" />\n    <label class=\"gl-mb-2\">{{ $options.i18n.label }}</label>\n    <gl-collapsible-listbox\n      :selected=\"selectedItems\"\n      :items=\"items\"\n      :toggle-text=\"toggleText\"\n      :header-text=\"$options.i18n.label\"\n      :loading=\"isLoading\"\n      multiple\n      block\n      @select=\"updateSelected\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./cluster_filter.vue?vue&type=template&id=b1684186\"\nimport script from \"./cluster_filter.vue?vue&type=script&lang=js\"\nexport * from \"./cluster_filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('querystring-sync',{attrs:{\"querystring-key\":\"cluster\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}}),_vm._v(\" \"),_c('label',{staticClass:\"gl-mb-2\"},[_vm._v(_vm._s(_vm.$options.i18n.label))]),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"selected\":_vm.selectedItems,\"items\":_vm.items,\"toggle-text\":_vm.toggleText,\"header-text\":_vm.$options.i18n.label,\"loading\":_vm.isLoading,\"multiple\":\"\",\"block\":\"\"},on:{\"select\":_vm.updateSelected}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./image_filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./image_filter.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox, GlTruncate } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { createAlert } from '~/alert';\nimport { getSelectedOptionsText } from '~/lib/utils/listbox_helpers';\nimport agentImagesQuery from 'ee/security_dashboard/graphql/queries/agent_images.query.graphql';\nimport projectImagesQuery from 'ee/security_dashboard/graphql/queries/project_images.query.graphql';\nimport { DASHBOARD_TYPE_PROJECT } from 'ee/security_dashboard/constants';\nimport QuerystringSync from './querystring_sync.vue';\nimport { ALL_ID } from './constants';\n\nexport default {\n  components: {\n    GlCollapsibleListbox,\n    GlTruncate,\n    QuerystringSync,\n  },\n  apollo: {\n    images: {\n      query() {\n        return this.isAgentDashboard ? agentImagesQuery : projectImagesQuery;\n      },\n      variables() {\n        return {\n          agentName: this.agentName,\n          projectPath: this.projectFullPath || this.fullPath,\n        };\n      },\n      update(data) {\n        const vulnerabilityImages = this.isAgentDashboard\n          ? data.project?.clusterAgent?.vulnerabilityImages\n          : data.project?.vulnerabilityImages;\n\n        return vulnerabilityImages.nodes.map(({ name }) => ({ text: name, value: name, id: name }));\n      },\n      error() {\n        createAlert({ message: this.$options.i18n.loadingError });\n      },\n    },\n  },\n  inject: {\n    agentName: { default: '' },\n    dashboardType: { default: DASHBOARD_TYPE_PROJECT },\n    fullPath: { default: '' },\n    projectFullPath: { default: '' },\n  },\n  data: () => ({\n    images: [],\n    selected: [],\n  }),\n  computed: {\n    isAgentDashboard() {\n      return this.dashboardType === DASHBOARD_TYPE_PROJECT && Boolean(this.agentName);\n    },\n    toggleText() {\n      return getSelectedOptionsText({\n        options: this.images,\n        selected: this.selected,\n        placeholder: this.$options.i18n.allItemsText,\n      });\n    },\n    isLoading() {\n      return this.$apollo.queries.images.loading;\n    },\n    items() {\n      return [\n        {\n          text: this.$options.i18n.allItemsText,\n          value: ALL_ID,\n        },\n        ...this.images,\n      ];\n    },\n    selectedItems() {\n      return !this.selected.length ? [ALL_ID] : this.selected;\n    },\n  },\n  watch: {\n    selected() {\n      this.$emit('filter-changed', { image: this.selected });\n    },\n  },\n  methods: {\n    updateSelected(selected) {\n      if (selected?.at(-1) === ALL_ID) {\n        this.selected = [];\n      } else {\n        this.selected = selected.filter((value) => value !== ALL_ID);\n      }\n    },\n  },\n  i18n: {\n    label: s__('SecurityReports|Image'),\n    allItemsText: s__('SecurityReports|All images'),\n    loadingError: s__('SecurityOrchestration|Failed to load images.'),\n  },\n  ALL_ID,\n};\n</script>\n\n<template>\n  <div>\n    <querystring-sync v-model=\"selected\" querystring-key=\"image\" />\n    <label class=\"gl-mb-2\">{{ $options.i18n.label }}</label>\n    <gl-collapsible-listbox\n      :selected=\"selectedItems\"\n      :items=\"items\"\n      :toggle-text=\"toggleText\"\n      :header-text=\"$options.i18n.label\"\n      :loading=\"isLoading\"\n      fluid-width\n      multiple\n      block\n      @select=\"updateSelected\"\n    >\n      <template #list-item=\"{ item }\">\n        <gl-truncate position=\"middle\" :text=\"item.text\" />\n      </template>\n    </gl-collapsible-listbox>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./image_filter.vue?vue&type=template&id=15761199\"\nimport script from \"./image_filter.vue?vue&type=script&lang=js\"\nexport * from \"./image_filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('querystring-sync',{attrs:{\"querystring-key\":\"image\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}}),_vm._v(\" \"),_c('label',{staticClass:\"gl-mb-2\"},[_vm._v(_vm._s(_vm.$options.i18n.label))]),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"selected\":_vm.selectedItems,\"items\":_vm.items,\"toggle-text\":_vm.toggleText,\"header-text\":_vm.$options.i18n.label,\"loading\":_vm.isLoading,\"fluid-width\":\"\",\"multiple\":\"\",\"block\":\"\"},on:{\"select\":_vm.updateSelected},scopedSlots:_vm._u([{key:\"list-item\",fn:function({ item }){return [_c('gl-truncate',{attrs:{\"position\":\"middle\",\"text\":item.text}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool_filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool_filter.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport {\n  REPORT_TYPES_WITH_MANUALLY_ADDED,\n  REPORT_TYPES_WITH_CLUSTER_IMAGE,\n} from 'ee/security_dashboard/constants';\nimport { s__ } from '~/locale';\nimport { REPORT_TYPE_PRESETS } from 'ee/security_dashboard/components/shared/vulnerability_report/constants';\nimport { getSelectedOptionsText } from '~/lib/utils/listbox_helpers';\nimport QuerystringSync from './querystring_sync.vue';\nimport { ALL_ID } from './constants';\n\nexport default {\n  components: { QuerystringSync, GlCollapsibleListbox },\n  inject: ['dashboardType'],\n  data() {\n    return {\n      selected: [],\n    };\n  },\n  computed: {\n    items() {\n      const allOption = { value: ALL_ID, text: this.$options.i18n.allItemsText };\n      const reportTypes =\n        this.dashboardType === 'pipeline'\n          ? REPORT_TYPES_WITH_CLUSTER_IMAGE\n          : REPORT_TYPES_WITH_MANUALLY_ADDED;\n\n      // For backwards compatibility with existing bookmarks, the ID needs to be capitalized.\n      const options = Object.entries(reportTypes).map(([id, text]) => ({\n        value: id.toUpperCase(),\n        text,\n      }));\n\n      return [allOption, ...options];\n    },\n    selectedIds() {\n      // This prevents the querystring-sync component from redirecting the page to /?scanner_id=ALL.\n      return this.selected.length ? this.selected : [ALL_ID];\n    },\n    toggleText() {\n      return getSelectedOptionsText({\n        options: this.items,\n        selected: this.selectedIds,\n        placeholder: this.$options.i18n.allItemsText,\n      });\n    },\n  },\n  watch: {\n    selected() {\n      this.$emit('filter-changed', {\n        // Filter out cluster image scanning results if there's no selected report types.\n        reportType: this.selected.length ? this.selected : REPORT_TYPE_PRESETS.DEVELOPMENT,\n      });\n    },\n  },\n  methods: {\n    updateSelected(selected) {\n      if (selected.at(-1) === ALL_ID) {\n        this.selected = [];\n      } else {\n        this.selected = selected.filter((s) => s !== ALL_ID);\n      }\n    },\n  },\n  i18n: {\n    label: s__('SecurityReports|Tool'),\n    allItemsText: s__('SecurityReports|All tools'),\n  },\n  ALL_ID,\n};\n</script>\n\n<template>\n  <div>\n    <querystring-sync v-model=\"selected\" querystring-key=\"reportType\" />\n    <label class=\"gl-mb-2\">{{ $options.i18n.label }}</label>\n    <gl-collapsible-listbox\n      :items=\"items\"\n      :header-text=\"$options.i18n.label\"\n      :toggle-text=\"toggleText\"\n      :selected=\"selectedIds\"\n      multiple\n      block\n      data-testid=\"filter-tool-dropdown\"\n      @select=\"updateSelected\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./tool_filter.vue?vue&type=template&id=3dd42a76\"\nimport script from \"./tool_filter.vue?vue&type=script&lang=js\"\nexport * from \"./tool_filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('querystring-sync',{attrs:{\"querystring-key\":\"reportType\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}}),_vm._v(\" \"),_c('label',{staticClass:\"gl-mb-2\"},[_vm._v(_vm._s(_vm.$options.i18n.label))]),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"items\":_vm.items,\"header-text\":_vm.$options.i18n.label,\"toggle-text\":_vm.toggleText,\"selected\":_vm.selectedIds,\"multiple\":\"\",\"block\":\"\",\"data-testid\":\"filter-tool-dropdown\"},on:{\"select\":_vm.updateSelected}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { groupBy } from 'lodash';\nimport { s__ } from '~/locale';\nimport {\n  REPORT_TYPES_DEFAULT,\n  REPORT_TYPES_WITH_MANUALLY_ADDED,\n} from 'ee/security_dashboard/constants';\nimport { getSelectedOptionsText } from '~/lib/utils/listbox_helpers';\nimport { REPORT_TYPE_PRESETS } from 'ee/security_dashboard/components/shared/vulnerability_report/constants';\nimport QuerystringSync from './querystring_sync.vue';\nimport { ALL_ID } from './constants';\n\n// Due to legacy reasons, some scanner vendors are blank. We'll treat these as GitLab scanners.\nexport const DEFAULT_VENDORS = ['', 'GitLab'];\n\nexport default {\n  components: {\n    QuerystringSync,\n    GlCollapsibleListbox,\n  },\n  inject: ['scanners'],\n  data() {\n    return {\n      selected: [],\n    };\n  },\n  computed: {\n    selectedIds() {\n      // This prevents the querystring-sync component from redirecting the page to /?scanner_id=ALL.\n      return this.selected.length ? this.selected : [ALL_ID];\n    },\n\n    toggleText() {\n      return getSelectedOptionsText({\n        options: this.items.flatMap(({ options }) => options),\n        selected: this.selectedIds,\n        placeholder: this.$options.i18n.allItemsText,\n      });\n    },\n\n    items() {\n      const allOption = { value: ALL_ID, text: this.$options.i18n.allItemsText };\n      const manuallyAddedOption = {\n        value: 'gitlab-manual-vulnerability-report',\n        text: REPORT_TYPES_WITH_MANUALLY_ADDED.generic,\n      };\n      const groupedByReport = groupBy(this.scanners, 'report_type');\n      const optionsWithScanners = [];\n\n      // Create the dropdown options for the report types that have scanners\n      Object.entries(REPORT_TYPES_DEFAULT).forEach(([reportType, text]) => {\n        const scanners = groupedByReport[reportType.toUpperCase()];\n\n        // Don't include the report type if there are no scanners for it\n        if (!scanners) {\n          return;\n        }\n\n        const options = scanners.map((scanner) => ({\n          value: scanner.external_id,\n          text: DEFAULT_VENDORS.includes(scanner.vendor)\n            ? scanner.name\n            : `${scanner.name} (${scanner.vendor})`,\n        }));\n\n        optionsWithScanners.push({ text, options });\n      });\n\n      return [\n        {\n          text: '',\n          textSrOnly: true,\n          options: [allOption, manuallyAddedOption],\n        },\n        ...optionsWithScanners,\n      ];\n    },\n  },\n  watch: {\n    selected() {\n      if (!this.selected.length) {\n        // This will send the filter presets (no \"Cluster Image Scanning\") for the development tab\n        this.$emit('filter-changed', {\n          reportType: REPORT_TYPE_PRESETS.DEVELOPMENT,\n          scanner: undefined,\n        });\n        return;\n      }\n\n      this.$emit('filter-changed', { scanner: this.selected, reportType: undefined });\n    },\n  },\n  methods: {\n    updateSelected(selected) {\n      if (selected.at(-1) === ALL_ID || !selected.length) {\n        this.selected = [];\n      } else if (selected.length > 0) {\n        this.selected = selected.filter((s) => s !== ALL_ID);\n      }\n    },\n  },\n  i18n: {\n    label: s__('SecurityReports|Tool'),\n    allItemsText: s__('ciReport|All tools'),\n  },\n};\n</script>\n\n<template>\n  <div>\n    <querystring-sync v-model=\"selected\" querystring-key=\"scanner\" />\n    <label class=\"gl-mb-2\">{{ $options.i18n.label }}</label>\n    <gl-collapsible-listbox\n      :items=\"items\"\n      :header-text=\"$options.i18n.label\"\n      :toggle-text=\"toggleText\"\n      :selected=\"selectedIds\"\n      multiple\n      block\n      data-testid=\"filter-tool-dropdown\"\n      @select=\"updateSelected\"\n    />\n  </div>\n</template>\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool_with_vendor_filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool_with_vendor_filter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./tool_with_vendor_filter.vue?vue&type=template&id=04a31e2f\"\nimport script from \"./tool_with_vendor_filter.vue?vue&type=script&lang=js\"\nexport * from \"./tool_with_vendor_filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('querystring-sync',{attrs:{\"querystring-key\":\"scanner\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}}),_vm._v(\" \"),_c('label',{staticClass:\"gl-mb-2\"},[_vm._v(_vm._s(_vm.$options.i18n.label))]),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"items\":_vm.items,\"header-text\":_vm.$options.i18n.label,\"toggle-text\":_vm.toggleText,\"selected\":_vm.selectedIds,\"multiple\":\"\",\"block\":\"\",\"data-testid\":\"filter-tool-dropdown\"},on:{\"select\":_vm.updateSelected}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { getSelectedOptionsText } from '~/lib/utils/listbox_helpers';\nimport { SEVERITY_LEVELS } from 'ee/security_dashboard/constants';\nimport QuerystringSync from './querystring_sync.vue';\nimport { ALL_ID } from './constants';\n\n// For backwards compatibility with existing bookmarks, the ID needs to be capitalized.\nexport const SEVERITY_LEVEL_ITEMS = Object.entries(SEVERITY_LEVELS).map(([id, text]) => ({\n  value: id.toUpperCase(),\n  text,\n}));\n\nexport const FILTER_ITEMS = [\n  {\n    value: ALL_ID,\n    text: s__('SecurityReports|All severities'),\n  },\n  ...SEVERITY_LEVEL_ITEMS,\n];\n\nconst VALID_IDS = SEVERITY_LEVEL_ITEMS.map(({ value }) => value);\n\nexport default {\n  components: { GlCollapsibleListbox, QuerystringSync },\n  data: () => ({\n    selectedIds: [ALL_ID],\n  }),\n  computed: {\n    toggleText() {\n      return getSelectedOptionsText({ options: FILTER_ITEMS, selected: this.selectedIds });\n    },\n  },\n  watch: {\n    selectedIds: {\n      handler() {\n        this.$emit('filter-changed', {\n          severity: this.selectedIds.filter((value) => value !== ALL_ID),\n        });\n      },\n    },\n  },\n  methods: {\n    updateSelected(selected) {\n      if (!selected.length || selected.at(-1) === ALL_ID) {\n        this.selectedIds = [ALL_ID];\n      } else {\n        this.selectedIds = selected.filter((value) => value !== ALL_ID);\n      }\n    },\n  },\n  i18n: {\n    label: s__('SecurityReports|Severity'),\n  },\n  FILTER_ITEMS,\n  VALID_IDS,\n};\n</script>\n\n<template>\n  <div>\n    <querystring-sync\n      :value=\"selectedIds\"\n      querystring-key=\"severity\"\n      :valid-values=\"$options.VALID_IDS\"\n      @input=\"updateSelected\"\n    />\n    <label class=\"gl-mb-2\">{{ $options.i18n.label }}</label>\n    <gl-collapsible-listbox\n      :header-text=\"$options.i18n.label\"\n      :items=\"$options.FILTER_ITEMS\"\n      :selected=\"selectedIds\"\n      :toggle-text=\"toggleText\"\n      multiple\n      block\n      @select=\"updateSelected\"\n    />\n  </div>\n</template>\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./severity_filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./severity_filter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./severity_filter.vue?vue&type=template&id=88ca822e\"\nimport script from \"./severity_filter.vue?vue&type=script&lang=js\"\nexport * from \"./severity_filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('querystring-sync',{attrs:{\"value\":_vm.selectedIds,\"querystring-key\":\"severity\",\"valid-values\":_vm.$options.VALID_IDS},on:{\"input\":_vm.updateSelected}}),_vm._v(\" \"),_c('label',{staticClass:\"gl-mb-2\"},[_vm._v(_vm._s(_vm.$options.i18n.label))]),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"header-text\":_vm.$options.i18n.label,\"items\":_vm.$options.FILTER_ITEMS,\"selected\":_vm.selectedIds,\"toggle-text\":_vm.toggleText,\"multiple\":\"\",\"block\":\"\"},on:{\"select\":_vm.updateSelected}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { getSelectedOptionsText } from '~/lib/utils/listbox_helpers';\nimport { VULNERABILITY_STATE_OBJECTS } from 'ee/vulnerabilities/constants';\nimport QuerystringSync from './querystring_sync.vue';\nimport { ALL_ID as ALL_STATUS_VALUE } from './constants';\n\nconst { detected, confirmed, dismissed, resolved } = VULNERABILITY_STATE_OBJECTS;\nexport const OPTIONS = [\n  { value: ALL_STATUS_VALUE, text: s__('SecurityReports|All statuses') },\n  { value: detected.searchParamValue, text: detected.buttonText },\n  { value: confirmed.searchParamValue, text: confirmed.buttonText },\n  { value: dismissed.searchParamValue, text: dismissed.buttonText },\n  { value: resolved.searchParamValue, text: resolved.buttonText },\n];\n\nconst VALID_VALUES = OPTIONS.map(({ value }) => value);\nconst DEFAULT_VALUES = [detected.searchParamValue];\n\nexport default {\n  components: {\n    GlCollapsibleListbox,\n    QuerystringSync,\n  },\n  data: () => ({\n    selected: DEFAULT_VALUES,\n  }),\n  computed: {\n    toggleText() {\n      return getSelectedOptionsText({ options: OPTIONS, selected: this.selected });\n    },\n  },\n  watch: {\n    selected: {\n      immediate: true,\n      handler() {\n        this.$emit('filter-changed', {\n          state: this.selected.filter((value) => value !== ALL_STATUS_VALUE),\n        });\n      },\n    },\n  },\n\n  methods: {\n    updateSelected(selected) {\n      if (selected.length <= 0 || selected.at(-1) === ALL_STATUS_VALUE) {\n        this.selected = [ALL_STATUS_VALUE];\n      } else {\n        this.selected = selected.filter((value) => value !== ALL_STATUS_VALUE);\n      }\n    },\n    updateSelectedFromQS(selected) {\n      if (selected.includes(ALL_STATUS_VALUE)) {\n        this.selected = [ALL_STATUS_VALUE];\n      } else if (selected.length > 0) {\n        this.selected = selected;\n      } else {\n        this.selected = DEFAULT_VALUES;\n      }\n    },\n  },\n  i18n: {\n    label: s__('SecurityReports|Status'),\n  },\n  OPTIONS,\n  VALID_VALUES,\n};\n</script>\n\n<template>\n  <div>\n    <querystring-sync\n      querystring-key=\"state\"\n      :value=\"selected\"\n      :valid-values=\"$options.VALID_VALUES\"\n      @input=\"updateSelectedFromQS\"\n    />\n    <label class=\"gl-mb-2\">{{ $options.i18n.label }}</label>\n    <gl-collapsible-listbox\n      :header-text=\"$options.i18n.label\"\n      block\n      multiple\n      :items=\"$options.OPTIONS\"\n      :selected=\"selected\"\n      :toggle-text=\"toggleText\"\n      data-testid=\"filter-status-dropdown\"\n      @select=\"updateSelected\"\n    />\n  </div>\n</template>\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_status_filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_status_filter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./pipeline_status_filter.vue?vue&type=template&id=dae748f4\"\nimport script from \"./pipeline_status_filter.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_status_filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('querystring-sync',{attrs:{\"querystring-key\":\"state\",\"value\":_vm.selected,\"valid-values\":_vm.$options.VALID_VALUES},on:{\"input\":_vm.updateSelectedFromQS}}),_vm._v(\" \"),_c('label',{staticClass:\"gl-mb-2\"},[_vm._v(_vm._s(_vm.$options.i18n.label))]),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"header-text\":_vm.$options.i18n.label,\"block\":\"\",\"multiple\":\"\",\"items\":_vm.$options.OPTIONS,\"selected\":_vm.selected,\"toggle-text\":_vm.toggleText,\"data-testid\":\"filter-status-dropdown\"},on:{\"select\":_vm.updateSelected}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { debounce, cloneDeep, isEqual } from 'lodash';\nimport ActivityFilter from '../filters/activity_filter.vue';\nimport ProjectFilter from '../filters/project_filter.vue';\nimport ClusterFilter from '../filters/cluster_filter.vue';\nimport ImageFilter from '../filters/image_filter.vue';\nimport ToolFilter from '../filters/tool_filter.vue';\nimport ToolWithVendorFilter from '../filters/tool_with_vendor_filter.vue';\nimport SeverityFilter from '../filters/severity_filter.vue';\nimport StatusFilter from '../filters/status_filter.vue';\nimport PipelineStatusFilter from '../filters/pipeline_status_filter.vue';\nimport { FILTERS } from './constants';\n\n// Due to legacy reasons, some scanner vendors are blank. We'll treat these as GitLab scanners.\nconst DEFAULT_VENDORS = ['', 'GitLab'];\n\nexport default {\n  inject: {\n    scanners: {\n      type: Array,\n      required: false,\n      default: [],\n    },\n  },\n  props: {\n    filters: {\n      type: Array,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      filterQuery: {},\n      // When this component is first shown, every filter will emit its own @filter-changed event at\n      // the same time, which will trigger this method multiple times. We'll debounce it so that it\n      // only runs once. Note that this is in data() so that it's unique per instance. Otherwise,\n      // every instance of this component will share the same debounce function.\n      emitFilterChange: debounce(function emit() {\n        this.$emit('filters-changed', this.filterQuery);\n      }),\n    };\n  },\n  methods: {\n    getComponentType(filter) {\n      switch (filter) {\n        case FILTERS.SEVERITY:\n          return SeverityFilter;\n        case FILTERS.STATUS:\n          return StatusFilter;\n        case FILTERS.PIPELINE_STATUS:\n          return PipelineStatusFilter;\n        case FILTERS.TOOL_VENDOR: {\n          const hasCustomVendor = (vendor) => !DEFAULT_VENDORS.includes(vendor);\n          return this.scanners.some(({ vendor }) => hasCustomVendor(vendor))\n            ? ToolWithVendorFilter // if there is at least 1 scanner with a custom vendor\n            : ToolFilter;\n        }\n        case FILTERS.TOOL_SIMPLE:\n          return ToolFilter;\n        case FILTERS.TOOL_PIPELINE:\n          return ToolFilter;\n        case FILTERS.ACTIVITY:\n          return ActivityFilter;\n        case FILTERS.PROJECT:\n          return ProjectFilter;\n        case FILTERS.CLUSTER:\n          return ClusterFilter;\n        case FILTERS.IMAGE:\n          return ImageFilter;\n        default:\n          throw new Error(`Invalid filter type: ${filter}`);\n      }\n    },\n    updateFilterQuery(query) {\n      const oldQuery = cloneDeep(this.filterQuery);\n      this.filterQuery = { ...this.filterQuery, ...query };\n      // Don't emit if the filters didn't change because it will trigger the GraphQL queries to run.\n      if (!isEqual(oldQuery, this.filterQuery)) {\n        this.emitFilterChange();\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    class=\"vulnerability-report-filters gl-border-b-1 gl-border-b-default gl-bg-gray-10 gl-p-5 gl-border-b-solid\"\n  >\n    <component\n      :is=\"getComponentType(filter)\"\n      v-for=\"filter in filters\"\n      :key=\"filter\"\n      @filter-changed=\"updateFilterQuery\"\n    />\n  </div>\n</template>\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_filters.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_filters.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vulnerability_filters.vue?vue&type=template&id=9fa93f78\"\nimport script from \"./vulnerability_filters.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_filters.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"vulnerability-report-filters gl-border-b-1 gl-border-b-default gl-bg-gray-10 gl-p-5 gl-border-b-solid\"},_vm._l((_vm.filters),function(filter){return _c(_vm.getComponentType(filter),{key:filter,tag:\"component\",on:{\"filter-changed\":_vm.updateFilterQuery}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { PortalTarget } from 'portal-vue';\nimport { isEqual } from 'lodash';\nimport {\n  GlCollapsibleListbox,\n  GlPopover,\n  GlLink,\n  GlIcon,\n  GlSprintf,\n  GlResizeObserverDirective,\n  GlSkeletonLoader,\n} from '@gitlab/ui';\nimport { VULNERABILITY_STATES } from 'ee/vulnerabilities/constants';\nimport {\n  SEVERITY_LEVELS,\n  REPORT_TYPES_WITH_MANUALLY_ADDED,\n  DASHBOARD_TYPE_GROUP,\n  DASHBOARD_TYPE_PROJECT,\n  DASHBOARD_TYPE_INSTANCE,\n} from 'ee/security_dashboard/constants';\nimport { createAlert } from '~/alert';\nimport countsQuery from 'ee/security_dashboard/graphql/queries/vulnerability_severities_count.query.graphql';\nimport SummaryHighlights from 'ee/vue_shared/security_reports/components/summary_highlights.vue';\nimport UserCalloutDismisser from '~/vue_shared/components/user_callout_dismisser.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { __, s__ } from '~/locale';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { scrollToElement, contentTop } from '~/lib/utils/common_utils';\nimport VulnerabilityCounts from './vulnerability_counts.vue';\nimport VulnerabilityListGraphql from './vulnerability_list_graphql.vue';\nimport VulnerabilityFilters from './vulnerability_filters.vue';\nimport { FILTERS } from './constants';\n\nconst GROUP_STATE = [\n  { value: 'detected', text: VULNERABILITY_STATES.detected },\n  { value: 'confirmed', text: VULNERABILITY_STATES.confirmed },\n  { value: 'dismissed', text: VULNERABILITY_STATES.dismissed },\n  { value: 'resolved', text: VULNERABILITY_STATES.resolved },\n];\n\nconst GROUP_SEVERITY = [\n  { value: 'critical', text: SEVERITY_LEVELS.critical },\n  { value: 'high', text: SEVERITY_LEVELS.high },\n  { value: 'medium', text: SEVERITY_LEVELS.medium },\n  { value: 'low', text: SEVERITY_LEVELS.low },\n  { value: 'info', text: SEVERITY_LEVELS.info },\n  { value: 'unknown', text: SEVERITY_LEVELS.unknown },\n];\n\nexport const GROUP_OWASP_2017 = [\n  { text: s__('Owasp|A1:2017 Injection'), value: 'A1_2017' },\n  { text: s__('Owasp|A2:2017 Broken Authentication'), value: 'A2_2017' },\n  { text: s__('Owasp|A3:2017 Sensitive Data Exposure'), value: 'A3_2017' },\n  { text: s__('Owasp|A4:2017 XML External Entities (XXE)'), value: 'A4_2017' },\n  { text: s__('Owasp|A5:2017 Broken Access Control'), value: 'A5_2017' },\n  { text: s__('Owasp|A6:2017 Security Misconfiguration'), value: 'A6_2017' },\n  { text: s__('Owasp|A7:2017 Cross-Site Scripting (XSS)'), value: 'A7_2017' },\n  { text: s__('Owasp|A8:2017 Insecure Deserialization'), value: 'A8_2017' },\n  { text: s__('Owasp|A9:2017 Using Components with Known Vulnerabilities'), value: 'A9_2017' },\n  { text: s__('Owasp|A10:2017 Insufficient Logging & Monitoring'), value: 'A10_2017' },\n  { text: s__('Owasp|Non-OWASP Top 10'), value: 'NONE' },\n];\n\nexport const GROUP_OWASP_2021 = [\n  { text: s__('Owasp|A01:2021 Broken Access Control'), value: 'A01_2021' },\n  { text: s__('Owasp|A02:2021 Cryptographic Failures'), value: 'A02_2021' },\n  { text: s__('Owasp|A03:2021 Injection'), value: 'A03_2021' },\n  { text: s__('Owasp|A04:2021 Insecure Design'), value: 'A04_2021' },\n  { text: s__('Owasp|A05:2021 Security Misconfiguration'), value: 'A05_2021' },\n  { text: s__('Owasp|A06:2021 Vulnerable and Outdated Components'), value: 'A06_2021' },\n  { text: s__('Owasp|A07:2021 Identification and Authentication Failures'), value: 'A07_2021' },\n  { text: s__('Owasp|A08:2021 Software and Data Integrity Failures'), value: 'A08_2021' },\n  { text: s__('Owasp|A09:2021 Security Logging and Monitoring Failures'), value: 'A09_2021' },\n  { text: s__('Owasp|A10:2021 Server-Side Request Forgery'), value: 'A10_2021' },\n  { text: s__('Owasp|Non-OWASP Top 10'), value: 'NONE' },\n];\n\nconst GROUP_TOOLS = Object.entries(REPORT_TYPES_WITH_MANUALLY_ADDED).map(([reportType, text]) => ({\n  value: reportType,\n  text: reportType === 'generic' ? __('Other') : text,\n}));\n\nexport default {\n  directives: {\n    GlResizeObserver: GlResizeObserverDirective,\n  },\n  components: {\n    VulnerabilityCounts,\n    VulnerabilityListGraphql,\n    VulnerabilityFilters,\n    PortalTarget,\n    SummaryHighlights,\n    GlCollapsibleListbox,\n    GlLink,\n    GlIcon,\n    GlPopover,\n    GlSprintf,\n    UserCalloutDismisser,\n    GlSkeletonLoader,\n    FilteredSearch: () => import('../filtered_search/vulnerability_report_filtered_search.vue'),\n    FilteredSearchV2: () =>\n      import('../filtered_search_v2/vulnerability_report_filtered_search.vue'),\n  },\n  mixins: [glFeatureFlagsMixin()],\n  inject: {\n    fullPath: {\n      default: '',\n    },\n    dashboardType: {\n      default: '',\n    },\n    scanners: {\n      default: [],\n    },\n  },\n  props: {\n    filterDropdowns: {\n      type: Array,\n      required: true,\n    },\n    fields: {\n      type: Array,\n      required: true,\n    },\n    filterFn: {\n      type: Function,\n      required: false,\n      default: (filters) => filters,\n    },\n    // Whether this report is visible on the page or not. Intended to be used with tabs so that if\n    // the tab that the report is in is not active, the vulnerabilities aren't fetched.\n    isVisible: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    showCounts: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    const { expandedGroup, groupBy } = this.groupByQueryParams();\n\n    return {\n      expandedGroup,\n      lastExpandedGroup: '',\n      groupBy,\n      groupCounts: {},\n      graphqlFilters: undefined,\n      showNewFeaturePopover: false,\n      stickyContainerHeight: 0,\n    };\n  },\n  computed: {\n    isGroupVulnerabilityReport() {\n      return this.dashboardType === DASHBOARD_TYPE_GROUP;\n    },\n    isProjectVulnerabilityReport() {\n      return this.dashboardType === DASHBOARD_TYPE_PROJECT;\n    },\n    isInstanceVulnerabilityReport() {\n      return this.dashboardType === DASHBOARD_TYPE_INSTANCE;\n    },\n    filteredSearchComponent() {\n      return this.glFeatures?.vulnerabilityReportFilteredSearchV2\n        ? 'FilteredSearchV2'\n        : 'FilteredSearch';\n    },\n    groupByOptions() {\n      const groups = [\n        { value: '', text: __('None') },\n        { value: 'state', text: __('Status') },\n        { value: 'severity', text: __('Severity') },\n        { value: 'reportType', text: __('Tool') },\n        { value: 'owasp_2017', text: __('OWASP Top 10 2017') },\n      ];\n\n      if (this.glFeatures?.vulnerabilityReportOwasp2021) {\n        groups.push({ value: 'owasp_2021', text: __('OWASP Top 10 2021') });\n      }\n\n      return groups;\n    },\n    shouldShowProjectNamespace() {\n      return this.filterDropdowns.includes(FILTERS.PROJECT);\n    },\n    shouldShowAdvancedFiltering() {\n      return (\n        this.isProjectVulnerabilityReport ||\n        this.isGroupVulnerabilityReport ||\n        this.isInstanceVulnerabilityReport\n      );\n    },\n    shouldShowGroupByButton() {\n      return this.isVisible;\n    },\n    groups() {\n      if (!this.groupBy) {\n        return [{ value: '' }];\n      }\n\n      const groups = {\n        state: GROUP_STATE,\n        severity: GROUP_SEVERITY,\n        reportType: GROUP_TOOLS,\n      };\n\n      groups.owasp_2017 = GROUP_OWASP_2017;\n\n      if (this.glFeatures.vulnerabilityReportOwasp2021) {\n        groups.owasp_2021 = GROUP_OWASP_2021;\n      }\n\n      return this.filterGroupsBySelectedFilter(groups[this.groupBy]);\n    },\n    groupFilters() {\n      if (!this.groupBy) {\n        return {};\n      }\n\n      return this.formatGroupFilters(this.expandedGroup);\n    },\n  },\n  watch: {\n    groupBy(newValue) {\n      this.resetPagination();\n      this.updateQueryString({ groupBy: newValue, expanded: '' });\n\n      if (!newValue) {\n        this.expandedGroup = '';\n      } else {\n        this.loadCounts();\n      }\n    },\n    graphqlFilters() {\n      if (this.groupBy) {\n        this.loadCounts();\n      }\n    },\n    expandedGroup(newValue) {\n      this.updateQueryString({ expanded: newValue });\n\n      if (!newValue || newValue === this.lastExpandedGroup) {\n        return;\n      }\n\n      this.resetPagination();\n    },\n  },\n  mounted() {\n    setTimeout(() => {\n      this.showNewFeaturePopover = true;\n    }, 1000);\n  },\n  methods: {\n    handleResize({ contentRect: { height } }) {\n      this.stickyContainerHeight = height;\n    },\n    filterGroupsBySelectedFilter(groups = []) {\n      const filters = [...(this.graphqlFilters?.[this.groupBy] || [])];\n\n      if (this.groupBy === 'state') {\n        // When a dismissal reason is selected, the state filter does not contain\n        // `DISMISSED` as a value. This workaround adds the `DISMISSED` item to the\n        // cloned array.\n        if (this.graphqlFilters?.dismissalReason?.length) {\n          filters.push('DISMISSED');\n        }\n      } else if (this.groupBy === 'reportType') {\n        const reportTypes = new Set();\n\n        // :project_tool_filter_with_scanner_name turned off\n        if (this.scanners?.length > 0 && this.graphqlFilters?.scannerId) {\n          const scannerIds = (this.graphqlFilters?.scannerId || []).map(getIdFromGraphQLId);\n          const scanners = [...this.scanners, { id: null, report_type: 'GENERIC' }];\n\n          scanners.forEach(({ id, report_type }) => {\n            if (scannerIds.includes(id)) {\n              reportTypes.add(report_type);\n            }\n          });\n        }\n        // :project_tool_filter_with_scanner_name turned on\n        else if (this.graphqlFilters?.scanner) {\n          const scanners = [\n            ...this.scanners,\n            { external_id: 'gitlab-manual-vulnerability-report', report_type: 'GENERIC' },\n          ];\n\n          scanners.forEach(({ external_id, report_type }) => {\n            if (this.graphqlFilters.scanner.includes(external_id)) {\n              reportTypes.add(report_type);\n            }\n          });\n        }\n\n        filters.push(...reportTypes);\n      }\n\n      return filters.length > 0\n        ? groups.filter(({ value }) => filters.includes(value.toUpperCase()))\n        : groups;\n    },\n    groupByQueryParams() {\n      let { groupBy = '', expanded: expandedGroup = '' } = this.$route.query;\n\n      if (!this.groups) {\n        return { groupBy, expandedGroup };\n      }\n\n      // Validate query parameters and fix it if invalid\n      if (groupBy && !this.groupByOptions.some(({ value }) => value === groupBy)) {\n        groupBy = '';\n        this.updateQueryString({ groupBy: undefined }, 'replace');\n      }\n\n      if (expandedGroup && !this.groups[groupBy]?.some(({ value }) => value === expandedGroup)) {\n        expandedGroup = '';\n        this.updateQueryString({ expanded: undefined }, 'replace');\n      }\n\n      return { groupBy, expandedGroup };\n    },\n    updateQueryString(query, method = 'push') {\n      const newQuery = { ...this.$route.query, ...query };\n\n      // Anything that has an empty value, like '' or undefined, will be stripped\n      // out to make sure we're not including empty query parameters in the URL.\n      // In other words, this prevents query strings like: ?groupBy=&expanded=\n      Object.keys(newQuery).forEach((key) => {\n        if (!newQuery[key]) {\n          delete newQuery[key];\n        }\n      });\n\n      if (!isEqual(newQuery, this.$route.query)) {\n        this.$router[method]({ query: newQuery });\n      }\n    },\n\n    // Reset before and after query parameters when an expanded group changes\n    resetPagination() {\n      if (this.$route?.query.before || this.$route?.query.after) {\n        this.updateQueryString({ before: undefined, after: undefined }, 'replace');\n      }\n    },\n\n    formatGroupFilters(expandedGroup) {\n      const isDismissedTab = expandedGroup === 'dismissed';\n      const isStateGroup = this.groupBy === 'state';\n      const hasDismissalReasons = this.graphqlFilters?.dismissalReason?.length > 0;\n      const dismissalReason = this.graphqlFilters?.dismissalReason;\n\n      // Special case:\n      // state => DISMISSED means we're requesting all dismissed findings.\n      // However, when dismissalReason is specified, we need to empty the `state`\n      // and pass just dimissal reasons.\n      if (isDismissedTab && hasDismissalReasons) {\n        return { state: [], dismissalReason };\n      }\n\n      if (this.groupBy.startsWith('owasp_')) {\n        return { owaspTopTen: [expandedGroup] };\n      }\n\n      return {\n        [this.groupBy]: [expandedGroup.toUpperCase()],\n        // When a group other than `dismissed` is selected, since we want to display\n        // only relevant findings to that group (e.g. detected), we need to empty the\n        // dismissalReason array.\n        dismissalReason: isStateGroup ? [] : dismissalReason,\n      };\n    },\n    updateGraphqlFilters(graphqlFilters) {\n      this.graphqlFilters = this.filterFn(graphqlFilters);\n    },\n    emitCountsChanged(counts) {\n      this.$emit('counts-changed', counts);\n    },\n    scrollToTopOfList() {\n      const { vulnerabilityListTop } = this.$refs;\n      // Only scroll to the top of the vulnerability list if it's above and outside the main content\n      // area (the space below the static page header).\n      if (vulnerabilityListTop.getBoundingClientRect().top < contentTop()) {\n        scrollToElement(vulnerabilityListTop);\n      }\n    },\n    toggleExpandedGroup(value) {\n      if (this.expandedGroup) {\n        this.lastExpandedGroup = this.expandedGroup;\n      }\n\n      this.expandedGroup = this.expandedGroup === value ? '' : value;\n    },\n    computeShowSingleSeverityProp(group) {\n      if (this.groupBy !== 'severity') {\n        return undefined;\n      }\n\n      return group;\n    },\n    loadCounts() {\n      this.groups\n        .filter(({ value }) => value)\n        .forEach(({ value }) => {\n          const queryName = `groupCounts.${value}`;\n          const variables = {\n            fullPath: this.fullPath,\n            isProject: this.isProjectVulnerabilityReport,\n            isGroup: this.isGroupVulnerabilityReport,\n            isInstance: this.isInstanceVulnerabilityReport,\n            capped: true,\n            ...this.graphqlFilters,\n            ...this.formatGroupFilters(value),\n          };\n\n          if (this.$apollo.queries[queryName]) {\n            this.$apollo.queries[queryName].setVariables(variables);\n            return;\n          }\n\n          this.$apollo.addSmartQuery(queryName, {\n            query: countsQuery,\n            errorPolicy: 'none',\n            variables() {\n              return variables;\n            },\n            update(data) {\n              let level = 'project';\n\n              if (this.isGroupVulnerabilityReport) {\n                level = 'group';\n              } else if (this.isInstanceVulnerabilityReport) {\n                level = 'instance';\n              }\n\n              this.groupCounts = {\n                ...this.groupCounts,\n                [value]: data[level]?.vulnerabilitySeveritiesCount,\n              };\n              return data[level]?.vulnerabilitySeveritiesCount;\n            },\n            error() {\n              createAlert({\n                message: s__(\n                  'SecurityReports|Error fetching the vulnerability counts. Please check your network connection and try again.',\n                ),\n              });\n            },\n          });\n        });\n    },\n  },\n  portalName: 'vulnerability-report-sticky',\n  i18n: {\n    groupByNewFeatureTitle: s__('SecurityReports|New feature: Grouping'),\n    groupByNewFeatureContent: s__(\n      'SecurityReports|Group your vulnerabilities by one of the provided categories. Leave feedback or suggestions in %{feedbackIssueStart}this issue%{feedbackIssueEnd}.',\n    ),\n  },\n};\n</script>\n\n<template>\n  <div>\n    <vulnerability-counts\n      v-if=\"showCounts\"\n      class=\"gl-mb-7\"\n      :filters=\"graphqlFilters\"\n      @counts-changed=\"emitCountsChanged\"\n    />\n\n    <div ref=\"vulnerabilityListTop\" data-testid=\"vulnerability-list-top\"></div>\n\n    <div\n      v-gl-resize-observer=\"handleResize\"\n      class=\"security-dashboard-filters gl-bg-white\"\n      data-testid=\"filters-container\"\n    >\n      <vulnerability-filters\n        v-if=\"!shouldShowAdvancedFiltering\"\n        :filters=\"filterDropdowns\"\n        @filters-changed=\"updateGraphqlFilters\"\n      />\n      <component\n        :is=\"filteredSearchComponent\"\n        v-else-if=\"shouldShowAdvancedFiltering && !shouldShowGroupByButton\"\n        :available-filters=\"filterDropdowns\"\n        class=\"gl-mb-4 gl-mt-4 gl-pb-2\"\n        @filters-changed=\"updateGraphqlFilters\"\n      />\n      <div v-else class=\"gl-bg-gray-10 gl-p-5\">\n        <div ref=\"groupByContainer\" class=\"gl-inline-flex gl-items-center\">\n          <label for=\"group-by\" class=\"gl-m-0\">{{ __('Group by:') }}</label>\n          <gl-collapsible-listbox\n            id=\"group-by\"\n            v-model=\"groupBy\"\n            category=\"secondary\"\n            class=\"gl-ml-4\"\n            :items=\"groupByOptions\"\n          />\n        </div>\n        <component\n          :is=\"filteredSearchComponent\"\n          :available-filters=\"filterDropdowns\"\n          class=\"gl-mt-4 gl-pb-2\"\n          @filters-changed=\"updateGraphqlFilters\"\n        />\n        <user-callout-dismisser\n          v-if=\"showNewFeaturePopover\"\n          ref=\"calloutDismisser\"\n          feature-name=\"vulnerability_report_grouping\"\n        >\n          <template #default=\"{ dismiss, shouldShowCallout }\">\n            <gl-popover\n              :show=\"shouldShowCallout\"\n              :title=\"$options.i18n.groupByNewFeatureTitle\"\n              :target=\"$refs.groupByContainer\"\n              triggers=\"manual\"\n              placement=\"top\"\n              show-close-button\n              data-testid=\"group-by-new-feature\"\n              @close-button-clicked=\"dismiss\"\n            >\n              <gl-sprintf :message=\"$options.i18n.groupByNewFeatureContent\">\n                <template #feedbackIssue=\"{ content }\">\n                  <gl-link\n                    href=\"https://gitlab.com/gitlab-org/gitlab/-/issues/427631\"\n                    class=\"gl-text-sm\"\n                    >{{ content }}</gl-link\n                  >\n                </template>\n              </gl-sprintf>\n            </gl-popover>\n          </template>\n        </user-callout-dismisser>\n      </div>\n      <portal-target v-if=\"isVisible\" :name=\"$options.portalName\" />\n    </div>\n\n    <template v-if=\"isVisible\">\n      <div v-for=\"group in groups\" :key=\"group.value\">\n        <div\n          v-if=\"group.text\"\n          class=\"gl-align-center gl-flex gl-border-b-1 gl-border-b-default gl-p-5 gl-border-b-solid\"\n          :data-testid=\"`vulnerability-list-group-header-${group.value}`\"\n        >\n          <gl-icon\n            name=\"chevron-right\"\n            class=\"gl-mr-2 gl-cursor-pointer gl-transition-all\"\n            :class=\"{ 'gl-rotate-90': expandedGroup === group.value }\"\n            @click=\"toggleExpandedGroup(group.value)\"\n          />\n          <div>\n            <gl-link\n              href=\"#\"\n              class=\"gl-text-default\"\n              :data-testid=\"`vulnerability-list-group-link-${group.value}`\"\n              @click=\"toggleExpandedGroup(group.value)\"\n              ><strong>{{ group.text }}</strong></gl-link\n            >\n            <summary-highlights\n              v-if=\"groupCounts[group.value]\"\n              :data-testid=\"`summary-highlights-${group.value}`\"\n              class=\"gl-mt-3\"\n              :show-single-severity=\"computeShowSingleSeverityProp(group.value)\"\n              :highlights=\"groupCounts[group.value]\"\n              capped\n            />\n            <div v-else class=\"gl-mt-3\">\n              <gl-skeleton-loader :width=\"235\" :lines=\"1\" />\n            </div>\n          </div>\n        </div>\n        <vulnerability-list-graphql\n          v-if=\"expandedGroup === group.value\"\n          class=\"vulnerability-list-graphql\"\n          :class=\"{ 'gl-mb-6': Boolean(groupBy) }\"\n          :fields=\"fields\"\n          :filters=\"graphqlFilters\"\n          :report-group-filters=\"groupFilters\"\n          :show-project-namespace=\"shouldShowProjectNamespace\"\n          :portal-name=\"$options.portalName\"\n          :style=\"`--sticky-container-height: ${stickyContainerHeight}px;`\"\n          @vulnerability-clicked=\"$emit('vulnerability-clicked', $event)\"\n          @query-variables-changed=\"scrollToTopOfList\"\n        />\n      </div>\n    </template>\n  </div>\n</template>\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_report.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_report.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vulnerability_report.vue?vue&type=template&id=6c32c8fc\"\nimport script from \"./vulnerability_report.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_report.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.showCounts)?_c('vulnerability-counts',{staticClass:\"gl-mb-7\",attrs:{\"filters\":_vm.graphqlFilters},on:{\"counts-changed\":_vm.emitCountsChanged}}):_vm._e(),_vm._v(\" \"),_c('div',{ref:\"vulnerabilityListTop\",attrs:{\"data-testid\":\"vulnerability-list-top\"}}),_vm._v(\" \"),_c('div',{directives:[{name:\"gl-resize-observer\",rawName:\"v-gl-resize-observer\",value:(_vm.handleResize),expression:\"handleResize\"}],staticClass:\"security-dashboard-filters gl-bg-white\",attrs:{\"data-testid\":\"filters-container\"}},[(!_vm.shouldShowAdvancedFiltering)?_c('vulnerability-filters',{attrs:{\"filters\":_vm.filterDropdowns},on:{\"filters-changed\":_vm.updateGraphqlFilters}}):(_vm.shouldShowAdvancedFiltering && !_vm.shouldShowGroupByButton)?_c(_vm.filteredSearchComponent,{tag:\"component\",staticClass:\"gl-mb-4 gl-mt-4 gl-pb-2\",attrs:{\"available-filters\":_vm.filterDropdowns},on:{\"filters-changed\":_vm.updateGraphqlFilters}}):_c('div',{staticClass:\"gl-bg-gray-10 gl-p-5\"},[_c('div',{ref:\"groupByContainer\",staticClass:\"gl-inline-flex gl-items-center\"},[_c('label',{staticClass:\"gl-m-0\",attrs:{\"for\":\"group-by\"}},[_vm._v(_vm._s(_vm.__('Group by:')))]),_vm._v(\" \"),_c('gl-collapsible-listbox',{staticClass:\"gl-ml-4\",attrs:{\"id\":\"group-by\",\"category\":\"secondary\",\"items\":_vm.groupByOptions},model:{value:(_vm.groupBy),callback:function ($$v) {_vm.groupBy=$$v},expression:\"groupBy\"}})],1),_vm._v(\" \"),_c(_vm.filteredSearchComponent,{tag:\"component\",staticClass:\"gl-mt-4 gl-pb-2\",attrs:{\"available-filters\":_vm.filterDropdowns},on:{\"filters-changed\":_vm.updateGraphqlFilters}}),_vm._v(\" \"),(_vm.showNewFeaturePopover)?_c('user-callout-dismisser',{ref:\"calloutDismisser\",attrs:{\"feature-name\":\"vulnerability_report_grouping\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ dismiss, shouldShowCallout }){return [_c('gl-popover',{attrs:{\"show\":shouldShowCallout,\"title\":_vm.$options.i18n.groupByNewFeatureTitle,\"target\":_vm.$refs.groupByContainer,\"triggers\":\"manual\",\"placement\":\"top\",\"show-close-button\":\"\",\"data-testid\":\"group-by-new-feature\"},on:{\"close-button-clicked\":dismiss}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.groupByNewFeatureContent},scopedSlots:_vm._u([{key:\"feedbackIssue\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-text-sm\",attrs:{\"href\":\"https://gitlab.com/gitlab-org/gitlab/-/issues/427631\"}},[_vm._v(_vm._s(content))])]}}],null,true)})],1)]}}],null,false,4293569311)}):_vm._e()],1),_vm._v(\" \"),(_vm.isVisible)?_c('portal-target',{attrs:{\"name\":_vm.$options.portalName}}):_vm._e()],1),_vm._v(\" \"),(_vm.isVisible)?_vm._l((_vm.groups),function(group){return _c('div',{key:group.value},[(group.text)?_c('div',{staticClass:\"gl-align-center gl-flex gl-border-b-1 gl-border-b-default gl-p-5 gl-border-b-solid\",attrs:{\"data-testid\":`vulnerability-list-group-header-${group.value}`}},[_c('gl-icon',{staticClass:\"gl-mr-2 gl-cursor-pointer gl-transition-all\",class:{ 'gl-rotate-90': _vm.expandedGroup === group.value },attrs:{\"name\":\"chevron-right\"},on:{\"click\":function($event){return _vm.toggleExpandedGroup(group.value)}}}),_vm._v(\" \"),_c('div',[_c('gl-link',{staticClass:\"gl-text-default\",attrs:{\"href\":\"#\",\"data-testid\":`vulnerability-list-group-link-${group.value}`},on:{\"click\":function($event){return _vm.toggleExpandedGroup(group.value)}}},[_c('strong',[_vm._v(_vm._s(group.text))])]),_vm._v(\" \"),(_vm.groupCounts[group.value])?_c('summary-highlights',{staticClass:\"gl-mt-3\",attrs:{\"data-testid\":`summary-highlights-${group.value}`,\"show-single-severity\":_vm.computeShowSingleSeverityProp(group.value),\"highlights\":_vm.groupCounts[group.value],\"capped\":\"\"}}):_c('div',{staticClass:\"gl-mt-3\"},[_c('gl-skeleton-loader',{attrs:{\"width\":235,\"lines\":1}})],1)],1)],1):_vm._e(),_vm._v(\" \"),(_vm.expandedGroup === group.value)?_c('vulnerability-list-graphql',{staticClass:\"vulnerability-list-graphql\",class:{ 'gl-mb-6': Boolean(_vm.groupBy) },style:(`--sticky-container-height: ${_vm.stickyContainerHeight}px;`),attrs:{\"fields\":_vm.fields,\"filters\":_vm.graphqlFilters,\"report-group-filters\":_vm.groupFilters,\"show-project-namespace\":_vm.shouldShowProjectNamespace,\"portal-name\":_vm.$options.portalName},on:{\"vulnerability-clicked\":function($event){return _vm.$emit('vulnerability-clicked', $event)},\"query-variables-changed\":_vm.scrollToTopOfList}}):_vm._e()],1)}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { __ } from '~/locale';\nimport { EMPTY_BODY_MESSAGE } from './constants';\n\n/**\n * A helper function which validates the passed\n * in body string.\n *\n * It returns an empty string if the body has explicitly\n * been passed in as an empty string, a fallback\n * message if the body is null / undefined, else\n * it will return the original body string.\n *\n * @param {String} body the body message\n *\n * @return {String} the validated body message\n */\nexport const bodyWithFallBack = (body) => (body === '' ? '' : body || EMPTY_BODY_MESSAGE);\n\n/**\n * Returns a string representation of the HTTP request\n *\n * @param {Object} httpData\n * @param {String} httpData.body\n * @param {String} httpData.method\n * @param {String} httpData.url\n * @param {{name: String, value: String}[]} httpData.headers\n *\n * @returns {String}\n */\nexport const getHttpString = (httpData) => {\n  if (!httpData) {\n    return '';\n  }\n\n  const { body, headers, method, url, statusCode, reasonPhrase } = httpData;\n  const methodOrStatusCode = method || statusCode;\n  const urlOrReasonPhrase = url || reasonPhrase;\n  const headerString = headers.map(({ name, value }) => `${name}: ${value}`).join('\\n');\n\n  return `${methodOrStatusCode} ${urlOrReasonPhrase}\\n${headerString}\\n\\n${bodyWithFallBack(body)}`;\n};\n\nexport const getDismissalNoteEventText = ({ hasProject, hasPipeline, hasDismissalReason }) => {\n  if (hasDismissalReason) {\n    if (hasPipeline && hasProject) {\n      return __(\n        '%{statusStart}Dismissed%{statusEnd}: %{dismissalReason} on pipeline %{pipelineLink} at %{projectLink}',\n      );\n    }\n\n    if (hasPipeline) {\n      return __(\n        '%{statusStart}Dismissed%{statusEnd}: %{dismissalReason} on pipeline %{pipelineLink}',\n      );\n    }\n\n    if (hasProject) {\n      return __('%{statusStart}Dismissed%{statusEnd}: %{dismissalReason} at %{projectLink}');\n    }\n\n    return __('%{statusStart}Dismissed%{statusEnd}: %{dismissalReason}');\n  }\n\n  if (hasPipeline && hasProject) {\n    return __('%{statusStart}Dismissed%{statusEnd} on pipeline %{pipelineLink} at %{projectLink}');\n  }\n\n  if (hasPipeline) {\n    return __('%{statusStart}Dismissed%{statusEnd} on pipeline %{pipelineLink}');\n  }\n\n  if (hasProject) {\n    return __('%{statusStart}Dismissed%{statusEnd} at %{projectLink}');\n  }\n\n  return __('%{statusStart}Dismissed%{statusEnd}');\n};\n","import { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { isAbsolute, isValidURL } from '~/lib/utils/url_utility';\nimport {\n  REGEXES,\n  SUPPORTED_IDENTIFIER_TYPE_CWE,\n  SUPPORTED_IDENTIFIER_TYPE_OWASP,\n  VULNERABILITY_TAB_INDEX_TO_NAME,\n} from './constants';\n\n// Get the issue in the format expected by the descendant components of related_issues_block.vue.\nexport const getFormattedIssue = (issue) => ({\n  ...issue,\n  reference: `#${issue.iid}`,\n  path: issue.web_url,\n});\n\nexport const getAddRelatedIssueRequestParams = (reference, defaultProjectId) => {\n  let issueId = reference;\n  let projectId = defaultProjectId;\n\n  // If the reference is an issue number, parse out just the issue number.\n  if (REGEXES.ISSUE_FORMAT.test(reference)) {\n    [, issueId] = REGEXES.ISSUE_FORMAT.exec(reference);\n  }\n  // If the reference is an absolute URL and matches the issues URL format, parse out the project and issue.\n  else if (isValidURL(reference) && isAbsolute(reference)) {\n    const { pathname } = new URL(reference);\n\n    if (REGEXES.LINK_FORMAT.test(pathname)) {\n      [, projectId, issueId] = REGEXES.LINK_FORMAT.exec(pathname);\n    }\n  }\n\n  return { target_issue_iid: issueId, target_project_id: projectId };\n};\n\nexport const normalizeGraphQLNote = (note) => {\n  if (!note) {\n    return null;\n  }\n\n  return {\n    ...note,\n    id: getIdFromGraphQLId(note.id),\n    author: {\n      ...note.author,\n      id: getIdFromGraphQLId(note.author.id),\n      path: note.author.webPath,\n    },\n  };\n};\n\nexport const normalizeGraphQLVulnerability = (vulnerability) => {\n  if (!vulnerability) {\n    return null;\n  }\n\n  const newVulnerability = { ...vulnerability };\n\n  if (vulnerability.id) {\n    newVulnerability.id = getIdFromGraphQLId(vulnerability.id);\n  }\n\n  if (vulnerability.state) {\n    newVulnerability.state = vulnerability.state.toLowerCase();\n  }\n\n  ['confirmed', 'resolved', 'dismissed'].forEach((state) => {\n    if (vulnerability[`${state}By`]?.id) {\n      newVulnerability[`${state}ById`] = getIdFromGraphQLId(vulnerability[`${state}By`].id);\n      delete newVulnerability[`${state}By`];\n    }\n  });\n\n  return newVulnerability;\n};\n\nexport const normalizeGraphQLLastStateTransition = (graphQLVulnerability, vulnerability) => {\n  const stateTransitions = [...vulnerability.stateTransitions];\n\n  // The vulnerability status mutation only returns 1 stateTransition\n  const [graphQLLastStateTransitions] = graphQLVulnerability.stateTransitions.nodes;\n  stateTransitions.push({\n    ...graphQLLastStateTransitions,\n    dismissalReason: graphQLLastStateTransitions.dismissalReason?.toLowerCase(),\n  });\n\n  return { stateTransitions };\n};\n\nexport const formatIdentifierExternalIds = ({ externalType, externalId, name }) => {\n  return `[${externalType}]-[${externalId}]-[${name}]`;\n};\n\nexport const isSupportedIdentifier = (externalType) => {\n  return (\n    externalType?.toLowerCase() === SUPPORTED_IDENTIFIER_TYPE_CWE ||\n    // Case matters here. owasp and OWASP require different configuration\n    // Currently, our API only support lowercase owasp\n    // Uppercase OWASP will be supported in a follow up issue:\n    // https://gitlab.com/gitlab-org/gitlab/-/issues/366556\n    externalType === SUPPORTED_IDENTIFIER_TYPE_OWASP\n  );\n};\n\nexport const getRefFromBlobPath = (path) => {\n  // Matches the 40-character hex string of the Git SHA in the blob path, for example:\n  // \"/group/project/-/blob/cdeda7ae724a332e008d17245209d5edd9ba6499/src/file.js\"\n  // will match \"cdeda7ae724a332e008d17245209d5edd9ba6499\".\n  if (typeof path === 'string') {\n    const match = path.match(/blob\\/([a-f0-9]{40})/);\n    return match ? match[1] : '';\n  }\n  return '';\n};\n\n/**\n *  Determines the tab index for code flow based on the route query parameters.\n */\nexport const getTabIndexForCodeFlowPage = (route) => {\n  if (route?.query?.tab) {\n    return 1;\n  }\n  return 0;\n};\n\n/**\n * @typedef {Object} TabNavigationParams\n * @property {string} path - The current route path.\n * @property {number} index - The index of the tab to be set.\n * @property {number} [selectedIndex] - The currently selected tab index. This is optional as it might be undefined.\n */\n\n/**\n * Updates the route to reflect the selected tab index.\n * This function is used to update the URL when switching between different views\n * of the vulnerability, between 'details' and 'code flow'\n * @param {Object} router - The router object used for navigation.\n * @param {TabNavigationParams} routeProps - The route properties including path and tab indices.\n */\nexport const setTabIndexForCodeFlowPage = (router, routeProps) => {\n  const { path, index, selectedIndex } = routeProps;\n\n  // Don't set the tab index if it's the same. This prevents some querystring bugs.\n  if (index === selectedIndex) {\n    return;\n  }\n  router.push({\n    path,\n    query: { tab: VULNERABILITY_TAB_INDEX_TO_NAME[index] },\n  });\n};\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","import { STATUS_ALL, STATUS_CLOSED, STATUS_OPEN, STATUS_MERGED } from '~/issues/constants';\nimport { __ } from '~/locale';\n\nexport const issuableListTabs = [\n  {\n    id: 'state-opened',\n    name: STATUS_OPEN,\n    title: __('Open'),\n    titleTooltip: __('Filter by issues that are currently opened.'),\n  },\n  {\n    id: 'state-closed',\n    name: STATUS_CLOSED,\n    title: __('Closed'),\n    titleTooltip: __('Filter by issues that are currently closed.'),\n  },\n  {\n    id: 'state-all',\n    name: STATUS_ALL,\n    title: __('All'),\n    titleTooltip: __('Show all issues.'),\n  },\n];\n\nexport const mergeRequestListTabs = [\n  {\n    id: 'state-opened',\n    name: STATUS_OPEN,\n    title: __('Open'),\n    titleTooltip: __('Filter by merge requests that are currently opened.'),\n  },\n  {\n    id: 'state-merged',\n    name: STATUS_MERGED,\n    title: __('Merged'),\n    titleTooltip: __('Filter by merge requests that are merged.'),\n  },\n  {\n    id: 'state-closed',\n    name: STATUS_CLOSED,\n    title: __('Closed'),\n    titleTooltip: __('Filter by merge requests that are currently closed.'),\n  },\n  {\n    id: 'state-all',\n    name: STATUS_ALL,\n    title: __('All'),\n    titleTooltip: __('Show all merge requests.'),\n  },\n];\n\nexport const availableSortOptions = [\n  {\n    id: 1,\n    title: __('Created date'),\n    sortDirection: {\n      descending: 'created_desc',\n      ascending: 'created_asc',\n    },\n  },\n  {\n    id: 2,\n    title: __('Updated date'),\n    sortDirection: {\n      descending: 'updated_desc',\n      ascending: 'updated_asc',\n    },\n  },\n];\n\nexport const DEFAULT_PAGE_SIZE = 20;\n\nexport const DEFAULT_SKELETON_COUNT = 5;\n\nexport const PAGE_SIZE_STORAGE_KEY = 'issuable_list_page_size';\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike'),\n    isPlainObject = require('./isPlainObject');\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n    errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n  if (!isObjectLike(value)) {\n    return false;\n  }\n  var tag = baseGetTag(value);\n  return tag == errorTag || tag == domExcTag ||\n    (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nmodule.exports = isError;\n","import hljsCore from 'highlight.js/lib/core';\nimport languageLoader from '~/content_editor/services/highlight_js_language_loader';\nimport { ROUGE_TO_HLJS_LANGUAGE_MAP } from '~/vue_shared/components/source_viewer/constants';\nimport { registerPlugins } from './plugins/index';\n\nconst loadLanguage = async (language, hljs) => {\n  const languageDefinition = await languageLoader[language]();\n  hljs.registerLanguage(language, languageDefinition.default);\n};\n\nconst loadSubLanguages = async (languageDefinition, hljs) => {\n  // Some files can contain sub-languages (i.e., Svelte); this ensures that sub-languages are also loaded\n  if (!languageDefinition?.contains) return;\n\n  // generate list of languages to load\n  const languages = new Set(\n    languageDefinition.contains\n      .filter((component) => Boolean(component.subLanguage))\n      .map((component) => component.subLanguage),\n  );\n\n  if (languageDefinition.subLanguage) {\n    languages.add(languageDefinition.subLanguage);\n  }\n\n  await Promise.all([...languages].map((language) => loadLanguage(language, hljs)));\n};\n\nconst registerLanguage = async (hljs, language) => {\n  await loadLanguage(language, hljs);\n  await loadSubLanguages(hljs.getLanguage(language), hljs);\n};\n\nconst initHighlightJs = async (language, plugins) => {\n  const hljs = hljsCore.newInstance();\n\n  registerPlugins(hljs, plugins);\n  await registerLanguage(hljs, language);\n\n  return hljs;\n};\n\nconst highlightContent = async (lang, rawContent, plugins) => {\n  const language = ROUGE_TO_HLJS_LANGUAGE_MAP[lang.toLowerCase()];\n  let highlightedContent;\n\n  if (language) {\n    const hljs = await initHighlightJs(language, plugins);\n    highlightedContent = hljs.highlight(rawContent, { language }).value;\n  }\n\n  return highlightedContent;\n};\n\nexport { highlightContent };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('pre',{staticClass:\"code-block rounded code\",class:_vm.$options.userColorScheme,style:(_vm.styleObject)},[_vm._t(\"default\",function(){return [_c('code',{staticClass:\"gl-block\"},[_vm._v(_vm._s(_vm.code))])]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code_block.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code_block.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  name: 'CodeBlock',\n  props: {\n    code: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    maxHeight: {\n      type: String,\n      required: false,\n      default: 'initial',\n    },\n  },\n  computed: {\n    styleObject() {\n      const { maxHeight } = this;\n      const isScrollable = maxHeight !== 'initial';\n      const scrollableStyles = {\n        maxHeight,\n        overflowY: 'auto',\n      };\n\n      return isScrollable ? scrollableStyles : null;\n    },\n  },\n  userColorScheme: window.gon.user_color_scheme,\n};\n</script>\n<template>\n  <pre\n    class=\"code-block rounded code\"\n    :class=\"$options.userColorScheme\"\n    :style=\"styleObject\"\n  ><slot><code class=\"gl-block\">{{ code }}</code></slot></pre>\n</template>\n","import { render, staticRenderFns } from \"./code_block.vue?vue&type=template&id=441e6620\"\nimport script from \"./code_block.vue?vue&type=script&lang=js\"\nexport * from \"./code_block.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n  return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"cancelPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobCancel\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":180}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation cancelPipelineMiniGraphJob($id: CiBuildID!) {\\n  jobCancel(input: { id: $id }) {\\n    job {\\n      ...Job\\n    }\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"cancelPipelineMiniGraphJob\"] = oneQuery(doc, \"cancelPipelineMiniGraphJob\");\n        \n","var baseForOwn = require('./_baseForOwn');\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n  baseForOwn(object, function(value, key, object) {\n    setter(accumulator, iteratee(value), key, object);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseInverter;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-alert',{attrs:{\"variant\":\"danger\",\"dismissible\":false}},[_c('strong',{attrs:{\"role\":\"heading\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.SBOM_ERROR_ALERT_TITLE)+\"\\n  \")]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mt-3\",attrs:{\"data-testid\":\"sbom-error-description\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.errorDescription}})],1),_vm._v(\" \"),_c('p',[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.SBOM_ERROR_ACTION},scopedSlots:_vm._u([{key:\"helpPageLink\",fn:function({ content }){return [_c('help-page-link',{attrs:{\"href\":\"user/application_security/dependency_list/index\",\"anchor\":\"prerequisites\",\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}])})],1),_vm._v(\" \"),_c('gl-accordion',{attrs:{\"header-level\":3}},_vm._l((_vm.errorsWithTitles),function({ reportErrors, accordionTitle },index){return _c('gl-accordion-item',{key:index,attrs:{\"title\":accordionTitle}},[_c('ul',{staticClass:\"gl-pl-4\"},_vm._l((reportErrors),function(error){return _c('li',{key:error},[_vm._v(_vm._s(error))])}),0)])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlAccordion, GlAccordionItem, GlAlert, GlSprintf } from '@gitlab/ui';\nimport HelpPageLink from '~/vue_shared/components/help_page_link/help_page_link.vue';\nimport { s__, sprintf } from '~/locale';\n\nconst DEFAULT_SBOM_ERROR_DESCRIPTION = s__(\n  'SbomErrors|The following SBOM reports could not be parsed. Therefore the list of components may be incomplete.',\n);\n\nexport default {\n  name: 'SbomReportsErrorsAlert',\n  components: {\n    GlAlert,\n    GlSprintf,\n    GlAccordion,\n    GlAccordionItem,\n    HelpPageLink,\n  },\n  props: {\n    errors: {\n      type: Array,\n      required: true,\n    },\n    errorDescription: {\n      type: String,\n      required: false,\n      default: DEFAULT_SBOM_ERROR_DESCRIPTION,\n    },\n  },\n  computed: {\n    errorsWithTitles() {\n      return this.errors.map((reportErrors, index) => ({\n        reportErrors,\n        accordionTitle: sprintf(this.$options.i18n.ACCORDION_TITLE, {\n          index: index + 1,\n          length: reportErrors.length,\n        }),\n      }));\n    },\n  },\n  i18n: {\n    SBOM_ERROR_ALERT_TITLE: s__('SbomErrors|Error parsing SBOM reports'),\n    DEFAULT_SBOM_ERROR_DESCRIPTION,\n    SBOM_ERROR_ACTION: s__(\n      'SbomErrors|Please investigate the provided reports and ensure they conform to %{helpPageLinkStart}the requirements for SBOM documents%{helpPageLinkEnd}.',\n    ),\n    ACCORDION_TITLE: s__('SbomErrors|report-%{index} (%{length})'),\n  },\n};\n</script>\n\n<template>\n  <gl-alert variant=\"danger\" :dismissible=\"false\">\n    <strong role=\"heading\">\n      {{ $options.i18n.SBOM_ERROR_ALERT_TITLE }}\n    </strong>\n\n    <p class=\"gl-mt-3\" data-testid=\"sbom-error-description\">\n      <gl-sprintf :message=\"errorDescription\" />\n    </p>\n    <p>\n      <gl-sprintf :message=\"$options.i18n.SBOM_ERROR_ACTION\">\n        <template #helpPageLink=\"{ content }\">\n          <help-page-link\n            href=\"user/application_security/dependency_list/index\"\n            anchor=\"prerequisites\"\n            target=\"_blank\"\n            >{{ content }}</help-page-link\n          >\n        </template>\n      </gl-sprintf>\n    </p>\n\n    <gl-accordion :header-level=\"3\">\n      <gl-accordion-item\n        v-for=\"({ reportErrors, accordionTitle }, index) in errorsWithTitles\"\n        :key=\"index\"\n        :title=\"accordionTitle\"\n      >\n        <ul class=\"gl-pl-4\">\n          <li v-for=\"error in reportErrors\" :key=\"error\">{{ error }}</li>\n        </ul>\n      </gl-accordion-item>\n    </gl-accordion>\n  </gl-alert>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sbom_reports_errors_alert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sbom_reports_errors_alert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./sbom_reports_errors_alert.vue?vue&type=template&id=0d24c0be\"\nimport script from \"./sbom_reports_errors_alert.vue?vue&type=script&lang=js\"\nexport * from \"./sbom_reports_errors_alert.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-link',_vm._g(_vm._b({attrs:{\"href\":_vm.compiledHref}},'gl-link',_vm.attributes,false),_vm.$listeners),[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./help_page_link.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./help_page_link.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink } from '@gitlab/ui';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\n/**\n * Component to link to GitLab docs.\n *\n * @example\n * <help-page-link href=\"user/storage_usage_quotas\">\n *   Usage Quotas help.\n * <help-page-link>\n */\nexport default {\n  name: 'HelpPageLink',\n  components: {\n    GlLink,\n  },\n  props: {\n    href: {\n      type: String,\n      required: true,\n    },\n    anchor: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    compiledHref() {\n      // This component is a wrapper around `helpPagePath`, so it's okay to disable the\n      // `local-rules/require-valid-help-page-path` ESLint rule here. Usages of this component are\n      // being checked by the `local-rules/vue-require-valid-help-page-link-component` rule.\n      // eslint-disable-next-line local-rules/require-valid-help-page-path\n      return helpPagePath(this.href, { anchor: this.anchor });\n    },\n    attributes() {\n      const { href, anchor, ...attrs } = this.$attrs;\n      return attrs;\n    },\n  },\n};\n</script>\n<template>\n  <gl-link v-bind=\"attributes\" :href=\"compiledHref\" v-on=\"$listeners\">\n    <slot></slot>\n  </gl-link>\n</template>\n","import { render, staticRenderFns } from \"./help_page_link.vue?vue&type=template&id=4c024eea\"\nimport script from \"./help_page_link.vue?vue&type=script&lang=js\"\nexport * from \"./help_page_link.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiJob\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":149}};\n    doc.loc.source = {\"body\":\"fragment Job on CiJob {\\n  id\\n  detailedStatus {\\n    id\\n    action {\\n      id\\n      confirmationMessage\\n      icon\\n      path\\n      title\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"Job\"] = oneQuery(doc, \"Job\");\n        \n","var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"revertFindingToDetected\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFindingRevertToDetected\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFinding\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"id\"},\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stateTransitions\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"author\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"toState\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":514}};\n    doc.loc.source = {\"body\":\"mutation revertFindingToDetected($uuid: String!) {\\n  securityFindingRevertToDetected(input: { uuid: $uuid }) {\\n    errors\\n    securityFinding {\\n      id: uuid\\n      state\\n      dismissalReason\\n      vulnerability {\\n        id\\n        stateTransitions(last: 1) {\\n          nodes {\\n            id\\n            author {\\n              id\\n              name\\n              username\\n              webUrl\\n            }\\n            comment\\n            createdAt\\n            toState\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"revertFindingToDetected\"] = oneQuery(doc, \"revertFindingToDetected\");\n        \n","export default () => ({\n  inject: {\n    glAbilities: {\n      from: 'glAbilities',\n      default: () => ({}),\n    },\n  },\n});\n","export const HTTP_STATUS_ABORTED = 0;\nexport const HTTP_STATUS_OK = 200;\nexport const HTTP_STATUS_CREATED = 201;\nexport const HTTP_STATUS_ACCEPTED = 202;\nexport const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION = 203;\nexport const HTTP_STATUS_NO_CONTENT = 204;\nexport const HTTP_STATUS_RESET_CONTENT = 205;\nexport const HTTP_STATUS_PARTIAL_CONTENT = 206;\nexport const HTTP_STATUS_MULTI_STATUS = 207;\nexport const HTTP_STATUS_ALREADY_REPORTED = 208;\nexport const HTTP_STATUS_IM_USED = 226;\nexport const HTTP_STATUS_BAD_REQUEST = 400;\nexport const HTTP_STATUS_UNAUTHORIZED = 401;\nexport const HTTP_STATUS_FORBIDDEN = 403;\nexport const HTTP_STATUS_NOT_FOUND = 404;\nexport const HTTP_STATUS_METHOD_NOT_ALLOWED = 405;\nexport const HTTP_STATUS_CONFLICT = 409;\nexport const HTTP_STATUS_GONE = 410;\nexport const HTTP_STATUS_PAYLOAD_TOO_LARGE = 413;\nexport const HTTP_STATUS_IM_A_TEAPOT = 418;\nexport const HTTP_STATUS_UNPROCESSABLE_ENTITY = 422;\nexport const HTTP_STATUS_TOO_MANY_REQUESTS = 429;\nexport const HTTP_STATUS_INTERNAL_SERVER_ERROR = 500;\nexport const HTTP_STATUS_SERVICE_UNAVAILABLE = 503;\n\nexport const successCodes = [\n  HTTP_STATUS_OK,\n  HTTP_STATUS_CREATED,\n  HTTP_STATUS_ACCEPTED,\n  HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION,\n  HTTP_STATUS_NO_CONTENT,\n  HTTP_STATUS_RESET_CONTENT,\n  HTTP_STATUS_PARTIAL_CONTENT,\n  HTTP_STATUS_MULTI_STATUS,\n  HTTP_STATUS_ALREADY_REPORTED,\n  HTTP_STATUS_IM_USED,\n];\n","var baseEach = require('./_baseEach'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\nmodule.exports = baseMap;\n","import { __, sprintf } from '~/locale';\nimport { parseSeconds, stringifyTime } from '~/lib/utils/datetime_utility';\nimport { testStatus } from '../../constants';\n\n/**\n * Removes `./` from the beginning of a file path so it can be appended onto a blob path\n * @param {String} file\n * @returns {String}  - formatted value\n */\nexport function formatFilePath(file) {\n  return file.replace(/^\\.?\\/*/, '');\n}\n\nexport function iconForTestStatus(status) {\n  switch (status) {\n    case testStatus.SUCCESS:\n      return 'status_success';\n    case testStatus.FAILED:\n      return 'status_failed';\n    case testStatus.ERROR:\n      return 'status_warning';\n    case testStatus.SKIPPED:\n      return 'status_skipped';\n    case testStatus.UNKNOWN:\n    default:\n      return 'status_notfound';\n  }\n}\nexport const formattedTime = (seconds = 0) => {\n  if (seconds < 1) {\n    return sprintf(__('%{milliseconds}ms'), {\n      milliseconds: (seconds * 1000).toFixed(2),\n    });\n  }\n  if (seconds < 60) {\n    return sprintf(__('%{seconds}s'), {\n      seconds: (seconds % 60).toFixed(2),\n    });\n  }\n\n  const hoursAndMinutes = stringifyTime(parseSeconds(seconds));\n  const remainingSeconds =\n    seconds % 60 >= 1\n      ? sprintf(__('%{seconds}s'), {\n          seconds: Math.floor(seconds % 60),\n        })\n      : '';\n  return `${hoursAndMinutes} ${remainingSeconds}`.trim();\n};\nexport const addIconStatus = (testCase) => ({\n  ...testCase,\n  icon: iconForTestStatus(testCase.status),\n  formattedTime: formattedTime(testCase.execution_time),\n});\n","import { LOADING, ERROR, SUCCESS } from '~/ci/reports/constants';\n\nexport default {\n  methods: {\n    checkReportStatus(loading, error) {\n      if (loading) {\n        return LOADING;\n      }\n      if (error) {\n        return ERROR;\n      }\n\n      return SUCCESS;\n    },\n  },\n};\n","var arrayMap = require('./_arrayMap'),\n    copyArray = require('./_copyArray'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol'),\n    stringToPath = require('./_stringToPath'),\n    toKey = require('./_toKey'),\n    toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n  if (isArray(value)) {\n    return arrayMap(value, toKey);\n  }\n  return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","import { s__ } from '~/locale';\n\nexport const SEVERITY_CLASS_NAME_MAP = {\n  critical: 'gl-text-red-800',\n  high: 'gl-text-red-600',\n  medium: 'gl-text-orange-400',\n  low: 'gl-text-orange-300',\n  info: 'gl-text-blue-400',\n  unknown: 'gl-text-gray-400',\n};\n\nexport const SEVERITY_TOOLTIP_TITLE_MAP = {\n  unknown: s__(\n    `SecurityReports|Sometimes a scanner can't determine a finding's severity. Those findings may still be a potential source of risk though. Please review these manually.`,\n  ),\n};\n\nexport const EMPTY_BODY_MESSAGE = '<Message body is not provided>';\n","import { formatNumber, sprintf, __ } from '~/locale';\nimport { BYTES_IN_KIB, THOUSAND, MILLION } from './constants';\n\n/**\n * Utility function that calculates KiB of the given bytes.\n *\n * @param  {Number} number bytes\n * @return {Number}        KiB\n */\nexport function bytesToKiB(number) {\n  return number / BYTES_IN_KIB;\n}\n\n/**\n * Utility function that calculates MiB of the given bytes.\n *\n * @param  {Number} number bytes\n * @return {Number}        MiB\n */\nexport function bytesToMiB(number) {\n  return number / (BYTES_IN_KIB * BYTES_IN_KIB);\n}\n\n/**\n * Utility function that calculates GiB of the given bytes.\n * @param {Number} number\n * @returns {Number}\n */\nexport function bytesToGiB(number) {\n  return number / (BYTES_IN_KIB * BYTES_IN_KIB * BYTES_IN_KIB);\n}\n\n/**\n * Formats the bytes in number into a more understandable\n * representation. Returns an array with the first value being the human size\n * and the second value being the label (e.g., [1.5, 'KiB']).\n *\n * @param {number} size\n * @param {number} [digits=2] - The number of digits to appear after the decimal point\n * @param {string} locale\n * @returns {string[]}\n */\nexport function numberToHumanSizeSplit({ size, digits = 2, locale } = {}) {\n  const abs = Math.abs(size);\n  const digitsOptions = { minimumFractionDigits: digits, maximumFractionDigits: digits };\n  const formatNumberWithLocaleAndDigits = (n) => formatNumber(n, digitsOptions, locale);\n\n  if (abs < BYTES_IN_KIB) {\n    return [size.toString(), __('B')];\n  }\n  if (abs < BYTES_IN_KIB ** 2) {\n    return [formatNumberWithLocaleAndDigits(bytesToKiB(size)), __('KiB')];\n  }\n  if (abs < BYTES_IN_KIB ** 3) {\n    return [formatNumberWithLocaleAndDigits(bytesToMiB(size)), __('MiB')];\n  }\n  return [formatNumberWithLocaleAndDigits(bytesToGiB(size)), __('GiB')];\n}\n\n/**\n * Port of rails number_to_human_size\n * Formats the bytes in number into a more understandable\n * representation (e.g., giving it 1536 yields 1.5 KiB).\n *\n * @param {number} size\n * @param {number} [digits=2] - The number of digits to appear after the decimal point\n * @param {string} locale\n * @returns {string}\n */\nexport function numberToHumanSize(size, digits = 2, locale) {\n  const [humanSize, label] = numberToHumanSizeSplit({ size, digits, locale });\n\n  switch (label) {\n    case __('B'):\n      return sprintf(__('%{size} B'), { size: humanSize });\n    case __('KiB'):\n      return sprintf(__('%{size} KiB'), { size: humanSize });\n    case __('MiB'):\n      return sprintf(__('%{size} MiB'), { size: humanSize });\n    case __('GiB'):\n      return sprintf(__('%{size} GiB'), { size: humanSize });\n    default:\n      return '';\n  }\n}\n\n/**\n * Converts a number to kilos or megas.\n *\n * For example:\n * - 123 becomes 123\n * - 123456 becomes 123.4k\n * - 123456789 becomes 123.4m\n *\n * @param number Number to format\n * @param digits The number of digits to appear after the decimal point\n * @param uppercase Whether to use uppercase suffix (K, M)\n * @return {string} Formatted number\n */\nexport function numberToMetricPrefix(number, uppercase = false) {\n  if (number < THOUSAND) {\n    return number.toString();\n  }\n  const digits = 1;\n  if (number < MILLION) {\n    return `${Number((number / THOUSAND).toFixed(digits))}${uppercase ? 'K' : 'k'}`;\n  }\n  return `${Number((number / MILLION).toFixed(digits))}${uppercase ? 'M' : 'm'}`;\n}\n/**\n * A simple method that returns the value of a + b\n * It seems unessesary, but when combined with a reducer it\n * adds up all the values in an array.\n *\n * e.g. `[1, 2, 3, 4, 5].reduce(sum) // => 15`\n *\n * @param {Float} a\n * @param {Float} b\n * @example\n * // return 15\n * [1, 2, 3, 4, 5].reduce(sum);\n *\n * // returns 6\n * Object.values([{a: 1, b: 2, c: 3].reduce(sum);\n * @returns {Float} The summed value\n */\nexport const sum = (a = 0, b = 0) => a + b;\n\n/**\n * Checks if the provided number is odd\n * @param {Int} number\n */\nexport const isOdd = (number = 0) => number % 2;\n\n/**\n * Computes the median for a given array.\n * @param {Array} arr An array of numbers\n * @returns {Number} The median of the given array\n */\nexport const median = (arr) => {\n  const middle = Math.floor(arr.length / 2);\n  const sorted = arr.sort((a, b) => a - b);\n  return arr.length % 2 !== 0 ? sorted[middle] : (sorted[middle - 1] + sorted[middle]) / 2;\n};\n\n/**\n * Computes the change from one value to the other as a percentage.\n * @param {Number} firstY\n * @param {Number} lastY\n * @returns {Number}\n */\nexport const changeInPercent = (firstY, lastY) => {\n  if (firstY === lastY) {\n    return 0;\n  }\n\n  return Math.round(((lastY - firstY) / Math.abs(firstY)) * 100);\n};\n\n/**\n * Computes and formats the change from one value to the other as a percentage.\n * Prepends the computed percentage with either \"+\" or \"-\" to indicate an in- or decrease and\n * returns a given string if the result is not finite (for example, if the first value is \"0\").\n * @param firstY\n * @param lastY\n * @param nonFiniteResult\n * @returns {String}\n */\nexport const formattedChangeInPercent = (firstY, lastY, { nonFiniteResult = '-' } = {}) => {\n  const change = changeInPercent(firstY, lastY);\n\n  if (!Number.isFinite(change)) {\n    return nonFiniteResult;\n  }\n\n  return `${change >= 0 ? '+' : ''}${change}%`;\n};\n\n/**\n * Checks whether a value is numerical in nature by converting it using parseInt\n *\n * Example outcomes:\n *   - isNumeric(100) = true\n *   - isNumeric('100') = true\n *   - isNumeric(1.0) = true\n *   - isNumeric('1.0') = true\n *   - isNumeric('abc100') = false\n *   - isNumeric('abc') = false\n *   - isNumeric(true) = false\n *   - isNumeric(undefined) = false\n *   - isNumeric(null) = false\n *\n * @param value\n * @returns {boolean}\n */\nexport const isNumeric = (value) => {\n  return !Number.isNaN(parseInt(value, 10));\n};\n\nconst numberRegex = /^[0-9]+$/;\n\n/**\n * Checks whether the value is a positive number or 0, or a string with equivalent value\n *\n * @param value\n * @return {boolean}\n */\nexport const isPositiveInteger = (value) => numberRegex.test(value);\n\n/**\n * Splits a number into an integer and decimal component\n * returns an object with the integer and decimal values extracted\n *\n * @param value\n * @return {Object}\n */\nexport const splitDecimalNumber = (value) => {\n  if (isNumeric(value)) {\n    const parts = String(value).split('.');\n    if (value === 0) return { integer: '0', decimal: '0' };\n\n    if (parts.length) {\n      return parts.length > 1\n        ? { integer: parts[0], decimal: parts[1] }\n        : { integer: parts[0], decimal: null };\n    }\n  }\n  return { integer: null, decimal: null };\n};\n\n/**\n * Calculates the number of digits after the decimal place\n *\n * @param num - any numeric value\n * @return number of digits after the decimal (if any)\n */\nexport const countFloatingPointDigits = (num = null) => {\n  if (!num || !isNumeric(num)) return 0;\n\n  const { decimal } = splitDecimalNumber(num);\n  return String(decimal).length;\n};\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (root, factory) {\n  var namespace = 'VirtualList';\n  /* istanbul ignore next */\n\n  if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object') {\n    module.exports = factory(namespace, require('vue'));\n  } else if (typeof define === 'function' && define.amd) {\n    define(['vue'], factory.bind(root, namespace));\n  } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n    exports[namespace] = factory(namespace, require('vue'));\n  } else {\n    root[namespace] = factory(namespace, root.Vue);\n  }\n})(this, function (namespace, Vue) {\n  /* istanbul ignore next */\n  if (_typeof(Vue) === 'object' && typeof Vue[\"default\"] === 'function') {\n    Vue = Vue[\"default\"];\n  }\n  /* istanbul ignore next */\n\n\n  var _debounce = function _debounce(func, wait, immediate) {\n    var timeout;\n    return function () {\n      var context = this;\n      var args = arguments;\n\n      var later = function later() {\n        timeout = null;\n\n        if (!immediate) {\n          func.apply(context, args);\n        }\n      };\n\n      var callNow = immediate && !timeout;\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n\n      if (callNow) {\n        func.apply(context, args);\n      }\n    };\n  };\n\n  return Vue.component(namespace, {\n    props: {\n      size: {\n        type: Number,\n        required: true\n      },\n      remain: {\n        type: Number,\n        required: true\n      },\n      rtag: {\n        type: String,\n        \"default\": 'div'\n      },\n      wtag: {\n        type: String,\n        \"default\": 'div'\n      },\n      wclass: {\n        type: String,\n        \"default\": ''\n      },\n      wstyle: {\n        type: Object,\n        \"default\": function _default() {\n          return {};\n        }\n      },\n      pagemode: {\n        type: Boolean,\n        \"default\": false\n      },\n      scrollelement: {\n        type: typeof window === 'undefined' ? Object : HTMLElement,\n        \"default\": null\n      },\n      start: {\n        type: Number,\n        \"default\": 0\n      },\n      offset: {\n        type: Number,\n        \"default\": 0\n      },\n      variable: {\n        type: [Function, Boolean],\n        \"default\": false\n      },\n      bench: {\n        type: Number,\n        \"default\": 0 // also equal to remain\n\n      },\n      debounce: {\n        type: Number,\n        \"default\": 0\n      },\n      totop: {\n        type: [Function, Boolean],\n        \"default\": false\n      },\n      tobottom: {\n        type: [Function, Boolean],\n        \"default\": false\n      },\n      onscroll: {\n        type: [Function, Boolean],\n        // Boolean disables default behavior\n        \"default\": false\n      },\n      istable: {\n        type: Boolean,\n        \"default\": false\n      },\n      item: {\n        type: [Function, Object],\n        \"default\": null\n      },\n      itemcount: {\n        type: Number,\n        \"default\": 0\n      },\n      itemprops: {\n        type: Function,\n\n        /* istanbul ignore next */\n        \"default\": function _default() {}\n      }\n    },\n    // use changeProp to identify the prop change.\n    watch: {\n      size: function size() {\n        this.changeProp = 'size';\n      },\n      remain: function remain() {\n        this.changeProp = 'remain';\n      },\n      bench: function bench() {\n        this.changeProp = 'bench';\n        this.itemModeForceRender();\n      },\n      start: function start() {\n        this.changeProp = 'start';\n        this.itemModeForceRender();\n      },\n      offset: function offset() {\n        this.changeProp = 'offset';\n        this.itemModeForceRender();\n      },\n      itemcount: function itemcount() {\n        this.changeProp = 'itemcount';\n        this.itemModeForceRender();\n      },\n      scrollelement: function scrollelement(newScrollelement, oldScrollelement) {\n        if (this.pagemode) {\n          return;\n        }\n\n        if (oldScrollelement) {\n          this.removeScrollListener(oldScrollelement);\n        }\n\n        if (newScrollelement) {\n          this.addScrollListener(newScrollelement);\n        }\n      }\n    },\n    created: function created() {\n      var start = this.start >= this.remain ? this.start : 0;\n      var keeps = this.remain + (this.bench || this.remain);\n      var delta = Object.create(null);\n      delta.direction = ''; // current scroll direction, D: down, U: up.\n\n      delta.scrollTop = 0; // current scroll top, use to direction.\n\n      delta.start = start; // start index.\n\n      delta.end = start + keeps - 1; // end index.\n\n      delta.keeps = keeps; // nums keeping in real dom.\n\n      delta.total = 0; // all items count, update in filter.\n\n      delta.offsetAll = 0; // cache all the scrollable offset.\n\n      delta.paddingTop = 0; // container wrapper real padding-top.\n\n      delta.paddingBottom = 0; // container wrapper real padding-bottom.\n\n      delta.varCache = {}; // object to cache variable index height and scroll offset.\n\n      delta.varAverSize = 0; // average/estimate item height before variable be calculated.\n\n      delta.varLastCalcIndex = 0; // last calculated variable height/offset index, always increase.\n\n      this.delta = delta;\n    },\n    mounted: function mounted() {\n      if (this.pagemode) {\n        this.addScrollListener(window);\n      } else if (this.scrollelement) {\n        this.addScrollListener(this.scrollelement);\n      }\n\n      if (this.start) {\n        var start = this.getZone(this.start).start;\n        this.setScrollTop(this.variable ? this.getVarOffset(start) : start * this.size);\n      } else if (this.offset) {\n        this.setScrollTop(this.offset);\n      }\n    },\n    beforeDestroy: function beforeDestroy() {\n      if (this.pagemode) {\n        this.removeScrollListener(window);\n      } else if (this.scrollelement) {\n        this.removeScrollListener(this.scrollelement);\n      }\n    },\n    // check if delta should update when props change.\n    beforeUpdate: function beforeUpdate() {\n      var delta = this.delta;\n      delta.keeps = this.remain + (this.bench || this.remain);\n      var calcstart = this.changeProp === 'start' ? this.start : delta.start;\n      var zone = this.getZone(calcstart); // if start, size or offset change, update scroll position.\n\n      if (this.changeProp && ['start', 'size', 'offset'].includes(this.changeProp)) {\n        var scrollTop = this.changeProp === 'offset' ? this.offset : this.variable ? this.getVarOffset(zone.isLast ? delta.total : zone.start) : zone.isLast && delta.total - calcstart <= this.remain ? delta.total * this.size : calcstart * this.size;\n        this.$nextTick(this.setScrollTop.bind(this, scrollTop));\n      } // if points out difference, force update once again.\n\n\n      if (this.changeProp || delta.end !== zone.end || calcstart !== zone.start) {\n        this.changeProp = '';\n        delta.end = zone.end;\n        delta.start = zone.start;\n        this.forceRender();\n      }\n    },\n    methods: {\n      // add pagemode/scrollelement scroll event listener\n      addScrollListener: function addScrollListener(element) {\n        this.scrollHandler = this.debounce ? _debounce(this.onScroll.bind(this), this.debounce) : this.onScroll;\n        element.addEventListener('scroll', this.scrollHandler, false);\n      },\n      // remove pagemode/scrollelement scroll event listener\n      removeScrollListener: function removeScrollListener(element) {\n        element.removeEventListener('scroll', this.scrollHandler, false);\n      },\n      onScroll: function onScroll(event) {\n        var delta = this.delta;\n        var vsl = this.$refs.vsl;\n        var offset;\n\n        if (this.pagemode) {\n          var elemRect = this.$el.getBoundingClientRect();\n          offset = -elemRect.top;\n        } else if (this.scrollelement) {\n          var scrollelementRect = this.scrollelement.getBoundingClientRect();\n\n          var _elemRect = this.$el.getBoundingClientRect();\n\n          offset = scrollelementRect.top - _elemRect.top;\n        } else {\n          offset = vsl && (vsl.$el || vsl).scrollTop || 0;\n        }\n\n        delta.direction = offset > delta.scrollTop ? 'D' : 'U';\n        delta.scrollTop = offset;\n\n        if (delta.total > delta.keeps) {\n          this.updateZone(offset);\n        } else {\n          delta.end = delta.total - 1;\n        }\n\n        var offsetAll = delta.offsetAll;\n\n        if (this.onscroll) {\n          var param = Object.create(null);\n          param.offset = offset;\n          param.offsetAll = offsetAll;\n          param.start = delta.start;\n          param.end = delta.end;\n          this.onscroll(event, param);\n        }\n\n        if (!offset && delta.total) {\n          this.fireEvent('totop');\n        }\n\n        if (offset >= offsetAll) {\n          this.fireEvent('tobottom');\n        }\n      },\n      // update render zone by scroll offset.\n      updateZone: function updateZone(offset) {\n        var delta = this.delta;\n        var overs = this.variable ? this.getVarOvers(offset) : Math.floor(offset / this.size); // if scroll up, we'd better decrease it's numbers.\n\n        if (delta.direction === 'U') {\n          overs = overs - this.remain + 1;\n        }\n\n        var zone = this.getZone(overs);\n        var bench = this.bench || this.remain; // for better performance, if scroll passes items within the bench, do not update.\n        // and if it's close to the last item, render next zone immediately.\n\n        var shouldRenderNextZone = Math.abs(overs - delta.start - bench) === 1;\n\n        if (!shouldRenderNextZone && overs - delta.start <= bench && !zone.isLast && overs > delta.start) {\n          return;\n        } // make sure forceRender calls as less as possible.\n\n\n        if (shouldRenderNextZone || zone.start !== delta.start || zone.end !== delta.end) {\n          delta.end = zone.end;\n          delta.start = zone.start;\n          this.forceRender();\n        }\n      },\n      // return the right zone info based on `start/index`.\n      getZone: function getZone(index) {\n        var start, end;\n        var delta = this.delta;\n        index = parseInt(index, 10);\n        index = Math.max(0, index);\n        var lastStart = delta.total - delta.keeps;\n        var isLast = index <= delta.total && index >= lastStart || index > delta.total;\n\n        if (isLast) {\n          start = Math.max(0, lastStart);\n        } else {\n          start = index;\n        }\n\n        end = start + delta.keeps - 1;\n\n        if (delta.total && end > delta.total) {\n          end = delta.total - 1;\n        }\n\n        return {\n          end: end,\n          start: start,\n          isLast: isLast\n        };\n      },\n      // public method, force render ui list if needed.\n      // call this before the next rerender to get better performance.\n      forceRender: function forceRender() {\n        var _this = this;\n\n        window.requestAnimationFrame(function () {\n          _this.$forceUpdate();\n        });\n      },\n      // force render ui if using item-mode.\n      itemModeForceRender: function itemModeForceRender() {\n        if (this.item) {\n          this.forceRender();\n        }\n      },\n      // return the scroll of passed items count in variable.\n      getVarOvers: function getVarOvers(offset) {\n        var low = 0;\n        var middle = 0;\n        var middleOffset = 0;\n        var delta = this.delta;\n        var high = delta.total;\n\n        while (low <= high) {\n          middle = low + Math.floor((high - low) / 2);\n          middleOffset = this.getVarOffset(middle); // calculate the average variable height at first binary search.\n\n          if (!delta.varAverSize) {\n            delta.varAverSize = Math.floor(middleOffset / middle);\n          }\n\n          if (middleOffset === offset) {\n            return middle;\n          } else if (middleOffset < offset) {\n            low = middle + 1;\n          } else if (middleOffset > offset) {\n            high = middle - 1;\n          }\n        }\n\n        return low > 0 ? --low : 0;\n      },\n      // return a variable scroll offset from given index.\n      getVarOffset: function getVarOffset(index, nocache) {\n        var delta = this.delta;\n        var cache = delta.varCache[index];\n\n        if (!nocache && cache) {\n          return cache.offset;\n        }\n\n        var offset = 0;\n\n        for (var i = 0; i < index; i++) {\n          var size = this.getVarSize(i, nocache);\n          delta.varCache[i] = {\n            size: size,\n            offset: offset\n          };\n          offset += size;\n        }\n\n        delta.varLastCalcIndex = Math.max(delta.varLastCalcIndex, index - 1);\n        delta.varLastCalcIndex = Math.min(delta.varLastCalcIndex, delta.total - 1);\n        return offset;\n      },\n      // return a variable size (height) from given index.\n      getVarSize: function getVarSize(index, nocache) {\n        var cache = this.delta.varCache[index];\n\n        if (!nocache && cache) {\n          return cache.size;\n        }\n\n        if (typeof this.variable === 'function') {\n          return this.variable(index) || 0;\n        } else {\n          // when using item, it can only get current components height,\n          // need to be enhanced, or consider using variable-function instead\n          var slot = this.item ? this.$children[index] ? this.$children[index].$vnode : null : this.$slots[\"default\"][index];\n          var style = slot && slot.data && slot.data.style;\n\n          if (style && style.height) {\n            var shm = style.height.match(/^(.*)px$/);\n            return shm && +shm[1] || 0;\n          }\n        }\n\n        return 0;\n      },\n      // return the variable paddingTop based on current zone.\n      // @todo: if set a large `start` before variable was calculated,\n      // here will also case too much offset calculate when list is very large,\n      // consider use estimate paddingTop in this case just like `getVarPaddingBottom`.\n      getVarPaddingTop: function getVarPaddingTop() {\n        return this.getVarOffset(this.delta.start);\n      },\n      // return the variable paddingBottom based on the current zone.\n      getVarPaddingBottom: function getVarPaddingBottom() {\n        var delta = this.delta;\n        var last = delta.total - 1;\n\n        if (delta.total - delta.end <= delta.keeps || delta.varLastCalcIndex === last) {\n          return this.getVarOffset(last) - this.getVarOffset(delta.end);\n        } else {\n          // if unreached last zone or uncalculated real behind offset\n          // return the estimate paddingBottom and avoid too much calculations.\n          return (delta.total - delta.end) * (delta.varAverSize || this.size);\n        }\n      },\n      // return the variable all heights use to judge reach bottom.\n      getVarAllHeight: function getVarAllHeight() {\n        var delta = this.delta;\n\n        if (delta.total - delta.end <= delta.keeps || delta.varLastCalcIndex === delta.total - 1) {\n          return this.getVarOffset(delta.total);\n        } else {\n          return this.getVarOffset(delta.start) + (delta.total - delta.end) * (delta.varAverSize || this.size);\n        }\n      },\n      // public method, allow the parent update variable by index.\n      updateVariable: function updateVariable(index) {\n        // clear/update all the offsets and heights ahead of index.\n        this.getVarOffset(index, true);\n      },\n      // trigger a props event on parent.\n      fireEvent: function fireEvent(event) {\n        if (this[event]) {\n          this[event]();\n        }\n      },\n      // set manual scroll top.\n      setScrollTop: function setScrollTop(scrollTop) {\n        if (this.pagemode) {\n          window.scrollTo(0, scrollTop);\n        } else if (this.scrollelement) {\n          this.scrollelement.scrollTo(0, scrollTop);\n        } else {\n          var vsl = this.$refs.vsl;\n\n          if (vsl) {\n            (vsl.$el || vsl).scrollTop = scrollTop;\n          }\n        }\n      },\n      // filter the shown items based on `start` and `end`.\n      filter: function filter(h) {\n        var delta = this.delta;\n        var slots = this.$slots[\"default\"] || []; // item-mode should be decided from items prop.\n\n        if (this.item || this.$scopedSlots.item) {\n          delta.total = this.itemcount;\n\n          if (delta.keeps > delta.total) {\n            delta.end = delta.total - 1;\n          }\n        } else {\n          if (!slots.length) {\n            delta.start = 0;\n          }\n\n          delta.total = slots.length;\n        }\n\n        var paddingTop, paddingBottom, allHeight;\n        var hasPadding = delta.total > delta.keeps;\n\n        if (this.variable) {\n          allHeight = this.getVarAllHeight();\n          paddingTop = hasPadding ? this.getVarPaddingTop() : 0;\n          paddingBottom = hasPadding ? this.getVarPaddingBottom() : 0;\n        } else {\n          allHeight = this.size * delta.total;\n          paddingTop = this.size * (hasPadding ? delta.start : 0);\n          paddingBottom = this.size * (hasPadding ? delta.total - delta.keeps : 0) - paddingTop;\n        }\n\n        if (paddingBottom < this.size) {\n          paddingBottom = 0;\n        }\n\n        delta.paddingTop = paddingTop;\n        delta.paddingBottom = paddingBottom;\n        delta.offsetAll = allHeight - this.size * this.remain;\n        var renders = [];\n\n        for (var i = delta.start; i < delta.total && i <= Math.ceil(delta.end); i++) {\n          var slot = null;\n\n          if (this.$scopedSlots.item) {\n            slot = this.$scopedSlots.item(i);\n          } else if (this.item) {\n            slot = h(this.item, this.itemprops(i));\n          } else {\n            slot = slots[i];\n          }\n\n          renders.push(slot);\n        }\n\n        return renders;\n      }\n    },\n    render: function render(h) {\n      var dbc = this.debounce;\n      var list = this.filter(h);\n      var _this$delta = this.delta,\n          paddingTop = _this$delta.paddingTop,\n          paddingBottom = _this$delta.paddingBottom;\n      var istable = this.istable;\n      var wtag = istable ? 'div' : this.wtag;\n      var rtag = istable ? 'div' : this.rtag;\n\n      if (istable) {\n        list = [h('table', [h('tbody', list)])];\n      }\n\n      var renderList = h(wtag, {\n        style: Object.assign({\n          display: 'block',\n          'padding-top': paddingTop + 'px',\n          'padding-bottom': paddingBottom + 'px'\n        }, this.wstyle),\n        \"class\": this.wclass,\n        attrs: {\n          role: 'group'\n        }\n      }, list); // page mode just render list, no wrapper.\n\n      if (this.pagemode || this.scrollelement) {\n        return renderList;\n      }\n\n      return h(rtag, {\n        ref: 'vsl',\n        style: {\n          display: 'block',\n          'overflow-y': this.size >= this.remain ? 'auto' : 'initial',\n          height: this.size * this.remain + 'px'\n        },\n        on: {\n          '&scroll': dbc ? _debounce(this.onScroll.bind(this), dbc) : this.onScroll\n        }\n      }, [renderList]);\n    }\n  });\n});","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"note-header-info\"},[(_vm.hasAuthor)?[(_vm.emailParticipant)?_c('span',{staticClass:\"note-header-author-name gl-font-bold\",attrs:{\"data-testid\":\"author-name\"},domProps:{\"textContent\":_vm._s(_vm.authorName)}}):_c('a',{ref:\"authorNameLink\",class:_vm.authorLinkClasses,attrs:{\"href\":_vm.authorHref,\"data-user-id\":_vm.authorId,\"data-username\":_vm.author.username}},[_c('span',{staticClass:\"note-header-author-name gl-font-bold\",attrs:{\"data-testid\":\"author-name\"},domProps:{\"textContent\":_vm._s(_vm.authorName)}})]),_vm._v(\" \"),(!_vm.isSystemNote && !_vm.emailParticipant)?_c('span',{staticClass:\"text-nowrap author-username gl-truncate\"},[_c('a',{ref:\"authorUsernameLink\",staticClass:\"author-username-link\",attrs:{\"href\":_vm.authorHref},on:{\"mouseenter\":_vm.handleUsernameMouseEnter,\"mouseleave\":_vm.handleUsernameMouseLeave}},[_c('span',{staticClass:\"note-headline-light gl-hidden md:gl-inline\"},[_vm._v(\"@\"+_vm._s(_vm.author.username))])]),_vm._v(\" \"),_vm._t(\"note-header-info\")],2):_vm._e(),_vm._v(\" \"),(_vm.emailParticipant)?_c('span',{staticClass:\"note-headline-light\"},[_vm._v(_vm._s(_vm.__('(external participant)')))]):_vm._e()]:_c('span',[_vm._v(_vm._s(_vm.__('A deleted user')))]),_vm._v(\" \"),_c('span',{staticClass:\"note-headline-light note-headline-meta\"},[_c('span',{staticClass:\"system-note-message\",attrs:{\"data-testid\":\"system-note-content\"}},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.createdAt)?[_c('span',{ref:\"actionText\",staticClass:\"system-note-separator\"},[(_vm.actionText)?[_vm._v(_vm._s(_vm.actionText))]:_vm._e()],2),_vm._v(\" \"),(_vm.noteTimestampLink)?_c('a',{ref:\"noteTimestampLink\",staticClass:\"note-timestamp system-note-separator\",attrs:{\"href\":_vm.noteTimestampLink},on:{\"click\":_vm.updateTargetNoteHash}},[_c('time-ago-tooltip',{attrs:{\"time\":_vm.createdAt,\"tooltip-placement\":\"bottom\"}})],1):_c('time-ago-tooltip',{ref:\"noteTimestamp\",attrs:{\"time\":_vm.createdAt,\"tooltip-placement\":\"bottom\"}})]:_vm._e(),_vm._v(\" \"),(_vm.isImported)?[(_vm.isSystemNote)?_c('span',[_vm._v(\"·\")]):_vm._e(),_vm._v(\" \"),_c('imported-badge',{attrs:{\"text-only\":_vm.isSystemNote,\"importable-type\":_vm.importableType}})]:_vm._e(),_vm._v(\" \"),(_vm.isInternalNote)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip:tooltipcontainer.bottom\",arg:\"tooltipcontainer\",modifiers:{\"bottom\":true}}],staticClass:\"gl-ml-2\",attrs:{\"data-testid\":\"internal-note-indicator\",\"variant\":\"warning\",\"title\":_vm.internalNoteTooltip}},[_vm._v(\"\\n      \"+_vm._s(_vm.__('Internal note'))+\"\\n    \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"extra-controls\"),_vm._v(\" \"),(_vm.showSpinner)?_c('gl-loading-icon',{ref:\"spinner\",staticClass:\"editing-spinner\",attrs:{\"size\":\"sm\",\"label\":_vm.__('Comment is being updated')}}):_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_header.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\nimport { isGid, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { TYPE_ACTIVITY, TYPE_COMMENT } from '~/import/constants';\nimport { s__ } from '~/locale';\nimport ImportedBadge from '~/vue_shared/components/imported_badge.vue';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\n\nexport default {\n  components: {\n    ImportedBadge,\n    TimeAgoTooltip,\n    GlBadge,\n    GlLoadingIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    author: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    createdAt: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    actionText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    noteId: {\n      type: [String, Number],\n      required: false,\n      default: null,\n    },\n    noteableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showSpinner: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    isInternalNote: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isImported: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isSystemNote: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    noteUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    emailParticipant: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      isUsernameLinkHovered: false,\n    };\n  },\n  computed: {\n    authorId() {\n      return getIdFromGraphQLId(this.author.id);\n    },\n    authorHref() {\n      return this.author.path || this.author.webUrl;\n    },\n    noteTimestampLink() {\n      if (this.noteUrl) return this.noteUrl;\n\n      if (this.noteId) {\n        let { noteId } = this;\n\n        if (isGid(noteId)) noteId = getIdFromGraphQLId(noteId);\n\n        return `#note_${noteId}`;\n      }\n\n      return undefined;\n    },\n    hasAuthor() {\n      return this.author && Object.keys(this.author).length;\n    },\n    isServiceDeskEmailParticipant() {\n      return (\n        !this.isInternalNote && this.author.username === 'support-bot' && this.emailParticipant\n      );\n    },\n    authorLinkClasses() {\n      return {\n        hover: this.isUsernameLinkHovered,\n        'text-underline': this.isUsernameLinkHovered,\n        'author-name-link': true,\n        'js-user-link': true,\n        'gl-overflow-hidden': true,\n        'gl-break-words': true,\n      };\n    },\n    authorName() {\n      return this.isServiceDeskEmailParticipant ? this.emailParticipant : this.author.name;\n    },\n    internalNoteTooltip() {\n      return s__('Notes|This internal note will always remain confidential');\n    },\n    importableType() {\n      return this.isSystemNote ? TYPE_ACTIVITY : TYPE_COMMENT;\n    },\n  },\n  methods: {\n    ...mapActions(['setTargetNoteHash']),\n    updateTargetNoteHash() {\n      if (this.$store) {\n        this.setTargetNoteHash(this.noteTimestampLink);\n      }\n    },\n    handleUsernameMouseEnter() {\n      this.$refs.authorNameLink.dispatchEvent(new Event('mouseenter'));\n      this.isUsernameLinkHovered = true;\n    },\n    handleUsernameMouseLeave() {\n      this.$refs.authorNameLink.dispatchEvent(new Event('mouseleave'));\n      this.isUsernameLinkHovered = false;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"note-header-info\">\n    <template v-if=\"hasAuthor\">\n      <span\n        v-if=\"emailParticipant\"\n        class=\"note-header-author-name gl-font-bold\"\n        data-testid=\"author-name\"\n        v-text=\"authorName\"\n      ></span>\n      <a\n        v-else\n        ref=\"authorNameLink\"\n        :href=\"authorHref\"\n        :class=\"authorLinkClasses\"\n        :data-user-id=\"authorId\"\n        :data-username=\"author.username\"\n      >\n        <span\n          class=\"note-header-author-name gl-font-bold\"\n          data-testid=\"author-name\"\n          v-text=\"authorName\"\n        ></span>\n      </a>\n      <span\n        v-if=\"!isSystemNote && !emailParticipant\"\n        class=\"text-nowrap author-username gl-truncate\"\n      >\n        <a\n          ref=\"authorUsernameLink\"\n          class=\"author-username-link\"\n          :href=\"authorHref\"\n          @mouseenter=\"handleUsernameMouseEnter\"\n          @mouseleave=\"handleUsernameMouseLeave\"\n          ><span class=\"note-headline-light gl-hidden md:gl-inline\">@{{ author.username }}</span>\n        </a>\n        <slot name=\"note-header-info\"></slot>\n      </span>\n      <span v-if=\"emailParticipant\" class=\"note-headline-light\">{{\n        __('(external participant)')\n      }}</span>\n    </template>\n    <span v-else>{{ __('A deleted user') }}</span>\n    <span class=\"note-headline-light note-headline-meta\">\n      <span class=\"system-note-message\" data-testid=\"system-note-content\">\n        <slot></slot>\n      </span>\n      <template v-if=\"createdAt\">\n        <span ref=\"actionText\" class=\"system-note-separator\">\n          <template v-if=\"actionText\">{{ actionText }}</template>\n        </span>\n        <a\n          v-if=\"noteTimestampLink\"\n          ref=\"noteTimestampLink\"\n          :href=\"noteTimestampLink\"\n          class=\"note-timestamp system-note-separator\"\n          @click=\"updateTargetNoteHash\"\n        >\n          <time-ago-tooltip :time=\"createdAt\" tooltip-placement=\"bottom\" />\n        </a>\n        <time-ago-tooltip v-else ref=\"noteTimestamp\" :time=\"createdAt\" tooltip-placement=\"bottom\" />\n      </template>\n\n      <template v-if=\"isImported\">\n        <span v-if=\"isSystemNote\">&middot;</span>\n        <imported-badge :text-only=\"isSystemNote\" :importable-type=\"importableType\" />\n      </template>\n\n      <gl-badge\n        v-if=\"isInternalNote\"\n        v-gl-tooltip:tooltipcontainer.bottom\n        data-testid=\"internal-note-indicator\"\n        variant=\"warning\"\n        class=\"gl-ml-2\"\n        :title=\"internalNoteTooltip\"\n      >\n        {{ __('Internal note') }}\n      </gl-badge>\n      <slot name=\"extra-controls\"></slot>\n      <gl-loading-icon\n        v-if=\"showSpinner\"\n        ref=\"spinner\"\n        size=\"sm\"\n        class=\"editing-spinner\"\n        :label=\"__('Comment is being updated')\"\n      />\n    </span>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_header.vue?vue&type=template&id=d4c29394\"\nimport script from \"./note_header.vue?vue&type=script&lang=js\"\nexport * from \"./note_header.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import languageLoader from '~/content_editor/services/highlight_js_language_loader';\n// Language map from Rouge::Lexer to highlight.js\n// Rouge::Lexer - We use it on the BE to determine the language of a source file (https://github.com/rouge-ruby/rouge/blob/master/docs/Languages.md).\n// Highlight.js - We use it on the FE to highlight the syntax of a source file (https://github.com/highlightjs/highlight.js/tree/main/src/languages).\nexport const ROUGE_TO_HLJS_LANGUAGE_MAP = {\n  ...Object.fromEntries(Object.keys(languageLoader).map((lang) => [lang, lang])),\n  // Override with special mappings\n  bsl: '1c',\n  pascal: 'delphi',\n  jinja: 'django',\n  docker: 'dockerfile',\n  batchfile: 'dos',\n  html: 'xml',\n  hylang: 'hy',\n  tex: 'latex',\n  common_lisp: 'lisp',\n  hlsl: 'lsl',\n  make: 'makefile',\n  objective_c: 'objectivec',\n  python3: 'python',\n  shell: 'sh',\n  vb: 'vbnet',\n  viml: 'vim',\n};\n\nexport const EVENT_ACTION = 'view_source';\n\nexport const EVENT_LABEL_VIEWER = 'source_viewer';\n\nexport const EVENT_LABEL_FALLBACK = 'legacy_fallback';\n\nexport const LINES_PER_CHUNK = 70;\n\nexport const NEWLINE = '\\n';\n\nexport const BIDI_CHARS = [\n  '\\u202A', // Left-to-Right Embedding (Try treating following text as left-to-right)\n  '\\u202B', // Right-to-Left Embedding (Try treating following text as right-to-left)\n  '\\u202D', // Left-to-Right Override (Force treating following text as left-to-right)\n  '\\u202E', // Right-to-Left Override (Force treating following text as right-to-left)\n  '\\u2066', // Left-to-Right Isolate (Force treating following text as left-to-right without affecting adjacent text)\n  '\\u2067', // Right-to-Left Isolate (Force treating following text as right-to-left without affecting adjacent text)\n  '\\u2068', // First Strong Isolate (Force treating following text in direction indicated by the next character)\n  '\\u202C', // Pop Directional Formatting (Terminate nearest LRE, RLE, LRO, or RLO)\n  '\\u2069', // Pop Directional Isolate (Terminate nearest LRI or RLI)\n  '\\u061C', // Arabic Letter Mark (Right-to-left zero-width Arabic character)\n  '\\u200F', // Right-to-Left Mark (Right-to-left zero-width character non-Arabic character)\n  '\\u200E', // Left-to-Right Mark (Left-to-right zero-width character)\n];\n\nexport const BIDI_CHARS_CLASS_LIST = 'unicode-bidi has-tooltip';\n\nexport const BIDI_CHAR_TOOLTIP = 'Potentially unwanted character detected: Unicode BiDi Control';\n\n/**\n * We fallback to highlighting these languages with Rouge, see the following issues for more detail:\n * Python: https://gitlab.com/gitlab-org/gitlab/-/issues/384375#note_1212752013\n * HAML: https://github.com/highlightjs/highlight.js/issues/3783\n * */\nexport const LEGACY_FALLBACKS = ['python', 'haml'];\n\nexport const CODEOWNERS_FILE_NAME = 'CODEOWNERS';\n\nexport const CODEOWNERS_LANGUAGE = 'codeowners';\n\nexport const SVELTE_LANGUAGE = 'svelte';\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseDifference;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"report-block-list-issue !gl-p-3\",attrs:{\"data-testid\":\"report-item-row\"}},[(_vm.showReportSectionStatusIcon)?_c(_vm.iconComponent,{tag:\"component\",staticClass:\"gl-mr-2\",attrs:{\"status\":_vm.status,\"status-icon-size\":_vm.statusIconSize}}):_vm._e(),_vm._v(\" \"),(_vm.component)?_c(_vm.component,{tag:\"component\",attrs:{\"issue\":_vm.issue,\"status\":_vm.status,\"is-new\":_vm.isNew}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_item.vue?vue&type=script&lang=js\"","<script>\nimport {\n  components,\n  componentNames,\n  iconComponents,\n  iconComponentNames,\n} from 'ee_else_ce/ci/reports/components/issue_body';\n\nexport default {\n  name: 'ReportItem',\n  components: {\n    ...components,\n    ...iconComponents,\n  },\n  props: {\n    issue: {\n      type: Object,\n      required: true,\n    },\n    component: {\n      type: String,\n      required: false,\n      default: '',\n      validator: (value) => value === '' || Object.values(componentNames).includes(value),\n    },\n    iconComponent: {\n      type: String,\n      required: false,\n      default: iconComponentNames.IssueStatusIcon,\n      validator: (value) => Object.values(iconComponentNames).includes(value),\n    },\n    // failed || success\n    status: {\n      type: String,\n      required: true,\n    },\n    statusIconSize: {\n      type: Number,\n      required: false,\n      default: 24,\n    },\n    isNew: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showReportSectionStatusIcon: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n};\n</script>\n<template>\n  <li class=\"report-block-list-issue !gl-p-3\" data-testid=\"report-item-row\">\n    <component\n      :is=\"iconComponent\"\n      v-if=\"showReportSectionStatusIcon\"\n      :status=\"status\"\n      :status-icon-size=\"statusIconSize\"\n      class=\"gl-mr-2\"\n    />\n\n    <component :is=\"component\" v-if=\"component\" :issue=\"issue\" :status=\"status\" :is-new=\"isNew\" />\n  </li>\n</template>\n","import { render, staticRenderFns } from \"./report_item.vue?vue&type=template&id=32fd7bf0\"\nimport script from \"./report_item.vue?vue&type=script&lang=js\"\nexport * from \"./report_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nconst stableSort = (array, compareFn) => {\n  // Using `.bind(compareFn)` on the wrapped anonymous function improves\n  // performance by avoiding the function call setup. We don't use an arrow\n  // function here as it binds `this` to the `stableSort` context rather than\n  // the `compareFn` context, which wouldn't give us the performance increase.\n  return array.map((a, index) => [index, a]).sort(function (a, b) {\n    return this(a[1], b[1]) || a[0] - b[0];\n  }.bind(compareFn)).map(e => e[1]);\n};\n\nexport { stableSort };\n","import uniqueId from 'lodash/uniqueId';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlAccordion',\n  provide() {\n    const accordionId = uniqueId('accordion-set-');\n    // temporary fix for this issue: https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/2019#note_514671251\n    // MR for the upstream pending: https://github.com/vuejs/apollo/pull/1153\n    return {\n      defaultHeaderLevel: () => this.headerLevel,\n      accordionSetId: () => this.autoCollapse && accordionId\n    };\n  },\n  props: {\n    /*\n    When true, will have the effect of closing other accordion items when one accordion item is visible.\n     */\n    autoCollapse: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /*\n    The header tag used in the accordion (h1/h2/h3/h4/h5/h6). This overrides the value provided by GlAccordion. For accessibility this should be set to an appropriate value in the context where the accordion is used.\n     */\n    headerLevel: {\n      type: Number,\n      required: true,\n      validator(value) {\n        return value > 0 && value <= 6;\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"cancelJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobCancel\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":163}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation cancelJob($id: CiBuildID!) {\\n  jobCancel(input: { id: $id }) {\\n    job {\\n      ...Job\\n    }\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"cancelJob\"] = oneQuery(doc, \"cancelJob\");\n        \n","export default __webpack_public_path__ + \"empty-search-md.2566c760.svg\";","var toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n  var result;\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  n = toInteger(n);\n  return function() {\n    if (--n > 0) {\n      result = func.apply(this, arguments);\n    }\n    if (n <= 1) {\n      func = undefined;\n    }\n    return result;\n  };\n}\n\nmodule.exports = before;\n","var baseDifference = require('./_baseDifference'),\n    baseFlatten = require('./_baseFlatten'),\n    baseRest = require('./_baseRest'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    last = require('./last');\n\n/**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\nvar differenceWith = baseRest(function(array, values) {\n  var comparator = last(values);\n  if (isArrayLikeObject(comparator)) {\n    comparator = undefined;\n  }\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n    : [];\n});\n\nmodule.exports = differenceWith;\n","import curry from 'lodash/fp/curry';\n\nconst getRepeatingValue = index => {\n  const values = [100, 500, 400, 200, 100, 800, 400, 500, 600, 300, 800, 900, 110, 700, 400, 300, 500, 300, 400, 600, 700];\n  return index < values.length ? values[index] : values[index % values.length];\n};\nconst generateTimeSeries = () => new Array(100).fill(0).map((el, i) => [new Date(2018, 0, i), getRepeatingValue(i)]);\n\n// takes an element and a list and `intersperses' that element between the elements of the list.\n// (',' ['a', 'b', 'c']) -> ['a', ',', 'b', ',', 'c']\nconst intersperse = curry((separator, items) => {\n  const [head, ...rest] = items;\n  const separatorFactory = typeof separator === 'function' ? separator : () => separator;\n  return [head, ...rest.flatMap(item => [separatorFactory(), item], rest)];\n});\n\n// inserts a value at a given index into an array\n// (1, 2, [1, 3, 4]) -> [1, 2, 3, 4]\nconst insert = curry((index, newItem, items) => [...items.slice(0, index), newItem, ...items.slice(index)]);\n\nexport { generateTimeSeries, insert, intersperse };\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"datetime\":_vm.endDateString,\"title\":_vm.endDateString}},[_vm._v(\" \"+_vm._s(_vm.remainingTime)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gl_countdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./gl_countdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport { calculateRemainingMilliseconds, formatTime } from '~/lib/utils/datetime_utility';\n\n/**\n * Counts down to a given end date.\n */\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n\n  props: {\n    endDateString: {\n      type: String,\n      required: true,\n      validator(value) {\n        return !Number.isNaN(new Date(value).getTime());\n      },\n    },\n  },\n\n  data() {\n    return {\n      remainingTime: formatTime(0),\n      countdownUpdateIntervalId: null,\n    };\n  },\n\n  mounted() {\n    const updateRemainingTime = () => {\n      const remainingMilliseconds = calculateRemainingMilliseconds(this.endDateString);\n\n      if (remainingMilliseconds < 1) {\n        this.$emit('timer-expired');\n      }\n\n      this.remainingTime = formatTime(remainingMilliseconds);\n    };\n\n    updateRemainingTime();\n    this.countdownUpdateIntervalId = window.setInterval(updateRemainingTime, 1000);\n  },\n\n  beforeDestroy() {\n    window.clearInterval(this.countdownUpdateIntervalId);\n  },\n};\n</script>\n\n<template>\n  <time v-gl-tooltip :datetime=\"endDateString\" :title=\"endDateString\"> {{ remainingTime }} </time>\n</template>\n","import { render, staticRenderFns } from \"./gl_countdown.vue?vue&type=template&id=59b0e135\"\nimport script from \"./gl_countdown.vue?vue&type=script&lang=js\"\nexport * from \"./gl_countdown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/**\n * Helper function to trigger a download.\n *\n * - If the `fileName` is `_blank` it will open the file in a new tab.\n * - If `fileData` is provided, it will inline the content and use data URLs to\n *   download the file. In this case the `url` property will be ignored. Please\n *   note that `fileData` needs to be Base64 encoded.\n */\nexport default ({ fileName, url, fileData }) => {\n  let href = url;\n\n  if (fileData) {\n    href = `data:text/plain;base64,${fileData}`;\n  }\n\n  const anchor = document.createElement('a');\n  anchor.download = fileName;\n  anchor.href = href;\n  anchor.click();\n};\n","var toString = require('./toString');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n    reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n  string = toString(string);\n  return (string && reHasRegExpChar.test(string))\n    ? string.replace(reRegExpChar, '\\\\$&')\n    : string;\n}\n\nmodule.exports = escapeRegExp;\n","import { s__, __ } from '~/locale';\n\n/* Error constants */\nexport const DEFAULT = 'default';\nexport const RAW_TEXT_WARNING = s__(\n  'Jobs|Raw text search is not currently supported for the jobs filtered search feature. Please use the available search tokens.',\n);\n\n/* Job Status Constants */\nexport const JOB_SCHEDULED = 'SCHEDULED';\nexport const JOB_SUCCESS = 'SUCCESS';\n\n/* Artifact file types */\nexport const FILE_TYPE_ARCHIVE = 'ARCHIVE';\n\n/* i18n */\nexport const ACTIONS_DOWNLOAD_ARTIFACTS = __('Download artifacts');\nexport const ACTIONS_START_NOW = s__('DelayedJobs|Start now');\nexport const ACTIONS_UNSCHEDULE = s__('DelayedJobs|Unschedule');\nexport const ACTIONS_PLAY = __('Run');\nexport const ACTIONS_RETRY = __('Retry');\nexport const ACTIONS_RUN_AGAIN = __('Run again');\n\nexport const CANCEL = __('Cancel');\nexport const GENERIC_ERROR = __('An error occurred while making the request.');\nexport const PLAY_JOB_CONFIRMATION_MESSAGE = s__(\n  `DelayedJobs|Are you sure you want to run %{job_name} immediately? This job will run automatically after its timer finishes.`,\n);\nexport const RUN_JOB_NOW_HEADER_TITLE = s__('DelayedJobs|Run the delayed job now?');\n\n/* Table constants */\n/* There is another field list based on this one in app/assets/javascripts/ci/admin/jobs_table/constants.js */\nexport const DEFAULT_FIELDS = [\n  {\n    key: 'status',\n    label: __('Status'),\n    columnClass: 'gl-w-2/20',\n  },\n  {\n    key: 'job',\n    label: __('Job'),\n    columnClass: 'gl-w-5/20',\n  },\n  {\n    key: 'pipeline',\n    label: __('Pipeline'),\n    columnClass: 'gl-w-2/20',\n  },\n  {\n    key: 'stage',\n    label: __('Stage'),\n    columnClass: 'gl-w-2/20',\n  },\n  {\n    key: 'coverage',\n    label: __('Coverage'),\n    tdClass: '!gl-hidden lg:!gl-table-cell',\n    columnClass: 'gl-w-2/20',\n  },\n  {\n    key: 'actions',\n    label: '',\n    tdClass: 'gl-text-right',\n    columnClass: 'gl-w-2/20',\n  },\n];\n\nexport const JOBS_DEFAULT_FIELDS = DEFAULT_FIELDS.filter((field) => field.key !== 'stage');\nexport const JOBS_TAB_FIELDS = DEFAULT_FIELDS.filter((field) => field.key !== 'pipeline');\n\nexport const JOBS_PER_PAGE = 30;\nexport const DEFAULT_PAGINATION = {\n  first: JOBS_PER_PAGE,\n  last: null,\n  before: null,\n  after: null,\n};\n","/**\n * The number of additional lines to include before and after the highlighted code block.\n * This padding provides context around the specific lines of interest.\n * @constant {number}\n * @default 3\n */\nexport const linesPadding = 3;\n\nexport const selectedInlineNumberMark = 'selected-inline-number-mark';\nexport const unselectedInlineNumberMark = 'unselected-inline-number-mark';\n\nexport const inlineSectionMarker = 'inline-section-marker';\nexport const selectedInlineSectionMarker = 'selected-inline-section-marker';\n\nexport const inlineItemMark = 'inline-item-mark';\nexport const selectedInlineItemMark = 'selected-inline-item-mark';\n\nexport const numMarkerIdPrefix = 'NUM-MARKER-';\nexport const textMarkerIdPrefix = 'TEXT-MARKER-';\nexport const textSpanMarkerIdPrefix = 'TEXT-SPAN-MARKER-';\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.showSbomErrors)?_c('sbom-reports-errors-alert',{staticClass:\"gl-mt-5\",attrs:{\"errors\":_vm.sbomReportsErrors,\"error-description\":_vm.$options.i18n.sbomReportsErrorsDescription}}):_vm._e(),_vm._v(\" \"),_c('report-section',{staticClass:\"license-report-widget mr-report\",class:_vm.reportSectionClass,attrs:{\"status\":_vm.licenseReportStatus,\"loading-text\":_vm.licenseSummaryText,\"error-text\":_vm.licenseSummaryText,\"neutral-issues\":_vm.licenseReport,\"has-issues\":_vm.hasLicenseReportIssues,\"component\":_vm.$options.componentNames.LicenseIssueBody,\"track-action\":\"users_expanding_testing_license_compliance_report\",\"always-open\":_vm.alwaysOpen},scopedSlots:_vm._u([{key:\"body\",fn:function(){return [_c('smart-virtual-list',{ref:\"reportSectionBody\",staticClass:\"report-block-container\",attrs:{\"size\":_vm.$options.typicalReportItemHeight,\"length\":_vm.licenseReport.length,\"remain\":_vm.$options.maxShownReportItems,\"wtag\":\"ul\",\"wclass\":\"report-block-list my-1\"}},[_vm._l((_vm.licenseReportGroups),function(licenseReportGroup,index){return [_c('li',{key:licenseReportGroup.name,class:['mx-1', 'mb-1', index > 0 ? 'mt-3' : ''],attrs:{\"data-testid\":\"report-heading\"}},[_c('h2',{staticClass:\"h5 m-0\"},[_vm._v(_vm._s(licenseReportGroup.name))]),_vm._v(\" \"),_c('p',{staticClass:\"m-0\"},[_vm._v(_vm._s(licenseReportGroup.description))])]),_vm._v(\" \"),_vm._l((licenseReportGroup.licenses),function(license){return _c('report-item',{key:license.name,staticClass:\"gl-m-2\",attrs:{\"issue\":license,\"status-icon-size\":12,\"status\":license.status,\"component\":_vm.$options.componentNames.LicenseIssueBody,\"icon-component\":_vm.$options.iconComponentNames.LicenseStatusIcon,\"show-report-section-status-icon\":true}})})]})],2)]},proxy:true},{key:\"success\",fn:function(){return [_c('div',{staticClass:\"pr-3\"},[_vm._v(\"\\n        \"+_vm._s(_vm.licenseSummaryText)+\"\\n        \"),(_vm.reportContainsDeniedLicense && _vm.licenseComplianceDocsPath)?_c('gl-link',{attrs:{\"href\":_vm.licenseComplianceDocsPath,\"data-testid\":\"security-approval-help-link\",\"target\":\"_blank\"}},[_c('help-icon')],1):_vm._e()],1)]},proxy:true},(_vm.showActionButtons)?{key:\"action-buttons\",fn:function({ isCollapsible }){return [(_vm.fullReportPath)?_c('gl-button',{staticClass:\"gl-mr-3\",attrs:{\"href\":_vm.fullReportPath,\"icon\":\"external-link\",\"target\":\"_blank\",\"data-testid\":\"full-report-button\"},on:{\"click\":_vm.trackFullReportClick}},[_vm._v(\"\\n        \"+_vm._s(_vm.s__('ciReport|View full report'))+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.securityPoliciesPath)?_c('gl-button',{class:{ 'gl-mr-3': isCollapsible },attrs:{\"data-testid\":\"manage-licenses-button\",\"href\":_vm.securityPoliciesPath},on:{\"click\":function($event){return _vm.trackVisitedPath('users_visiting_testing_manage_license_compliance')}}},[_vm._v(\"\\n        \"+_vm._s(_vm.s__('ciReport|Manage licenses'))+\"\\n      \")]):_vm._e()]}}:null],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '~/lib/utils/axios_utils';\nimport pollUntilComplete from '~/lib/utils/poll_until_complete';\nimport * as types from './mutation_types';\nimport { convertToOldReportFormat } from './utils';\n\nexport const setAPISettings = ({ commit }, data) => {\n  commit(types.SET_API_SETTINGS, data);\n};\n\nexport const requestManagedLicenses = ({ commit }) => {\n  commit(types.REQUEST_MANAGED_LICENSES);\n};\nexport const receiveManagedLicensesSuccess = ({ commit }, licenses) => {\n  commit(types.RECEIVE_MANAGED_LICENSES_SUCCESS, licenses);\n};\nexport const receiveManagedLicensesError = ({ commit }) => {\n  commit(types.RECEIVE_MANAGED_LICENSES_ERROR);\n};\nexport const fetchManagedLicenses = ({ dispatch, state }) => {\n  dispatch('requestManagedLicenses');\n\n  const { apiUrlManageLicenses } = state;\n\n  return axios\n    .get(apiUrlManageLicenses, { params: { per_page: 100 } })\n    .then(({ data }) => {\n      dispatch('receiveManagedLicensesSuccess', data);\n    })\n    .catch(() => {\n      dispatch('receiveManagedLicensesError');\n    });\n};\n\nexport const requestParsedLicenseReport = ({ commit }) => {\n  commit(types.REQUEST_PARSED_LICENSE_REPORT);\n};\nexport const receiveParsedLicenseReportSuccess = ({ commit }, reports) => {\n  commit(types.RECEIVE_PARSED_LICENSE_REPORT_SUCCESS, reports);\n};\nexport const receiveParsedLicenseReportError = ({ commit }, error) => {\n  commit(types.RECEIVE_PARSED_LICENSE_REPORT_ERROR, error);\n};\nexport const fetchParsedLicenseReport = ({ dispatch, state }) => {\n  dispatch('requestParsedLicenseReport');\n\n  pollUntilComplete(state.licensesApiPath)\n    .then(({ data }) => {\n      const newLicenses = (data.new_licenses || data).map(convertToOldReportFormat);\n      const existingLicenses = (data.existing_licenses || []).map(convertToOldReportFormat);\n      dispatch('receiveParsedLicenseReportSuccess', { newLicenses, existingLicenses });\n    })\n    .catch((error) => {\n      dispatch('receiveParsedLicenseReportError', error);\n    });\n};\n","export const RECEIVE_MANAGED_LICENSES_SUCCESS = 'RECEIVE_MANAGED_LICENSES_SUCCESS';\nexport const RECEIVE_MANAGED_LICENSES_ERROR = 'RECEIVE_MANAGED_LICENSES_ERROR';\nexport const RECEIVE_PARSED_LICENSE_REPORT_SUCCESS = 'RECEIVE_PARSED_LICENSE_REPORT_SUCCESS';\nexport const RECEIVE_PARSED_LICENSE_REPORT_ERROR = 'RECEIVE_PARSED_LICENSE_REPORT_ERROR';\nexport const REQUEST_MANAGED_LICENSES = 'REQUEST_MANAGED_LICENSES';\nexport const REQUEST_PARSED_LICENSE_REPORT = 'REQUEST_PARSED_LICENSE_REPORT';\nexport const SET_API_SETTINGS = 'SET_API_SETTINGS';\n","import { __, n__, s__, sprintf } from '~/locale';\nimport { LICENSE_APPROVAL_STATUS, REPORT_GROUPS } from '../constants';\nimport { addLicensesMatchingReportGroupStatus, reportGroupHasAtLeastOneLicense } from './utils';\n\nexport const isLoading = (state) =>\n  state.isLoadingManagedLicenses ||\n  state.isLoadingLicenseReport ||\n  state.isLoadingLicenseCheckApprovalRule;\n\nexport const isLicenseBeingUpdated =\n  (state) =>\n  (id = null) =>\n    state.pendingLicenses.includes(id);\n\nexport const licenseReport = (state) => state.newLicenses;\n\nexport const licenseReportGroups = (state) =>\n  REPORT_GROUPS.map(addLicensesMatchingReportGroupStatus(state.newLicenses)).filter(\n    reportGroupHasAtLeastOneLicense,\n  );\n\nexport const hasReportItems = (_, getters) => {\n  return Boolean(getters.licenseReportLength);\n};\n\nexport const baseReportHasLicenses = (state) => {\n  return Boolean(state.existingLicenses.length);\n};\n\nexport const licenseReportLength = (_, getters) => {\n  return getters.licenseReport.length;\n};\n\nexport const licenseSummaryText = (state, getters) => {\n  if (getters.isLoading) {\n    return sprintf(s__('ciReport|Loading %{reportName} report'), {\n      reportName: __('License Compliance'),\n    });\n  }\n\n  if (state.loadLicenseReportError) {\n    return sprintf(s__('ciReport|Failed to load %{reportName} report'), {\n      reportName: __('License Compliance'),\n    });\n  }\n\n  if (getters.hasReportItems) {\n    return state.hasLicenseCheckApprovalRule\n      ? getters.summaryTextWithLicenseCheck\n      : getters.summaryTextWithoutLicenseCheck;\n  }\n\n  if (!getters.baseReportHasLicenses) {\n    return s__(\n      'LicenseCompliance|License Compliance detected no licenses for the source branch only',\n    );\n  }\n\n  return s__('LicenseCompliance|License Compliance detected no new licenses');\n};\n\nexport const summaryTextWithLicenseCheck = (_, getters) => {\n  if (!getters.baseReportHasLicenses) {\n    return getters.reportContainsDeniedLicense\n      ? n__(\n          'LicenseCompliance|License Compliance detected %d license and policy violation for the source branch only; approval required',\n          'LicenseCompliance|License Compliance detected %d licenses and policy violations for the source branch only; approval required',\n          getters.licenseReportLength,\n        )\n      : n__(\n          'LicenseCompliance|License Compliance detected %d license for the source branch only',\n          'LicenseCompliance|License Compliance detected %d licenses for the source branch only',\n          getters.licenseReportLength,\n        );\n  }\n\n  return getters.reportContainsDeniedLicense\n    ? n__(\n        'LicenseCompliance|License Compliance detected %d new license and policy violation; approval required',\n        'LicenseCompliance|License Compliance detected %d new licenses and policy violations; approval required',\n        getters.licenseReportLength,\n      )\n    : n__(\n        'LicenseCompliance|License Compliance detected %d new license',\n        'LicenseCompliance|License Compliance detected %d new licenses',\n        getters.licenseReportLength,\n      );\n};\n\nexport const summaryTextWithoutLicenseCheck = (_, getters) => {\n  if (!getters.baseReportHasLicenses) {\n    return getters.reportContainsDeniedLicense\n      ? n__(\n          'LicenseCompliance|License Compliance detected %d license and policy violation',\n          'LicenseCompliance|License Compliance detected %d licenses and policy violations',\n          getters.licenseReportLength,\n        )\n      : n__(\n          'LicenseCompliance|License Compliance detected %d license',\n          'LicenseCompliance|License Compliance detected %d licenses',\n          getters.licenseReportLength,\n        );\n  }\n\n  return getters.reportContainsDeniedLicense\n    ? n__(\n        'LicenseCompliance|License Compliance detected %d new license and policy violation',\n        'LicenseCompliance|License Compliance detected %d new licenses and policy violations',\n        getters.licenseReportLength,\n      )\n    : n__(\n        'LicenseCompliance|License Compliance detected %d new license',\n        'LicenseCompliance|License Compliance detected %d new licenses',\n        getters.licenseReportLength,\n      );\n};\n\nexport const reportContainsDeniedLicense = (_, getters) =>\n  (getters.licenseReport || []).some(\n    (license) => license.approvalStatus === LICENSE_APPROVAL_STATUS.DENIED,\n  );\n","import * as types from './mutation_types';\nimport { normalizeLicense } from './utils';\n\nexport default {\n  [types.SET_API_SETTINGS](state, data) {\n    Object.assign(state, data);\n  },\n  [types.RECEIVE_MANAGED_LICENSES_SUCCESS](state, licenses = []) {\n    const managedLicenses = licenses.map(normalizeLicense).reverse();\n\n    Object.assign(state, {\n      managedLicenses,\n      isLoadingManagedLicenses: false,\n    });\n  },\n  [types.RECEIVE_MANAGED_LICENSES_ERROR](state) {\n    Object.assign(state, {\n      managedLicenses: [],\n      isLoadingManagedLicenses: false,\n    });\n  },\n  [types.REQUEST_MANAGED_LICENSES](state) {\n    Object.assign(state, {\n      isLoadingManagedLicenses: true,\n    });\n  },\n\n  [types.RECEIVE_PARSED_LICENSE_REPORT_SUCCESS](state, { newLicenses, existingLicenses }) {\n    Object.assign(state, {\n      newLicenses,\n      existingLicenses,\n      isLoadingLicenseReport: false,\n      loadLicenseReportError: false,\n    });\n  },\n  [types.RECEIVE_PARSED_LICENSE_REPORT_ERROR](state, error) {\n    Object.assign(state, {\n      isLoadingLicenseReport: false,\n      loadLicenseReportError: error,\n    });\n  },\n  [types.REQUEST_PARSED_LICENSE_REPORT](state) {\n    Object.assign(state, {\n      isLoadingLicenseReport: true,\n    });\n  },\n};\n","import Vue from 'vue';\n// eslint-disable-next-line no-restricted-imports\nimport Vuex from 'vuex';\nimport { LICENSE_MANAGEMENT } from 'ee/vue_shared/license_compliance/store/constants';\nimport * as actions from './actions';\nimport * as getters from './getters';\nimport mutations from './mutations';\nimport createState from './state';\n\nVue.use(Vuex);\n\nexport const licenseManagementModule = () => ({\n  namespaced: true,\n  state: createState(),\n  actions,\n  getters,\n  mutations,\n});\n\nexport const setupStore = (store) => {\n  if (store.hasModule(LICENSE_MANAGEMENT)) {\n    return;\n  }\n  store.registerModule(LICENSE_MANAGEMENT, licenseManagementModule());\n};\n\nexport default () =>\n  new Vuex.Store({\n    modules: {\n      licenseManagement: licenseManagementModule(),\n    },\n  });\n","export default () => ({\n  apiUrlManageLicenses: null,\n  approvalsApiPath: null,\n  licensesApiPath: null,\n  canManageLicenses: false,\n  isLoadingLicenseReport: false,\n  isLoadingManagedLicenses: false,\n  pendingLicenses: [],\n  loadLicenseReportError: false,\n  managedLicenses: [],\n  newLicenses: [],\n  existingLicenses: [],\n  hasLicenseCheckApprovalRule: false,\n  isLoadingLicenseCheckApprovalRule: false,\n});\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mr_widget_license_report.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mr_widget_license_report.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapState, mapGetters, mapActions } from 'vuex';\nimport { GlLink, GlButton } from '@gitlab/ui';\nimport api from '~/api';\nimport { s__ } from '~/locale';\nimport { InternalEvents } from '~/tracking';\nimport { componentNames, iconComponentNames } from 'ee/ci/reports/components/issue_body';\nimport { LICENSE_MANAGEMENT } from 'ee/vue_shared/license_compliance/store/constants';\nimport reportsMixin from 'ee/vue_shared/security_reports/mixins/reports_mixin';\nimport SbomReportsErrorsAlert from 'ee/dependencies/components/sbom_reports_errors_alert.vue';\nimport ReportItem from '~/ci/reports/components/report_item.vue';\nimport ReportSection from '~/ci/reports/components/report_section.vue';\nimport SmartVirtualList from '~/vue_shared/components/smart_virtual_list.vue';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\nimport { setupStore } from './store';\n\nexport default {\n  name: 'MrWidgetLicenses',\n  componentNames,\n  iconComponentNames,\n  components: {\n    GlButton,\n    GlLink,\n    ReportItem,\n    ReportSection,\n    SmartVirtualList,\n    HelpIcon,\n    SbomReportsErrorsAlert,\n  },\n  mixins: [reportsMixin, InternalEvents.mixin()],\n  props: {\n    fullReportPath: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    apiUrl: {\n      type: String,\n      required: true,\n    },\n    licensesApiPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    approvalsApiPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    canManageLicenses: {\n      type: Boolean,\n      required: true,\n    },\n    reportSectionClass: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    alwaysOpen: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    licenseComplianceDocsPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    securityPoliciesPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    sbomReportsErrors: {\n      type: Array,\n      required: true,\n    },\n  },\n  typicalReportItemHeight: 26,\n  maxShownReportItems: 20,\n  computed: {\n    ...mapState(LICENSE_MANAGEMENT, ['loadLicenseReportError']),\n    ...mapGetters(LICENSE_MANAGEMENT, [\n      'licenseReport',\n      'isLoading',\n      'licenseSummaryText',\n      'reportContainsDeniedLicense',\n      'licenseReportGroups',\n    ]),\n    hasLicenseReportIssues() {\n      const { licenseReport } = this;\n      return licenseReport && licenseReport.length > 0;\n    },\n    licenseReportStatus() {\n      return this.checkReportStatus(this.isLoading, this.loadLicenseReportError);\n    },\n    showActionButtons() {\n      return this.securityPoliciesPath !== null || this.fullReportPath !== null;\n    },\n    showSbomErrors() {\n      return this.sbomReportsErrors.length > 0;\n    },\n  },\n  i18n: {\n    sbomReportsErrorsDescription: s__(\n      'LicenseScanningReport|The following SBOM reports could not be parsed. Therefore the list of components and their licenses may be incomplete.',\n    ),\n  },\n  watch: {\n    licenseReport() {\n      this.$emit('updateBadgeCount', this.licenseReport.length);\n    },\n  },\n  beforeCreate() {\n    setupStore(this.$store);\n  },\n  mounted() {\n    const { apiUrl, canManageLicenses, licensesApiPath, approvalsApiPath } = this;\n\n    this.setAPISettings({\n      apiUrlManageLicenses: apiUrl,\n      canManageLicenses,\n      licensesApiPath,\n      approvalsApiPath,\n    });\n\n    this.fetchParsedLicenseReport();\n  },\n  methods: {\n    trackVisitedPath(trackAction) {\n      api.trackRedisHllUserEvent(trackAction);\n    },\n    trackFullReportClick() {\n      api.trackRedisHllUserEvent('users_visiting_testing_license_compliance_full_report');\n      this.trackEvent('click_full_report_license_compliance');\n    },\n    ...mapActions(LICENSE_MANAGEMENT, ['setAPISettings', 'fetchParsedLicenseReport']),\n  },\n};\n</script>\n<template>\n  <div>\n    <sbom-reports-errors-alert\n      v-if=\"showSbomErrors\"\n      :errors=\"sbomReportsErrors\"\n      :error-description=\"$options.i18n.sbomReportsErrorsDescription\"\n      class=\"gl-mt-5\"\n    />\n\n    <report-section\n      :status=\"licenseReportStatus\"\n      :loading-text=\"licenseSummaryText\"\n      :error-text=\"licenseSummaryText\"\n      :neutral-issues=\"licenseReport\"\n      :has-issues=\"hasLicenseReportIssues\"\n      :component=\"$options.componentNames.LicenseIssueBody\"\n      :class=\"reportSectionClass\"\n      track-action=\"users_expanding_testing_license_compliance_report\"\n      :always-open=\"alwaysOpen\"\n      class=\"license-report-widget mr-report\"\n    >\n      <template #body>\n        <smart-virtual-list\n          ref=\"reportSectionBody\"\n          :size=\"$options.typicalReportItemHeight\"\n          :length=\"licenseReport.length\"\n          :remain=\"$options.maxShownReportItems\"\n          class=\"report-block-container\"\n          wtag=\"ul\"\n          wclass=\"report-block-list my-1\"\n        >\n          <template v-for=\"(licenseReportGroup, index) in licenseReportGroups\">\n            <li\n              :key=\"licenseReportGroup.name\"\n              :class=\"['mx-1', 'mb-1', index > 0 ? 'mt-3' : '']\"\n              data-testid=\"report-heading\"\n            >\n              <h2 class=\"h5 m-0\">{{ licenseReportGroup.name }}</h2>\n              <p class=\"m-0\">{{ licenseReportGroup.description }}</p>\n            </li>\n            <report-item\n              v-for=\"license in licenseReportGroup.licenses\"\n              :key=\"license.name\"\n              :issue=\"license\"\n              :status-icon-size=\"12\"\n              :status=\"license.status\"\n              :component=\"$options.componentNames.LicenseIssueBody\"\n              :icon-component=\"$options.iconComponentNames.LicenseStatusIcon\"\n              :show-report-section-status-icon=\"true\"\n              class=\"gl-m-2\"\n            />\n          </template>\n        </smart-virtual-list>\n      </template>\n      <template #success>\n        <div class=\"pr-3\">\n          {{ licenseSummaryText }}\n          <gl-link\n            v-if=\"reportContainsDeniedLicense && licenseComplianceDocsPath\"\n            :href=\"licenseComplianceDocsPath\"\n            data-testid=\"security-approval-help-link\"\n            target=\"_blank\"\n          >\n            <help-icon />\n          </gl-link>\n        </div>\n      </template>\n      <template v-if=\"showActionButtons\" #action-buttons=\"{ isCollapsible }\">\n        <gl-button\n          v-if=\"fullReportPath\"\n          :href=\"fullReportPath\"\n          class=\"gl-mr-3\"\n          icon=\"external-link\"\n          target=\"_blank\"\n          data-testid=\"full-report-button\"\n          @click=\"trackFullReportClick\"\n        >\n          {{ s__('ciReport|View full report') }}\n        </gl-button>\n        <gl-button\n          v-if=\"securityPoliciesPath\"\n          data-testid=\"manage-licenses-button\"\n          :class=\"{ 'gl-mr-3': isCollapsible }\"\n          :href=\"securityPoliciesPath\"\n          @click=\"trackVisitedPath('users_visiting_testing_manage_license_compliance')\"\n        >\n          {{ s__('ciReport|Manage licenses') }}\n        </gl-button>\n      </template>\n    </report-section>\n  </div>\n</template>\n","export const LICENSE_MANAGEMENT = 'licenseManagement';\n","import { render, staticRenderFns } from \"./mr_widget_license_report.vue?vue&type=template&id=2a0dc385\"\nimport script from \"./mr_widget_license_report.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_license_report.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","export const parseCodeclimateMetrics = (issues = [], blobPath = '') => {\n  return issues.map((issue) => {\n    // the `file_path` attribute from the artifact is returned as `file` by GraphQL\n    const issuePath = issue.file_path || issue.path;\n    const parsedIssue = {\n      name: issue.description,\n      path: issuePath,\n      urlPath: `${blobPath}/${issuePath}#L${issue.line}`,\n      ...issue,\n    };\n\n    if (issue?.location?.path) {\n      let parseCodeQualityUrl = `${blobPath}/${issue.location.path}`;\n      parsedIssue.path = issue.location.path;\n\n      if (issue?.location?.lines?.begin) {\n        parsedIssue.line = issue.location.lines.begin;\n        parseCodeQualityUrl += `#L${issue.location.lines.begin}`;\n      } else if (issue?.location?.positions?.begin?.line) {\n        parsedIssue.line = issue.location.positions.begin.line;\n        parseCodeQualityUrl += `#L${issue.location.positions.begin.line}`;\n      }\n\n      parsedIssue.urlPath = parseCodeQualityUrl;\n    }\n\n    return parsedIssue;\n  });\n};\n","<script>\nimport { GlSkeletonLoader, GlInfiniteScroll, GlLoadingIcon, GlSprintf } from '@gitlab/ui';\nimport { once } from 'lodash';\nimport produce from 'immer';\nimport api from '~/api';\nimport { componentNames } from 'ee/ci/reports/components/issue_body';\nimport reportsMixin from 'ee/vue_shared/security_reports/mixins/reports_mixin';\nimport { n__, s__, sprintf } from '~/locale';\nimport ReportSection from '~/ci/reports/components/report_section.vue';\nimport CodequalityIssueBody from '~/ci/reports/codequality_report/components/codequality_issue_body.vue';\nimport { parseCodeclimateMetrics } from '~/ci/reports/codequality_report/utils/codequality_parser';\nimport getCodeQualityViolations from './graphql/queries/get_code_quality_violations.query.graphql';\nimport { PAGE_SIZE, VIEW_EVENT_NAME } from './constants';\n\nexport default {\n  components: {\n    ReportSection,\n    CodequalityIssueBody,\n    GlSkeletonLoader,\n    GlInfiniteScroll,\n    GlLoadingIcon,\n    GlSprintf,\n  },\n  mixins: [reportsMixin],\n  componentNames,\n  inject: ['projectPath', 'pipelineIid', 'blobPath'],\n  apollo: {\n    codequalityViolations: {\n      query: getCodeQualityViolations,\n      variables() {\n        return {\n          projectPath: this.projectPath,\n          iid: this.pipelineIid,\n          first: PAGE_SIZE,\n        };\n      },\n      update({\n        project: {\n          pipeline: { codeQualityReports: { nodes = [], pageInfo = {}, count = 0 } = {} } = {},\n        } = {},\n      }) {\n        return {\n          nodes,\n          parsedList: parseCodeclimateMetrics(nodes, this.blobPath),\n          count,\n          pageInfo,\n        };\n      },\n      error() {\n        this.errored = true;\n      },\n      watchLoading(isLoading) {\n        if (isLoading) {\n          this.trackViewEvent();\n        }\n      },\n    },\n  },\n  data() {\n    return {\n      codequalityViolations: {\n        nodes: [],\n        parsedList: [],\n        count: 0,\n        pageInfo: {},\n      },\n      errored: false,\n    };\n  },\n  computed: {\n    isLoading() {\n      return this.$apollo.queries.codequalityViolations.loading;\n    },\n    hasCodequalityViolations() {\n      return this.codequalityViolations.count > 0;\n    },\n    trackViewEvent() {\n      return once(() => {\n        api.trackRedisHllUserEvent(VIEW_EVENT_NAME);\n      });\n    },\n    codequalityText() {\n      const text = [];\n      const { count } = this.codequalityViolations;\n\n      if (count === 0) {\n        return s__('ciReport|No code quality issues found');\n      }\n      if (count > 0) {\n        return sprintf(s__('ciReport|Found %{issuesWithCount}'), {\n          issuesWithCount: n__('%d code quality issue', '%d code quality issues', count),\n        });\n      }\n\n      return text.join('');\n    },\n    codequalityStatus() {\n      return this.checkReportStatus(this.isLoading && !this.hasCodequalityViolations, this.errored);\n    },\n  },\n  watch: {\n    codequalityViolations() {\n      this.$emit('updateBadgeCount', this.codequalityViolations.count);\n    },\n  },\n  i18n: {\n    subHeading: s__('ciReport|This report contains all Code Quality issues in the source branch.'),\n    loadingText: s__('ciReport|Loading Code Quality report'),\n    errorText: s__('ciReport|Failed to load Code Quality report'),\n    showingCount: s__('ciReport|Showing %{fetchedItems} of %{totalItems} items'),\n  },\n  methods: {\n    fetchMoreViolations() {\n      if (!this.codequalityViolations.pageInfo.endCursor) {\n        return; // stop fetching if endCursor is null\n      }\n\n      this.$apollo.queries.codequalityViolations\n        .fetchMore({\n          variables: {\n            first: PAGE_SIZE,\n            after: this.codequalityViolations.pageInfo.endCursor,\n          },\n          updateQuery: (previousResult, { fetchMoreResult }) => {\n            return produce(fetchMoreResult, (draftData) => {\n              draftData.project.pipeline.codeQualityReports.nodes = [\n                ...previousResult.project.pipeline.codeQualityReports.nodes,\n                ...draftData.project.pipeline.codeQualityReports.nodes,\n              ];\n            });\n          },\n        })\n        .catch(() => {\n          this.errored = true;\n        });\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <report-section\n      always-open\n      :status=\"codequalityStatus\"\n      :loading-text=\"$options.i18n.loadingText\"\n      :error-text=\"$options.i18n.errorText\"\n      :success-text=\"codequalityText\"\n      :unresolved-issues=\"codequalityViolations.parsedList\"\n      :resolved-issues=\"[] /* eslint-disable-line @gitlab/vue-no-new-non-primitive-in-template */\"\n      :has-issues=\"hasCodequalityViolations\"\n      :component=\"$options.componentNames.CodequalityIssueBody\"\n      class=\"codequality-report\"\n    >\n      <template v-if=\"hasCodequalityViolations\" #sub-heading>{{\n        $options.i18n.subHeading\n      }}</template>\n      <template #body>\n        <gl-infinite-scroll\n          :max-list-height=\"500\"\n          :fetched-items=\"codequalityViolations.parsedList.length\"\n          :total-items=\"codequalityViolations.count\"\n          @bottomReached=\"fetchMoreViolations\"\n        >\n          <template #items>\n            <div class=\"report-block-container\">\n              <template v-for=\"(issue, index) in codequalityViolations.parsedList\">\n                <codequality-issue-body\n                  :key=\"index\"\n                  :issue=\"issue\"\n                  class=\"report-block-list-issue\"\n                />\n              </template>\n            </div>\n          </template>\n          <template #default>\n            <div class=\"gl-mt-3\">\n              <gl-loading-icon v-if=\"isLoading\" />\n              <gl-sprintf v-else :message=\"$options.i18n.showingCount\"\n                ><template #fetchedItems>{{ codequalityViolations.parsedList.length }}</template\n                ><template #totalItems>{{ codequalityViolations.count }}</template></gl-sprintf\n              >\n            </div>\n          </template>\n        </gl-infinite-scroll>\n      </template>\n    </report-section>\n    <div v-if=\"isLoading && !hasCodequalityViolations\" class=\"report-block-container\">\n      <gl-skeleton-loader :lines=\"36\" />\n    </div>\n  </div>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./codequality_report.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./codequality_report.vue?vue&type=script&lang=js\"","export const VIEW_EVENT_NAME = 'i_testing_full_code_quality_report_total';\n\nexport const PAGE_SIZE = 25;\n","import { render, staticRenderFns } from \"./codequality_report.vue?vue&type=template&id=5ef75020\"\nimport script from \"./codequality_report.vue?vue&type=script&lang=js\"\nexport * from \"./codequality_report.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('report-section',{staticClass:\"codequality-report\",attrs:{\"always-open\":\"\",\"status\":_vm.codequalityStatus,\"loading-text\":_vm.$options.i18n.loadingText,\"error-text\":_vm.$options.i18n.errorText,\"success-text\":_vm.codequalityText,\"unresolved-issues\":_vm.codequalityViolations.parsedList,\"resolved-issues\":[] /* eslint-disable-line @gitlab/vue-no-new-non-primitive-in-template */,\"has-issues\":_vm.hasCodequalityViolations,\"component\":_vm.$options.componentNames.CodequalityIssueBody},scopedSlots:_vm._u([(_vm.hasCodequalityViolations)?{key:\"sub-heading\",fn:function(){return [_vm._v(_vm._s(_vm.$options.i18n.subHeading))]},proxy:true}:null,{key:\"body\",fn:function(){return [_c('gl-infinite-scroll',{attrs:{\"max-list-height\":500,\"fetched-items\":_vm.codequalityViolations.parsedList.length,\"total-items\":_vm.codequalityViolations.count},on:{\"bottomReached\":_vm.fetchMoreViolations},scopedSlots:_vm._u([{key:\"items\",fn:function(){return [_c('div',{staticClass:\"report-block-container\"},[_vm._l((_vm.codequalityViolations.parsedList),function(issue,index){return [_c('codequality-issue-body',{key:index,staticClass:\"report-block-list-issue\",attrs:{\"issue\":issue}})]})],2)]},proxy:true},{key:\"default\",fn:function(){return [_c('div',{staticClass:\"gl-mt-3\"},[(_vm.isLoading)?_c('gl-loading-icon'):_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.showingCount},scopedSlots:_vm._u([{key:\"fetchedItems\",fn:function(){return [_vm._v(_vm._s(_vm.codequalityViolations.parsedList.length))]},proxy:true},{key:\"totalItems\",fn:function(){return [_vm._v(_vm._s(_vm.codequalityViolations.count))]},proxy:true}])})],1)]},proxy:true}])})]},proxy:true}],null,true)}),_vm._v(\" \"),(_vm.isLoading && !_vm.hasCodequalityViolations)?_c('div',{staticClass:\"report-block-container\"},[_c('gl-skeleton-loader',{attrs:{\"lines\":36}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./graph_view_selector.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./graph_view_selector.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert, GlButton, GlButtonGroup, GlLoadingIcon, GlToggle } from '@gitlab/ui';\nimport { __, s__ } from '~/locale';\nimport { STAGE_VIEW, LAYER_VIEW } from '../constants';\n\nexport default {\n  name: 'GraphViewSelector',\n  components: {\n    GlAlert,\n    GlButton,\n    GlButtonGroup,\n    GlLoadingIcon,\n    GlToggle,\n  },\n  props: {\n    showLinks: {\n      type: Boolean,\n      required: true,\n    },\n    tipPreviouslyDismissed: {\n      type: Boolean,\n      required: true,\n    },\n    type: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      hoverTipDismissed: false,\n      isToggleLoading: false,\n      isSwitcherLoading: false,\n      segmentSelectedType: this.type,\n      showLinksActive: false,\n    };\n  },\n  i18n: {\n    hoverTipText: __('Tip: Hover over a job to see the jobs it depends on to run.'),\n    linksLabelText: s__('GraphViewType|Show dependencies'),\n    viewLabelText: __('Group jobs by'),\n  },\n  views: {\n    [STAGE_VIEW]: {\n      type: STAGE_VIEW,\n      text: {\n        primary: s__('GraphViewType|Stage'),\n      },\n    },\n    [LAYER_VIEW]: {\n      type: LAYER_VIEW,\n      text: {\n        primary: s__('GraphViewType|Job dependencies'),\n      },\n    },\n  },\n  computed: {\n    showLinksToggle() {\n      return this.segmentSelectedType === LAYER_VIEW;\n    },\n    showTip() {\n      return (\n        this.showLinksToggle &&\n        this.showLinks &&\n        this.showLinksActive &&\n        !this.tipPreviouslyDismissed &&\n        !this.hoverTipDismissed\n      );\n    },\n    viewTypesList() {\n      return Object.keys(this.$options.views).map((key) => {\n        return {\n          value: key,\n          text: this.$options.views[key].text.primary,\n        };\n      });\n    },\n  },\n  watch: {\n    /*\n      How does this reset the loading? As we note in the methods comment below,\n      the loader is set to on before the update work is undertaken (in the parent).\n      Once the work is complete, one of these values will change, since that's the\n      point of the work. When that happens, the related value will update and we are done.\n\n      The bonus for this approach is that it works the same whichever \"direction\"\n      the work goes in.\n    */\n    showLinks() {\n      this.isToggleLoading = false;\n    },\n    type() {\n      this.isSwitcherLoading = false;\n    },\n  },\n  methods: {\n    dismissTip() {\n      this.hoverTipDismissed = true;\n      this.$emit('dismissHoverTip');\n    },\n    isCurrentType(type) {\n      return this.segmentSelectedType === type;\n    },\n    /*\n      In both toggle methods, we use setTimeout so that the loading indicator displays,\n      then the work is done to update the DOM. The process is:\n        → user clicks\n        → call stack: set loading to true\n        → render: the loading icon appears on the screen\n        → callback queue: now do the work to calculate the new view / links\n          (note: this work is done in the parent after the event is emitted)\n\n      setTimeout is how we move the work to the callback queue.\n      We can't use nextTick because that is called before the render loop.\n\n     See https://www.hesselinkwebdesign.nl/2019/nexttick-vs-settimeout-in-vue/ for more details.\n    */\n    setViewType(type) {\n      if (!this.isCurrentType(type)) {\n        this.isSwitcherLoading = true;\n        this.segmentSelectedType = type;\n        setTimeout(() => {\n          this.$emit('updateViewType', type);\n        });\n      }\n    },\n    toggleShowLinksActive(val) {\n      this.isToggleLoading = true;\n      setTimeout(() => {\n        this.$emit('updateShowLinksState', val);\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div class=\"gl-relative gl-my-4 gl-flex gl-flex-wrap gl-items-center sm:gl-flex-nowrap\">\n      <gl-loading-icon\n        v-if=\"isSwitcherLoading\"\n        data-testid=\"switcher-loading-state\"\n        class=\"gl-absolute gl-z-2 gl-w-full gl-bg-white gl-opacity-5\"\n        size=\"lg\"\n      />\n      <span class=\"gl-font-bold\">{{ $options.i18n.viewLabelText }}</span>\n      <gl-button-group class=\"gl-mx-4\">\n        <gl-button\n          v-for=\"viewType in viewTypesList\"\n          :key=\"viewType.value\"\n          :selected=\"isCurrentType(viewType.value)\"\n          @click=\"setViewType(viewType.value)\"\n        >\n          {{ viewType.text }}\n        </gl-button>\n      </gl-button-group>\n\n      <div v-if=\"showLinksToggle\" class=\"gl-flex gl-items-center\">\n        <gl-toggle\n          v-model=\"showLinksActive\"\n          data-testid=\"show-links-toggle\"\n          class=\"gl-sm-ml-4 gl-mt-4 sm:gl-mt-0\"\n          :label=\"$options.i18n.linksLabelText\"\n          :is-loading=\"isToggleLoading\"\n          label-position=\"left\"\n          @change=\"toggleShowLinksActive\"\n        />\n      </div>\n    </div>\n    <gl-alert v-if=\"showTip\" class=\"gl-my-5\" variant=\"tip\" @dismiss=\"dismissTip\">\n      {{ $options.i18n.hoverTipText }}\n    </gl-alert>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./graph_view_selector.vue?vue&type=template&id=4e8e093b\"\nimport script from \"./graph_view_selector.vue?vue&type=script&lang=js\"\nexport * from \"./graph_view_selector.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"gl-relative gl-my-4 gl-flex gl-flex-wrap gl-items-center sm:gl-flex-nowrap\"},[(_vm.isSwitcherLoading)?_c('gl-loading-icon',{staticClass:\"gl-absolute gl-z-2 gl-w-full gl-bg-white gl-opacity-5\",attrs:{\"data-testid\":\"switcher-loading-state\",\"size\":\"lg\"}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(_vm.$options.i18n.viewLabelText))]),_vm._v(\" \"),_c('gl-button-group',{staticClass:\"gl-mx-4\"},_vm._l((_vm.viewTypesList),function(viewType){return _c('gl-button',{key:viewType.value,attrs:{\"selected\":_vm.isCurrentType(viewType.value)},on:{\"click\":function($event){return _vm.setViewType(viewType.value)}}},[_vm._v(\"\\n        \"+_vm._s(viewType.text)+\"\\n      \")])}),1),_vm._v(\" \"),(_vm.showLinksToggle)?_c('div',{staticClass:\"gl-flex gl-items-center\"},[_c('gl-toggle',{staticClass:\"gl-sm-ml-4 gl-mt-4 sm:gl-mt-0\",attrs:{\"data-testid\":\"show-links-toggle\",\"label\":_vm.$options.i18n.linksLabelText,\"is-loading\":_vm.isToggleLoading,\"label-position\":\"left\"},on:{\"change\":_vm.toggleShowLinksActive},model:{value:(_vm.showLinksActive),callback:function ($$v) {_vm.showLinksActive=$$v},expression:\"showLinksActive\"}})],1):_vm._e()],1),_vm._v(\" \"),(_vm.showTip)?_c('gl-alert',{staticClass:\"gl-my-5\",attrs:{\"variant\":\"tip\"},on:{\"dismiss\":_vm.dismissTip}},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.hoverTipText)+\"\\n  \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlAlert, GlLoadingIcon, GlSprintf } from '@gitlab/ui';\nimport getPipelineDetails from 'shared_queries/pipelines/get_pipeline_details.query.graphql';\nimport getUserCallouts from '~/graphql_shared/queries/get_user_callouts.query.graphql';\nimport { __, s__ } from '~/locale';\nimport LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue';\nimport { DEFAULT, DRAW_FAILURE, LOAD_FAILURE } from '~/ci/pipeline_details/constants';\nimport getPipelineQuery from '~/ci/pipeline_details/header/graphql/queries/get_pipeline_header_data.query.graphql';\nimport { reportToSentry } from '~/ci/utils';\nimport DismissPipelineGraphCallout from './graphql/mutations/dismiss_pipeline_notification.graphql';\nimport {\n  ACTION_FAILURE,\n  IID_FAILURE,\n  LAYER_VIEW,\n  SKIP_RETRY_MODAL_KEY,\n  STAGE_VIEW,\n  VIEW_TYPE_KEY,\n  POLL_INTERVAL,\n} from './constants';\nimport PipelineGraph from './components/graph_component.vue';\nimport GraphViewSelector from './components/graph_view_selector.vue';\nimport {\n  calculatePipelineLayersInfo,\n  getQueryHeaders,\n  serializeLoadErrors,\n  toggleQueryPollingByVisibility,\n  unwrapPipelineData,\n} from './utils';\n\nconst featureName = 'pipeline_needs_hover_tip';\nconst enumFeatureName = featureName.toUpperCase();\n\nexport default {\n  name: 'PipelineGraphWrapper',\n  components: {\n    GlAlert,\n    GlLoadingIcon,\n    GlSprintf,\n    GraphViewSelector,\n    LocalStorageSync,\n    PipelineGraph,\n  },\n  inject: {\n    graphqlResourceEtag: {\n      default: '',\n    },\n    metricsPath: {\n      default: '',\n    },\n    pipelineIid: {\n      default: '',\n    },\n    pipelineProjectPath: {\n      default: '',\n    },\n  },\n  data() {\n    return {\n      alertType: null,\n      callouts: [],\n      computedPipelineInfo: null,\n      currentViewType: STAGE_VIEW,\n      canRefetchHeaderPipeline: false,\n      pipeline: null,\n      skipRetryModal: false,\n      showAlert: false,\n      showJobCountWarning: false,\n      showLinks: false,\n    };\n  },\n  errors: {\n    [ACTION_FAILURE]: {\n      text: __('An error occurred while performing this action.'),\n      variant: 'danger',\n    },\n    [DRAW_FAILURE]: {\n      text: __('An error occurred while drawing job relationship links.'),\n      variant: 'danger',\n    },\n    [IID_FAILURE]: {\n      text: __(\n        'The data in this pipeline is too old to be rendered as a graph. Please check the Jobs tab to access historical data.',\n      ),\n      variant: 'info',\n    },\n    [LOAD_FAILURE]: {\n      text: __('Currently unable to fetch data for this pipeline.'),\n      variant: 'danger',\n    },\n    [DEFAULT]: {\n      text: __('An unknown error occurred while loading this graph.'),\n      variant: 'danger',\n    },\n  },\n  apollo: {\n    callouts: {\n      query: getUserCallouts,\n      update(data) {\n        return data?.currentUser?.callouts?.nodes.map((callout) => callout.featureName) || [];\n      },\n      error(err) {\n        reportToSentry(\n          this.$options.name,\n          `type: callout_load_failure, info: ${serializeLoadErrors(err)}`,\n        );\n      },\n    },\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    headerPipeline: {\n      query: getPipelineQuery,\n      // this query is already being called in pipeline_header.vue, which shares the same cache as this component\n      // the skip here is to prevent sending double network requests on page load\n      skip() {\n        return !this.canRefetchHeaderPipeline;\n      },\n      variables() {\n        return {\n          fullPath: this.pipelineProjectPath,\n          iid: this.pipelineIid,\n        };\n      },\n      update(data) {\n        return data.project?.pipeline || {};\n      },\n      error() {\n        this.reportFailure({ type: LOAD_FAILURE, skipSentry: true });\n      },\n    },\n    pipeline: {\n      context() {\n        return getQueryHeaders(this.graphqlResourceEtag);\n      },\n      query: getPipelineDetails,\n      pollInterval: POLL_INTERVAL,\n      variables() {\n        return {\n          projectPath: this.pipelineProjectPath,\n          iid: this.pipelineIid,\n        };\n      },\n      skip() {\n        return !(this.pipelineProjectPath && this.pipelineIid);\n      },\n      update(data) {\n        /*\n          This check prevents the pipeline from being overwritten\n          when a poll times out and the data returned is empty.\n          This can be removed once the timeout behavior is updated.\n          See: https://gitlab.com/gitlab-org/gitlab/-/issues/323213.\n        */\n\n        if (!data?.project?.pipeline) {\n          return this.pipeline;\n        }\n\n        return unwrapPipelineData(this.pipelineProjectPath, JSON.parse(JSON.stringify(data)));\n      },\n      error(err) {\n        this.reportFailure({ type: LOAD_FAILURE, skipSentry: true });\n\n        reportToSentry(this.$options.name, new Error(err));\n      },\n      result({ data, error }) {\n        const stages = data?.project?.pipeline?.stages?.nodes || [];\n\n        this.showJobCountWarning = stages.some((stage) => {\n          return stage.groups.nodes.length >= 100;\n        });\n        /*\n          If there is a successful load after a failure, clear\n          the failure notification to avoid confusion.\n        */\n        if (!error && this.alertType === LOAD_FAILURE) {\n          this.hideAlert();\n        }\n      },\n    },\n  },\n  computed: {\n    alert() {\n      const { errors } = this.$options;\n\n      return {\n        text: errors[this.alertType]?.text ?? errors[DEFAULT].text,\n        variant: errors[this.alertType]?.variant ?? errors[DEFAULT].variant,\n      };\n    },\n    configPaths() {\n      return {\n        graphqlResourceEtag: this.graphqlResourceEtag,\n        metricsPath: this.metricsPath,\n      };\n    },\n    graphViewType() {\n      /* This prevents reading view type off the localStorage value if it does not apply. */\n      return this.showGraphViewSelector ? this.currentViewType : STAGE_VIEW;\n    },\n    hoverTipPreviouslyDismissed() {\n      return this.callouts.includes(enumFeatureName);\n    },\n    showLoadingIcon() {\n      /*\n        Shows the icon only when the graph is empty, not when it is is\n        being refetched, for instance, on action completion\n      */\n      return this.$apollo.queries.pipeline.loading && !this.pipeline;\n    },\n    showGraphViewSelector() {\n      return this.pipeline?.usesNeeds;\n    },\n  },\n  mounted() {\n    if (!this.pipelineIid) {\n      this.reportFailure({ type: IID_FAILURE, skipSentry: true });\n    }\n    toggleQueryPollingByVisibility(this.$apollo.queries.pipeline);\n    this.skipRetryModal = Boolean(JSON.parse(localStorage.getItem(SKIP_RETRY_MODAL_KEY)));\n  },\n  methods: {\n    getPipelineInfo() {\n      if (this.currentViewType === LAYER_VIEW && !this.computedPipelineInfo) {\n        this.computedPipelineInfo = calculatePipelineLayersInfo(\n          this.pipeline,\n          this.$options.name,\n          this.metricsPath,\n        );\n      }\n\n      return this.computedPipelineInfo;\n    },\n    handleTipDismissal() {\n      try {\n        this.$apollo.mutate({\n          mutation: DismissPipelineGraphCallout,\n          variables: {\n            featureName,\n          },\n        });\n      } catch (err) {\n        reportToSentry(this.$options.name, `type: callout_dismiss_failure, info: ${err}`);\n      }\n    },\n    hideAlert() {\n      this.showAlert = false;\n      this.alertType = null;\n    },\n    refreshPipelineGraph() {\n      this.$apollo.queries.pipeline.refetch();\n\n      // this will update the status in header_component since they share the same cache\n      this.canRefetchHeaderPipeline = true;\n      this.$apollo.queries.headerPipeline.refetch();\n    },\n    // eslint-disable-next-line @gitlab/require-i18n-strings\n    reportFailure({ type, err = 'No error string passed.', skipSentry = false }) {\n      this.showAlert = true;\n      this.alertType = type;\n      if (!skipSentry) {\n        reportToSentry(this.$options.name, `type: ${type}, info: ${err}`);\n      }\n    },\n    updateShowLinksState(val) {\n      this.showLinks = val;\n    },\n    setSkipRetryModal() {\n      this.skipRetryModal = true;\n    },\n    updateViewType(type) {\n      this.currentViewType = type;\n    },\n  },\n  i18n: {\n    jobLimitWarning: {\n      title: s__('Pipeline|Only the first 100 jobs per stage are displayed'),\n      desc: s__('Pipeline|To see the remaining jobs, go to the %{boldStart}Jobs%{boldEnd} tab.'),\n    },\n  },\n  viewTypeKey: VIEW_TYPE_KEY,\n};\n</script>\n<template>\n  <div>\n    <gl-alert\n      v-if=\"showAlert\"\n      :variant=\"alert.variant\"\n      data-testid=\"error-alert\"\n      @dismiss=\"hideAlert\"\n    >\n      {{ alert.text }}\n    </gl-alert>\n    <gl-alert\n      v-if=\"showJobCountWarning\"\n      variant=\"warning\"\n      :dismissible=\"false\"\n      :title=\"$options.i18n.jobLimitWarning.title\"\n      data-testid=\"job-count-warning\"\n    >\n      <gl-sprintf :message=\"$options.i18n.jobLimitWarning.desc\">\n        <template #bold=\"{ content }\">\n          <b>{{ content }}</b>\n        </template>\n      </gl-sprintf>\n    </gl-alert>\n    <local-storage-sync\n      :storage-key=\"$options.viewTypeKey\"\n      :value=\"currentViewType\"\n      as-string\n      @input=\"updateViewType\"\n    >\n      <graph-view-selector\n        v-if=\"showGraphViewSelector\"\n        :type=\"graphViewType\"\n        :show-links=\"showLinks\"\n        :tip-previously-dismissed=\"hoverTipPreviouslyDismissed\"\n        @dismissHoverTip=\"handleTipDismissal\"\n        @updateViewType=\"updateViewType\"\n        @updateShowLinksState=\"updateShowLinksState\"\n      />\n    </local-storage-sync>\n    <gl-loading-icon v-if=\"showLoadingIcon\" class=\"gl-mx-auto gl-my-4\" size=\"lg\" />\n    <pipeline-graph\n      v-if=\"pipeline\"\n      :config-paths=\"configPaths\"\n      :pipeline=\"pipeline\"\n      :computed-pipeline-info=\"getPipelineInfo()\"\n      :skip-retry-modal=\"skipRetryModal\"\n      :show-links=\"showLinks\"\n      :view-type=\"graphViewType\"\n      @error=\"reportFailure\"\n      @refreshPipelineGraph=\"refreshPipelineGraph\"\n      @setSkipRetryModal=\"setSkipRetryModal\"\n    />\n  </div>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./graph_component_wrapper.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./graph_component_wrapper.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./graph_component_wrapper.vue?vue&type=template&id=061d2e8d\"\nimport script from \"./graph_component_wrapper.vue?vue&type=script&lang=js\"\nexport * from \"./graph_component_wrapper.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.showAlert)?_c('gl-alert',{attrs:{\"variant\":_vm.alert.variant,\"data-testid\":\"error-alert\"},on:{\"dismiss\":_vm.hideAlert}},[_vm._v(\"\\n    \"+_vm._s(_vm.alert.text)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),(_vm.showJobCountWarning)?_c('gl-alert',{attrs:{\"variant\":\"warning\",\"dismissible\":false,\"title\":_vm.$options.i18n.jobLimitWarning.title,\"data-testid\":\"job-count-warning\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.jobLimitWarning.desc},scopedSlots:_vm._u([{key:\"bold\",fn:function({ content }){return [_c('b',[_vm._v(_vm._s(content))])]}}],null,false,2964678890)})],1):_vm._e(),_vm._v(\" \"),_c('local-storage-sync',{attrs:{\"storage-key\":_vm.$options.viewTypeKey,\"value\":_vm.currentViewType,\"as-string\":\"\"},on:{\"input\":_vm.updateViewType}},[(_vm.showGraphViewSelector)?_c('graph-view-selector',{attrs:{\"type\":_vm.graphViewType,\"show-links\":_vm.showLinks,\"tip-previously-dismissed\":_vm.hoverTipPreviouslyDismissed},on:{\"dismissHoverTip\":_vm.handleTipDismissal,\"updateViewType\":_vm.updateViewType,\"updateShowLinksState\":_vm.updateShowLinksState}}):_vm._e()],1),_vm._v(\" \"),(_vm.showLoadingIcon)?_c('gl-loading-icon',{staticClass:\"gl-mx-auto gl-my-4\",attrs:{\"size\":\"lg\"}}):_vm._e(),_vm._v(\" \"),(_vm.pipeline)?_c('pipeline-graph',{attrs:{\"config-paths\":_vm.configPaths,\"pipeline\":_vm.pipeline,\"computed-pipeline-info\":_vm.getPipelineInfo(),\"skip-retry-modal\":_vm.skipRetryModal,\"show-links\":_vm.showLinks,\"view-type\":_vm.graphViewType},on:{\"error\":_vm.reportFailure,\"refreshPipelineGraph\":_vm.refreshPipelineGraph,\"setSkipRetryModal\":_vm.setSkipRetryModal}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./failed_jobs_table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./failed_jobs_table.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlLink, GlTableLite } from '@gitlab/ui';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { __, s__ } from '~/locale';\nimport { createAlert } from '~/alert';\nimport { reportToSentry } from '~/ci/utils';\nimport Tracking from '~/tracking';\nimport { visitUrl } from '~/lib/utils/url_utility';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport { TRACKING_CATEGORIES } from '~/ci/constants';\nimport RetryFailedJobMutation from '../graphql/mutations/retry_failed_job.mutation.graphql';\nimport { DEFAULT_FIELDS } from '../../constants';\n\nexport default {\n  name: 'PipelineFailedJobsTable',\n  fields: DEFAULT_FIELDS,\n  retry: __('Retry'),\n  components: {\n    CiIcon,\n    GlButton,\n    GlLink,\n    GlTableLite,\n  },\n  directives: {\n    SafeHtml,\n  },\n  mixins: [Tracking.mixin()],\n  props: {\n    failedJobs: {\n      type: Array,\n      required: true,\n    },\n  },\n  methods: {\n    async retryJob(id) {\n      this.track('click_retry', { label: TRACKING_CATEGORIES.failed });\n\n      try {\n        const {\n          data: {\n            jobRetry: { errors, job },\n          },\n        } = await this.$apollo.mutate({\n          mutation: RetryFailedJobMutation,\n          variables: { id },\n        });\n        if (errors.length > 0) {\n          this.showErrorMessage();\n        } else {\n          visitUrl(job.detailedStatus.detailsPath);\n        }\n      } catch (error) {\n        this.showErrorMessage();\n        reportToSentry(this.$options.name, error);\n      }\n    },\n    canRetryJob(job) {\n      return job.retryable && job.userPermissions.updateBuild;\n    },\n    showErrorMessage() {\n      createAlert({ message: s__('Job|There was a problem retrying the failed job.') });\n    },\n    failureSummary(trace) {\n      return trace ? trace.htmlSummary : s__('Job|No job log');\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-table-lite\n    :items=\"failedJobs\"\n    :fields=\"$options.fields\"\n    stacked=\"lg\"\n    fixed\n    data-testId=\"tab-failures\"\n  >\n    <template #table-colgroup=\"{ fields }\">\n      <col v-for=\"field in fields\" :key=\"field.key\" :class=\"field.columnClass\" />\n    </template>\n\n    <template #cell(name)=\"{ item }\">\n      <div class=\"gl-flex gl-items-center gl-justify-end lg:gl-justify-start\">\n        <ci-icon :status=\"item.detailedStatus\" class=\"gl-mr-3\" />\n        <div class=\"gl-truncate\">\n          <gl-link :href=\"item.detailedStatus.detailsPath\" class=\"gl-font-bold !gl-text-default\">\n            {{ item.name }}\n          </gl-link>\n        </div>\n      </div>\n    </template>\n\n    <template #cell(stage)=\"{ item }\">\n      <div class=\"gl-truncate\">\n        <span>{{ item.stage.name }}</span>\n      </div>\n    </template>\n\n    <template #cell(failureMessage)=\"{ item }\">\n      <span data-testid=\"job-failure-message\">{{ item.failureMessage }}</span>\n    </template>\n\n    <template #cell(actions)=\"{ item }\">\n      <gl-button\n        v-if=\"canRetryJob(item)\"\n        icon=\"retry\"\n        :title=\"$options.retry\"\n        :aria-label=\"$options.retry\"\n        @click=\"retryJob(item.id)\"\n      />\n    </template>\n\n    <template #row-details=\"{ item }\">\n      <pre\n        v-if=\"item.userPermissions.readBuild\"\n        class=\"gl-w-full gl-border-none gl-text-left\"\n        data-testid=\"job-log\"\n      >\n        <code v-safe-html=\"failureSummary(item.trace)\" class=\"gl-bg-inherit gl-p-0\" data-testid=\"job-trace-summary\">\n        </code>\n      </pre>\n    </template>\n  </gl-table-lite>\n</template>\n","import { render, staticRenderFns } from \"./failed_jobs_table.vue?vue&type=template&id=1b19f677\"\nimport script from \"./failed_jobs_table.vue?vue&type=script&lang=js\"\nexport * from \"./failed_jobs_table.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-table-lite',{attrs:{\"items\":_vm.failedJobs,\"fields\":_vm.$options.fields,\"stacked\":\"lg\",\"fixed\":\"\",\"data-testId\":\"tab-failures\"},scopedSlots:_vm._u([{key:\"table-colgroup\",fn:function({ fields }){return _vm._l((fields),function(field){return _c('col',{key:field.key,class:field.columnClass})})}},{key:\"cell(name)\",fn:function({ item }){return [_c('div',{staticClass:\"gl-flex gl-items-center gl-justify-end lg:gl-justify-start\"},[_c('ci-icon',{staticClass:\"gl-mr-3\",attrs:{\"status\":item.detailedStatus}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-truncate\"},[_c('gl-link',{staticClass:\"gl-font-bold !gl-text-default\",attrs:{\"href\":item.detailedStatus.detailsPath}},[_vm._v(\"\\n          \"+_vm._s(item.name)+\"\\n        \")])],1)],1)]}},{key:\"cell(stage)\",fn:function({ item }){return [_c('div',{staticClass:\"gl-truncate\"},[_c('span',[_vm._v(_vm._s(item.stage.name))])])]}},{key:\"cell(failureMessage)\",fn:function({ item }){return [_c('span',{attrs:{\"data-testid\":\"job-failure-message\"}},[_vm._v(_vm._s(item.failureMessage))])]}},{key:\"cell(actions)\",fn:function({ item }){return [(_vm.canRetryJob(item))?_c('gl-button',{attrs:{\"icon\":\"retry\",\"title\":_vm.$options.retry,\"aria-label\":_vm.$options.retry},on:{\"click\":function($event){return _vm.retryJob(item.id)}}}):_vm._e()]}},{key:\"row-details\",fn:function({ item }){return [(item.userPermissions.readBuild)?_c('pre',{staticClass:\"gl-w-full gl-border-none gl-text-left\",attrs:{\"data-testid\":\"job-log\"}},[_vm._v(\"      \"),_c('code',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.failureSummary(item.trace)),expression:\"failureSummary(item.trace)\"}],staticClass:\"gl-bg-inherit gl-p-0\",attrs:{\"data-testid\":\"job-trace-summary\"}},[_vm._v(\"\\n      \")]),_vm._v(\"\\n    \")]):_vm._e()]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./failed_jobs_app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./failed_jobs_app.vue?vue&type=script&lang=js\"","<script>\nimport { GlLoadingIcon } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { createAlert } from '~/alert';\nimport { reportToSentry } from '~/ci/utils';\nimport { getQueryHeaders } from '../graph/utils';\nimport { POLL_INTERVAL } from '../graph/constants';\nimport GetFailedJobsQuery from './graphql/queries/get_failed_jobs.query.graphql';\nimport FailedJobsTable from './components/failed_jobs_table.vue';\n\nexport default {\n  name: 'PipelineFailedJobsApp',\n  components: {\n    GlLoadingIcon,\n    FailedJobsTable,\n  },\n  inject: {\n    projectPath: {\n      default: '',\n    },\n    pipelineIid: {\n      default: '',\n    },\n    graphqlResourceEtag: {\n      default: '',\n    },\n  },\n  apollo: {\n    failedJobs: {\n      context() {\n        return getQueryHeaders(this.graphqlResourceEtag);\n      },\n      query: GetFailedJobsQuery,\n      pollInterval: POLL_INTERVAL,\n      variables() {\n        return {\n          fullPath: this.projectPath,\n          pipelineIid: this.pipelineIid,\n        };\n      },\n      update({ project }) {\n        const jobNodes = project?.pipeline?.jobs?.nodes || [];\n\n        return jobNodes.map((job) => {\n          return {\n            ...job,\n            // this field is needed for the slot row-details\n            // on the failed_jobs_table.vue component\n            _showDetails: true,\n          };\n        });\n      },\n      error(error) {\n        createAlert({ message: s__('Jobs|There was a problem fetching the failed jobs.') });\n        reportToSentry(this.$options.name, error);\n      },\n    },\n  },\n  data() {\n    return {\n      failedJobs: [],\n    };\n  },\n  computed: {\n    loading() {\n      return this.$apollo.queries.failedJobs.loading;\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <gl-loading-icon v-if=\"loading\" size=\"lg\" class=\"gl-mt-4\" />\n    <failed-jobs-table v-else :failed-jobs=\"failedJobs\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./failed_jobs_app.vue?vue&type=template&id=7be9ac78\"\nimport script from \"./failed_jobs_app.vue?vue&type=script&lang=js\"\nexport * from \"./failed_jobs_app.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.loading)?_c('gl-loading-icon',{staticClass:\"gl-mt-4\",attrs:{\"size\":\"lg\"}}):_c('failed-jobs-table',{attrs:{\"failed-jobs\":_vm.failedJobs}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./jobs_app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./jobs_app.vue?vue&type=script&lang=js\"","<script>\nimport { GlIntersectionObserver, GlLoadingIcon, GlSkeletonLoader } from '@gitlab/ui';\nimport produce from 'immer';\nimport { createAlert } from '~/alert';\nimport { __ } from '~/locale';\nimport { reportToSentry } from '~/ci/utils';\nimport eventHub from '~/ci/jobs_page/event_hub';\nimport JobsTable from '~/ci/jobs_page/components/jobs_table.vue';\nimport { JOBS_TAB_FIELDS } from '~/ci/jobs_page/constants';\nimport { getQueryHeaders } from '../graph/utils';\nimport { POLL_INTERVAL } from '../graph/constants';\nimport getPipelineJobs from './graphql/queries/get_pipeline_jobs.query.graphql';\n\nexport default {\n  name: 'PipelineJobsApp',\n  fields: JOBS_TAB_FIELDS,\n  components: {\n    GlIntersectionObserver,\n    GlLoadingIcon,\n    GlSkeletonLoader,\n    JobsTable,\n  },\n  inject: {\n    projectPath: {\n      default: '',\n    },\n    pipelineIid: {\n      default: '',\n    },\n    graphqlResourceEtag: {\n      default: '',\n    },\n  },\n  apollo: {\n    jobs: {\n      context() {\n        return getQueryHeaders(this.graphqlResourceEtag);\n      },\n      query: getPipelineJobs,\n      pollInterval: POLL_INTERVAL,\n      variables() {\n        return {\n          ...this.queryVariables,\n        };\n      },\n      update(data) {\n        return data.project?.pipeline?.jobs?.nodes || [];\n      },\n      result({ data }) {\n        if (!data) {\n          return;\n        }\n        this.jobsPageInfo = data.project?.pipeline?.jobs?.pageInfo || {};\n      },\n      error(error) {\n        createAlert({ message: __('An error occurred while fetching the pipelines jobs.') });\n        reportToSentry(this.$options.name, error);\n      },\n    },\n  },\n  data() {\n    return {\n      jobs: [],\n      jobsPageInfo: {},\n      firstLoad: true,\n    };\n  },\n  computed: {\n    queryVariables() {\n      return {\n        fullPath: this.projectPath,\n        iid: this.pipelineIid,\n      };\n    },\n    loading() {\n      return this.$apollo.queries.jobs.loading;\n    },\n    showSkeletonLoader() {\n      return this.firstLoad && this.loading;\n    },\n    showLoadingSpinner() {\n      return !this.firstLoad && this.loading;\n    },\n  },\n  mounted() {\n    eventHub.$on('jobActionPerformed', this.handleJobAction);\n  },\n  beforeDestroy() {\n    eventHub.$off('jobActionPerformed', this.handleJobAction);\n  },\n  methods: {\n    handleJobAction() {\n      this.firstLoad = false;\n\n      this.$apollo.queries.jobs.refetch();\n    },\n    fetchMoreJobs() {\n      this.firstLoad = false;\n\n      this.$apollo.queries.jobs.fetchMore({\n        variables: {\n          ...this.queryVariables,\n          after: this.jobsPageInfo.endCursor,\n        },\n        updateQuery: (previousResult, { fetchMoreResult }) => {\n          const results = produce(fetchMoreResult, (draftData) => {\n            draftData.project.pipeline.jobs.nodes = [\n              ...previousResult.project.pipeline.jobs.nodes,\n              ...draftData.project.pipeline.jobs.nodes,\n            ];\n          });\n          return results;\n        },\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div v-if=\"showSkeletonLoader\" class=\"gl-mt-5\">\n      <gl-skeleton-loader :width=\"1248\" :height=\"73\">\n        <circle cx=\"748.031\" cy=\"37.7193\" r=\"15.0307\" />\n        <circle cx=\"787.241\" cy=\"37.7193\" r=\"15.0307\" />\n        <circle cx=\"827.759\" cy=\"37.7193\" r=\"15.0307\" />\n        <circle cx=\"866.969\" cy=\"37.7193\" r=\"15.0307\" />\n        <circle cx=\"380\" cy=\"37\" r=\"18\" />\n        <rect x=\"432\" y=\"19\" width=\"126.587\" height=\"15\" />\n        <rect x=\"432\" y=\"41\" width=\"247\" height=\"15\" />\n        <rect x=\"158\" y=\"19\" width=\"86.1\" height=\"15\" />\n        <rect x=\"158\" y=\"41\" width=\"168\" height=\"15\" />\n        <rect x=\"22\" y=\"19\" width=\"96\" height=\"36\" />\n        <rect x=\"924\" y=\"30\" width=\"96\" height=\"15\" />\n        <rect x=\"1057\" y=\"20\" width=\"166\" height=\"35\" />\n      </gl-skeleton-loader>\n    </div>\n\n    <jobs-table v-else :jobs=\"jobs\" :table-fields=\"$options.fields\" data-testid=\"jobs-tab-table\" />\n\n    <gl-intersection-observer v-if=\"jobsPageInfo.hasNextPage\" @appear=\"fetchMoreJobs\">\n      <gl-loading-icon v-if=\"showLoadingSpinner\" size=\"lg\" />\n    </gl-intersection-observer>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./jobs_app.vue?vue&type=template&id=f0dfe4ec\"\nimport script from \"./jobs_app.vue?vue&type=script&lang=js\"\nexport * from \"./jobs_app.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.showSkeletonLoader)?_c('div',{staticClass:\"gl-mt-5\"},[_c('gl-skeleton-loader',{attrs:{\"width\":1248,\"height\":73}},[_c('circle',{attrs:{\"cx\":\"748.031\",\"cy\":\"37.7193\",\"r\":\"15.0307\"}}),_vm._v(\" \"),_c('circle',{attrs:{\"cx\":\"787.241\",\"cy\":\"37.7193\",\"r\":\"15.0307\"}}),_vm._v(\" \"),_c('circle',{attrs:{\"cx\":\"827.759\",\"cy\":\"37.7193\",\"r\":\"15.0307\"}}),_vm._v(\" \"),_c('circle',{attrs:{\"cx\":\"866.969\",\"cy\":\"37.7193\",\"r\":\"15.0307\"}}),_vm._v(\" \"),_c('circle',{attrs:{\"cx\":\"380\",\"cy\":\"37\",\"r\":\"18\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"432\",\"y\":\"19\",\"width\":\"126.587\",\"height\":\"15\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"432\",\"y\":\"41\",\"width\":\"247\",\"height\":\"15\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"158\",\"y\":\"19\",\"width\":\"86.1\",\"height\":\"15\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"158\",\"y\":\"41\",\"width\":\"168\",\"height\":\"15\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"22\",\"y\":\"19\",\"width\":\"96\",\"height\":\"36\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"924\",\"y\":\"30\",\"width\":\"96\",\"height\":\"15\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"1057\",\"y\":\"20\",\"width\":\"166\",\"height\":\"35\"}})])],1):_c('jobs-table',{attrs:{\"jobs\":_vm.jobs,\"table-fields\":_vm.$options.fields,\"data-testid\":\"jobs-tab-table\"}}),_vm._v(\" \"),(_vm.jobsPageInfo.hasNextPage)?_c('gl-intersection-observer',{on:{\"appear\":_vm.fetchMoreJobs}},[(_vm.showLoadingSpinner)?_c('gl-loading-icon',{attrs:{\"size\":\"lg\"}}):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlEmptyState } from '@gitlab/ui';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { s__ } from '~/locale';\n\nexport const i18n = {\n  noTestsButton: s__('TestReports|Learn more about pipeline test reports'),\n  noTestsDescription: s__('TestReports|No test cases were found in the test report.'),\n  noTestsTitle: s__('TestReports|There are no tests to display'),\n  noReportsButton: s__('TestReports|Learn how to upload pipeline test reports'),\n  noReportsDescription: s__(\n    'TestReports|You can configure your job to use unit test reports, and GitLab displays a report here and in the related merge request.',\n  ),\n  noReportsTitle: s__('TestReports|There are no test reports for this pipeline'),\n};\n\nexport default {\n  i18n,\n  components: {\n    GlEmptyState,\n  },\n  inject: {\n    emptyStateImagePath: {\n      default: '',\n    },\n    hasTestReport: {\n      default: false,\n    },\n  },\n  computed: {\n    emptyStateText() {\n      if (this.hasTestReport) {\n        return {\n          button: this.$options.i18n.noTestsButton,\n          description: this.$options.i18n.noTestsDescription,\n          title: this.$options.i18n.noTestsTitle,\n        };\n      }\n      return {\n        button: this.$options.i18n.noReportsButton,\n        description: this.$options.i18n.noReportsDescription,\n        title: this.$options.i18n.noReportsTitle,\n      };\n    },\n    testReportDocPath() {\n      return helpPagePath('ci/testing/unit_test_reports');\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-empty-state\n    :title=\"emptyStateText.title\"\n    :description=\"emptyStateText.description\"\n    :svg-path=\"emptyStateImagePath\"\n    :svg-height=\"150\"\n    :primary-button-link=\"testReportDocPath\"\n    :primary-button-text=\"emptyStateText.button\"\n  />\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty_state.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty_state.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./empty_state.vue?vue&type=template&id=37754b56\"\nimport script from \"./empty_state.vue?vue&type=script&lang=js\"\nexport * from \"./empty_state.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-empty-state',{attrs:{\"title\":_vm.emptyStateText.title,\"description\":_vm.emptyStateText.description,\"svg-path\":_vm.emptyStateImagePath,\"svg-height\":150,\"primary-button-link\":_vm.testReportDocPath,\"primary-button-text\":_vm.emptyStateText.button}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport {\n  GlModalDirective,\n  GlTooltipDirective,\n  GlFriendlyWrap,\n  GlIcon,\n  GlLink,\n  GlButton,\n  GlPagination,\n  GlEmptyState,\n  GlSprintf,\n} from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapState, mapGetters, mapActions } from 'vuex';\nimport { __, s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport TestCaseDetails from './test_case_details.vue';\n\nexport const i18n = {\n  expiredArtifactsTitle: s__('TestReports|Job artifacts are expired'),\n  expiredArtifactsDescription: s__(\n    'TestReports|Test reports require job artifacts but all artifacts are expired. %{linkStart}Learn more%{linkEnd}',\n  ),\n};\n\nexport default {\n  name: 'TestsSuiteTable',\n  components: {\n    GlIcon,\n    GlFriendlyWrap,\n    GlLink,\n    GlButton,\n    GlPagination,\n    GlEmptyState,\n    GlSprintf,\n    TestCaseDetails,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n    GlModalDirective,\n  },\n  inject: {\n    artifactsExpiredImagePath: {\n      default: '',\n    },\n  },\n  props: {\n    heading: {\n      type: String,\n      required: false,\n      default: __('Tests'),\n    },\n  },\n  computed: {\n    ...mapState('testReports', ['pageInfo']),\n    ...mapGetters('testReports', [\n      'getSuiteTests',\n      'getSuiteTestCount',\n      'getSuiteArtifactsExpired',\n    ]),\n    hasSuites() {\n      return this.getSuiteTests.length > 0;\n    },\n  },\n  methods: {\n    ...mapActions('testReports', ['setPage']),\n  },\n  wrapSymbols: ['::', '#', '.', '_', '-', '/', '\\\\'],\n  i18n,\n  learnMorePath: helpPagePath('ci/testing/unit_test_reports', {\n    anchor: 'view-unit-test-reports-on-gitlab',\n  }),\n};\n</script>\n\n<template>\n  <div>\n    <div v-if=\"hasSuites\" class=\"test-reports-table js-test-cases-table gl-mb-3\">\n      <div class=\"row gl-mt-3\">\n        <div class=\"col-12\">\n          <h4>{{ heading }}</h4>\n        </div>\n      </div>\n      <div\n        role=\"row\"\n        class=\"gl-responsive-table-row table-row-header gl-fill-gray-700 gl-font-bold\"\n      >\n        <div role=\"rowheader\" class=\"table-section section-20\">\n          {{ __('Suite') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-40\">\n          {{ __('Name') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-10\">\n          {{ __('Filename') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-10 text-center\">\n          {{ __('Status') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-10\">\n          {{ __('Duration') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-10\">\n          {{ __('Details') }}\n        </div>\n      </div>\n\n      <div\n        v-for=\"(testCase, index) in getSuiteTests\"\n        :key=\"index\"\n        class=\"gl-responsive-table-row gl-items-start gl-rounded-base\"\n        data-testid=\"test-case-row\"\n      >\n        <div class=\"table-section section-20 section-wrap\">\n          <div role=\"rowheader\" class=\"table-mobile-header\">{{ __('Suite') }}</div>\n          <div class=\"table-mobile-content gl-break-words gl-pr-0 sm:gl-pr-2\">\n            <gl-friendly-wrap :symbols=\"$options.wrapSymbols\" :text=\"testCase.classname\" />\n          </div>\n        </div>\n\n        <div class=\"table-section section-40 section-wrap\">\n          <div role=\"rowheader\" class=\"table-mobile-header\">{{ __('Name') }}</div>\n          <div class=\"table-mobile-content gl-break-words gl-pr-0 sm:gl-pr-2\">\n            <gl-friendly-wrap :symbols=\"$options.wrapSymbols\" :text=\"testCase.name\" />\n          </div>\n        </div>\n\n        <div class=\"table-section section-10 section-wrap\">\n          <div role=\"rowheader\" class=\"table-mobile-header\">{{ __('Filename') }}</div>\n          <div class=\"table-mobile-content gl-break-words gl-pr-0 sm:gl-pr-2\">\n            <gl-link v-if=\"testCase.file\" :href=\"testCase.filePath\" target=\"_blank\">\n              <gl-friendly-wrap :symbols=\"$options.wrapSymbols\" :text=\"testCase.file\" />\n            </gl-link>\n            <gl-button\n              v-if=\"testCase.file\"\n              v-gl-tooltip\n              size=\"small\"\n              category=\"tertiary\"\n              icon=\"copy-to-clipboard\"\n              :title=\"__('Copy to clipboard')\"\n              :data-clipboard-text=\"testCase.file\"\n              :aria-label=\"__('Copy to clipboard')\"\n            />\n          </div>\n        </div>\n\n        <div class=\"table-section section-10 section-wrap\">\n          <div role=\"rowheader\" class=\"table-mobile-header\">{{ __('Status') }}</div>\n          <div class=\"table-mobile-content gl-justify-center md:gl-flex\">\n            <div class=\"ci-status-icon\" :class=\"`ci-status-icon-${testCase.status}`\">\n              <gl-icon :size=\"24\" :name=\"testCase.icon\" />\n            </div>\n          </div>\n        </div>\n\n        <div class=\"table-section section-10 section-wrap\">\n          <div role=\"rowheader\" class=\"table-mobile-header\">\n            {{ __('Duration') }}\n          </div>\n          <div class=\"table-mobile-content gl-pr-0 sm:gl-pr-2\">\n            {{ testCase.formattedTime }}\n          </div>\n        </div>\n\n        <div class=\"table-section section-10 section-wrap\">\n          <div role=\"rowheader\" class=\"table-mobile-header\">{{ __('Details') }}</div>\n          <div class=\"table-mobile-content\">\n            <gl-button v-gl-modal-directive=\"`test-case-details-${index}`\">{{\n              __('View details')\n            }}</gl-button>\n            <test-case-details :modal-id=\"`test-case-details-${index}`\" :test-case=\"testCase\" />\n          </div>\n        </div>\n      </div>\n\n      <gl-pagination\n        v-model=\"pageInfo.page\"\n        class=\"gl-flex gl-justify-center\"\n        :per-page=\"pageInfo.perPage\"\n        :total-items=\"getSuiteTestCount\"\n        @input=\"setPage\"\n      />\n    </div>\n\n    <div v-else>\n      <gl-empty-state\n        v-if=\"getSuiteArtifactsExpired\"\n        :title=\"$options.i18n.expiredArtifactsTitle\"\n        :svg-path=\"artifactsExpiredImagePath\"\n        :svg-height=\"100\"\n        data-testid=\"artifacts-expired\"\n      >\n        <template #description>\n          <gl-sprintf :message=\"$options.i18n.expiredArtifactsDescription\">\n            <template #link=\"{ content }\">\n              <gl-link :href=\"$options.learnMorePath\">{{ content }}</gl-link>\n            </template>\n          </gl-sprintf>\n        </template>\n      </gl-empty-state>\n      <p v-else data-testid=\"no-test-cases\">\n        {{ s__('TestReports|There are no test cases to display.') }}\n      </p>\n    </div>\n  </div>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./test_suite_table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./test_suite_table.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./test_suite_table.vue?vue&type=template&id=7fda0425\"\nimport script from \"./test_suite_table.vue?vue&type=script&lang=js\"\nexport * from \"./test_suite_table.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.hasSuites)?_c('div',{staticClass:\"test-reports-table js-test-cases-table gl-mb-3\"},[_c('div',{staticClass:\"row gl-mt-3\"},[_c('div',{staticClass:\"col-12\"},[_c('h4',[_vm._v(_vm._s(_vm.heading))])])]),_vm._v(\" \"),_c('div',{staticClass:\"gl-responsive-table-row table-row-header gl-fill-gray-700 gl-font-bold\",attrs:{\"role\":\"row\"}},[_c('div',{staticClass:\"table-section section-20\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Suite'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-40\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Name'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Filename'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 text-center\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Status'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Duration'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Details'))+\"\\n      \")])]),_vm._v(\" \"),_vm._l((_vm.getSuiteTests),function(testCase,index){return _c('div',{key:index,staticClass:\"gl-responsive-table-row gl-items-start gl-rounded-base\",attrs:{\"data-testid\":\"test-case-row\"}},[_c('div',{staticClass:\"table-section section-20 section-wrap\"},[_c('div',{staticClass:\"table-mobile-header\",attrs:{\"role\":\"rowheader\"}},[_vm._v(_vm._s(_vm.__('Suite')))]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content gl-break-words gl-pr-0 sm:gl-pr-2\"},[_c('gl-friendly-wrap',{attrs:{\"symbols\":_vm.$options.wrapSymbols,\"text\":testCase.classname}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-40 section-wrap\"},[_c('div',{staticClass:\"table-mobile-header\",attrs:{\"role\":\"rowheader\"}},[_vm._v(_vm._s(_vm.__('Name')))]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content gl-break-words gl-pr-0 sm:gl-pr-2\"},[_c('gl-friendly-wrap',{attrs:{\"symbols\":_vm.$options.wrapSymbols,\"text\":testCase.name}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 section-wrap\"},[_c('div',{staticClass:\"table-mobile-header\",attrs:{\"role\":\"rowheader\"}},[_vm._v(_vm._s(_vm.__('Filename')))]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content gl-break-words gl-pr-0 sm:gl-pr-2\"},[(testCase.file)?_c('gl-link',{attrs:{\"href\":testCase.filePath,\"target\":\"_blank\"}},[_c('gl-friendly-wrap',{attrs:{\"symbols\":_vm.$options.wrapSymbols,\"text\":testCase.file}})],1):_vm._e(),_vm._v(\" \"),(testCase.file)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"size\":\"small\",\"category\":\"tertiary\",\"icon\":\"copy-to-clipboard\",\"title\":_vm.__('Copy to clipboard'),\"data-clipboard-text\":testCase.file,\"aria-label\":_vm.__('Copy to clipboard')}}):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 section-wrap\"},[_c('div',{staticClass:\"table-mobile-header\",attrs:{\"role\":\"rowheader\"}},[_vm._v(_vm._s(_vm.__('Status')))]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content gl-justify-center md:gl-flex\"},[_c('div',{staticClass:\"ci-status-icon\",class:`ci-status-icon-${testCase.status}`},[_c('gl-icon',{attrs:{\"size\":24,\"name\":testCase.icon}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 section-wrap\"},[_c('div',{staticClass:\"table-mobile-header\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Duration'))+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content gl-pr-0 sm:gl-pr-2\"},[_vm._v(\"\\n          \"+_vm._s(testCase.formattedTime)+\"\\n        \")])]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 section-wrap\"},[_c('div',{staticClass:\"table-mobile-header\",attrs:{\"role\":\"rowheader\"}},[_vm._v(_vm._s(_vm.__('Details')))]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content\"},[_c('gl-button',{directives:[{name:\"gl-modal-directive\",rawName:\"v-gl-modal-directive\",value:(`test-case-details-${index}`),expression:\"`test-case-details-${index}`\"}]},[_vm._v(_vm._s(_vm.__('View details')))]),_vm._v(\" \"),_c('test-case-details',{attrs:{\"modal-id\":`test-case-details-${index}`,\"test-case\":testCase}})],1)])])}),_vm._v(\" \"),_c('gl-pagination',{staticClass:\"gl-flex gl-justify-center\",attrs:{\"per-page\":_vm.pageInfo.perPage,\"total-items\":_vm.getSuiteTestCount},on:{\"input\":_vm.setPage},model:{value:(_vm.pageInfo.page),callback:function ($$v) {_vm.$set(_vm.pageInfo, \"page\", $$v)},expression:\"pageInfo.page\"}})],2):_c('div',[(_vm.getSuiteArtifactsExpired)?_c('gl-empty-state',{attrs:{\"title\":_vm.$options.i18n.expiredArtifactsTitle,\"svg-path\":_vm.artifactsExpiredImagePath,\"svg-height\":100,\"data-testid\":\"artifacts-expired\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.expiredArtifactsDescription},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.learnMorePath}},[_vm._v(_vm._s(content))])]}}],null,false,3329866184)})]},proxy:true}],null,false,3702316966)}):_c('p',{attrs:{\"data-testid\":\"no-test-cases\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.s__('TestReports|There are no test cases to display.'))+\"\\n    \")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./test_summary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./test_summary.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlProgressBar } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport { formattedTime } from '../stores/test_reports/utils';\n\nexport default {\n  name: 'TestSummary',\n  components: {\n    GlButton,\n    GlProgressBar,\n  },\n  props: {\n    report: {\n      type: Object,\n      required: true,\n    },\n    showBack: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    heading() {\n      return this.report.name || __('Summary');\n    },\n    successPercentage() {\n      // Returns a full number when the decimals equal .00.\n      // Otherwise returns a float to two decimal points\n      // Do not include skipped tests as part of the total when doing success calculations.\n\n      const totalCompletedCount = this.report.total_count - this.report.skipped_count;\n\n      if (totalCompletedCount > 0) {\n        return Number(((this.report.success_count / totalCompletedCount) * 100 || 0).toFixed(2));\n      }\n      return 0;\n    },\n    formattedDuration() {\n      return formattedTime(this.report.total_time);\n    },\n    progressBarVariant() {\n      if (this.successPercentage < 33) {\n        return 'danger';\n      }\n\n      if (this.successPercentage >= 33 && this.successPercentage < 66) {\n        return 'warning';\n      }\n\n      if (this.successPercentage >= 66 && this.successPercentage < 90) {\n        return 'primary';\n      }\n\n      return 'success';\n    },\n  },\n  methods: {\n    onBackClick() {\n      this.$emit('on-back-click');\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div class=\"gl-mt-3 gl-flex gl-w-full gl-items-center\">\n      <gl-button\n        v-if=\"showBack\"\n        size=\"small\"\n        class=\"js-back-button gl-mr-3\"\n        icon=\"chevron-lg-left\"\n        :aria-label=\"__('Go back')\"\n        @click=\"onBackClick\"\n      />\n\n      <h4>{{ heading }}</h4>\n    </div>\n\n    <div class=\"gl-mt-3 gl-flex gl-w-full gl-flex-col md:gl-flex-row\">\n      <div class=\"gl-flex gl-basis-1/2 gl-justify-between\">\n        <span class=\"js-total-tests gl-grow\">{{\n          sprintf(s__('TestReports|%{count} tests'), { count: report.total_count })\n        }}</span>\n\n        <span class=\"js-failed-tests gl-grow\">{{\n          sprintf(s__('TestReports|%{count} failures'), { count: report.failed_count })\n        }}</span>\n\n        <span class=\"js-errored-tests\">{{\n          sprintf(s__('TestReports|%{count} errors'), { count: report.error_count })\n        }}</span>\n      </div>\n      <div class=\"gl-flex gl-grow gl-justify-between\">\n        <div class=\"gl-hidden gl-grow md:gl-block\"></div>\n        <span class=\"js-success-rate gl-grow\">{{\n          sprintf(s__('TestReports|%{rate}%{sign} success rate'), {\n            rate: successPercentage,\n            sign: '%',\n          })\n        }}</span>\n\n        <span class=\"js-duration\">{{ formattedDuration }}</span>\n      </div>\n    </div>\n\n    <gl-progress-bar\n      class=\"gl-mt-5\"\n      :value=\"successPercentage\"\n      :variant=\"progressBarVariant\"\n      height=\"10px\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./test_summary.vue?vue&type=template&id=612390d8\"\nimport script from \"./test_summary.vue?vue&type=script&lang=js\"\nexport * from \"./test_summary.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"gl-mt-3 gl-flex gl-w-full gl-items-center\"},[(_vm.showBack)?_c('gl-button',{staticClass:\"js-back-button gl-mr-3\",attrs:{\"size\":\"small\",\"icon\":\"chevron-lg-left\",\"aria-label\":_vm.__('Go back')},on:{\"click\":_vm.onBackClick}}):_vm._e(),_vm._v(\" \"),_c('h4',[_vm._v(_vm._s(_vm.heading))])],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-3 gl-flex gl-w-full gl-flex-col md:gl-flex-row\"},[_c('div',{staticClass:\"gl-flex gl-basis-1/2 gl-justify-between\"},[_c('span',{staticClass:\"js-total-tests gl-grow\"},[_vm._v(_vm._s(_vm.sprintf(_vm.s__('TestReports|%{count} tests'), { count: _vm.report.total_count })))]),_vm._v(\" \"),_c('span',{staticClass:\"js-failed-tests gl-grow\"},[_vm._v(_vm._s(_vm.sprintf(_vm.s__('TestReports|%{count} failures'), { count: _vm.report.failed_count })))]),_vm._v(\" \"),_c('span',{staticClass:\"js-errored-tests\"},[_vm._v(_vm._s(_vm.sprintf(_vm.s__('TestReports|%{count} errors'), { count: _vm.report.error_count })))])]),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-grow gl-justify-between\"},[_c('div',{staticClass:\"gl-hidden gl-grow md:gl-block\"}),_vm._v(\" \"),_c('span',{staticClass:\"js-success-rate gl-grow\"},[_vm._v(_vm._s(_vm.sprintf(_vm.s__('TestReports|%{rate}%{sign} success rate'), {\n          rate: _vm.successPercentage,\n          sign: '%',\n        })))]),_vm._v(\" \"),_c('span',{staticClass:\"js-duration\"},[_vm._v(_vm._s(_vm.formattedDuration))])])]),_vm._v(\" \"),_c('gl-progress-bar',{staticClass:\"gl-mt-5\",attrs:{\"value\":_vm.successPercentage,\"variant\":_vm.progressBarVariant,\"height\":\"10px\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./test_summary_table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./test_summary_table.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters } from 'vuex';\nimport { s__ } from '~/locale';\n\nexport default {\n  name: 'TestsSummaryTable',\n  components: {\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    heading: {\n      type: String,\n      required: false,\n      default: s__('TestReports|Jobs'),\n    },\n  },\n  computed: {\n    ...mapGetters('testReports', ['getTestSuites']),\n    hasSuites() {\n      return this.getTestSuites.length > 0;\n    },\n  },\n  methods: {\n    tableRowClick(index) {\n      this.$emit('row-click', index);\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div class=\"gl-mt-5\">\n      <h4>{{ heading }}</h4>\n    </div>\n\n    <div v-if=\"hasSuites\" class=\"js-test-suites-table\">\n      <div role=\"row\" class=\"gl-responsive-table-row table-row-header gl-font-bold\">\n        <div role=\"rowheader\" class=\"table-section section-25 gl-pl-5\">\n          {{ __('Job') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-25\">\n          {{ __('Duration') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-10 gl-text-center\">\n          {{ __('Failed') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-10 gl-text-center\">\n          {{ __('Errors') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-10 gl-text-center\">\n          {{ __('Skipped') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-10 gl-text-center\">\n          {{ __('Passed') }}\n        </div>\n        <div role=\"rowheader\" class=\"table-section section-10 gl-pr-5 gl-text-right\">\n          {{ __('Total') }}\n        </div>\n      </div>\n\n      <div\n        v-for=\"(testSuite, index) in getTestSuites\"\n        :key=\"index\"\n        role=\"row\"\n        class=\"gl-responsive-table-row js-suite-row gl-rounded-base\"\n        :class=\"{\n          'gl-responsive-table-row-clickable gl-cursor-pointer': !testSuite.suite_error,\n        }\"\n        @click=\"tableRowClick(index)\"\n      >\n        <div class=\"table-section section-25\">\n          <div role=\"rowheader\" class=\"table-mobile-header gl-font-bold\">\n            {{ __('Suite') }}\n          </div>\n          <div class=\"table-mobile-content underline gl-pl-5 gl-text-default\">\n            {{ testSuite.name }}\n            <gl-icon\n              v-if=\"testSuite.suite_error\"\n              ref=\"suiteErrorIcon\"\n              v-gl-tooltip\n              name=\"error\"\n              :title=\"testSuite.suite_error\"\n              class=\"vertical-align-middle\"\n            />\n          </div>\n        </div>\n\n        <div class=\"table-section section-25\">\n          <div role=\"rowheader\" class=\"table-mobile-header gl-font-bold\">\n            {{ __('Duration') }}\n          </div>\n          <div class=\"table-mobile-content gl-text-left\">\n            {{ testSuite.formattedTime }}\n          </div>\n        </div>\n\n        <div class=\"table-section section-10 gl-text-center\">\n          <div role=\"rowheader\" class=\"table-mobile-header gl-font-bold\">\n            {{ __('Failed') }}\n          </div>\n          <div class=\"table-mobile-content\">{{ testSuite.failed_count }}</div>\n        </div>\n\n        <div class=\"table-section section-10 gl-text-center\">\n          <div role=\"rowheader\" class=\"table-mobile-header gl-font-bold\">\n            {{ __('Errors') }}\n          </div>\n          <div class=\"table-mobile-content\">{{ testSuite.error_count }}</div>\n        </div>\n\n        <div class=\"table-section section-10 gl-text-center\">\n          <div role=\"rowheader\" class=\"table-mobile-header gl-font-bold\">\n            {{ __('Skipped') }}\n          </div>\n          <div class=\"table-mobile-content\">{{ testSuite.skipped_count }}</div>\n        </div>\n\n        <div class=\"table-section section-10 gl-text-center\">\n          <div role=\"rowheader\" class=\"table-mobile-header gl-font-bold\">\n            {{ __('Passed') }}\n          </div>\n          <div class=\"table-mobile-content\">{{ testSuite.success_count }}</div>\n        </div>\n\n        <div class=\"table-section section-10 pr-md-3 gl-text-right\">\n          <div role=\"rowheader\" class=\"table-mobile-header gl-font-bold\">\n            {{ __('Total') }}\n          </div>\n          <div class=\"table-mobile-content\">{{ testSuite.total_count }}</div>\n        </div>\n      </div>\n    </div>\n\n    <div v-else>\n      <p class=\"js-no-tests-suites\">{{ s__('TestReports|There are no test suites to show.') }}</p>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./test_summary_table.vue?vue&type=template&id=56580c2e\"\nimport script from \"./test_summary_table.vue?vue&type=script&lang=js\"\nexport * from \"./test_summary_table.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"gl-mt-5\"},[_c('h4',[_vm._v(_vm._s(_vm.heading))])]),_vm._v(\" \"),(_vm.hasSuites)?_c('div',{staticClass:\"js-test-suites-table\"},[_c('div',{staticClass:\"gl-responsive-table-row table-row-header gl-font-bold\",attrs:{\"role\":\"row\"}},[_c('div',{staticClass:\"table-section section-25 gl-pl-5\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Job'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-25\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Duration'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 gl-text-center\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Failed'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 gl-text-center\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Errors'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 gl-text-center\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Skipped'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 gl-text-center\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Passed'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 gl-pr-5 gl-text-right\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Total'))+\"\\n      \")])]),_vm._v(\" \"),_vm._l((_vm.getTestSuites),function(testSuite,index){return _c('div',{key:index,staticClass:\"gl-responsive-table-row js-suite-row gl-rounded-base\",class:{\n        'gl-responsive-table-row-clickable gl-cursor-pointer': !testSuite.suite_error,\n      },attrs:{\"role\":\"row\"},on:{\"click\":function($event){return _vm.tableRowClick(index)}}},[_c('div',{staticClass:\"table-section section-25\"},[_c('div',{staticClass:\"table-mobile-header gl-font-bold\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Suite'))+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content underline gl-pl-5 gl-text-default\"},[_vm._v(\"\\n          \"+_vm._s(testSuite.name)+\"\\n          \"),(testSuite.suite_error)?_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],ref:\"suiteErrorIcon\",refInFor:true,staticClass:\"vertical-align-middle\",attrs:{\"name\":\"error\",\"title\":testSuite.suite_error}}):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-25\"},[_c('div',{staticClass:\"table-mobile-header gl-font-bold\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Duration'))+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content gl-text-left\"},[_vm._v(\"\\n          \"+_vm._s(testSuite.formattedTime)+\"\\n        \")])]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 gl-text-center\"},[_c('div',{staticClass:\"table-mobile-header gl-font-bold\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Failed'))+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content\"},[_vm._v(_vm._s(testSuite.failed_count))])]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 gl-text-center\"},[_c('div',{staticClass:\"table-mobile-header gl-font-bold\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Errors'))+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content\"},[_vm._v(_vm._s(testSuite.error_count))])]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 gl-text-center\"},[_c('div',{staticClass:\"table-mobile-header gl-font-bold\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Skipped'))+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content\"},[_vm._v(_vm._s(testSuite.skipped_count))])]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 gl-text-center\"},[_c('div',{staticClass:\"table-mobile-header gl-font-bold\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Passed'))+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content\"},[_vm._v(_vm._s(testSuite.success_count))])]),_vm._v(\" \"),_c('div',{staticClass:\"table-section section-10 pr-md-3 gl-text-right\"},[_c('div',{staticClass:\"table-mobile-header gl-font-bold\",attrs:{\"role\":\"rowheader\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Total'))+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"table-mobile-content\"},[_vm._v(_vm._s(testSuite.total_count))])])])})],2):_c('div',[_c('p',{staticClass:\"js-no-tests-suites\"},[_vm._v(_vm._s(_vm.s__('TestReports|There are no test suites to show.')))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./test_reports.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./test_reports.vue?vue&type=script&lang=js\"","<script>\nimport { GlLoadingIcon } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport {\n  getParameterValues,\n  updateHistory,\n  setUrlParams,\n  removeParams,\n} from '~/lib/utils/url_utility';\nimport EmptyState from './empty_state.vue';\nimport TestSuiteTable from './test_suite_table.vue';\nimport TestSummary from './test_summary.vue';\nimport TestSummaryTable from './test_summary_table.vue';\n\nexport default {\n  name: 'TestReports',\n  components: {\n    EmptyState,\n    GlLoadingIcon,\n    TestSuiteTable,\n    TestSummary,\n    TestSummaryTable,\n  },\n  inject: ['blobPath', 'summaryEndpoint', 'suiteEndpoint'],\n  computed: {\n    ...mapState('testReports', ['isLoading', 'selectedSuiteIndex', 'testReports']),\n    ...mapGetters('testReports', ['getSelectedSuite', 'getTestSuites']),\n    showSuite() {\n      return this.selectedSuiteIndex !== null;\n    },\n    showTests() {\n      const { test_suites: testSuites = [] } = this.testReports;\n      return testSuites.length > 0;\n    },\n  },\n  async created() {\n    await this.fetchSummary();\n    const jobName = getParameterValues('job_name')[0] || '';\n    if (jobName.length > 0) {\n      // get the index from the job name\n      const indexToSelect = this.getTestSuites.findIndex((test) => test.name === jobName);\n\n      this.setSelectedSuiteIndex(indexToSelect);\n      this.fetchTestSuite(indexToSelect);\n    }\n  },\n  methods: {\n    ...mapActions('testReports', [\n      'fetchTestSuite',\n      'fetchSummary',\n      'setSelectedSuiteIndex',\n      'removeSelectedSuiteIndex',\n      'setPage',\n    ]),\n    summaryBackClick() {\n      this.removeSelectedSuiteIndex();\n\n      updateHistory({\n        url: removeParams(['job_name']),\n        title: document.title,\n        replace: true,\n      });\n\n      // reset pagination to inital state\n      this.setPage(1);\n    },\n    summaryTableRowClick(index) {\n      this.setSelectedSuiteIndex(index);\n\n      // Fetch the test suite when the user clicks to see more details\n      this.fetchTestSuite(index);\n\n      const urlParams = {\n        job_name: this.getSelectedSuite.name,\n      };\n\n      updateHistory({\n        url: setUrlParams(urlParams),\n        title: document.title,\n        replace: true,\n      });\n    },\n    beforeEnterTransition() {\n      document.documentElement.style.overflowX = 'hidden';\n    },\n    afterLeaveTransition() {\n      document.documentElement.style.overflowX = '';\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"isLoading\">\n    <gl-loading-icon size=\"lg\" class=\"gl-mt-3\" />\n  </div>\n\n  <div\n    v-else-if=\"!isLoading && showTests\"\n    ref=\"container\"\n    class=\"gl-relative\"\n    data-testid=\"tests-detail\"\n  >\n    <transition\n      name=\"slide\"\n      @before-enter=\"beforeEnterTransition\"\n      @after-leave=\"afterLeaveTransition\"\n    >\n      <div v-if=\"showSuite\" key=\"detail\" class=\"slide-enter-to-element gl-w-full\">\n        <test-summary :report=\"getSelectedSuite\" show-back @on-back-click=\"summaryBackClick\" />\n\n        <test-suite-table />\n      </div>\n\n      <div v-else key=\"summary\" class=\"slide-enter-from-element gl-w-full\">\n        <test-summary :report=\"testReports\" />\n\n        <test-summary-table @row-click=\"summaryTableRowClick\" />\n      </div>\n    </transition>\n  </div>\n\n  <empty-state v-else />\n</template>\n","import { render, staticRenderFns } from \"./test_reports.vue?vue&type=template&id=4c3bda30\"\nimport script from \"./test_reports.vue?vue&type=script&lang=js\"\nexport * from \"./test_reports.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isLoading)?_c('div',[_c('gl-loading-icon',{staticClass:\"gl-mt-3\",attrs:{\"size\":\"lg\"}})],1):(!_vm.isLoading && _vm.showTests)?_c('div',{ref:\"container\",staticClass:\"gl-relative\",attrs:{\"data-testid\":\"tests-detail\"}},[_c('transition',{attrs:{\"name\":\"slide\"},on:{\"before-enter\":_vm.beforeEnterTransition,\"after-leave\":_vm.afterLeaveTransition}},[(_vm.showSuite)?_c('div',{key:\"detail\",staticClass:\"slide-enter-to-element gl-w-full\"},[_c('test-summary',{attrs:{\"report\":_vm.getSelectedSuite,\"show-back\":\"\"},on:{\"on-back-click\":_vm.summaryBackClick}}),_vm._v(\" \"),_c('test-suite-table')],1):_c('div',{key:\"summary\",staticClass:\"slide-enter-from-element gl-w-full\"},[_c('test-summary',{attrs:{\"report\":_vm.testReports}}),_vm._v(\" \"),_c('test-summary-table',{on:{\"row-click\":_vm.summaryTableRowClick}})],1)])],1):_c('empty-state')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default __webpack_public_path__ + \"empty-variables-md.20df011e.svg\";","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty_state.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty_state.vue?vue&type=script&lang=js\"","<script>\nimport { GlEmptyState, GlSprintf, GlLink } from '@gitlab/ui';\nimport EMPTY_VARIABLES_SVG from '@gitlab/svgs/dist/illustrations/empty-state/empty-variables-md.svg';\nimport { s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nexport default {\n  components: {\n    GlEmptyState,\n    GlSprintf,\n    GlLink,\n  },\n  EMPTY_VARIABLES_SVG,\n  i18n: {\n    title: s__('ManualVariables|There are no manually-specified variables for this pipeline'),\n    description: s__(\n      'ManualVariables|When you %{helpPageUrlStart}run a pipeline manually%{helpPageUrlEnd}, you can specify additional CI/CD variables to use in that pipeline run.',\n    ),\n  },\n  runPipelineManuallyDocUrl: helpPagePath('ci/pipelines/index', {\n    anchor: 'run-a-pipeline-manually',\n  }),\n};\n</script>\n\n<template>\n  <gl-empty-state :svg-path=\"$options.EMPTY_VARIABLES_SVG\" :title=\"$options.i18n.title\">\n    <template #description>\n      <gl-sprintf :message=\"$options.i18n.description\">\n        <template #helpPageUrl=\"{ content }\">\n          <gl-link :href=\"$options.runPipelineManuallyDocUrl\" target=\"_blank\">{{\n            content\n          }}</gl-link>\n        </template>\n      </gl-sprintf>\n    </template>\n  </gl-empty-state>\n</template>\n","import { render, staticRenderFns } from \"./empty_state.vue?vue&type=template&id=0c2e7882\"\nimport script from \"./empty_state.vue?vue&type=script&lang=js\"\nexport * from \"./empty_state.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-empty-state',{attrs:{\"svg-path\":_vm.$options.EMPTY_VARIABLES_SVG,\"title\":_vm.$options.i18n.title},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.description},scopedSlots:_vm._u([{key:\"helpPageUrl\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.runPipelineManuallyDocUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}])})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton, GlPagination, GlTableLite, GlTruncate } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\n// The number of items per page is based on the design mockup.\n// Please refer to https://gitlab.com/gitlab-org/gitlab/-/issues/323097/designs/TabVariables.png\nconst VARIABLES_PER_PAGE = 15;\n\nexport default {\n  components: {\n    GlButton,\n    GlPagination,\n    GlTableLite,\n    GlTruncate,\n  },\n  inject: ['manualVariablesCount', 'canReadVariables'],\n  props: {\n    variables: {\n      type: Array,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      revealed: false,\n      currentPage: 1,\n      hasPermission: true,\n    };\n  },\n  computed: {\n    buttonText() {\n      return this.revealed ? __('Hide values') : __('Reveal values');\n    },\n    showPager() {\n      return this.manualVariablesCount > VARIABLES_PER_PAGE;\n    },\n    items() {\n      const start = (this.currentPage - 1) * VARIABLES_PER_PAGE;\n      const end = start + VARIABLES_PER_PAGE;\n      return this.variables.slice(start, end);\n    },\n  },\n  methods: {\n    toggleRevealed() {\n      this.revealed = !this.revealed;\n    },\n  },\n  TABLE_FIELDS: [\n    {\n      key: 'key',\n      label: __('Key'),\n      thClass: 'gl-w-1/4 gl-whitespace-nowrap',\n      tdClass: 'gl-max-w-15',\n    },\n    {\n      key: 'value',\n      label: __('Value'),\n    },\n  ],\n  VARIABLES_PER_PAGE,\n};\n</script>\n\n<template>\n  <!-- This negative margin top is a hack for the purpose to eliminate default padding of tab container -->\n  <!-- For context refer to: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/159206#note_1999122459 -->\n  <div class=\"-gl-mt-3\">\n    <div v-if=\"canReadVariables\" class=\"gl-bg-gray-10 gl-p-3\">\n      <gl-button :aria-label=\"buttonText\" @click=\"toggleRevealed\">{{ buttonText }}</gl-button>\n    </div>\n    <gl-table-lite :fields=\"$options.TABLE_FIELDS\" :items=\"items\">\n      <template #cell(key)=\"{ value }\">\n        <gl-truncate :text=\"value\" class=\"gl-text-subtle\" />\n      </template>\n      <template #cell(value)=\"{ value }\">\n        <div class=\"gl-text-subtle\" data-testid=\"manual-variable-value\">\n          <span v-if=\"revealed\">{{ value }}</span>\n          <span v-else>****</span>\n        </div>\n      </template>\n    </gl-table-lite>\n    <gl-pagination\n      v-if=\"showPager\"\n      v-model=\"currentPage\"\n      class=\"gl-mt-6\"\n      :per-page=\"$options.VARIABLES_PER_PAGE\"\n      :total-items=\"manualVariablesCount\"\n      align=\"center\"\n    />\n  </div>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./variable_table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./variable_table.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./variable_table.vue?vue&type=template&id=96209f92\"\nimport script from \"./variable_table.vue?vue&type=script&lang=js\"\nexport * from \"./variable_table.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"-gl-mt-3\"},[(_vm.canReadVariables)?_c('div',{staticClass:\"gl-bg-gray-10 gl-p-3\"},[_c('gl-button',{attrs:{\"aria-label\":_vm.buttonText},on:{\"click\":_vm.toggleRevealed}},[_vm._v(_vm._s(_vm.buttonText))])],1):_vm._e(),_vm._v(\" \"),_c('gl-table-lite',{attrs:{\"fields\":_vm.$options.TABLE_FIELDS,\"items\":_vm.items},scopedSlots:_vm._u([{key:\"cell(key)\",fn:function({ value }){return [_c('gl-truncate',{staticClass:\"gl-text-subtle\",attrs:{\"text\":value}})]}},{key:\"cell(value)\",fn:function({ value }){return [_c('div',{staticClass:\"gl-text-subtle\",attrs:{\"data-testid\":\"manual-variable-value\"}},[(_vm.revealed)?_c('span',[_vm._v(_vm._s(value))]):_c('span',[_vm._v(\"****\")])])]}}])}),_vm._v(\" \"),(_vm.showPager)?_c('gl-pagination',{staticClass:\"gl-mt-6\",attrs:{\"per-page\":_vm.$options.VARIABLES_PER_PAGE,\"total-items\":_vm.manualVariablesCount,\"align\":\"center\"},model:{value:(_vm.currentPage),callback:function ($$v) {_vm.currentPage=$$v},expression:\"currentPage\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manual_variables.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manual_variables.vue?vue&type=script&lang=js\"","<script>\nimport { GlLoadingIcon } from '@gitlab/ui';\nimport EmptyState from './empty_state.vue';\nimport VariableTable from './variable_table.vue';\nimport getManualVariablesQuery from './graphql/queries/get_manual_variables.query.graphql';\n\nexport default {\n  name: 'ManualVariablesApp',\n  components: {\n    EmptyState,\n    GlLoadingIcon,\n    VariableTable,\n  },\n  inject: ['manualVariablesCount', 'projectPath', 'pipelineIid'],\n  apollo: {\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    variables: {\n      query: getManualVariablesQuery,\n      skip() {\n        return !this.hasManualVariables;\n      },\n      variables() {\n        return {\n          projectPath: this.projectPath,\n          iid: this.pipelineIid,\n        };\n      },\n      update({ project }) {\n        return project?.pipeline?.manualVariables?.nodes || [];\n      },\n    },\n  },\n  computed: {\n    loading() {\n      return this.$apollo.queries.variables.loading;\n    },\n    hasManualVariables() {\n      return Boolean(this.manualVariablesCount > 0);\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div v-if=\"hasManualVariables\" class=\"manual-variables-table\">\n      <gl-loading-icon v-if=\"loading\" />\n      <variable-table v-else :variables=\"variables\" />\n    </div>\n    <empty-state v-else />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./manual_variables.vue?vue&type=template&id=c33ed3b8\"\nimport script from \"./manual_variables.vue?vue&type=script&lang=js\"\nexport * from \"./manual_variables.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.hasManualVariables)?_c('div',{staticClass:\"manual-variables-table\"},[(_vm.loading)?_c('gl-loading-icon'):_c('variable-table',{attrs:{\"variables\":_vm.variables}})],1):_c('empty-state')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import PipelineGraphWrapper from './graph/graph_component_wrapper.vue';\nimport FailedJobsApp from './jobs/failed_jobs_app.vue';\nimport JobsApp from './jobs/jobs_app.vue';\nimport TestReports from './test_reports/test_reports.vue';\nimport ManualVariables from './manual_variables/manual_variables.vue';\nimport {\n  pipelineTabName,\n  jobsTabName,\n  failedJobsTabName,\n  testReportTabName,\n  manualVariablesTabName,\n} from './constants';\n\nexport const routes = [\n  { name: pipelineTabName, path: '/', component: PipelineGraphWrapper },\n  { name: jobsTabName, path: '/builds', component: JobsApp },\n  { name: failedJobsTabName, path: '/failures', component: FailedJobsApp },\n  { name: testReportTabName, path: '/test_report', component: TestReports },\n  { name: manualVariablesTabName, path: '/manual_variables', component: ManualVariables },\n];\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-mt-5\"},[_c('p',{attrs:{\"data-testid\":\"page-description\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.pageDescription},scopedSlots:_vm._u([{key:\"helpPageLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.i18n.pageDescriptionHelpLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}])})],1),_vm._v(\" \"),(_vm.showSbomErrors)?_c('sbom-reports-errors-alert',{staticClass:\"gl-mb-5\",attrs:{\"errors\":_vm.sbomReportsErrors,\"error-description\":_vm.$options.i18n.sbomReportsErrorsDescription}}):_vm._e(),_vm._v(\" \"),(_vm.hasScans)?_c('div',{staticClass:\"gl-mb-5\"},[(_vm.showScanErrors)?_c('scan-alerts',{staticClass:\"gl-mb-5\",attrs:{\"type\":_vm.$options.errorsAlertType,\"scans\":_vm.scansWithErrors,\"title\":_vm.$options.i18n.parsingErrorAlertTitle,\"description\":_vm.$options.i18n.parsingErrorAlertDescription}}):_vm._e(),_vm._v(\" \"),(_vm.showScanWarnings)?_c('scan-alerts',{staticClass:\"gl-mb-5\",attrs:{\"type\":_vm.$options.warningsAlertType,\"scans\":_vm.scansWithWarnings,\"title\":_vm.$options.i18n.parsingWarningAlertTitle,\"description\":_vm.$options.i18n.parsingWarningAlertDescription}}):_vm._e(),_vm._v(\" \"),(_vm.hasPurgedScans)?_c('report-status-alert',{staticClass:\"gl-mb-5\"}):_vm._e(),_vm._v(\" \"),_c('security-reports-summary',{attrs:{\"summary\":_vm.reportSummary,\"jobs\":_vm.jobs}})],1):_vm._e(),_vm._v(\" \"),_c('pipeline-vulnerability-report',{attrs:{\"data-testid\":\"pipeline-vulnerability-report\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable import/export */\nimport { invert } from 'lodash';\n\nimport {\n  reportTypeToSecurityReportTypeEnum as reportTypeToSecurityReportTypeEnumCE,\n  REPORT_TYPE_API_FUZZING,\n  REPORT_TYPE_COVERAGE_FUZZING,\n  REPORT_TYPE_DAST,\n  REPORT_TYPE_DEPENDENCY_SCANNING,\n  REPORT_TYPE_CONTAINER_SCANNING,\n  REPORT_TYPE_CLUSTER_IMAGE_SCANNING,\n} from '~/vue_shared/security_reports/constants';\n\nexport * from '~/vue_shared/security_reports/constants';\n\n/**\n * SecurityReportTypeEnum values for use with GraphQL.\n *\n * These should correspond to the lowercase security scan report types.\n */\nexport const SECURITY_REPORT_TYPE_ENUM_API_FUZZING = 'API_FUZZING';\nexport const SECURITY_REPORT_TYPE_ENUM_COVERAGE_FUZZING = 'COVERAGE_FUZZING';\nexport const SECURITY_REPORT_TYPE_ENUM_DAST = 'DAST';\nexport const SECURITY_REPORT_TYPE_ENUM_DEPENDENCY_SCANNING = 'DEPENDENCY_SCANNING';\nexport const SECURITY_REPORT_TYPE_ENUM_CONTAINER_SCANNING = 'CONTAINER_SCANNING';\nexport const SECURITY_REPORT_TYPE_ENUM_CLUSTER_IMAGE_SCANNING = 'CLUSTER_IMAGE_SCANNING';\n\n/* Override CE Definitions */\n\n/**\n * A mapping from security scan report types to SecurityReportTypeEnum values.\n */\nexport const reportTypeToSecurityReportTypeEnum = {\n  ...reportTypeToSecurityReportTypeEnumCE,\n  [REPORT_TYPE_API_FUZZING]: SECURITY_REPORT_TYPE_ENUM_API_FUZZING,\n  [REPORT_TYPE_COVERAGE_FUZZING]: SECURITY_REPORT_TYPE_ENUM_COVERAGE_FUZZING,\n  [REPORT_TYPE_DAST]: SECURITY_REPORT_TYPE_ENUM_DAST,\n  [REPORT_TYPE_DEPENDENCY_SCANNING]: SECURITY_REPORT_TYPE_ENUM_DEPENDENCY_SCANNING,\n  [REPORT_TYPE_CONTAINER_SCANNING]: SECURITY_REPORT_TYPE_ENUM_CONTAINER_SCANNING,\n  [REPORT_TYPE_CLUSTER_IMAGE_SCANNING]: SECURITY_REPORT_TYPE_ENUM_CLUSTER_IMAGE_SCANNING,\n};\n\n/**\n * A mapping from SecurityReportTypeEnum values to security scan report types.\n */\nexport const securityReportTypeEnumToReportType = invert(reportTypeToSecurityReportTypeEnum);\n","<script>\nimport { GlAccordion, GlAccordionItem, GlAlert, GlLink, GlSprintf } from '@gitlab/ui';\nimport { DOC_PATH_SECURITY_SCANNER_INTEGRATION_REPORT } from 'ee/security_dashboard/constants';\n\nexport const TYPE_ERRORS = 'errors';\nexport const TYPE_WARNINGS = 'warnings';\n\nexport default {\n  components: {\n    GlAccordion,\n    GlAccordionItem,\n    GlAlert,\n    GlLink,\n    GlSprintf,\n  },\n  props: {\n    scans: {\n      type: Array,\n      required: true,\n    },\n    type: {\n      type: String,\n      required: true,\n      validator: (value) => [TYPE_ERRORS, TYPE_WARNINGS].includes(value),\n    },\n    title: {\n      type: String,\n      required: true,\n    },\n    description: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    alertVariant() {\n      return {\n        [TYPE_ERRORS]: 'danger',\n        [TYPE_WARNINGS]: 'warning',\n      }[this.type];\n    },\n    scansWithTitles() {\n      return this.scans.map((scan) => ({\n        ...scan,\n        issues: scan[this.type],\n        accordionTitle: `${scan.name} (${scan[this.type].length})`,\n      }));\n    },\n  },\n  DOC_PATH_SECURITY_SCANNER_INTEGRATION_REPORT,\n};\n</script>\n\n<template>\n  <gl-alert :variant=\"alertVariant\" :dismissible=\"false\">\n    <strong role=\"heading\">\n      {{ title }}\n    </strong>\n    <p class=\"gl-mt-3\">\n      <gl-sprintf :message=\"description\" data-testid=\"description\">\n        <template #helpPageLink=\"{ content }\">\n          <gl-link :href=\"$options.DOC_PATH_SECURITY_SCANNER_INTEGRATION_REPORT\" target=\"_blank\">{{\n            content\n          }}</gl-link>\n        </template>\n      </gl-sprintf>\n    </p>\n    <gl-accordion :header-level=\"3\">\n      <gl-accordion-item\n        v-for=\"{ name, issues, accordionTitle } in scansWithTitles\"\n        :key=\"name\"\n        :title=\"accordionTitle\"\n      >\n        <ul class=\"gl-pl-4\">\n          <li v-for=\"issue in issues\" :key=\"issue\">{{ issue }}</li>\n        </ul>\n      </gl-accordion-item>\n    </gl-accordion>\n  </gl-alert>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scan_alerts.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scan_alerts.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./scan_alerts.vue?vue&type=template&id=2b4e16b3\"\nimport script from \"./scan_alerts.vue?vue&type=script&lang=js\"\nexport * from \"./scan_alerts.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-alert',{attrs:{\"variant\":_vm.alertVariant,\"dismissible\":false}},[_c('strong',{attrs:{\"role\":\"heading\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.title)+\"\\n  \")]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mt-3\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.description,\"data-testid\":\"description\"},scopedSlots:_vm._u([{key:\"helpPageLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.DOC_PATH_SECURITY_SCANNER_INTEGRATION_REPORT,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}])})],1),_vm._v(\" \"),_c('gl-accordion',{attrs:{\"header-level\":3}},_vm._l((_vm.scansWithTitles),function({ name, issues, accordionTitle }){return _c('gl-accordion-item',{key:name,attrs:{\"title\":accordionTitle}},[_c('ul',{staticClass:\"gl-pl-4\"},_vm._l((issues),function(issue){return _c('li',{key:issue},[_vm._v(_vm._s(issue))])}),0)])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlAlert, GlSprintf, GlLink } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { DOC_PATH_SECURITY_SCANNER_INTEGRATION_RETENTION_PERIOD } from 'ee/security_dashboard/constants';\n\nexport const STATUS_PURGED = 'PURGED';\n\nexport default {\n  components: {\n    GlAlert,\n    GlSprintf,\n    GlLink,\n  },\n  i18n: {\n    reportStatusTitle: s__('SecurityReports|Report has expired'),\n    reportExpiredMessage: s__(\n      `SecurityReports|The security report for this pipeline has %{helpPageLinkStart}expired%{helpPageLinkEnd}. Re-run the pipeline to generate a new security report.`,\n    ),\n  },\n  DOC_PATH_SECURITY_SCANNER_INTEGRATION_RETENTION_PERIOD,\n};\n</script>\n\n<template>\n  <gl-alert variant=\"info\" :dismissible=\"false\">\n    <strong role=\"heading\">{{ $options.i18n.reportStatusTitle }}</strong>\n    <p class=\"gl-mt-3\">\n      <gl-sprintf :message=\"$options.i18n.reportExpiredMessage\" data-testid=\"description\">\n        <template #helpPageLink=\"{ content }\">\n          <gl-link\n            :href=\"$options.DOC_PATH_SECURITY_SCANNER_INTEGRATION_RETENTION_PERIOD\"\n            target=\"_blank\"\n            >{{ content }}</gl-link\n          >\n        </template>\n      </gl-sprintf>\n    </p>\n  </gl-alert>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_status_alert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_status_alert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./report_status_alert.vue?vue&type=template&id=2607d6fa\"\nimport script from \"./report_status_alert.vue?vue&type=script&lang=js\"\nexport * from \"./report_status_alert.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-alert',{attrs:{\"variant\":\"info\",\"dismissible\":false}},[_c('strong',{attrs:{\"role\":\"heading\"}},[_vm._v(_vm._s(_vm.$options.i18n.reportStatusTitle))]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mt-3\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.reportExpiredMessage,\"data-testid\":\"description\"},scopedSlots:_vm._u([{key:\"helpPageLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.DOC_PATH_SECURITY_SCANNER_INTEGRATION_RETENTION_PERIOD,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}])})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dast_modal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dast_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal, GlIcon, GlSprintf, GlTruncate, GlLink } from '@gitlab/ui';\nimport { n__, __ } from '~/locale';\n\nexport default {\n  components: { GlModal, GlIcon, GlSprintf, GlTruncate, GlLink },\n  props: {\n    scannedUrls: {\n      required: true,\n      type: Array,\n    },\n    scannedResourcesCount: {\n      required: true,\n      type: Number,\n    },\n    downloadLink: {\n      required: true,\n      type: String,\n    },\n  },\n  modal: {\n    modalId: 'dastUrl',\n    actionPrimary: {\n      text: __('Done'),\n      attributes: { variant: 'default' },\n    },\n  },\n  computed: {\n    title() {\n      return n__('%d Scanned URL', '%d Scanned URLs', this.scannedResourcesCount);\n    },\n    limitedScannedUrls() {\n      // show only 15 scanned urls\n      return this.scannedUrls.slice(0, 15);\n    },\n  },\n};\n</script>\n<template>\n  <gl-modal :title=\"title\" title-tag=\"h5\" v-bind=\"$options.modal\">\n    <!-- heading -->\n    <div class=\"row gl-text-subtle\">\n      <div class=\"col-1\">{{ __('Method') }}</div>\n      <div class=\"col-11\">{{ __('URL') }}</div>\n    </div>\n    <hr class=\"gl-my-3\" />\n\n    <!-- rows -->\n    <div v-for=\"(url, index) in limitedScannedUrls\" :key=\"index\" class=\"row gl-my-2\">\n      <div class=\"col-1\">{{ url.requestMethod.toUpperCase() }}</div>\n      <div class=\"col-11\" data-testid=\"dast-scanned-url\">\n        <gl-truncate :text=\"url.url\" position=\"middle\" />\n      </div>\n    </div>\n\n    <!-- banner -->\n    <div v-if=\"downloadLink\" class=\"gl-my-3 gl-inline-block gl-bg-gray-50 gl-py-5 gl-pl-3 gl-pr-7\">\n      <gl-icon name=\"bulb\" class=\"gl-mr-5 gl-align-middle\" />\n      <b class=\"gl-align-middle\">\n        <gl-sprintf\n          :message=\"\n            __(\n              'To view all %{scannedResourcesCount} scanned URLs, %{linkStart}please download the CSV file%{linkEnd}',\n            )\n          \"\n        >\n          <template #link=\"{ content }\">\n            <gl-link download :href=\"downloadLink\" data-testid=\"download-link\">\n              {{ content }}\n            </gl-link>\n          </template>\n          <template #scannedResourcesCount>\n            {{ scannedResourcesCount }}\n          </template>\n        </gl-sprintf>\n      </b>\n    </div>\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./dast_modal.vue?vue&type=template&id=723ffb5f\"\nimport script from \"./dast_modal.vue?vue&type=script&lang=js\"\nexport * from \"./dast_modal.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-modal',_vm._b({attrs:{\"title\":_vm.title,\"title-tag\":\"h5\"}},'gl-modal',_vm.$options.modal,false),[_c('div',{staticClass:\"row gl-text-subtle\"},[_c('div',{staticClass:\"col-1\"},[_vm._v(_vm._s(_vm.__('Method')))]),_vm._v(\" \"),_c('div',{staticClass:\"col-11\"},[_vm._v(_vm._s(_vm.__('URL')))])]),_vm._v(\" \"),_c('hr',{staticClass:\"gl-my-3\"}),_vm._v(\" \"),_vm._l((_vm.limitedScannedUrls),function(url,index){return _c('div',{key:index,staticClass:\"row gl-my-2\"},[_c('div',{staticClass:\"col-1\"},[_vm._v(_vm._s(url.requestMethod.toUpperCase()))]),_vm._v(\" \"),_c('div',{staticClass:\"col-11\",attrs:{\"data-testid\":\"dast-scanned-url\"}},[_c('gl-truncate',{attrs:{\"text\":url.url,\"position\":\"middle\"}})],1)])}),_vm._v(\" \"),(_vm.downloadLink)?_c('div',{staticClass:\"gl-my-3 gl-inline-block gl-bg-gray-50 gl-py-5 gl-pl-3 gl-pr-7\"},[_c('gl-icon',{staticClass:\"gl-mr-5 gl-align-middle\",attrs:{\"name\":\"bulb\"}}),_vm._v(\" \"),_c('b',{staticClass:\"gl-align-middle\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.__(\n            'To view all %{scannedResourcesCount} scanned URLs, %{linkStart}please download the CSV file%{linkEnd}',\n          )},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"download\":\"\",\"href\":_vm.downloadLink,\"data-testid\":\"download-link\"}},[_vm._v(\"\\n            \"+_vm._s(content)+\"\\n          \")])]}},{key:\"scannedResourcesCount\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.scannedResourcesCount)+\"\\n        \")]},proxy:true}],null,false,2770013784)})],1)],1):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./security_report_download_dropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./security_report_download_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlDisclosureDropdown } from '@gitlab/ui';\nimport { s__, sprintf } from '~/locale';\n\nexport default {\n  name: 'SecurityReportDownloadDropdown',\n  components: {\n    GlDisclosureDropdown,\n  },\n  props: {\n    artifacts: {\n      type: Array,\n      required: true,\n    },\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    text: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    showDropdown() {\n      return this.loading || this.artifacts.length > 0;\n    },\n    items() {\n      return this.artifacts.map(({ name, path }) => ({\n        text: this.artifactText(name),\n        href: path,\n        extraAttrs: {\n          download: '',\n        },\n      }));\n    },\n  },\n  methods: {\n    artifactText(name) {\n      return sprintf(s__('SecurityReports|Download %{artifactName}'), {\n        artifactName: name,\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-disclosure-dropdown\n    v-if=\"showDropdown\"\n    :items=\"items\"\n    :toggle-text=\"text\"\n    :loading=\"loading\"\n    icon=\"download\"\n    size=\"small\"\n    placement=\"bottom-end\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./security_report_download_dropdown.vue?vue&type=template&id=f5b9a976\"\nimport script from \"./security_report_download_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./security_report_download_dropdown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.showDropdown)?_c('gl-disclosure-dropdown',{attrs:{\"items\":_vm.items,\"toggle-text\":_vm.text,\"loading\":_vm.loading,\"icon\":\"download\",\"size\":\"small\",\"placement\":\"bottom-end\"}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { capitalize } from 'lodash';\nimport {\n  securityReportTypeEnumToReportType,\n  REPORT_FILE_TYPES,\n} from 'ee_else_ce/vue_shared/security_reports/constants';\n\n// eslint-disable-next-line max-params\nconst addReportTypeIfExists = (acc, reportTypes, reportType, getName, downloadPath) => {\n  if (reportTypes && reportTypes.includes(reportType)) {\n    acc.push({\n      reportType,\n      name: getName(reportType),\n      path: downloadPath,\n    });\n  }\n};\n\nexport const extractSecurityReportArtifacts = (reportTypes, jobs) => {\n  return jobs.reduce((acc, job) => {\n    const artifacts = job.artifacts?.nodes ?? [];\n\n    artifacts.forEach(({ downloadPath, fileType }) => {\n      addReportTypeIfExists(\n        acc,\n        reportTypes,\n        securityReportTypeEnumToReportType[fileType],\n        () => job.name,\n        downloadPath,\n      );\n\n      addReportTypeIfExists(\n        acc,\n        reportTypes,\n        REPORT_FILE_TYPES[fileType],\n        (reportType) => `${job.name} ${capitalize(reportType)}`,\n        downloadPath,\n      );\n    });\n\n    return acc;\n  }, []);\n};\n","<script>\nimport {\n  GlButton,\n  GlCard,\n  GlCollapseToggleDirective,\n  GlSprintf,\n  GlModalDirective,\n} from '@gitlab/ui';\nimport { COLLAPSE_SECURITY_REPORTS_SUMMARY_LOCAL_STORAGE_KEY as LOCAL_STORAGE_KEY } from 'ee/security_dashboard/constants';\nimport { getFormattedSummary } from 'ee/security_dashboard/helpers';\nimport Modal from 'ee/vue_shared/security_reports/components/dast_modal.vue';\nimport AccessorUtilities from '~/lib/utils/accessor';\nimport { convertToSnakeCase } from '~/lib/utils/text_utility';\nimport { s__, __, n__ } from '~/locale';\nimport SecurityReportDownloadDropdown from '~/vue_shared/security_reports/components/security_report_download_dropdown.vue';\nimport { extractSecurityReportArtifacts } from '~/vue_shared/security_reports/utils';\nimport {\n  SECURITY_REPORT_TYPE_ENUM_DAST,\n  REPORT_TYPE_DAST,\n} from 'ee/vue_shared/security_reports/constants';\n\nexport default {\n  name: 'SecurityReportsSummary',\n  components: {\n    GlButton,\n    GlCard,\n    GlSprintf,\n    Modal,\n    SecurityReportDownloadDropdown,\n  },\n  directives: {\n    collapseToggle: GlCollapseToggleDirective,\n    GlModal: GlModalDirective,\n  },\n  props: {\n    summary: {\n      type: Object,\n      required: true,\n    },\n    jobs: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n  },\n  i18n: {\n    scannedResources: s__('SecurityReports|scanned resources'),\n    scanDetails: s__('SecurityReports|Scan details'),\n    downloadUrls: s__('SecurityReports|Download scanned URLs'),\n    downloadResults: s__('SecurityReports|Download results'),\n    hideDetails: __('Hide details'),\n    showDetails: __('Show details'),\n    vulnerabilities: (count) => n__('%d vulnerability', '%d vulnerabilities', count),\n    scannedUrls: (count) => n__('%d URL scanned', '%d URLs scanned', count),\n  },\n  data() {\n    return {\n      isVisible: true,\n    };\n  },\n  computed: {\n    collapseButtonLabel() {\n      return this.isVisible ? this.$options.i18n.hideDetails : this.$options.i18n.showDetails;\n    },\n    formattedSummary() {\n      return getFormattedSummary(this.summary);\n    },\n  },\n  watch: {\n    isVisible(isVisible) {\n      if (!this.localStorageUsable) {\n        return;\n      }\n      if (isVisible) {\n        localStorage.removeItem(LOCAL_STORAGE_KEY);\n      } else {\n        localStorage.setItem(LOCAL_STORAGE_KEY, '1');\n      }\n    },\n  },\n  created() {\n    this.localStorageUsable = AccessorUtilities.canUseLocalStorage();\n    if (this.localStorageUsable) {\n      const shouldHideSummaryDetails = Boolean(localStorage.getItem(LOCAL_STORAGE_KEY));\n      this.isVisible = !shouldHideSummaryDetails;\n    }\n  },\n  methods: {\n    hasScannedResources(scanSummary) {\n      return scanSummary.scannedResources?.nodes?.length > 0;\n    },\n    hasDastArtifacts() {\n      return this.findArtifacts(SECURITY_REPORT_TYPE_ENUM_DAST).length > 0;\n    },\n    hasDastArtifactDownload(scanType, scanSummary) {\n      return (\n        scanType === SECURITY_REPORT_TYPE_ENUM_DAST &&\n        (Boolean(this.downloadLink(scanSummary)) || this.hasDastArtifacts)\n      );\n    },\n    downloadLink(scanSummary) {\n      return scanSummary.scannedResourcesCsvPath || '';\n    },\n    normalizeScanType(scanType) {\n      return convertToSnakeCase(scanType.toLowerCase());\n    },\n    findArtifacts(scanType) {\n      return extractSecurityReportArtifacts([this.normalizeScanType(scanType)], this.jobs);\n    },\n    buildDastArtifacts(scanSummary) {\n      const csvArtifact = {\n        name: this.$options.i18n.scannedResources,\n        path: this.downloadLink(scanSummary),\n        reportType: REPORT_TYPE_DAST,\n      };\n\n      return [...this.findArtifacts(SECURITY_REPORT_TYPE_ENUM_DAST), csvArtifact];\n    },\n    toggleCollapse() {\n      this.isVisible = !this.isVisible;\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-card\n    body-class=\"gl-py-0 gl-pr-4\"\n    :header-class=\"`gl-flex gl-items-center gl-justify-between gl-py-4 gl-pr-4 ${\n      isVisible ? 'gl-border-b-1' : 'gl-border-b-0 gl-rounded-base'\n    }`\"\n  >\n    <template #header>\n      <strong>{{ $options.i18n.scanDetails }}</strong>\n      <div v-if=\"localStorageUsable\">\n        <gl-button data-testid=\"collapse-button\" @click=\"toggleCollapse\">\n          {{ collapseButtonLabel }}\n        </gl-button>\n      </div>\n    </template>\n    <div\n      v-if=\"isVisible\"\n      class=\"scan-reports-summary-grid gl-my-3 gl-grid gl-items-center gl-gap-y-2\"\n    >\n      <template v-for=\"[scanType, scanSummary] in formattedSummary\">\n        <div :key=\"scanType\" class=\"gl-leading-24\">\n          {{ scanType }}\n        </div>\n        <div :key=\"`${scanType}-count`\" class=\"gl-leading-24\">\n          <gl-sprintf :message=\"$options.i18n.vulnerabilities(scanSummary.vulnerabilitiesCount)\" />\n        </div>\n        <div\n          :key=\"`${scanType}-download`\"\n          class=\"gl-text-right\"\n          :data-testid=\"`artifact-download-${normalizeScanType(scanType)}`\"\n        >\n          <template v-if=\"scanSummary.scannedResourcesCount !== undefined\">\n            <gl-button\n              v-if=\"hasScannedResources(scanSummary)\"\n              v-gl-modal.dastUrl\n              icon=\"download\"\n              size=\"small\"\n              data-testid=\"modal-button\"\n            >\n              {{ $options.i18n.downloadUrls }}\n            </gl-button>\n\n            <template v-else>\n              (<gl-sprintf\n                :message=\"$options.i18n.scannedUrls(scanSummary.scannedResourcesCount)\"\n              />)\n            </template>\n\n            <modal\n              v-if=\"hasScannedResources(scanSummary)\"\n              :scanned-urls=\"scanSummary.scannedResources.nodes\"\n              :scanned-resources-count=\"scanSummary.scannedResourcesCount\"\n              :download-link=\"downloadLink(scanSummary)\"\n            />\n          </template>\n\n          <template v-else-if=\"hasDastArtifactDownload(scanType, scanSummary)\">\n            <security-report-download-dropdown\n              :text=\"$options.i18n.downloadResults\"\n              :artifacts=\"buildDastArtifacts(scanSummary)\"\n              data-testid=\"download-link\"\n            />\n          </template>\n\n          <security-report-download-dropdown\n            v-else\n            :text=\"$options.i18n.downloadResults\"\n            :artifacts=\"findArtifacts(scanType)\"\n          />\n        </div>\n      </template>\n    </div>\n  </gl-card>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./security_reports_summary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./security_reports_summary.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./security_reports_summary.vue?vue&type=template&id=4416617a\"\nimport script from \"./security_reports_summary.vue?vue&type=script&lang=js\"\nexport * from \"./security_reports_summary.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-card',{attrs:{\"body-class\":\"gl-py-0 gl-pr-4\",\"header-class\":`gl-flex gl-items-center gl-justify-between gl-py-4 gl-pr-4 ${\n    _vm.isVisible ? 'gl-border-b-1' : 'gl-border-b-0 gl-rounded-base'\n  }`},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('strong',[_vm._v(_vm._s(_vm.$options.i18n.scanDetails))]),_vm._v(\" \"),(_vm.localStorageUsable)?_c('div',[_c('gl-button',{attrs:{\"data-testid\":\"collapse-button\"},on:{\"click\":_vm.toggleCollapse}},[_vm._v(\"\\n        \"+_vm._s(_vm.collapseButtonLabel)+\"\\n      \")])],1):_vm._e()]},proxy:true}])},[_vm._v(\" \"),(_vm.isVisible)?_c('div',{staticClass:\"scan-reports-summary-grid gl-my-3 gl-grid gl-items-center gl-gap-y-2\"},[_vm._l((_vm.formattedSummary),function([scanType, scanSummary]){return [_c('div',{key:scanType,staticClass:\"gl-leading-24\"},[_vm._v(\"\\n        \"+_vm._s(scanType)+\"\\n      \")]),_vm._v(\" \"),_c('div',{key:`${scanType}-count`,staticClass:\"gl-leading-24\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.vulnerabilities(scanSummary.vulnerabilitiesCount)}})],1),_vm._v(\" \"),_c('div',{key:`${scanType}-download`,staticClass:\"gl-text-right\",attrs:{\"data-testid\":`artifact-download-${_vm.normalizeScanType(scanType)}`}},[(scanSummary.scannedResourcesCount !== undefined)?[(_vm.hasScannedResources(scanSummary))?_c('gl-button',{directives:[{name:\"gl-modal\",rawName:\"v-gl-modal.dastUrl\",modifiers:{\"dastUrl\":true}}],attrs:{\"icon\":\"download\",\"size\":\"small\",\"data-testid\":\"modal-button\"}},[_vm._v(\"\\n            \"+_vm._s(_vm.$options.i18n.downloadUrls)+\"\\n          \")]):[_vm._v(\"\\n            (\"),_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.scannedUrls(scanSummary.scannedResourcesCount)}}),_vm._v(\")\\n          \")],_vm._v(\" \"),(_vm.hasScannedResources(scanSummary))?_c('modal',{attrs:{\"scanned-urls\":scanSummary.scannedResources.nodes,\"scanned-resources-count\":scanSummary.scannedResourcesCount,\"download-link\":_vm.downloadLink(scanSummary)}}):_vm._e()]:(_vm.hasDastArtifactDownload(scanType, scanSummary))?[_c('security-report-download-dropdown',{attrs:{\"text\":_vm.$options.i18n.downloadResults,\"artifacts\":_vm.buildDastArtifacts(scanSummary),\"data-testid\":\"download-link\"}})]:_c('security-report-download-dropdown',{attrs:{\"text\":_vm.$options.i18n.downloadResults,\"artifacts\":_vm.findArtifacts(scanType)}})],2)]})],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_vulnerability_report.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_vulnerability_report.vue?vue&type=script&lang=js\"","<script>\nimport VulnerabilityReport from '../shared/vulnerability_report/vulnerability_report.vue';\nimport { FILTER_PRESETS, FIELD_PRESETS } from '../shared/vulnerability_report/constants';\nimport VulnerabilityFindingModal from './vulnerability_finding_modal.vue';\n\nexport default {\n  components: {\n    VulnerabilityReport,\n    VulnerabilityFindingModal,\n  },\n  inject: ['pipeline', 'projectFullPath'],\n  data() {\n    return {\n      graphqlFilters: undefined,\n      selectedFinding: undefined,\n    };\n  },\n  methods: {\n    // Two issues here for the pipeline GraphQL endpoint:\n    // 1. Severity and reportType filters, unlike for vulnerabilities, need to be lower case.\n    // 2. Empty array returns an empty result, so we need to pass undefined in that case.\n    normalizeForGraphQLQuery(filter) {\n      return filter?.length ? filter.map((s) => s.toLowerCase()) : undefined;\n    },\n    transformFilters(filters) {\n      return {\n        ...filters,\n        reportType: this.normalizeForGraphQLQuery(filters.reportType),\n        severity: this.normalizeForGraphQLQuery(filters.severity),\n      };\n    },\n    showModal(finding) {\n      this.selectedFinding = finding;\n    },\n    hideModal() {\n      this.selectedFinding = undefined;\n    },\n  },\n  filtersToShow: FILTER_PRESETS.PIPELINE,\n  fieldsToShow: FIELD_PRESETS.PIPELINE,\n};\n</script>\n\n<template>\n  <div>\n    <vulnerability-report\n      :fields=\"$options.fieldsToShow\"\n      :filter-dropdowns=\"$options.filtersToShow\"\n      :filter-fn=\"transformFilters\"\n      @vulnerability-clicked=\"showModal\"\n    />\n\n    <vulnerability-finding-modal\n      v-if=\"selectedFinding\"\n      :finding-uuid=\"selectedFinding.id\"\n      :pipeline-iid=\"pipeline.iid\"\n      :branch-ref=\"pipeline.sourceBranch\"\n      :project-full-path=\"projectFullPath\"\n      @hidden=\"hideModal\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_vulnerability_report.vue?vue&type=template&id=bf2dc602\"\nimport script from \"./pipeline_vulnerability_report.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_vulnerability_report.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('vulnerability-report',{attrs:{\"fields\":_vm.$options.fieldsToShow,\"filter-dropdowns\":_vm.$options.filtersToShow,\"filter-fn\":_vm.transformFilters},on:{\"vulnerability-clicked\":_vm.showModal}}),_vm._v(\" \"),(_vm.selectedFinding)?_c('vulnerability-finding-modal',{attrs:{\"finding-uuid\":_vm.selectedFinding.id,\"pipeline-iid\":_vm.pipeline.iid,\"branch-ref\":_vm.pipeline.sourceBranch,\"project-full-path\":_vm.projectFullPath},on:{\"hidden\":_vm.hideModal}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_security_dashboard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_security_dashboard.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlSprintf } from '@gitlab/ui';\nimport pipelineSecurityReportSummaryQuery from 'ee/security_dashboard/graphql/queries/pipeline_security_report_summary.query.graphql';\nimport { reportTypeToSecurityReportTypeEnum } from 'ee/vue_shared/security_reports/constants';\nimport { fetchPolicies } from '~/lib/graphql';\nimport { s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport SbomReportsErrorsAlert from 'ee/dependencies/components/sbom_reports_errors_alert.vue';\nimport ScanAlerts, { TYPE_ERRORS, TYPE_WARNINGS } from './scan_alerts.vue';\nimport ReportStatusAlert, { STATUS_PURGED } from './report_status_alert.vue';\nimport SecurityReportsSummary from './security_reports_summary.vue';\nimport PipelineVulnerabilityReport from './pipeline_vulnerability_report.vue';\n\nexport default {\n  name: 'PipelineSecurityDashboard',\n  errorsAlertType: TYPE_ERRORS,\n  warningsAlertType: TYPE_WARNINGS,\n  scanPurgedStatus: STATUS_PURGED,\n  components: {\n    ReportStatusAlert,\n    ScanAlerts,\n    SecurityReportsSummary,\n    PipelineVulnerabilityReport,\n    GlSprintf,\n    GlLink,\n    SbomReportsErrorsAlert,\n  },\n  provide() {\n    return {\n      dismissalDescriptions: this.dismissalDescriptions,\n    };\n  },\n  inject: ['pipeline', 'projectFullPath'],\n  props: {\n    dismissalDescriptions: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    sbomReportsErrors: {\n      type: Array,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      securityReportSummary: {},\n    };\n  },\n  apollo: {\n    securityReportSummary: {\n      query: pipelineSecurityReportSummaryQuery,\n      fetchPolicy: fetchPolicies.NETWORK_ONLY,\n      variables() {\n        return {\n          fullPath: this.projectFullPath,\n          pipelineIid: this.pipeline.iid,\n          reportTypes: Object.values(reportTypeToSecurityReportTypeEnum),\n        };\n      },\n      update(data) {\n        const summary = {\n          reports: data?.project?.pipeline?.securityReportSummary,\n          jobs: data?.project?.pipeline?.jobs?.nodes,\n        };\n        return summary?.reports && Object.keys(summary.reports).length ? summary : null;\n      },\n    },\n  },\n  computed: {\n    reportSummary() {\n      return this.securityReportSummary?.reports;\n    },\n    jobs() {\n      return this.securityReportSummary?.jobs;\n    },\n    scans() {\n      const getScans = (reportSummary) => reportSummary?.scans?.nodes || [];\n\n      return this.reportSummary\n        ? Object.values(this.reportSummary)\n            // generate flat array of all scans\n            .flatMap(getScans)\n        : [];\n    },\n    hasScans() {\n      return this.scans.length > 0;\n    },\n    purgedScans() {\n      return this.scans.filter((scan) => scan.status === this.$options.scanPurgedStatus);\n    },\n    hasPurgedScans() {\n      return this.purgedScans.length > 0;\n    },\n    scansWithErrors() {\n      const hasErrors = (scan) => Boolean(scan.errors?.length);\n\n      return this.scans.filter(hasErrors);\n    },\n    showScanErrors() {\n      return this.scansWithErrors.length > 0 && !this.hasPurgedScans;\n    },\n    scansWithWarnings() {\n      const hasWarnings = (scan) => Boolean(scan.warnings?.length);\n\n      return this.scans.filter(hasWarnings);\n    },\n    showScanWarnings() {\n      return this.scansWithWarnings.length > 0 && !this.hasPurgedScans;\n    },\n    showSbomErrors() {\n      return this.sbomReportsErrors.length > 0;\n    },\n  },\n  i18n: {\n    parsingErrorAlertTitle: s__('SecurityReports|Error parsing security reports'),\n    parsingErrorAlertDescription: s__(\n      'SecurityReports|The following security reports contain one or more vulnerability findings that could not be parsed and were not recorded. To investigate a report, download the artifacts in the job output. Ensure the security report conforms to the relevant %{helpPageLinkStart}JSON schema%{helpPageLinkEnd}.',\n    ),\n    parsingWarningAlertTitle: s__('SecurityReports|Warning parsing security reports'),\n    parsingWarningAlertDescription: s__(\n      'SecurityReports|Check the messages generated while parsing the following security reports, as they may prevent the results from being ingested by GitLab. Ensure the security report conforms to a supported %{helpPageLinkStart}JSON schema%{helpPageLinkEnd}.',\n    ),\n    sbomReportsErrorsDescription: s__(\n      'SecurityReports|The following SBOM reports could not be parsed. Therefore the list of reported vulnerabilities may be incomplete.',\n    ),\n    pageDescription: s__(\n      'SecurityReports|Results show vulnerability findings from the latest successful %{helpPageLinkStart}pipeline%{helpPageLinkEnd}.',\n    ),\n    pageDescriptionHelpLink: helpPagePath(\n      'user/application_security/vulnerability_report/pipeline.html',\n    ),\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-mt-5\">\n    <p data-testid=\"page-description\">\n      <gl-sprintf :message=\"$options.i18n.pageDescription\">\n        <template #helpPageLink=\"{ content }\">\n          <gl-link :href=\"$options.i18n.pageDescriptionHelpLink\" target=\"_blank\">{{\n            content\n          }}</gl-link>\n        </template>\n      </gl-sprintf>\n    </p>\n\n    <sbom-reports-errors-alert\n      v-if=\"showSbomErrors\"\n      :errors=\"sbomReportsErrors\"\n      :error-description=\"$options.i18n.sbomReportsErrorsDescription\"\n      class=\"gl-mb-5\"\n    />\n\n    <div v-if=\"hasScans\" class=\"gl-mb-5\">\n      <scan-alerts\n        v-if=\"showScanErrors\"\n        :type=\"$options.errorsAlertType\"\n        :scans=\"scansWithErrors\"\n        :title=\"$options.i18n.parsingErrorAlertTitle\"\n        :description=\"$options.i18n.parsingErrorAlertDescription\"\n        class=\"gl-mb-5\"\n      />\n      <scan-alerts\n        v-if=\"showScanWarnings\"\n        :type=\"$options.warningsAlertType\"\n        :scans=\"scansWithWarnings\"\n        :title=\"$options.i18n.parsingWarningAlertTitle\"\n        :description=\"$options.i18n.parsingWarningAlertDescription\"\n        class=\"gl-mb-5\"\n      />\n\n      <report-status-alert v-if=\"hasPurgedScans\" class=\"gl-mb-5\" />\n      <security-reports-summary :summary=\"reportSummary\" :jobs=\"jobs\" />\n    </div>\n\n    <pipeline-vulnerability-report data-testid=\"pipeline-vulnerability-report\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_security_dashboard.vue?vue&type=template&id=48766826\"\nimport script from \"./pipeline_security_dashboard.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_security_dashboard.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import LicenseReportApp from 'ee/vue_shared/license_compliance/mr_widget_license_report.vue';\nimport CodequalityReportApp from 'ee/codequality_report/codequality_report.vue';\nimport {\n  codeQualityTabName,\n  licensesTabName,\n  securityTabName,\n} from '~/ci/pipeline_details/constants';\nimport { routes as ceRoutes } from '~/ci/pipeline_details/routes';\nimport PipelineSecurityDashboard from 'ee/security_dashboard/components/pipeline/pipeline_security_dashboard.vue';\n\nexport const routes = [\n  ...ceRoutes,\n  { name: securityTabName, path: '/security', component: PipelineSecurityDashboard },\n  { name: licensesTabName, path: '/licenses', component: LicenseReportApp },\n  { name: codeQualityTabName, path: '/codequality_report', component: CodequalityReportApp },\n];\n","import { BLink } from '../../../../vendor/bootstrap-vue/src/components/link/link';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport { isItem } from './utils';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst ITEM_CLASS = 'gl-new-dropdown-item';\nvar script = {\n  name: DISCLOSURE_DROPDOWN_ITEM_NAME,\n  ITEM_CLASS,\n  components: {\n    BLink\n  },\n  props: {\n    item: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: isItem\n    }\n  },\n  computed: {\n    isLink() {\n      var _this$item, _this$item2;\n      return typeof ((_this$item = this.item) === null || _this$item === void 0 ? void 0 : _this$item.href) === 'string' || typeof ((_this$item2 = this.item) === null || _this$item2 === void 0 ? void 0 : _this$item2.to) === 'string';\n    },\n    isCustomContent() {\n      return Boolean(this.$scopedSlots.default);\n    },\n    itemComponent() {\n      const {\n        item\n      } = this;\n      if (this.isLink) return {\n        is: BLink,\n        attrs: {\n          href: item.href,\n          to: item.to,\n          ...item.extraAttrs\n        },\n        listeners: {\n          click: this.action\n        }\n      };\n      return {\n        is: 'button',\n        attrs: {\n          ...(item === null || item === void 0 ? void 0 : item.extraAttrs),\n          type: 'button'\n        },\n        listeners: {\n          click: () => {\n            var _item$action;\n            item === null || item === void 0 ? void 0 : (_item$action = item.action) === null || _item$action === void 0 ? void 0 : _item$action.call(undefined, item);\n            this.action();\n          }\n        }\n      };\n    },\n    listIndex() {\n      var _this$item3, _this$item3$extraAttr;\n      return (_this$item3 = this.item) !== null && _this$item3 !== void 0 && (_this$item3$extraAttr = _this$item3.extraAttrs) !== null && _this$item3$extraAttr !== void 0 && _this$item3$extraAttr.disabled ? null : 0;\n    },\n    componentIndex() {\n      var _this$item4, _this$item4$extraAttr;\n      return (_this$item4 = this.item) !== null && _this$item4 !== void 0 && (_this$item4$extraAttr = _this$item4.extraAttrs) !== null && _this$item4$extraAttr !== void 0 && _this$item4$extraAttr.disabled ? null : -1;\n    },\n    wrapperClass() {\n      var _this$item$wrapperCla, _this$item5;\n      return (_this$item$wrapperCla = (_this$item5 = this.item) === null || _this$item5 === void 0 ? void 0 : _this$item5.wrapperClass) !== null && _this$item$wrapperCla !== void 0 ? _this$item$wrapperCla : '';\n    },\n    wrapperListeners() {\n      const listeners = {\n        keydown: this.onKeydown\n      };\n      if (this.isCustomContent) {\n        listeners.click = this.action;\n      }\n      return listeners;\n    }\n  },\n  methods: {\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      if (code === ENTER || code === SPACE) {\n        if (this.isCustomContent) {\n          this.action();\n        } else {\n          stopEvent(event);\n          /** Instead of simply navigating or calling the action, we want\n           * the `a/button` to be the target of the event as it might have additional attributes.\n           * E.g. `a` might have `target` attribute.\n           */\n          const e = new MouseEvent('click', {\n            bubbles: true,\n            cancelable: true\n          });\n          if (this.isLink) {\n            this.$refs.item.$el.dispatchEvent(e);\n          } else {\n            var _this$$refs$item;\n            (_this$$refs$item = this.$refs.item) === null || _this$$refs$item === void 0 ? void 0 : _this$$refs$item.dispatchEvent(e);\n          }\n        }\n      }\n    },\n    action() {\n      this.$emit('action', this.item);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',_vm._g({class:[_vm.$options.ITEM_CLASS, _vm.wrapperClass],attrs:{\"tabindex\":_vm.listIndex,\"data-testid\":\"disclosure-dropdown-item\"}},_vm.wrapperListeners),[_vm._t(\"default\",function(){return [_c(_vm.itemComponent.is,_vm._g(_vm._b({ref:\"item\",tag:\"component\",staticClass:\"gl-new-dropdown-item-content\",attrs:{\"tabindex\":_vm.componentIndex}},'component',_vm.itemComponent.attrs,false),_vm.itemComponent.listeners),[_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.item.text)+\"\\n        \")]})],2)])]})],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { ITEM_CLASS };\n","<script>\nconst GRAPHQL_TYPENAME_TO_COMPONENT_MAP = {\n  VulnerabilityDetailUrl: () => import('./types/report_type_url.vue'),\n  VulnerabilityDetailDiff: () => import('./types/report_type_diff.vue'),\n  VulnerabilityDetailCode: () => import('./types/report_type_code.vue'),\n  VulnerabilityDetailFileLocation: () => import('./types/report_type_file_location.vue'),\n  VulnerabilityDetailModuleLocation: () => import('./types/report_type_module_location.vue'),\n  VulnerabilityDetailCommit: () => import('./types/report_type_commit.vue'),\n  VulnerabilityDetailValue: () => import('./types/report_type_value.vue'),\n  VulnerabilityDetailText: () => import('./types/report_type_value.vue'),\n  VulnerabilityDetailMarkdown: () =>\n    import('~/vue_shared/components/markdown/markdown_content.vue'),\n  VulnerabilityDetailBoolean: () => import('./types/report_type_value.vue'),\n  VulnerabilityDetailInt: () => import('./types/report_type_value.vue'),\n  VulnerabilityDetailList: () => import('./types/report_type_list_graphql.vue'),\n  VulnerabilityDetailNamedList: () => import('./types/report_type_named_list_graphql.vue'),\n  VulnerabilityDetailTable: () => import('./types/report_type_table_graphql.vue'),\n};\n\nexport const GRAPHQL_TYPENAMES = Object.keys(GRAPHQL_TYPENAME_TO_COMPONENT_MAP);\n\nexport default {\n  components: {\n    // Register the components that are currently mapped to a GraphQL type, so they can be rendered dynamically\n    ...GRAPHQL_TYPENAME_TO_COMPONENT_MAP,\n  },\n  props: {\n    item: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n<template>\n  <component :is=\"item.type\" v-bind=\"item\" data-testid=\"report-component\" />\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_item_graphql.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_item_graphql.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./report_item_graphql.vue?vue&type=template&id=0b3609cf\"\nimport script from \"./report_item_graphql.vue?vue&type=script&lang=js\"\nexport * from \"./report_item_graphql.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.item.type,_vm._b({tag:\"component\",attrs:{\"data-testid\":\"report-component\"}},'component',_vm.item,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { intersperse } from '../../../utils/data_utils';\nimport { splitAfterSymbols } from '../../../utils/string_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlFriendlyWrap',\n  functional: true,\n  props: {\n    /**\n     * Text to be wrapped.\n     */\n    text: {\n      type: String,\n      required: true\n    },\n    /**\n     * A list of strings representing the break-words.\n     */\n    symbols: {\n      type: Array,\n      required: false,\n      default: () => ['/']\n    }\n  },\n  render(createElement, _ref) {\n    let {\n      props\n    } = _ref;\n    const {\n      symbols,\n      text\n    } = props;\n    const textParts = splitAfterSymbols(symbols, text !== null && text !== void 0 ? text : '');\n    const content = intersperse(() => createElement('wbr'), textParts);\n    return createElement('span', {\n      class: 'gl-break-words'\n    }, content);\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = undefined;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    {},\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.hasSeverityBadge)?_c('div',{staticClass:\"severity-badge gl-whitespace-nowrap gl-text-default sm:gl-text-left\"},[_c('span',{class:_vm.className},[_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.tooltipTitle),expression:\"tooltipTitle\"}],staticClass:\"gl-mr-3\",attrs:{\"name\":_vm.iconName,\"size\":12}})],1),_vm._v(\"\\n  \"+_vm._s(_vm.severityTitle)+\"\\n\")]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./severity_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./severity_badge.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { SEVERITY_LEVELS } from 'ee/security_dashboard/constants';\nimport { SEVERITY_CLASS_NAME_MAP, SEVERITY_TOOLTIP_TITLE_MAP } from './constants';\n\nexport default {\n  name: 'SeverityBadge',\n  components: {\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    severity: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    hasSeverityBadge() {\n      return Object.keys(SEVERITY_CLASS_NAME_MAP).includes(this.severityKey);\n    },\n    severityKey() {\n      return this.severity?.toLowerCase();\n    },\n    className() {\n      return SEVERITY_CLASS_NAME_MAP[this.severityKey];\n    },\n    iconName() {\n      return `severity-${this.severityKey}`;\n    },\n    severityTitle() {\n      return SEVERITY_LEVELS[this.severityKey] || this.severity;\n    },\n    tooltipTitle() {\n      return SEVERITY_TOOLTIP_TITLE_MAP[this.severityKey];\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    v-if=\"hasSeverityBadge\"\n    class=\"severity-badge gl-whitespace-nowrap gl-text-default sm:gl-text-left\"\n  >\n    <span :class=\"className\"\n      ><gl-icon v-gl-tooltip=\"tooltipTitle\" :name=\"iconName\" :size=\"12\" class=\"gl-mr-3\"\n    /></span>\n    {{ severityTitle }}\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./severity_badge.vue?vue&type=template&id=029253a9\"\nimport script from \"./severity_badge.vue?vue&type=script&lang=js\"\nexport * from \"./severity_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { calculateRemainingMilliseconds, formatTime } from '~/lib/utils/datetime_utility';\n\nexport default {\n  data() {\n    return {\n      remainingTime: formatTime(0),\n      remainingTimeIntervalId: null,\n    };\n  },\n\n  mounted() {\n    this.startRemainingTimeInterval();\n  },\n\n  beforeDestroy() {\n    if (this.remainingTimeIntervalId) {\n      clearInterval(this.remainingTimeIntervalId);\n    }\n  },\n\n  computed: {\n    isDelayedJob() {\n      return this.job?.scheduled || this.job?.scheduledAt;\n    },\n    scheduledTime() {\n      return this.job.scheduled_at || this.job.scheduledAt;\n    },\n  },\n\n  watch: {\n    isDelayedJob() {\n      this.startRemainingTimeInterval();\n    },\n  },\n\n  methods: {\n    startRemainingTimeInterval() {\n      if (this.remainingTimeIntervalId) {\n        clearInterval(this.remainingTimeIntervalId);\n      }\n\n      if (this.isDelayedJob) {\n        this.updateRemainingTime();\n        this.remainingTimeIntervalId = setInterval(() => this.updateRemainingTime(), 1000);\n      }\n    },\n\n    updateRemainingTime() {\n      const remainingMilliseconds = calculateRemainingMilliseconds(this.scheduledTime);\n      this.remainingTime = formatTime(remainingMilliseconds);\n    },\n  },\n};\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n  // Lodash aliases.\n  'each': 'forEach',\n  'eachRight': 'forEachRight',\n  'entries': 'toPairs',\n  'entriesIn': 'toPairsIn',\n  'extend': 'assignIn',\n  'extendAll': 'assignInAll',\n  'extendAllWith': 'assignInAllWith',\n  'extendWith': 'assignInWith',\n  'first': 'head',\n\n  // Methods that are curried variants of others.\n  'conforms': 'conformsTo',\n  'matches': 'isMatch',\n  'property': 'get',\n\n  // Ramda aliases.\n  '__': 'placeholder',\n  'F': 'stubFalse',\n  'T': 'stubTrue',\n  'all': 'every',\n  'allPass': 'overEvery',\n  'always': 'constant',\n  'any': 'some',\n  'anyPass': 'overSome',\n  'apply': 'spread',\n  'assoc': 'set',\n  'assocPath': 'set',\n  'complement': 'negate',\n  'compose': 'flowRight',\n  'contains': 'includes',\n  'dissoc': 'unset',\n  'dissocPath': 'unset',\n  'dropLast': 'dropRight',\n  'dropLastWhile': 'dropRightWhile',\n  'equals': 'isEqual',\n  'identical': 'eq',\n  'indexBy': 'keyBy',\n  'init': 'initial',\n  'invertObj': 'invert',\n  'juxt': 'over',\n  'omitAll': 'omit',\n  'nAry': 'ary',\n  'path': 'get',\n  'pathEq': 'matchesProperty',\n  'pathOr': 'getOr',\n  'paths': 'at',\n  'pickAll': 'pick',\n  'pipe': 'flow',\n  'pluck': 'map',\n  'prop': 'get',\n  'propEq': 'matchesProperty',\n  'propOr': 'getOr',\n  'props': 'at',\n  'symmetricDifference': 'xor',\n  'symmetricDifferenceBy': 'xorBy',\n  'symmetricDifferenceWith': 'xorWith',\n  'takeLast': 'takeRight',\n  'takeLastWhile': 'takeRightWhile',\n  'unapply': 'rest',\n  'unnest': 'flatten',\n  'useWith': 'overArgs',\n  'where': 'conformsTo',\n  'whereEq': 'isMatch',\n  'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n  '1': [\n    'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n    'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n    'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n    'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n    'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n    'uniqueId', 'words', 'zipAll'\n  ],\n  '2': [\n    'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n    'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n    'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n    'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n    'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n    'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n    'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n    'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n    'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n    'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n    'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n    'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n    'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n    'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n    'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n    'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n    'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n    'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n    'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n    'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n    'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n    'zipObjectDeep'\n  ],\n  '3': [\n    'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n    'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n    'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n    'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n    'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n    'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n    'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n    'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n    'xorWith', 'zipWith'\n  ],\n  '4': [\n    'fill', 'setWith', 'updateWith'\n  ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n  '2': [1, 0],\n  '3': [2, 0, 1],\n  '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n  'dropRightWhile': 1,\n  'dropWhile': 1,\n  'every': 1,\n  'filter': 1,\n  'find': 1,\n  'findFrom': 1,\n  'findIndex': 1,\n  'findIndexFrom': 1,\n  'findKey': 1,\n  'findLast': 1,\n  'findLastFrom': 1,\n  'findLastIndex': 1,\n  'findLastIndexFrom': 1,\n  'findLastKey': 1,\n  'flatMap': 1,\n  'flatMapDeep': 1,\n  'flatMapDepth': 1,\n  'forEach': 1,\n  'forEachRight': 1,\n  'forIn': 1,\n  'forInRight': 1,\n  'forOwn': 1,\n  'forOwnRight': 1,\n  'map': 1,\n  'mapKeys': 1,\n  'mapValues': 1,\n  'partition': 1,\n  'reduce': 2,\n  'reduceRight': 2,\n  'reject': 1,\n  'remove': 1,\n  'some': 1,\n  'takeRightWhile': 1,\n  'takeWhile': 1,\n  'times': 1,\n  'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n  'mapKeys': [1],\n  'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n  'assignInAllWith': [1, 0],\n  'assignInWith': [1, 2, 0],\n  'assignAllWith': [1, 0],\n  'assignWith': [1, 2, 0],\n  'differenceBy': [1, 2, 0],\n  'differenceWith': [1, 2, 0],\n  'getOr': [2, 1, 0],\n  'intersectionBy': [1, 2, 0],\n  'intersectionWith': [1, 2, 0],\n  'isEqualWith': [1, 2, 0],\n  'isMatchWith': [2, 1, 0],\n  'mergeAllWith': [1, 0],\n  'mergeWith': [1, 2, 0],\n  'padChars': [2, 1, 0],\n  'padCharsEnd': [2, 1, 0],\n  'padCharsStart': [2, 1, 0],\n  'pullAllBy': [2, 1, 0],\n  'pullAllWith': [2, 1, 0],\n  'rangeStep': [1, 2, 0],\n  'rangeStepRight': [1, 2, 0],\n  'setWith': [3, 1, 2, 0],\n  'sortedIndexBy': [2, 1, 0],\n  'sortedLastIndexBy': [2, 1, 0],\n  'unionBy': [1, 2, 0],\n  'unionWith': [1, 2, 0],\n  'updateWith': [3, 1, 2, 0],\n  'xorBy': [1, 2, 0],\n  'xorWith': [1, 2, 0],\n  'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n  'assignAll': { 'start': 0 },\n  'assignAllWith': { 'start': 0 },\n  'assignInAll': { 'start': 0 },\n  'assignInAllWith': { 'start': 0 },\n  'defaultsAll': { 'start': 0 },\n  'defaultsDeepAll': { 'start': 0 },\n  'invokeArgs': { 'start': 2 },\n  'invokeArgsMap': { 'start': 2 },\n  'mergeAll': { 'start': 0 },\n  'mergeAllWith': { 'start': 0 },\n  'partial': { 'start': 1 },\n  'partialRight': { 'start': 1 },\n  'without': { 'start': 1 },\n  'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n  'array': {\n    'fill': true,\n    'pull': true,\n    'pullAll': true,\n    'pullAllBy': true,\n    'pullAllWith': true,\n    'pullAt': true,\n    'remove': true,\n    'reverse': true\n  },\n  'object': {\n    'assign': true,\n    'assignAll': true,\n    'assignAllWith': true,\n    'assignIn': true,\n    'assignInAll': true,\n    'assignInAllWith': true,\n    'assignInWith': true,\n    'assignWith': true,\n    'defaults': true,\n    'defaultsAll': true,\n    'defaultsDeep': true,\n    'defaultsDeepAll': true,\n    'merge': true,\n    'mergeAll': true,\n    'mergeAllWith': true,\n    'mergeWith': true,\n  },\n  'set': {\n    'set': true,\n    'setWith': true,\n    'unset': true,\n    'update': true,\n    'updateWith': true\n  }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n  var hasOwnProperty = Object.prototype.hasOwnProperty,\n      object = exports.aliasToReal,\n      result = {};\n\n  for (var key in object) {\n    var value = object[key];\n    if (hasOwnProperty.call(result, value)) {\n      result[value].push(key);\n    } else {\n      result[value] = [key];\n    }\n  }\n  return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n  'assignAll': 'assign',\n  'assignAllWith': 'assignWith',\n  'assignInAll': 'assignIn',\n  'assignInAllWith': 'assignInWith',\n  'curryN': 'curry',\n  'curryRightN': 'curryRight',\n  'defaultsAll': 'defaults',\n  'defaultsDeepAll': 'defaultsDeep',\n  'findFrom': 'find',\n  'findIndexFrom': 'findIndex',\n  'findLastFrom': 'findLast',\n  'findLastIndexFrom': 'findLastIndex',\n  'getOr': 'get',\n  'includesFrom': 'includes',\n  'indexOfFrom': 'indexOf',\n  'invokeArgs': 'invoke',\n  'invokeArgsMap': 'invokeMap',\n  'lastIndexOfFrom': 'lastIndexOf',\n  'mergeAll': 'merge',\n  'mergeAllWith': 'mergeWith',\n  'padChars': 'pad',\n  'padCharsEnd': 'padEnd',\n  'padCharsStart': 'padStart',\n  'propertyOf': 'get',\n  'rangeStep': 'range',\n  'rangeStepRight': 'rangeRight',\n  'restFrom': 'rest',\n  'spreadFrom': 'spread',\n  'trimChars': 'trim',\n  'trimCharsEnd': 'trimEnd',\n  'trimCharsStart': 'trimStart',\n  'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n  'castArray': true,\n  'flow': true,\n  'flowRight': true,\n  'iteratee': true,\n  'mixin': true,\n  'rearg': true,\n  'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n  'add': true,\n  'assign': true,\n  'assignIn': true,\n  'bind': true,\n  'bindKey': true,\n  'concat': true,\n  'difference': true,\n  'divide': true,\n  'eq': true,\n  'gt': true,\n  'gte': true,\n  'isEqual': true,\n  'lt': true,\n  'lte': true,\n  'matchesProperty': true,\n  'merge': true,\n  'multiply': true,\n  'overArgs': true,\n  'partial': true,\n  'partialRight': true,\n  'propertyOf': true,\n  'random': true,\n  'range': true,\n  'rangeRight': true,\n  'subtract': true,\n  'zip': true,\n  'zipObject': true,\n  'zipObjectDeep': true\n};\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitiesDismiss\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ids\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDismissalReason\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilitiesDismiss\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityIds\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ids\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":274}};\n    doc.loc.source = {\"body\":\"mutation vulnerabilitiesDismiss(\\n  $ids: [VulnerabilityID!]!\\n  $comment: String\\n  $dismissalReason: VulnerabilityDismissalReason\\n) {\\n  vulnerabilitiesDismiss(\\n    input: { vulnerabilityIds: $ids, comment: $comment, dismissalReason: $dismissalReason }\\n  ) {\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"vulnerabilitiesDismiss\"] = oneQuery(doc, \"vulnerabilitiesDismiss\");\n        \n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n *   return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n  arity = guard ? undefined : arity;\n  var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n  result.placeholder = curry.placeholder;\n  return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","import { BCollapse } from '../../../vendor/bootstrap-vue/src/components/collapse/collapse';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlCollapse',\n  components: {\n    BCollapse\n  },\n  model: {\n    prop: 'visible',\n    event: 'input'\n  },\n  props: {\n    visible: {\n      type: Boolean,\n      default: false,\n      required: false\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-collapse',_vm._g(_vm._b({attrs:{\"visible\":_vm.visible}},'b-collapse',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { s__, __ } from '~/locale';\nimport { RAW_TEXT_WARNING } from '~/ci/jobs_page/constants';\n\nexport const JOBS_COUNT_ERROR_MESSAGE = __('There was an error fetching the number of jobs.');\nexport const JOBS_FETCH_ERROR_MSG = __('There was an error fetching the jobs.');\nexport const LOADING_ARIA_LABEL = __('Loading');\nexport const CANCELABLE_JOBS_ERROR_MSG = __('There was an error fetching the cancelable jobs.');\nexport const CANCEL_JOBS_MODAL_ID = 'cancel-jobs-modal';\nexport const CANCEL_JOBS_MODAL_TITLE = s__('AdminArea|Are you sure?');\nexport const CANCEL_JOBS_BUTTON_TEXT = s__('AdminArea|Cancel all jobs');\nexport const CANCEL_BUTTON_TOOLTIP = s__('AdminArea|Cancel all running and pending jobs');\nexport const CANCEL_TEXT = __('Cancel');\nexport const CANCEL_JOBS_FAILED_TEXT = s__('AdminArea|Canceling jobs failed');\nexport const PRIMARY_ACTION_TEXT = s__('AdminArea|Yes, proceed');\nexport const CANCEL_JOBS_WARNING = s__(\n  \"AdminArea|You're about to cancel all running and pending jobs across this instance. Do you want to proceed?\",\n);\nexport const RUNNER_EMPTY_TEXT = __('None');\nexport const RUNNER_NO_DESCRIPTION = s__('Runners|No description');\n\n/* Admin Table constants */\n/* The field list is based on app/assets/javascripts/jobs/components/table/constants.js */\nexport const DEFAULT_FIELDS_ADMIN = [\n  { key: 'status', label: __('Status'), columnClass: 'gl-w-3/20' },\n  { key: 'job', label: __('Job'), columnClass: 'gl-w-4/20' },\n  { key: 'project', label: __('Project'), columnClass: 'gl-w-4/20' },\n  { key: 'runner', label: __('Runner'), columnClass: 'gl-w-3/20' },\n  { key: 'pipeline', label: __('Pipeline'), columnClass: 'gl-w-2/20' },\n  { key: 'actions', label: '', columnClass: 'gl-w-2/20' },\n];\n\nexport const RAW_TEXT_WARNING_ADMIN = RAW_TEXT_WARNING;\nexport const VIEW_ADMIN_JOBS_PAGELOAD = 'view_admin_jobs_pageload';\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getCodeQualityViolations\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"codeQualityReports\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"line\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fingerprint\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"},\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":496}};\n    doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/page_info.fragment.graphql\\\"\\n\\nquery getCodeQualityViolations($projectPath: ID!, $iid: ID!, $first: Int, $after: String) {\\n  project(fullPath: $projectPath) {\\n    id\\n    pipeline(iid: $iid) {\\n      id\\n      codeQualityReports(first: $first, after: $after) {\\n        count\\n        nodes {\\n          line\\n          description\\n          path\\n          fingerprint\\n          severity\\n        }\\n        pageInfo {\\n          ...PageInfo\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/page_info.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getCodeQualityViolations\"] = oneQuery(doc, \"getCodeQualityViolations\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getManualVariables\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"manualVariables\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"key\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":282}};\n    doc.loc.source = {\"body\":\"query getManualVariables($projectPath: ID!, $iid: ID!) {\\n  project(fullPath: $projectPath) {\\n    __typename\\n    id\\n    pipeline(iid: $iid) {\\n      id\\n      manualVariables {\\n        __typename\\n        nodes {\\n          id\\n          key\\n          value\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getManualVariables\"] = oneQuery(doc, \"getManualVariables\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityResolve\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityResolve\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resolvedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resolvedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LastStateTransition\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":348}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/last_state_transition.fragment.graphql\\\"\\n\\nmutation vulnerabilityResolve($id: VulnerabilityID!, $comment: String) {\\n  vulnerabilityResolve(input: { id: $id, comment: $comment }) {\\n    errors\\n    vulnerability {\\n      id\\n      state\\n      resolvedAt\\n      resolvedBy {\\n        id\\n      }\\n      ...LastStateTransition\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/last_state_transition.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"vulnerabilityResolve\"] = oneQuery(doc, \"vulnerabilityResolve\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"clusterAgents\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"clusterAgents\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":162}};\n    doc.loc.source = {\"body\":\"query clusterAgents($projectPath: ID!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    clusterAgents {\\n      nodes {\\n        id\\n        name\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"clusterAgents\"] = oneQuery(doc, \"clusterAgents\");\n        \n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","var castPath = require('./_castPath'),\n    last = require('./last'),\n    parent = require('./_parent'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"aiResolveVulnerability\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"resourceId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AiModelID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"clientSubscriptionId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerableMergeRequestId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestID\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"aiAction\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"resolveVulnerability\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"resourceId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"resourceId\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerableMergeRequestId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerableMergeRequestId\"}}}]}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"clientSubscriptionId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"clientSubscriptionId\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":373}};\n    doc.loc.source = {\"body\":\"mutation aiResolveVulnerability(\\n  $resourceId: AiModelID!\\n  $clientSubscriptionId: String\\n  $vulnerableMergeRequestId: MergeRequestID\\n) {\\n  aiAction(\\n    input: {\\n      resolveVulnerability: {\\n        resourceId: $resourceId\\n        vulnerableMergeRequestId: $vulnerableMergeRequestId\\n      }\\n      clientSubscriptionId: $clientSubscriptionId\\n    }\\n  ) {\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"aiResolveVulnerability\"] = oneQuery(doc, \"aiResolveVulnerability\");\n        \n","import { __, s__ } from '~/locale';\nimport { DOCS_URL } from 'jh_else_ce/lib/utils/url_utility';\n\nexport const RUNNER_TYPENAME = 'CiRunner'; // __typename\n\nexport const RUNNER_PAGE_SIZE = 20;\nexport const RUNNER_JOB_COUNT_LIMIT = 1000;\n\nexport const RUNNER_DETAILS_PROJECTS_PAGE_SIZE = 5;\nexport const RUNNER_DETAILS_JOBS_PAGE_SIZE = 30;\n\nexport const I18N_FETCH_ERROR = s__('Runners|Something went wrong while fetching runner data.');\nexport const I18N_CREATE_ERROR = s__(\n  'Runners|An error occurred while creating the runner. Please try again.',\n);\n\nexport const FILTER_CSS_CLASSES =\n  'gl-bg-gray-10 gl-p-5 gl-border-solid gl-border-default gl-border-0 gl-border-t-1';\n\n// Type\n\nexport const I18N_ALL_TYPES = s__('Runners|All');\nexport const I18N_INSTANCE_TYPE = s__('Runners|Instance');\nexport const I18N_GROUP_TYPE = s__('Runners|Group');\nexport const I18N_PROJECT_TYPE = s__('Runners|Project');\nexport const I18N_INSTANCE_RUNNER_DESCRIPTION = s__('Runners|Available to all projects');\nexport const I18N_GROUP_RUNNER_DESCRIPTION = s__(\n  'Runners|Available to all projects and subgroups in the group',\n);\nexport const I18N_PROJECT_RUNNER_DESCRIPTION = s__('Runners|Associated with one or more projects');\n\n// Status\nexport const I18N_STATUS_ONLINE = s__('Runners|Online');\nexport const I18N_STATUS_NEVER_CONTACTED = s__('Runners|Never contacted');\nexport const I18N_STATUS_OFFLINE = s__('Runners|Offline');\nexport const I18N_STATUS_STALE = s__('Runners|Stale');\n\n// Executor Status\nexport const I18N_JOB_STATUS_ACTIVE = s__('Runners|Active');\nexport const I18N_JOB_STATUS_IDLE = s__('Runners|Idle');\n\n// Status tooltips\nexport const I18N_ONLINE_TOOLTIP = s__('Runners|Last contact was %{timeAgo}');\nexport const I18N_NEVER_CONTACTED_TOOLTIP = s__('Runners|Runner has never contacted this instance');\nexport const I18N_NEVER_CONTACTED_STALE_TOOLTIP = s__(\n  'Runners|Runner is older than %{elapsedTime} and has never contacted GitLab',\n);\nexport const I18N_DISCONNECTED_TOOLTIP = s__(\n  \"Runners|Runner hasn't contacted GitLab in more than %{elapsedTime} and last contact was %{timeAgo}\",\n);\n\n// Default online/stale status timeouts, actual values\nexport const ONLINE_CONTACT_TIMEOUT_SECS = 2 * 60 * 60; // 2 hours\nexport const STALE_TIMEOUT_SECS = 604800; // 7.days\n\n// Registration dropdown\nexport const I18N_REGISTER_INSTANCE_TYPE = s__('Runners|Register an instance runner');\nexport const I18N_REGISTER_GROUP_TYPE = s__('Runners|Register a group runner');\nexport const I18N_REGISTER_PROJECT_TYPE = s__('Runners|Register a project runner');\nexport const I18N_REGISTER_RUNNER = s__('Runners|Register a runner');\n\n// Actions\nexport const I18N_EDIT = __('Edit');\n\nexport const I18N_PAUSE = __('Pause');\nexport const I18N_PAUSED = s__('Runners|Paused');\nexport const I18N_PAUSE_TOOLTIP = s__('Runners|Pause from accepting jobs');\nexport const I18N_PAUSED_DESCRIPTION = s__('Runners|Not accepting jobs');\n\nexport const I18N_RESUME = __('Resume');\nexport const I18N_RESUME_TOOLTIP = s__('Runners|Resume accepting jobs');\n\nexport const I18N_DELETE = s__('Runners|Delete');\nexport const I18N_DELETE_RUNNER = s__('Runners|Delete runner');\nexport const I18N_DELETED_TOAST = s__('Runners|Runner %{name} was deleted');\n\n// List\nexport const I18N_CREATOR = s__('Runners|Creator');\nexport const I18N_LOCKED_RUNNER_DESCRIPTION = s__(\n  'Runners|Runner is locked and available for currently assigned projects only. Only administrators can change the assigned projects.',\n);\nexport const I18N_VERSION = s__('Runners|Version starts with');\nexport const I18N_VERSION_LABEL = s__('Runners|Version %{version}');\nexport const I18N_LAST_CONTACT_LABEL = s__('Runners|Last contact: %{timeAgo}');\n\nexport const I18N_CREATED_AT_LABEL = s__('Runners|Created %{timeAgo}');\nexport const I18N_CREATED_BY_LABEL = s__('Runners|Created by %{user}');\nexport const I18N_CREATED_BY_AT_LABEL = s__('Runners|Created by %{user} %{timeAgo}');\n\nexport const I18N_SHOW_ONLY_INHERITED = s__('Runners|Show only inherited');\nexport const I18N_ADMIN = s__('Runners|Administrator');\n\n// No runners registered\nexport const I18N_GET_STARTED = s__('Runners|Get started with runners');\nexport const I18N_RUNNERS_ARE_AGENTS = s__(\n  'Runners|Runners are the agents that run your CI/CD jobs.',\n);\nexport const I18N_CREATE_RUNNER_LINK = s__(\n  'Runners|%{linkStart}Create a new runner%{linkEnd} to get started.',\n);\nexport const I18N_STILL_USING_REGISTRATION_TOKENS = s__('Runners|Still using registration tokens?');\nexport const I18N_CONTACT_ADMIN_TO_REGISTER = s__(\n  'Runners|To register new runners, contact your administrator.',\n);\n\n// Runner details\n\nexport const JOBS_ROUTE_PATH = '/jobs'; // vue-router route path\n\nexport const I18N_DETAILS = s__('Runners|Details');\nexport const I18N_JOBS = s__('Runners|Jobs');\nexport const I18N_ASSIGNED_PROJECTS = s__('Runners|Assigned Projects (%{projectCount})');\nexport const I18N_FILTER_PROJECTS = s__('Runners|Filter projects');\nexport const I18N_CLEAR_FILTER_PROJECTS = __('Clear');\nexport const I18N_NO_JOBS_FOUND = s__('Runners|This runner has not run any jobs.');\nexport const I18N_NO_PROJECTS_FOUND = __('No projects found');\n\n// Runner registration\n\nexport const RUNNER_REGISTRATION_POLLING_INTERVAL_MS = 2000;\n\n// Styles\n\nexport const RUNNER_TAG_BADGE_VARIANT = 'info';\nexport const RUNNER_TAG_BG_CLASS = 'gl-bg-blue-100';\n\n// Filtered search parameter names\n// - Used for URL params names\n// - GlFilteredSearch tokens type\n\nexport const PARAM_KEY_CREATOR = 'creator';\nexport const PARAM_KEY_STATUS = 'status';\nexport const PARAM_KEY_PAUSED = 'paused';\nexport const PARAM_KEY_RUNNER_TYPE = 'runner_type';\nexport const PARAM_KEY_TAG = 'tag';\nexport const PARAM_KEY_VERSION = 'version_prefix';\nexport const PARAM_KEY_SEARCH = 'search';\nexport const PARAM_KEY_MEMBERSHIP = 'membership';\n\nexport const PARAM_KEY_SORT = 'sort';\nexport const PARAM_KEY_AFTER = 'after';\nexport const PARAM_KEY_BEFORE = 'before';\n\nexport const PARAM_KEY_PLATFORM = 'platform';\n\n// CiRunnerType\n\nexport const INSTANCE_TYPE = 'INSTANCE_TYPE';\nexport const GROUP_TYPE = 'GROUP_TYPE';\nexport const PROJECT_TYPE = 'PROJECT_TYPE';\nexport const RUNNER_TYPES = [INSTANCE_TYPE, GROUP_TYPE, PROJECT_TYPE];\n\n// CiRunnerStatus\n\nexport const STATUS_ONLINE = 'ONLINE';\nexport const STATUS_NEVER_CONTACTED = 'NEVER_CONTACTED';\nexport const STATUS_OFFLINE = 'OFFLINE';\nexport const STATUS_STALE = 'STALE';\n\n// CiRunnerJobExecutionStatus\n\nexport const JOB_STATUS_ACTIVE = 'ACTIVE';\nexport const JOB_STATUS_IDLE = 'IDLE';\n\n// CiRunnerAccessLevel\n\nexport const ACCESS_LEVEL_NOT_PROTECTED = 'NOT_PROTECTED';\nexport const ACCESS_LEVEL_REF_PROTECTED = 'REF_PROTECTED';\n\nexport const DEFAULT_ACCESS_LEVEL = ACCESS_LEVEL_NOT_PROTECTED;\n\n// CiRunnerSort\n\nexport const CREATED_DESC = 'CREATED_DESC';\nexport const CREATED_ASC = 'CREATED_ASC';\nexport const CONTACTED_DESC = 'CONTACTED_DESC';\nexport const CONTACTED_ASC = 'CONTACTED_ASC';\n\nexport const DEFAULT_SORT = CREATED_DESC;\n\n// CiRunnerMembershipFilter\n\nexport const MEMBERSHIP_DESCENDANTS = 'DESCENDANTS';\nexport const MEMBERSHIP_ALL_AVAILABLE = 'ALL_AVAILABLE';\n\nexport const DEFAULT_MEMBERSHIP = MEMBERSHIP_DESCENDANTS;\n\n// Local storage namespaces\n\nexport const ADMIN_FILTERED_SEARCH_NAMESPACE = 'admin_runners';\nexport const GROUP_FILTERED_SEARCH_NAMESPACE = 'group_runners';\n\n// Platforms\n\nexport const LINUX_PLATFORM = 'linux';\nexport const MACOS_PLATFORM = 'osx';\nexport const WINDOWS_PLATFORM = 'windows';\nexport const GOOGLE_CLOUD_PLATFORM = 'google_cloud';\nexport const GOOGLE_KUBERNETES_ENGINE = 'gke';\n\n// Stages for the google cloud setup\nexport const GOOGLE_CLOUD_SETUP_START = 'google_cloud_setup_start';\nexport const GOOGLE_CLOUD_SETUP_END = 'google_cloud_setup_end';\n\n// About Gitlab Runner Package host\nexport const RUNNER_PACKAGE_HOST = 'gitlab-runner-downloads.s3.amazonaws.com';\n\nexport const DEFAULT_PLATFORM = LINUX_PLATFORM;\n\n// Runner docs are in a separate repository and are not shipped with GitLab\n// they are rendered as external URLs.\nexport const INSTALL_HELP_URL = `${DOCS_URL}/runner/install`;\nexport const EXECUTORS_HELP_URL = `${DOCS_URL}/runner/executors/`;\nexport const SERVICE_COMMANDS_HELP_URL = `${DOCS_URL}/runner/commands/#service-related-commands`;\nexport const CHANGELOG_URL = `https://gitlab.com/gitlab-org/gitlab-runner/blob/main/CHANGELOG.md`;\nexport const DOCKER_HELP_URL = `${DOCS_URL}/runner/install/docker.html`;\nexport const KUBERNETES_HELP_URL = `${DOCS_URL}/runner/install/kubernetes.html`;\nexport const RUNNER_MANAGERS_HELP_URL = `${DOCS_URL}/runner/fleet_scaling/#workers-executors-and-autoscaling-capabilities`;\nexport const SINGLE_RUNNER_ENTRY_HELP_URL = `${DOCS_URL}/runner/configuration/advanced-configuration#the-runners-section`;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('querystring-sync',{attrs:{\"querystring-key\":\"state\",\"value\":_vm.selected,\"valid-values\":_vm.$options.VALID_VALUES},on:{\"input\":_vm.updateSelectedFromQS}}),_vm._v(\" \"),_c('label',{staticClass:\"gl-mb-2\"},[_vm._v(_vm._s(_vm.$options.i18n.label))]),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"header-text\":_vm.$options.i18n.label,\"block\":\"\",\"multiple\":\"\",\"items\":_vm.$options.GROUPS,\"selected\":_vm.selected,\"toggle-text\":_vm.toggleText,\"data-testid\":\"filter-status-dropdown\"},on:{\"select\":_vm.updateSelected}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { s__, n__ } from '~/locale';\nimport { getSelectedOptionsText } from '~/lib/utils/listbox_helpers';\nimport { VULNERABILITY_STATE_OBJECTS, DISMISSAL_REASONS } from 'ee/vulnerabilities/constants';\nimport QuerystringSync from './querystring_sync.vue';\nimport { ALL_ID as ALL_STATUS_VALUE } from './constants';\n\nconst { detected, confirmed, dismissed, resolved } = VULNERABILITY_STATE_OBJECTS;\nexport const GROUPS = [\n  {\n    text: '',\n    textSrOnly: true,\n    options: [\n      { value: ALL_STATUS_VALUE, text: s__('SecurityReports|All statuses') },\n      { value: detected.searchParamValue, text: detected.buttonText },\n      { value: confirmed.searchParamValue, text: confirmed.buttonText },\n      { value: resolved.searchParamValue, text: resolved.buttonText },\n    ],\n  },\n  {\n    text: s__('SecurityReports|Dismissed as...'),\n    options: [\n      { value: dismissed.searchParamValue, text: s__('SecurityReports|All dismissal reasons') },\n      ...Object.entries(DISMISSAL_REASONS).map(([value, text]) => ({\n        value: value.toUpperCase(),\n        text,\n      })),\n    ],\n  },\n];\n\nconst OPTIONS = [...GROUPS[0].options, ...GROUPS[1].options];\nconst VALID_VALUES = OPTIONS.map(({ value }) => value);\nconst DEFAULT_VALUES = [detected.searchParamValue, confirmed.searchParamValue];\n\nconst ALL_DISMISSED_VALUE = GROUPS[1].options[0].value;\nconst DISMISSAL_REASON_VALUES = GROUPS[1].options.slice(1).map(({ value }) => value);\n\nexport default {\n  components: {\n    GlCollapsibleListbox,\n    QuerystringSync,\n  },\n  data: () => ({\n    selected: DEFAULT_VALUES,\n  }),\n  computed: {\n    toggleText() {\n      // \"All dismissal reasons\" option is selected\n      if (this.selected.length === 1 && this.selected[0] === ALL_DISMISSED_VALUE) {\n        return s__('SecurityReports|Dismissed (all reasons)');\n      }\n      // Dismissal reason(s) is selected\n      if (this.selected.every((value) => DISMISSAL_REASON_VALUES.includes(value))) {\n        return n__(`Dismissed (%d reason)`, `Dismissed (%d reasons)`, this.selected.length);\n      }\n\n      return getSelectedOptionsText({ options: OPTIONS, selected: this.selected });\n    },\n  },\n  watch: {\n    selected: {\n      immediate: true,\n      handler() {\n        const dismissalReason = this.selected.filter((value) =>\n          DISMISSAL_REASON_VALUES.includes(value),\n        );\n        const state = this.selected.filter(\n          (value) => !DISMISSAL_REASON_VALUES.includes(value) && value !== ALL_STATUS_VALUE,\n        );\n\n        this.$emit('filter-changed', { state, dismissalReason });\n      },\n    },\n  },\n  methods: {\n    updateSelected(selected) {\n      const selectedValue = selected.at(-1);\n\n      const noneSelected = selected.length <= 0;\n      const allStatusSelected = selectedValue === ALL_STATUS_VALUE;\n      const allDismissedSelected = selectedValue === ALL_DISMISSED_VALUE;\n      const dismissalReasonSelected = DISMISSAL_REASON_VALUES.includes(selectedValue);\n\n      const filterOutValues = (selectedVal, valuesToDeselect) => {\n        return selectedVal.filter((s) => !valuesToDeselect.includes(s));\n      };\n\n      if (noneSelected || allStatusSelected) {\n        this.selected = [ALL_STATUS_VALUE];\n      } else if (allDismissedSelected) {\n        this.selected = filterOutValues(selected, [...DISMISSAL_REASON_VALUES, ALL_STATUS_VALUE]);\n      } else if (dismissalReasonSelected) {\n        this.selected = filterOutValues(selected, [ALL_DISMISSED_VALUE, ALL_STATUS_VALUE]);\n      } else {\n        this.selected = filterOutValues(selected, [ALL_STATUS_VALUE]);\n      }\n    },\n    updateSelectedFromQS(selected) {\n      if (selected.includes(ALL_STATUS_VALUE)) {\n        this.selected = [ALL_STATUS_VALUE];\n      } else if (selected.length > 0) {\n        this.selected = selected;\n      } else {\n        this.selected = DEFAULT_VALUES;\n      }\n    },\n  },\n  i18n: {\n    label: s__('SecurityReports|Status'),\n  },\n  GROUPS,\n  VALID_VALUES,\n};\n</script>\n\n<template>\n  <div>\n    <querystring-sync\n      querystring-key=\"state\"\n      :value=\"selected\"\n      :valid-values=\"$options.VALID_VALUES\"\n      @input=\"updateSelectedFromQS\"\n    />\n    <label class=\"gl-mb-2\">{{ $options.i18n.label }}</label>\n    <gl-collapsible-listbox\n      :header-text=\"$options.i18n.label\"\n      block\n      multiple\n      :items=\"$options.GROUPS\"\n      :selected=\"selected\"\n      :toggle-text=\"toggleText\"\n      data-testid=\"filter-status-dropdown\"\n      @select=\"updateSelected\"\n    />\n  </div>\n</template>\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status_filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status_filter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./status_filter.vue?vue&type=template&id=ab461f44\"\nimport script from \"./status_filter.vue?vue&type=script&lang=js\"\nexport * from \"./status_filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFindingCreateIssue\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"findingUuid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ProjectID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFindingCreateIssue\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"findingUuid\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectId\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":225}};\n    doc.loc.source = {\"body\":\"mutation securityFindingCreateIssue($findingUuid: String!, $projectId: ProjectID!) {\\n  securityFindingCreateIssue(input: { uuid: $findingUuid, project: $projectId }) {\\n    errors\\n    issue {\\n      id\\n      webUrl\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"securityFindingCreateIssue\"] = oneQuery(doc, \"securityFindingCreateIssue\");\n        \n","import { __, s__ } from '~/locale';\nimport {\n  REPORT_TYPES_WITH_MANUALLY_ADDED,\n  REPORT_TYPES_CONTAINER_SCANNING_FOR_REGISTRY,\n} from 'ee/security_dashboard/constants';\nimport { REPORT_TYPE_CLUSTER_IMAGE_SCANNING } from '~/vue_shared/security_reports/constants';\n\nexport const FIELDS = {\n  CHECKBOX: {\n    key: 'checkbox',\n    class: 'checkbox',\n  },\n  DETECTED: {\n    key: 'detected',\n    label: s__('Vulnerability|Detected'),\n    class: 'detected',\n    sortable: true,\n  },\n  STATUS: {\n    key: 'state',\n    label: s__('Vulnerability|Status'),\n    class: 'status',\n  },\n  SEVERITY: {\n    key: 'severity',\n    label: s__('Vulnerability|Severity'),\n    class: 'severity gl-text-nowrap',\n    sortable: true,\n  },\n  DESCRIPTION: {\n    key: 'title',\n    label: __('Description'),\n    class: 'description gl-break-all',\n  },\n  IDENTIFIER: {\n    key: 'identifier',\n    label: s__('Vulnerability|Identifier'),\n    class: 'identifier gl-break-all',\n  },\n  TOOL: {\n    key: 'reportType',\n    label: s__('Reports|Tool'),\n    class: 'scanner',\n  },\n  CLUSTER: {\n    key: 'cluster',\n    label: s__('Vulnerability|Cluster'),\n    thClass: 'gl-w-3/20',\n    class: 'cluster gl-break-all',\n  },\n  ACTIVITY: {\n    key: 'activity',\n    label: s__('Vulnerability|Activity'),\n    thAlignRight: true,\n    class: 'activity',\n  },\n  IMAGE: {\n    key: 'imageAndTag',\n    label: s__('Vulnerability|Image and tag'),\n    class: 'gl-max-w-0 gl-break-all',\n  },\n};\n\n// These are used to identify which component should be rendered in vulnerability_filters.vue.\nexport const FILTERS = {\n  STATUS: 'STATUS',\n  PIPELINE_STATUS: 'PIPELINE_STATUS',\n  SEVERITY: 'SEVERITY',\n  ACTIVITY: 'ACTIVITY',\n  IMAGE: 'IMAGE',\n  TOOL_SIMPLE: 'TOOL_SIMPLE',\n  TOOL_VENDOR: 'TOOL_VENDOR',\n  TOOL_PIPELINE: 'TOOL_PIPELINE',\n  PROJECT: 'PROJECT',\n  CLUSTER: 'CLUSTER',\n  IDENTIFIER: 'IDENTIFIER',\n};\n\nconst BASE_FIELDS = {\n  START: [FIELDS.DETECTED, FIELDS.STATUS, FIELDS.SEVERITY, FIELDS.DESCRIPTION],\n  END: [FIELDS.ACTIVITY],\n};\n\nexport const FIELD_PRESETS = {\n  DEVELOPMENT: [...BASE_FIELDS.START, FIELDS.IDENTIFIER, FIELDS.TOOL, ...BASE_FIELDS.END],\n  OPERATIONAL: [...BASE_FIELDS.START, FIELDS.CLUSTER, ...BASE_FIELDS.END],\n  AGENT: [...BASE_FIELDS.START, ...BASE_FIELDS.END],\n  PIPELINE: [\n    FIELDS.STATUS,\n    FIELDS.SEVERITY,\n    FIELDS.DESCRIPTION,\n    FIELDS.IDENTIFIER,\n    FIELDS.TOOL,\n    FIELDS.ACTIVITY,\n  ],\n  CONTAINER_REGISTRY: [...BASE_FIELDS.START, FIELDS.IDENTIFIER, FIELDS.IMAGE, ...BASE_FIELDS.END],\n};\n\nconst BASE_FILTERS = { START: [FILTERS.STATUS, FILTERS.SEVERITY], END: [FILTERS.ACTIVITY] };\n\nexport const FILTER_PRESETS = {\n  DEVELOPMENT_PROJECT: [\n    ...BASE_FILTERS.START,\n    FILTERS.TOOL_VENDOR,\n    FILTERS.IDENTIFIER,\n    ...BASE_FILTERS.END,\n  ],\n  DEVELOPMENT: [\n    ...BASE_FILTERS.START,\n    FILTERS.TOOL_SIMPLE,\n    FILTERS.PROJECT,\n    FILTERS.IDENTIFIER,\n    ...BASE_FILTERS.END,\n  ],\n  OPERATIONAL_PROJECT: [\n    ...BASE_FILTERS.START,\n    FILTERS.CLUSTER,\n    FILTERS.IMAGE,\n    FILTERS.IDENTIFIER,\n    ...BASE_FILTERS.END,\n  ],\n  OPERATIONAL: [...BASE_FILTERS.START, FILTERS.PROJECT, ...BASE_FILTERS.END],\n  AGENT: [...BASE_FILTERS.START, FILTERS.IMAGE, ...BASE_FILTERS.END],\n  PIPELINE: [FILTERS.PIPELINE_STATUS, FILTERS.SEVERITY, FILTERS.TOOL_PIPELINE],\n  CONTAINER_REGISTRY_PROJECT: [...BASE_FILTERS.START, FILTERS.IMAGE, ...BASE_FILTERS.END],\n};\n\nexport const REPORT_TYPE_PRESETS = {\n  DEVELOPMENT: Object.keys(REPORT_TYPES_WITH_MANUALLY_ADDED).map((type) => type.toUpperCase()),\n  OPERATIONAL: [REPORT_TYPE_CLUSTER_IMAGE_SCANNING.toUpperCase()],\n  CONTAINER_REGISTRY: Object.keys(REPORT_TYPES_CONTAINER_SCANNING_FOR_REGISTRY).map((type) =>\n    type.toUpperCase(),\n  ),\n};\n","var createWrap = require('./_createWrap'),\n    flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n *   return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n  return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n","var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","import GlButton from '../../base/button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlEmptyState',\n  components: {\n    GlButton\n  },\n  props: {\n    /**\n     * The title (heading) of the empty state.\n     */\n    title: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The illustration's URL.\n     */\n    svgPath: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The illustration's height used to prevent content reflow.\n     */\n    svgHeight: {\n      type: Number,\n      required: false,\n      default: 144\n    },\n    /**\n     * The desciption/body text of the empty state.\n     */\n    description: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The primary GlButton's href.\n     */\n    primaryButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The primary GlButton's text. If falsey, the button is not shown.\n     */\n    primaryButtonText: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The secondary GlButton's href.\n     */\n    secondaryButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The secondary GlButton's text. If falsey, the button is not shown.\n     */\n    secondaryButtonText: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Determines whether to render the compact layout.\n     */\n    compact: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    invertInDarkMode: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    /**\n     * CSS classes to add to the content container\n     */\n    contentClass: {\n      type: [Array, String, Object],\n      required: false,\n      default: () => []\n    }\n  },\n  computed: {\n    height() {\n      return this.shouldPreventImageReflow ? this.svgHeight : null;\n    },\n    shouldPreventImageReflow() {\n      return Boolean(this.svgHeight);\n    },\n    shouldRenderPrimaryButton() {\n      return Boolean(this.primaryButtonLink && this.primaryButtonText);\n    },\n    shouldRenderSecondaryButton() {\n      return Boolean(this.secondaryButtonLink && this.secondaryButtonText);\n    },\n    contentClasses() {\n      return [this.compact ? 'gl-grow gl-basis-0 gl-px-4' : 'gl-m-auto gl-p-5', this.contentClass];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"gl-flex\",class:{\n    'gl-empty-state gl-flex-col gl-text-center': !_vm.compact,\n    'gl-flex-row': _vm.compact,\n  }},[_c('div',{class:{ 'gl-hidden gl-px-4 sm:gl-block': _vm.compact, 'gl-max-w-full': !_vm.compact }},[(_vm.svgPath)?_c('img',{staticClass:\"gl-max-w-full\",class:{ 'gl-dark-invert-keep-hue': _vm.invertInDarkMode },attrs:{\"src\":_vm.svgPath,\"alt\":\"\",\"height\":_vm.height}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"gl-empty-state-content gl-mx-auto gl-my-0\",class:_vm.contentClasses,attrs:{\"data-testid\":\"gl-empty-state-content\"}},[_vm._t(\"title\",function(){return [_c('h1',{staticClass:\"gl-mb-0 gl-mt-0 gl-text-size-h-display gl-leading-36\",class:_vm.compact ? 'h5' : 'h4'},[_vm._v(\"\\n        \"+_vm._s(_vm.title)+\"\\n      \")])]}),_vm._v(\" \"),(_vm.description || _vm.$scopedSlots.description)?_c('p',{ref:\"description\",staticClass:\"gl-mb-0 gl-mt-4 gl-text-subtle\"},[_vm._t(\"description\",function(){return [_vm._v(\"\\n        \"+_vm._s(_vm.description)+\"\\n      \")]})],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-5 gl-flex gl-flex-wrap\",class:{ 'gl-justify-center': !_vm.compact }},[_vm._t(\"actions\",function(){return [(_vm.shouldRenderPrimaryButton)?_c('gl-button',{staticClass:\"gl-mb-3\",class:_vm.compact ? 'gl-mr-3' : 'gl-mx-2',attrs:{\"variant\":\"confirm\",\"href\":_vm.primaryButtonLink}},[_vm._v(_vm._s(_vm.primaryButtonText))]):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderSecondaryButton)?_c('gl-button',{staticClass:\"gl-mb-3 gl-mr-3\",class:{ '!gl-mx-2': !_vm.compact },attrs:{\"href\":_vm.secondaryButtonLink}},[_vm._v(_vm._s(_vm.secondaryButtonText)+\"\\n        \")]):_vm._e()]})],2)],2)])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n  return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nmodule.exports = isWeakMap;\n","var baseInverter = require('./_baseInverter');\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n  return function(object, iteratee) {\n    return baseInverter(object, setter, toIteratee(iteratee), {});\n  };\n}\n\nmodule.exports = createInverter;\n","import { s__ } from '~/locale';\nimport vulnerabilityStateMutations from 'ee/security_dashboard/graphql/mutate_vulnerability_state';\nimport dismissFindingMutation from 'ee/security_dashboard/graphql/mutations/dismiss_finding.mutation.graphql';\nimport revertFindingToDetectedMutation from 'ee/security_dashboard/graphql/mutations/revert_finding_to_detected.mutation.graphql';\n\nimport {\n  FEEDBACK_TYPE_ISSUE,\n  FEEDBACK_TYPE_MERGE_REQUEST,\n} from '~/vue_shared/security_reports/constants';\n\n/**\n * Vulnerability severities as provided by the backend on vulnerability\n * objects.\n */\nexport const CRITICAL = 'critical';\nexport const HIGH = 'high';\nexport const MEDIUM = 'medium';\nexport const LOW = 'low';\nexport const INFO = 'info';\nexport const UNKNOWN = 'unknown';\n\n/**\n * All vulnerability severities in decreasing order.\n */\nexport const SEVERITIES = [CRITICAL, HIGH, MEDIUM, LOW, INFO, UNKNOWN];\n\nexport const SEVERITY_COUNT_LIMIT = 1000;\n\nconst falsePositiveMessage = s__('VulnerabilityManagement|Will not fix or a false-positive');\n\nexport const DISMISSAL_REASONS = {\n  acceptable_risk: s__('VulnerabilityDismissalReasons|Acceptable risk'),\n  false_positive: s__('VulnerabilityDismissalReasons|False positive'),\n  mitigating_control: s__('VulnerabilityDismissalReasons|Mitigating control'),\n  used_in_tests: s__('VulnerabilityDismissalReasons|Used in tests'),\n  not_applicable: s__('VulnerabilityDismissalReasons|Not applicable'),\n};\n\nexport const VULNERABILITY_STATES = {\n  detected: s__('VulnerabilityStatusTypes|Needs triage'),\n  confirmed: s__('VulnerabilityStatusTypes|Confirmed'),\n  dismissed: s__('VulnerabilityStatusTypes|Dismissed'),\n  resolved: s__('VulnerabilityStatusTypes|Resolved'),\n};\n\nexport const VULNERABILITY_STATE_OBJECTS = {\n  detected: {\n    action: 'revert',\n    state: 'detected',\n    searchParamValue: 'DETECTED',\n    buttonText: VULNERABILITY_STATES.detected,\n    dropdownText: s__('VulnerabilityStatusTypes|Needs triage'),\n    dropdownDescription: s__('VulnerabilityManagement|Requires assessment'),\n    description: s__('VulnerabilityManagement|An unverified non-confirmed finding'),\n    mutation: vulnerabilityStateMutations.revert,\n    findingMutation: revertFindingToDetectedMutation,\n  },\n  confirmed: {\n    action: 'confirm',\n    state: 'confirmed',\n    searchParamValue: 'CONFIRMED',\n    buttonText: VULNERABILITY_STATES.confirmed,\n    dropdownText: s__('VulnerabilityStatusTypes|Confirmed'),\n    dropdownDescription: s__('VulnerabilityManagement|A true-positive and will fix'),\n    description: s__('VulnerabilityManagement|A verified true-positive vulnerability'),\n    mutation: vulnerabilityStateMutations.confirm,\n  },\n  dismissed: {\n    action: 'dismiss',\n    state: 'dismissed',\n    searchParamValue: 'DISMISSED',\n    buttonText: VULNERABILITY_STATES.dismissed,\n    dropdownText: s__('VulnerabilityStatusTypes|Dismissed'),\n    dropdownDescription: falsePositiveMessage,\n    mutation: vulnerabilityStateMutations.dismiss,\n    findingMutation: dismissFindingMutation,\n  },\n  resolved: {\n    action: 'resolve',\n    state: 'resolved',\n    searchParamValue: 'RESOLVED',\n    buttonText: VULNERABILITY_STATES.resolved,\n    dropdownText: s__('VulnerabilityStatusTypes|Resolved'),\n    dropdownDescription: s__('VulnerabilityManagement|Verified as fixed or mitigated'),\n    description: s__('VulnerabilityManagement|A removed or remediated vulnerability'),\n    mutation: vulnerabilityStateMutations.resolve,\n  },\n};\n\nexport const FEEDBACK_TYPES = {\n  ISSUE: FEEDBACK_TYPE_ISSUE,\n  MERGE_REQUEST: FEEDBACK_TYPE_MERGE_REQUEST,\n};\n\nexport const RELATED_ISSUES_ERRORS = {\n  LINK_ERROR: s__('VulnerabilityManagement|Could not process %{issueReference}: %{errorMessage}.'),\n  UNLINK_ERROR: s__(\n    'VulnerabilityManagement|Something went wrong while trying to unlink the issue. Please try again later.',\n  ),\n  ISSUE_ID_ERROR: s__('VulnerabilityManagement|invalid issue link or ID'),\n};\n\nexport const REGEXES = {\n  ISSUE_FORMAT: /^#?(\\d+)$/, // Matches '123' and '#123'.\n  LINK_FORMAT: /\\/(.+\\/.+)\\/-\\/issues\\/(\\d+)/, // Matches '/username/project/-/issues/123'.\n};\n\nexport const SUPPORTING_MESSAGE_TYPES = {\n  // eslint-disable-next-line @gitlab/require-i18n-strings\n  RECORDED: 'Recorded',\n};\n\nexport const SUPPORTED_IDENTIFIER_TYPE_CWE = 'cwe';\nexport const SUPPORTED_IDENTIFIER_TYPE_OWASP = 'owasp';\n\nexport const VULNERABILITY_TRAINING_HEADING = {\n  title: s__('Vulnerability|Training'),\n};\n\nexport const SECURITY_TRAINING_URL_STATUS_COMPLETED = 'COMPLETED';\nexport const SECURITY_TRAINING_URL_STATUS_PENDING = 'PENDING';\n\nexport const CREATE_MR_ACTION = {\n  name: s__('ciReport|Resolve with merge request'),\n  tagline: s__('ciReport|Automatically apply the patch in a new branch'),\n  action: 'create-merge-request',\n};\n\nexport const DOWNLOAD_PATCH_ACTION = {\n  name: s__('ciReport|Download patch to resolve'),\n  tagline: s__('ciReport|Download the patch to apply it manually'),\n  action: 'download-patch',\n};\n\nexport const CODE_FLOW_TAB_URL = s__('Vulnerability|code_flow');\n\nexport const VULNERABILITY_TAB_NAMES = Object.freeze({\n  DETAILS: s__('Vulnerability|Details'),\n  CODE_FLOW: s__('Vulnerability|Code flow'),\n});\n\nexport const VULNERABILITY_TAB_INDEX_TO_NAME = {\n  1: CODE_FLOW_TAB_URL,\n};\n","<script>\nimport { GlBadge, GlCollapsibleListbox, GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { without } from 'lodash';\nimport { s__ } from '~/locale';\nimport { getSelectedOptionsText } from '~/lib/utils/listbox_helpers';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport QuerystringSync from './querystring_sync.vue';\nimport { ALL_ID } from './constants';\n\nexport const ITEMS = {\n  STILL_DETECTED: {\n    value: 'STILL_DETECTED',\n    text: s__('SecurityReports|Still detected'),\n  },\n  NO_LONGER_DETECTED: {\n    value: 'NO_LONGER_DETECTED',\n    text: s__('SecurityReports|No longer detected'),\n  },\n  HAS_ISSUE: {\n    value: 'HAS_ISSUE',\n    text: s__('SecurityReports|Has issue'),\n  },\n  DOES_NOT_HAVE_ISSUE: {\n    value: 'DOES_NOT_HAVE_ISSUE',\n    text: s__('SecurityReports|Does not have issue'),\n  },\n  HAS_MERGE_REQUEST: {\n    value: 'HAS_MERGE_REQUEST',\n    text: s__('SecurityReports|Has merge request'),\n  },\n  DOES_NOT_HAVE_MERGE_REQUEST: {\n    value: 'DOES_NOT_HAVE_MERGE_REQUEST',\n    text: s__('SecurityReports|Does not have merge request'),\n  },\n  HAS_SOLUTION: {\n    value: 'HAS_SOLUTION',\n    text: s__('SecurityReports|Has a solution'),\n  },\n  DOES_NOT_HAVE_SOLUTION: {\n    value: 'DOES_NOT_HAVE_SOLUTION',\n    text: s__('SecurityReports|Does not have a solution'),\n  },\n};\n\nexport const GROUPS = [\n  {\n    text: '',\n    options: [\n      {\n        value: ALL_ID,\n        text: s__('SecurityReports|All activity'),\n      },\n    ],\n    textSrOnly: true,\n  },\n  {\n    text: s__('SecurityReports|Detection'),\n    options: [ITEMS.STILL_DETECTED, ITEMS.NO_LONGER_DETECTED],\n    icon: 'check-circle-dashed',\n    variant: 'info',\n  },\n  {\n    text: s__('SecurityReports|Issue'),\n    options: [ITEMS.HAS_ISSUE, ITEMS.DOES_NOT_HAVE_ISSUE],\n    icon: 'issues',\n  },\n  {\n    text: s__('SecurityReports|Merge Request'),\n    options: [ITEMS.HAS_MERGE_REQUEST, ITEMS.DOES_NOT_HAVE_MERGE_REQUEST],\n    icon: 'merge-request',\n  },\n  {\n    text: s__('SecurityReports|Solution available'),\n    options: [ITEMS.HAS_SOLUTION, ITEMS.DOES_NOT_HAVE_SOLUTION],\n    icon: 'bulb',\n  },\n];\n\nconst DEFAULT_VALUES = [ITEMS.STILL_DETECTED.value];\n\nexport default {\n  components: {\n    GlBadge,\n    QuerystringSync,\n    GlCollapsibleListbox,\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  data: () => ({\n    selected: DEFAULT_VALUES,\n  }),\n  computed: {\n    toggleText() {\n      return getSelectedOptionsText({\n        options: Object.values(ITEMS),\n        selected: this.selected,\n        placeholder: this.$options.i18n.allItemsText,\n      });\n    },\n    selectedItems() {\n      return this.selected.length ? this.selected : [ALL_ID];\n    },\n    items() {\n      const groups = [...GROUPS];\n      return groups;\n    },\n  },\n  watch: {\n    selected: {\n      immediate: true,\n      handler() {\n        const hasResolution = this.setSelectedValue('NO_LONGER_DETECTED', 'STILL_DETECTED');\n        const hasIssues = this.setSelectedValue('HAS_ISSUE', 'DOES_NOT_HAVE_ISSUE');\n        const hasMergeRequest = this.setSelectedValue(\n          'HAS_MERGE_REQUEST',\n          'DOES_NOT_HAVE_MERGE_REQUEST',\n        );\n        const hasRemediations = this.setSelectedValue('HAS_SOLUTION', 'DOES_NOT_HAVE_SOLUTION');\n\n        this.$emit('filter-changed', {\n          hasResolution,\n          hasIssues,\n          hasMergeRequest,\n          hasRemediations,\n        });\n      },\n    },\n  },\n  methods: {\n    getGroupFromItem(value) {\n      return this.items.find((group) =>\n        group.options.map((option) => option.value).includes(value),\n      );\n    },\n    updateSelected(selected) {\n      const selectedValue = selected?.at(-1);\n\n      const noneSelected = selected.length <= 0;\n      const allIdSelected = selectedValue === ALL_ID;\n\n      if (noneSelected || allIdSelected) {\n        this.selected = [ALL_ID];\n        return;\n      }\n\n      const selectedWithoutAll = without(selected, ALL_ID);\n      // Test whether a new item is selected by checking if `selected`\n      // (without ALL_ID option) length is larger than `this.selected` length.\n      const isSelecting = selectedWithoutAll.length > this.selected.length;\n      // If a new item is selected, clear other selected items from the same group and select the new item.\n      if (isSelecting) {\n        const group = this.getGroupFromItem(selectedValue);\n        const groupItemIds = group.options.map((option) => option.value);\n        this.selected = without(this.selected, ...groupItemIds).concat(selectedValue);\n      }\n      // Otherwise, if item is being unselected, just take `selectedWithoutAll` as `this.selected`.\n      else {\n        this.selected = selectedWithoutAll;\n      }\n    },\n    updateSelectedFromQS(selected) {\n      if (selected.includes(ALL_ID)) {\n        this.selected = [ALL_ID];\n      } else if (selected.length > 0) {\n        this.selected = selected;\n      } else {\n        this.selected = DEFAULT_VALUES;\n      }\n    },\n    setSelectedValue(keyWhenTrue, keyWhenFalse) {\n      // The variables can be true, false, or unset, so we need to use if/else-if here instead\n      // of if/else.\n      if (this.selected.includes(ITEMS[keyWhenTrue].value)) return true;\n      if (this.selected.includes(ITEMS[keyWhenFalse].value)) return false;\n      return undefined;\n    },\n  },\n  i18n: {\n    label: s__('SecurityReports|Activity'),\n    allItemsText: s__('SecurityReports|All activity'),\n    activityFilterTooltip: s__(\n      'SecurityReports|The Activity filter now defaults to showing only vulnerabilities that are \"still detected\". To see vulnerabilities regardless of their detection status, remove this filter.',\n    ),\n  },\n};\n</script>\n\n<template>\n  <div>\n    <querystring-sync v-model=\"selected\" querystring-key=\"activity\" @input=\"updateSelectedFromQS\" />\n    <label class=\"gl-mb-2\">{{ $options.i18n.label }}</label>\n    <gl-icon\n      v-gl-tooltip=\"$options.i18n.activityFilterTooltip\"\n      name=\"status-active\"\n      :size=\"12\"\n      class=\"gl-text-blue-500\"\n    />\n    <gl-collapsible-listbox\n      :items=\"items\"\n      :selected=\"selectedItems\"\n      :header-text=\"$options.i18n.label\"\n      :toggle-text=\"toggleText\"\n      multiple\n      block\n      data-testid=\"filter-activity-dropdown\"\n      @select=\"updateSelected\"\n    >\n      <template #group-label=\"{ group }\">\n        <div\n          v-if=\"group.icon\"\n          class=\"gl-flex gl-items-center gl-justify-center gl-pr-4\"\n          :data-testid=\"`header-${group.text}`\"\n        >\n          <div class=\"gl-grow\">{{ group.text }}</div>\n          <gl-badge :icon=\"group.icon\" :variant=\"group.variant\" />\n        </div>\n      </template>\n    </gl-collapsible-listbox>\n  </div>\n</template>\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activity_filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activity_filter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./activity_filter.vue?vue&type=template&id=789a8944\"\nimport script from \"./activity_filter.vue?vue&type=script&lang=js\"\nexport * from \"./activity_filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('querystring-sync',{attrs:{\"querystring-key\":\"activity\"},on:{\"input\":_vm.updateSelectedFromQS},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}}),_vm._v(\" \"),_c('label',{staticClass:\"gl-mb-2\"},[_vm._v(_vm._s(_vm.$options.i18n.label))]),_vm._v(\" \"),_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.$options.i18n.activityFilterTooltip),expression:\"$options.i18n.activityFilterTooltip\"}],staticClass:\"gl-text-blue-500\",attrs:{\"name\":\"status-active\",\"size\":12}}),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"items\":_vm.items,\"selected\":_vm.selectedItems,\"header-text\":_vm.$options.i18n.label,\"toggle-text\":_vm.toggleText,\"multiple\":\"\",\"block\":\"\",\"data-testid\":\"filter-activity-dropdown\"},on:{\"select\":_vm.updateSelected},scopedSlots:_vm._u([{key:\"group-label\",fn:function({ group }){return [(group.icon)?_c('div',{staticClass:\"gl-flex gl-items-center gl-justify-center gl-pr-4\",attrs:{\"data-testid\":`header-${group.text}`}},[_c('div',{staticClass:\"gl-grow\"},[_vm._v(_vm._s(group.text))]),_vm._v(\" \"),_c('gl-badge',{attrs:{\"icon\":group.icon,\"variant\":group.variant}})],1):_vm._e()]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"retryFailedJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobRetry\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":186}};\n    doc.loc.source = {\"body\":\"mutation retryFailedJob($id: CiProcessableID!) {\\n  jobRetry(input: { id: $id }) {\\n    job {\\n      id\\n      detailedStatus {\\n        id\\n        detailsPath\\n      }\\n    }\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"retryFailedJob\"] = oneQuery(doc, \"retryFailedJob\");\n        \n","import { __, s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nexport const DASHBOARD_TYPE_PROJECT = 'project';\nexport const DASHBOARD_TYPE_PIPELINE = 'pipeline';\nexport const DASHBOARD_TYPE_GROUP = 'group';\nexport const DASHBOARD_TYPE_INSTANCE = 'instance';\n\nexport const SEVERITY_LEVEL_CRITICAL = 'critical';\nexport const SEVERITY_LEVEL_HIGH = 'high';\nexport const SEVERITY_LEVEL_UNKNOWN = 'unknown';\nexport const SEVERITY_LEVEL_MEDIUM = 'medium';\nexport const SEVERITY_LEVEL_LOW = 'low';\nexport const SEVERITY_LEVEL_INFO = 'info';\n\nexport const SEVERITY_LEVELS = {\n  [SEVERITY_LEVEL_CRITICAL]: s__('severity|Critical'),\n  [SEVERITY_LEVEL_HIGH]: s__('severity|High'),\n  [SEVERITY_LEVEL_MEDIUM]: s__('severity|Medium'),\n  [SEVERITY_LEVEL_LOW]: s__('severity|Low'),\n  [SEVERITY_LEVEL_INFO]: s__('severity|Info'),\n  [SEVERITY_LEVEL_UNKNOWN]: s__('severity|Unknown'),\n};\n\nexport const SEVERITY_LEVELS_KEYS = Object.keys(SEVERITY_LEVELS);\n\n// The GraphQL type (`VulnerabilitySeverity`) for severities is an enum with uppercase values\nexport const SEVERITY_LEVELS_GRAPHQL = Object.keys(SEVERITY_LEVELS).map((k) => k.toUpperCase());\n\nexport const REPORT_TYPES_DEFAULT = {\n  api_fuzzing: s__('ciReport|API Fuzzing'),\n  container_scanning: s__('ciReport|Container Scanning'),\n  coverage_fuzzing: s__('ciReport|Coverage Fuzzing'),\n  dast: s__('ciReport|DAST'),\n  dependency_scanning: s__('ciReport|Dependency Scanning'),\n  sast: s__('ciReport|SAST'),\n  secret_detection: s__('ciReport|Secret Detection'),\n};\n\nexport const REPORT_TYPES_DEFAULT_KEYS = Object.keys(REPORT_TYPES_DEFAULT);\n\nexport const REPORT_TYPES_CONTAINER_SCANNING_FOR_REGISTRY = {\n  container_scanning_for_registry: s__('ciReport|Container Scanning for Registry'),\n};\n\nexport const REPORT_TYPES_WITH_CLUSTER_IMAGE = {\n  ...REPORT_TYPES_DEFAULT,\n  cluster_image_scanning: s__('ciReport|Cluster Image Scanning'),\n};\n\nexport const REPORT_TYPES_WITH_MANUALLY_ADDED = {\n  ...REPORT_TYPES_DEFAULT,\n  generic: s__('ciReport|Manually added'),\n};\n\nexport const REPORT_TYPES_ALL = {\n  ...REPORT_TYPES_DEFAULT,\n  ...REPORT_TYPES_WITH_CLUSTER_IMAGE,\n  ...REPORT_TYPES_WITH_MANUALLY_ADDED,\n};\n\nexport const COLLAPSE_SECURITY_REPORTS_SUMMARY_LOCAL_STORAGE_KEY =\n  'hide_pipelines_security_reports_summary_details';\n\nexport const DEFAULT_SCANNER = 'GitLab';\nexport const SCANNER_ID_PREFIX = 'gid://gitlab/Vulnerabilities::Scanner/';\n\nexport const DOC_PATH_APPLICATION_SECURITY = helpPagePath('user/application_security/index');\nexport const DOC_PATH_VULNERABILITY_DETAILS = helpPagePath(\n  'user/application_security/vulnerabilities/index',\n);\nexport const DOC_PATH_VULNERABILITY_REPORT = helpPagePath(\n  'user/application_security/vulnerability_report/index',\n);\nexport const DOC_PATH_SECURITY_CONFIGURATION = helpPagePath(\n  'user/application_security/configuration/index',\n);\nexport const DOC_PATH_SECURITY_SCANNER_INTEGRATION_REPORT = helpPagePath(\n  'development/integrations/secure',\n  { anchor: 'report' },\n);\nexport const DOC_PATH_SECURITY_SCANNER_INTEGRATION_RETENTION_PERIOD = helpPagePath(\n  'user/application_security/vulnerability_report/pipeline',\n  { anchor: 'retention-period-for-findings' },\n);\n\nexport const DOC_PATH_PROJECT_SECURITY_DASHBOARD = helpPagePath(\n  'user/application_security/security_dashboard/index',\n  { anchor: 'project-security-dashboard' },\n);\n\nexport const SEVERITY_GROUP_F = 'F';\nexport const SEVERITY_GROUP_D = 'D';\nexport const SEVERITY_GROUP_C = 'C';\nexport const SEVERITY_GROUP_B = 'B';\nexport const SEVERITY_GROUP_A = 'A';\n\nexport const SEVERITY_GROUPS = [\n  {\n    type: SEVERITY_GROUP_F,\n    description: __('Projects with critical vulnerabilities'),\n    warning: __('Critical vulnerabilities present'),\n    severityLevels: [SEVERITY_LEVEL_CRITICAL],\n  },\n  {\n    type: SEVERITY_GROUP_D,\n    description: __('Projects with high or unknown vulnerabilities'),\n    warning: __('High or unknown vulnerabilities present'),\n    severityLevels: [SEVERITY_LEVEL_HIGH, SEVERITY_LEVEL_UNKNOWN],\n  },\n  {\n    type: SEVERITY_GROUP_C,\n    description: __('Projects with medium vulnerabilities'),\n    warning: __('Medium vulnerabilities present'),\n    severityLevels: [SEVERITY_LEVEL_MEDIUM],\n  },\n  {\n    type: SEVERITY_GROUP_B,\n    description: __('Projects with low vulnerabilities'),\n    warning: __('Low vulnerabilities present'),\n    severityLevels: [SEVERITY_LEVEL_LOW],\n  },\n  {\n    type: SEVERITY_GROUP_A,\n    description: __('Projects with no vulnerabilities and security scanning enabled'),\n    warning: __('No vulnerabilities present'),\n    severityLevels: [],\n  },\n];\n\nexport const VULNERABILITY_DETAIL_CODE_FLOWS = 'VulnerabilityDetailCodeFlows';\n","import uniqueId from 'lodash/uniqueId';\nimport GlDisclosureDropdownItem from './disclosure_dropdown_item';\nimport { isGroup } from './utils';\nimport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BORDER_CLASSES = {\n  [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top]: 'gl-border-t gl-border-t-dropdown gl-pt-2 gl-mt-2',\n  [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.bottom]: 'gl-border-b gl-border-b-dropdown gl-pb-2 gl-mb-2'\n};\nvar script = {\n  name: DISCLOSURE_DROPDOWN_GROUP_NAME,\n  components: {\n    GlDisclosureDropdownItem\n  },\n  props: {\n    /**\n     * Group of items\n     */\n    group: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: isGroup\n    },\n    /**\n     * If 'true', will set top border for the group\n     * to separate from other groups. You can control\n     * the border position using the `borderPosition`\n     * property.\n     */\n    bordered: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Controls the position of the group's border. Valid\n     * values are 'top' and 'bottom'.\n     */\n    borderPosition: {\n      type: String,\n      required: false,\n      default: DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top,\n      validator: value => Object.keys(DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS).includes(value)\n    }\n  },\n  computed: {\n    borderClass() {\n      return this.bordered ? BORDER_CLASSES[this.borderPosition] : null;\n    },\n    showHeader() {\n      var _this$group;\n      return this.$scopedSlots['group-label'] || ((_this$group = this.group) === null || _this$group === void 0 ? void 0 : _this$group.name);\n    },\n    groupLabeledBy() {\n      return this.showHeader ? this.nameId : null;\n    }\n  },\n  created() {\n    this.nameId = uniqueId('gl-disclosure-dropdown-group-');\n  },\n  methods: {\n    handleAction(action) {\n      this.$emit('action', action);\n    },\n    uniqueItemId() {\n      return uniqueId(`disclosure-item-`);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:_vm.borderClass},[(_vm.showHeader)?_c('div',{staticClass:\"gl-py-2 gl-pl-4 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.nameId,\"aria-hidden\":\"true\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.group.name))]})],2):_vm._e(),_vm._v(\" \"),_c('ul',{staticClass:\"gl-mb-0 gl-list-none gl-pl-0\",attrs:{\"aria-labelledby\":_vm.groupLabeledBy}},[_vm._t(\"default\",function(){return _vm._l((_vm.group.items),function(item){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}],null,true)})})})],2)])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { BORDER_CLASSES };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityJiraIssueCreate\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityExternalIssueLinkCreate\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityId\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"linkType\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"CREATED\"}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"externalTracker\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"JIRA\"}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalIssueLink\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalIssue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":301}};\n    doc.loc.source = {\"body\":\"mutation vulnerabilityJiraIssueCreate($vulnerabilityId: VulnerabilityID!) {\\n  vulnerabilityExternalIssueLinkCreate(\\n    input: { id: $vulnerabilityId, linkType: CREATED, externalTracker: JIRA }\\n  ) {\\n    errors\\n    externalIssueLink {\\n      id\\n      externalIssue {\\n        webUrl\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"vulnerabilityJiraIssueCreate\"] = oneQuery(doc, \"vulnerabilityJiraIssueCreate\");\n        \n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var convert = require('./convert'),\n    func = convert('curry', require('../curry'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","export default \"<svg width=\\\"16\\\" height=\\\"16\\\" viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M15.808 7.552L8.69.667 8 0 2.642 5.183l-2.45 2.37A.623.623 0 000 8c0 .168.069.329.192.448l4.895 4.735L8 16l5.358-5.183.083-.08 2.367-2.29A.623.623 0 0016 8a.623.623 0 00-.192-.448zM8 10.365L5.554 8 8 5.635 10.446 8 8 10.365z\\\" fill=\\\"#2684FF\\\"/><path d=\\\"M8 5.634A3.918 3.918 0 016.794 2.83 3.917 3.917 0 017.983.018L2.63 5.193 5.543 8.01 8 5.634z\\\" fill=\\\"url(#paint0_linear)\\\"/><path d=\\\"M10.452 7.994L8 10.365c.383.37.686.81.893 1.293a3.87 3.87 0 010 3.05c-.207.483-.51.922-.893 1.292l5.365-5.189-2.913-2.817z\\\" fill=\\\"url(#paint1_linear)\\\"/><defs><linearGradient id=\\\"paint0_linear\\\" x1=\\\"7.563\\\" y1=\\\"3.241\\\" x2=\\\"4.262\\\" y2=\\\"6.654\\\" gradientUnits=\\\"userSpaceOnUse\\\"><stop offset=\\\".18\\\" stop-color=\\\"#0052CC\\\"/><stop offset=\\\"1\\\" stop-color=\\\"#2684FF\\\"/></linearGradient><linearGradient id=\\\"paint1_linear\\\" x1=\\\"216.055\\\" y1=\\\"490.616\\\" x2=\\\"331.647\\\" y2=\\\"413.158\\\" gradientUnits=\\\"userSpaceOnUse\\\"><stop offset=\\\".18\\\" stop-color=\\\"#0052CC\\\"/><stop offset=\\\"1\\\" stop-color=\\\"#2684FF\\\"/></linearGradient></defs></svg>\";","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"instanceProjects\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageSize\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"instance\"},\"name\":{\"kind\":\"Name\",\"value\":\"instanceSecurityDashboard\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"projects\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"pageSize\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"edges\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"node\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nameWithNamespace\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":377}};\n    doc.loc.source = {\"body\":\"query instanceProjects($search: String, $pageSize: Int, $after: String) {\\n  instance: instanceSecurityDashboard {\\n    projects(search: $search, first: $pageSize, after: $after) {\\n      edges {\\n        node {\\n          id\\n          name\\n          nameWithNamespace\\n          avatarUrl\\n        }\\n      }\\n      pageInfo {\\n        endCursor\\n        hasNextPage\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"instanceProjects\"] = oneQuery(doc, \"instanceProjects\");\n        \n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"DismissPipelineGraphCallout\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"featureName\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userCalloutCreate\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"featureName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"featureName\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":139}};\n    doc.loc.source = {\"body\":\"mutation DismissPipelineGraphCallout($featureName: String!) {\\n  userCalloutCreate(input: { featureName: $featureName }) {\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"DismissPipelineGraphCallout\"] = oneQuery(doc, \"DismissPipelineGraphCallout\");\n        \n","export const ALL_ID = 'ALL';\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityDismiss\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDismissalReason\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityDismiss\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LastStateTransition\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":439}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/last_state_transition.fragment.graphql\\\"\\n\\nmutation vulnerabilityDismiss(\\n  $id: VulnerabilityID!\\n  $comment: String\\n  $dismissalReason: VulnerabilityDismissalReason\\n) {\\n  vulnerabilityDismiss(input: { id: $id, comment: $comment, dismissalReason: $dismissalReason }) {\\n    errors\\n    vulnerability {\\n      id\\n      state\\n      dismissedAt\\n      dismissedBy {\\n        id\\n      }\\n      ...LastStateTransition\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/last_state_transition.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"vulnerabilityDismiss\"] = oneQuery(doc, \"vulnerabilityDismiss\");\n        \n","import { normalizeHeaders } from './common_utils';\nimport { HTTP_STATUS_ABORTED, successCodes } from './http_status';\n\n/**\n * Polling utility for handling realtime updates.\n * Requirements: Promise based HTTP client\n *\n * Service for promise based http client and method need to be provided as props\n *\n * @example\n * new Poll({\n *   resource: resource,\n *   method: 'name',\n *   data: {page: 1, scope: 'all'}, // optional\n *   successCallback: () => {},\n *   errorCallback: () => {},\n *   notificationCallback: () => {}, // optional\n * }).makeRequest();\n *\n * Usage in pipelines table with visibility lib:\n *\n * const poll = new Poll({\n *  resource: this.service,\n *  method: 'getPipelines',\n *  data: { page: pageNumber, scope },\n *  successCallback: this.successCallback,\n *  errorCallback: this.errorCallback,\n *  notificationCallback: this.updateLoading,\n * });\n *\n * if (!Visibility.hidden()) {\n *  poll.makeRequest();\n *  }\n *\n * Visibility.change(() => {\n *  if (!Visibility.hidden()) {\n *   poll.restart();\n *  } else {\n *   poll.stop();\n *  }\n * });\n *\n * 1. Checks for response and headers before start polling\n * 2. Interval is provided by `Poll-Interval` header.\n * 3. If `Poll-Interval` is -1, we stop polling\n * 4. If HTTP response is 200, we poll.\n * 5. If HTTP response is different from 200, we stop polling.\n *\n * @example\n * // With initial delay (for, for example, reducing unnecessary requests)\n *\n * const poll = new Poll({\n *  resource: this.service,\n *  method: 'fetchNotes',\n *  successCallback: () => {},\n *  errorCallback: () => {},\n * });\n *\n * // Performs the first request in 2.5s and then uses the `Poll-Interval` header.\n * poll.makeDelayedRequest(2500);\n *\n */\nexport default class Poll {\n  constructor(options = {}) {\n    this.options = options;\n    this.options.data = options.data || {};\n    this.options.notificationCallback =\n      options.notificationCallback || function notificationCallback() {};\n\n    this.intervalHeader = 'POLL-INTERVAL';\n    this.timeoutID = null;\n    this.canPoll = true;\n  }\n\n  checkConditions(response) {\n    const headers = normalizeHeaders(response.headers);\n    const pollInterval = parseInt(headers[this.intervalHeader], 10);\n    if (pollInterval > 0 && successCodes.indexOf(response.status) !== -1 && this.canPoll) {\n      if (this.timeoutID) {\n        clearTimeout(this.timeoutID);\n      }\n\n      this.timeoutID = setTimeout(() => {\n        this.makeRequest();\n      }, pollInterval);\n    }\n    this.options.successCallback(response);\n  }\n\n  makeDelayedRequest(delay = 0) {\n    // So we don't make our specs artificially slower\n    this.timeoutID = setTimeout(\n      () => this.makeRequest(),\n      process.env.NODE_ENV !== 'test' ? delay : 1,\n    );\n  }\n\n  makeRequest() {\n    const { resource, method, data, errorCallback, notificationCallback } = this.options;\n\n    // It's called everytime a new request is made. Useful to update the status.\n    notificationCallback(true);\n\n    return resource[method](data)\n      .then((response) => {\n        this.checkConditions(response);\n        notificationCallback(false);\n      })\n      .catch((error) => {\n        notificationCallback(false);\n        if (error.status === HTTP_STATUS_ABORTED) {\n          return;\n        }\n        errorCallback(error);\n      });\n  }\n\n  /**\n   * Stops the polling recursive chain\n   * and guarantees if the timeout is already running it won't make another request by\n   * cancelling the previously established timeout.\n   */\n  stop() {\n    this.canPoll = false;\n    clearTimeout(this.timeoutID);\n  }\n\n  /**\n   * Enables polling after it has been stopped\n   */\n  enable(options) {\n    if (options && options.data) {\n      this.options.data = options.data;\n    }\n\n    this.canPoll = true;\n\n    if (options && options.response) {\n      this.checkConditions(options.response);\n    }\n  }\n\n  /**\n   * Restarts polling after it has been stopped and makes a request\n   */\n  restart(options) {\n    this.enable(options);\n    this.makeRequest();\n  }\n}\n","import { differenceWith, isEqual } from 'lodash';\nimport {\n  linesPadding,\n  numMarkerIdPrefix,\n  selectedInlineItemMark,\n  selectedInlineNumberMark,\n  selectedInlineSectionMarker,\n  textMarkerIdPrefix,\n  textSpanMarkerIdPrefix,\n  unselectedInlineNumberMark,\n} from 'ee/vue_shared/components/code_flow/utils/constants';\nimport { splitByLineBreaks } from '~/vue_shared/components/source_viewer/workers/highlight_utils';\n\n/**\n * Sorts and merges code blocks based on their start and end lines.\n * @param {Array} codeBlocks - An array of code block objects. Each object should have\n *                             the following properties:\n *                             - blockStartLine {number}: The starting line of the block\n *                             - blockEndLine {number}: The ending line of the block\n *                             - highlightInfo {Array}: An array of highlight information\n * @returns {Array} An array of sorted and merged code block objects. Each object in the\n *                  returned array will have the same structure as the input, but with\n *                  potentially merged blocks and combined highlightInfo.\n */\nexport const sortCodeBlocks = (codeBlocks) => {\n  // Ensure the method is pure by not mutating the original array\n  const updatedCodeBlock = [...codeBlocks].sort((a, b) => a.blockStartLine - b.blockStartLine);\n  return updatedCodeBlock.reduce(\n    (acc, block) => {\n      const lastMergedBlock = acc.at(-1);\n      if (block.blockStartLine <= lastMergedBlock.blockEndLine + 1) {\n        lastMergedBlock.blockEndLine = Math.max(lastMergedBlock.blockEndLine, block.blockEndLine);\n        const uniqueHighlightInfo = differenceWith(\n          block.highlightInfo,\n          lastMergedBlock.highlightInfo,\n          isEqual,\n        );\n        lastMergedBlock.highlightInfo.push(...uniqueHighlightInfo);\n      } else {\n        acc.push(block);\n      }\n      return acc;\n    },\n    [updatedCodeBlock[0]],\n  );\n};\n\n/**\n * Updates and merges code blocks, adding step numbers to highlight information.\n * @param {Array} codeBlocks - An array of code block objects. Each object should have a\n *                             'highlightInfo' property which is an array of highlight items.\n * @returns {Array} An array of updated code block objects. Each object in the returned array\n *                  will have the same structure as the input, but with merged blocks and\n *                  updated highlight information. If the input array is empty, an empty array\n *                  is returned.\n */\nexport const updateCodeBlocks = (codeBlocks) => {\n  if (!codeBlocks.length) {\n    return [];\n  }\n\n  const mergedBlocks = sortCodeBlocks(codeBlocks);\n\n  return mergedBlocks.map((block) => {\n    const updatedHighlightInfo = block.highlightInfo.map((item) => {\n      return {\n        ...item,\n        stepNumber: item.index + 1,\n      };\n    });\n\n    return {\n      ...block,\n      highlightInfo: updatedHighlightInfo,\n    };\n  });\n};\n\n/**\n * Creates a mapping of line numbers to highlight information based on code blocks.\n * @param {Array} codeBlocks - An array of code block objects. Each object should have\n *                             a 'highlightInfo' property, which is an array of objects\n *                             containing at least 'startLine' and optionally 'endLine'.\n * @returns {Object} An object mapping line numbers to their respective highlight information.\n *                   Each key is a line number, and each value is the highlight info object\n *                   that corresponds to that line.\n */\nexport const updateLinesToMarker = (codeBlocks) => {\n  return codeBlocks.reduce((acc, { highlightInfo }) => {\n    highlightInfo.forEach((item) => {\n      const endLine = item.endLine || item.startLine;\n      for (let k = item.startLine; k <= endLine; k += 1) {\n        (acc[k] || (acc[k] = [])).push(item);\n      }\n    });\n    return acc;\n  }, {});\n};\n\n/**\n * Normalizes code flow information from details.\n * @param {Object} details - The details object containing code flow items.\n * @returns {Object} Normalized code flows grouped by file name.\n */\nexport const normalizeCodeFlowsInfo = (details) => {\n  const firstCodeFlow = details?.items[0] || [];\n  return firstCodeFlow.reduce((acc, curr, index) => {\n    const { fileLocation } = curr;\n    const name = fileLocation.fileName;\n    if (!acc[name]) {\n      acc[name] = [];\n    }\n    acc[name].push({ index, fileLocation });\n    return acc;\n  }, {});\n};\n\n/**\n * Creates source block highlight information for a single block.\n * @param {number} index - The index of the block.\n * @param {Object} fileLocation - The file location information.\n * @param {string} rawTextBlob - The raw text content of the file.\n * @returns {Object} Source block highlight information.\n */\nexport const createSourceBlockHighlightInfo = (index, fileLocation, rawTextBlob) => {\n  const fileLen = splitByLineBreaks(rawTextBlob).length || 0;\n  const calcStartLine = fileLocation.lineStart - linesPadding;\n  const calcEndLine = (fileLocation.lineEnd || fileLocation.lineStart) + linesPadding;\n  return {\n    blockStartLine: calcStartLine > 0 ? calcStartLine : 1,\n    blockEndLine: calcEndLine > fileLen ? fileLen : calcEndLine,\n    highlightInfo: [\n      {\n        index,\n        startLine: fileLocation.lineStart,\n        endLine: fileLocation.lineEnd,\n      },\n    ],\n  };\n};\n\n/**\n * Creates highlight sources information from normalized code flows.\n * @param {Object} normalizedCodeFlows - Normalized code flows grouped by file name.\n * @param {Object} rawTextBlobs - Raw text content of files.\n * @returns {Object} Highlight sources information grouped by file name.\n */\nexport const createHighlightSourcesInfo = (normalizedCodeFlows, rawTextBlobs) => {\n  if (!normalizedCodeFlows || !rawTextBlobs) return {};\n  return Object.entries(normalizedCodeFlows).reduce((acc, [fileName, flows]) => {\n    acc[fileName] = flows.map(({ index, fileLocation }) =>\n      createSourceBlockHighlightInfo(index, fileLocation, rawTextBlobs[fileLocation.fileName]),\n    );\n    return acc;\n  }, {});\n};\n\n/**\n * Generates an array of CSS selector strings for identifying elements based on a prefix and step number.\n * @param {string} idPrefix - The prefix of the ID to match.\n * @param {number} selectedStepNumber - The selected step number to include in the selectors.\n * @returns {string[]} An array of three CSS selector strings.\n */\nconst getIdSelectors = (idPrefix, selectedStepNumber) => {\n  // Examples of ID: '<idPrefix>-<selectedStepNumber>>,2-L8', '<idPrefix>-<selectedStepNumber>-L7'\n  // Examples of ID: 'NUM-MARKER-1,2-L8', 'NUM-MARKER-3-L7'\n  // Examples of ID: 'TEXT-MARKER-1,2-L8', 'TEXT-MARKER-3-L7'\n  return [\n    `[id^=\"${idPrefix}\"][id*=\"${selectedStepNumber}-L\"]`,\n    `[id^=\"${idPrefix}\"][id*=\",${selectedStepNumber}-L\"]`,\n    `[id^=\"${idPrefix}\"][id*=\"${selectedStepNumber},\"][id*=\"-L\"]`,\n  ];\n};\n\n/**\n * Highlights the content of the selected markdown row and unhighlights others.\n * @param {number} selectedStepNumber - The step number corresponding to the row to highlight.\n */\nexport const markdownRowContent = (selectedStepNumber) => {\n  // Highlights the selected markdown row content\n  const textMarkerElements = document.querySelectorAll(`[id^=${textMarkerIdPrefix}]`);\n  textMarkerElements.forEach((el) => {\n    el.classList.remove(selectedInlineSectionMarker);\n  });\n\n  const textMarkerSelectors = getIdSelectors(textMarkerIdPrefix, selectedStepNumber);\n  const selector = textMarkerSelectors.join(', ');\n  const allTextMarkerElements = document.querySelectorAll(selector);\n  if (allTextMarkerElements.length > 0) {\n    allTextMarkerElements.forEach((el) => el.classList.add(selectedInlineSectionMarker));\n  }\n};\n\n/**\n * Highlights the selected step number in the markdown and unhighlights others.\n * @param {number} selectedStepNumber - The step number to highlight.\n */\nexport const markdownStepNumber = (selectedStepNumber) => {\n  // Highlights the step number in the markdown\n  const textMarkerElements = document.querySelectorAll(`[id^=${textMarkerIdPrefix}]`);\n  textMarkerElements.forEach((el) => {\n    const spans = el.querySelectorAll('span.inline-item-mark');\n    spans.forEach((span) => {\n      span.classList.remove(selectedInlineItemMark);\n    });\n  });\n  const textSpanMarkerElements = document.querySelectorAll(\n    `[id^=\"${textSpanMarkerIdPrefix}${selectedStepNumber}\"]`,\n  );\n  if (textSpanMarkerElements.length > 0) {\n    textSpanMarkerElements.forEach((el) => el.classList.add(selectedInlineItemMark, 'gs'));\n  }\n};\n\n/**\n * Highlights the selected row number in the markdown and unhighlights others.\n * @param {number} selectedStepNumber - The step number to highlight.\n */\nexport const markdownRowNumber = (selectedStepNumber) => {\n  // Highlights the row number in the markdown\n  const numMarkerElements = document.querySelectorAll(`[id^=\"${numMarkerIdPrefix}\"]`);\n  numMarkerElements.forEach((el) => {\n    el.classList.remove(selectedInlineNumberMark);\n    el.classList.add(unselectedInlineNumberMark);\n  });\n\n  const numMarkerSelectors = getIdSelectors(numMarkerIdPrefix, selectedStepNumber);\n  const selector = numMarkerSelectors.join(', ');\n  const allNumMarkerElements = document.querySelectorAll(selector);\n\n  if (allNumMarkerElements.length > 0) {\n    allNumMarkerElements.forEach((el) => {\n      el.classList.add(selectedInlineNumberMark);\n      el.classList.remove(unselectedInlineNumberMark);\n    });\n  }\n};\n\n/**\n * call the markdown functions when the step is selected\n * @param {Number} selectedStepNumber - The selected step number.\n */\nexport const markdownBlobData = (selectedStepNumber) => {\n  markdownRowContent(selectedStepNumber);\n  markdownStepNumber(selectedStepNumber);\n  markdownRowNumber(selectedStepNumber);\n};\n\n/**\n * Scrolls to a specific code flow element within a container.\n * @param {number} selectedStepNumber - The number of the step to scroll to.\n */\nexport const scrollToSpecificCodeFlow = (selectedStepNumber) => {\n  const element = document.querySelector(`[id^=${textMarkerIdPrefix}${selectedStepNumber}]`);\n  if (element) {\n    const subScroller = document.getElementById('code-flows-container');\n    const subScrollerRect = subScroller.getBoundingClientRect();\n    const elementRect = element.getBoundingClientRect();\n    const offsetTop = elementRect.top - subScrollerRect.top + subScroller.scrollTop;\n    subScroller.scrollTo({\n      top: offsetTop - subScroller.clientHeight / 2 + element.clientHeight / 2,\n      behavior: 'smooth',\n    });\n  }\n};\n","var castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nmodule.exports = createCaseFirst;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getBlobInfo\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filePath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"refType\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RefType\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"shouldFetchRawText\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"repository\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"empty\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"paths\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filePath\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"refType\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"refType\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rawSize\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rawTextBlob\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"shouldFetchRawText\"}}}]}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"language\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blamePath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"editBlobPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gitpodBlobUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ideEditPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"forkAndEditPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ideForkAndEditPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"codeNavigationPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"projectBlobPathRoot\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"forkAndViewPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentFormattedExternalUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentExternalUrlForRouteMap\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canModifyBlob\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canModifyBlobWithWebIde\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canCurrentUserPushToBranch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"archived\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"storedExternally\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalStorage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalStorageUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rawPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"replacePath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineEditorPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"simpleViewer\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooLarge\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"renderError\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"richViewer\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooLarge\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"renderError\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":1393}};\n    doc.loc.source = {\"body\":\"query getBlobInfo(\\n  $projectPath: ID!\\n  $filePath: [String!]!\\n  $ref: String!\\n  $refType: RefType\\n  $shouldFetchRawText: Boolean!\\n) {\\n  project(fullPath: $projectPath) {\\n    __typename\\n    id\\n    repository {\\n      __typename\\n      empty\\n      blobs(paths: $filePath, ref: $ref, refType: $refType) {\\n        __typename\\n        nodes {\\n          __typename\\n          id\\n          webPath\\n          name\\n          size\\n          rawSize\\n          rawTextBlob @include(if: $shouldFetchRawText)\\n          fileType\\n          language\\n          path\\n          blamePath\\n          editBlobPath\\n          gitpodBlobUrl\\n          ideEditPath\\n          forkAndEditPath\\n          ideForkAndEditPath\\n          codeNavigationPath\\n          projectBlobPathRoot\\n          forkAndViewPath\\n          environmentFormattedExternalUrl\\n          environmentExternalUrlForRouteMap\\n          canModifyBlob\\n          canModifyBlobWithWebIde\\n          canCurrentUserPushToBranch\\n          archived\\n          storedExternally\\n          externalStorage\\n          externalStorageUrl\\n          rawPath\\n          replacePath\\n          pipelineEditorPath\\n          simpleViewer {\\n            fileType\\n            tooLarge\\n            type\\n            renderError\\n          }\\n          richViewer {\\n            fileType\\n            tooLarge\\n            type\\n            renderError\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getBlobInfo\"] = oneQuery(doc, \"getBlobInfo\");\n        \n","import uniqueId from 'lodash/uniqueId';\nimport { toggleLabelPosition } from '../../../utils/constants';\nimport GlIcon from '../icon/icon';\nimport GlLoadingIcon from '../loading_icon/loading_icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nlet uuid = 0;\nvar script = {\n  name: 'GlToggle',\n  components: {\n    GlIcon,\n    GlLoadingIcon\n  },\n  model: {\n    prop: 'value',\n    event: 'change'\n  },\n  props: {\n    name: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The toggle's state.\n     * @model\n     */\n    value: {\n      type: Boolean,\n      required: false,\n      default: null\n    },\n    /**\n     * Whether the toggle should be disabled.\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Whether the toggle is in the loading state.\n     */\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The toggle's label.\n     */\n    label: {\n      type: String,\n      required: true\n    },\n    /**\n     * The toggle's description.\n     */\n    description: {\n      type: String,\n      required: false,\n      default: undefined\n    },\n    /**\n     * A help text to be shown below the toggle.\n     */\n    help: {\n      type: String,\n      required: false,\n      default: undefined\n    },\n    /**\n     * The label's position relative to the toggle. If 'hidden', the toggle will add the .gl-sr-only class so the label is still accessible to screen readers.\n     */\n    labelPosition: {\n      type: String,\n      required: false,\n      default: 'top',\n      validator(position) {\n        return Object.values(toggleLabelPosition).includes(position);\n      }\n    }\n  },\n  data() {\n    return {\n      labelId: uniqueId('toggle-label-')\n    };\n  },\n  computed: {\n    shouldRenderDescription() {\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      return Boolean(this.$scopedSlots.description || this.description) && this.isVerticalLayout;\n    },\n    shouldRenderHelp() {\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      return Boolean(this.$slots.help || this.help) && this.isVerticalLayout;\n    },\n    toggleClasses() {\n      return [{\n        'gl-sr-only': this.labelPosition === 'hidden'\n      }, this.shouldRenderDescription ? 'gl-mb-2' : 'gl-mb-3'];\n    },\n    icon() {\n      return this.value ? 'check-xs' : 'close-xs';\n    },\n    helpId() {\n      return this.shouldRenderHelp ? `toggle-help-${this.uuid}` : undefined;\n    },\n    isChecked() {\n      return this.value ? 'true' : 'false';\n    },\n    isVerticalLayout() {\n      return this.labelPosition === 'top' || this.labelPosition === 'hidden';\n    }\n  },\n  beforeCreate() {\n    this.uuid = uuid;\n    uuid += 1;\n  },\n  methods: {\n    toggleFeature() {\n      if (!this.disabled) {\n        /**\n         * Emitted when the state changes.\n         *\n         * @event change\n         * @property {boolean} value Whether the toggle is enabled.\n         */\n        this.$emit('change', !this.value);\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-toggle-wrapper gl-mb-0 gl-flex\",class:{\n    'gl-flex-col': _vm.isVerticalLayout,\n    'gl-toggle-label-inline': !_vm.isVerticalLayout,\n    'is-disabled': _vm.disabled,\n  },attrs:{\"data-testid\":\"toggle-wrapper\"}},[_c('span',{staticClass:\"gl-toggle-label gl-shrink-0\",class:_vm.toggleClasses,attrs:{\"id\":_vm.labelId,\"data-testid\":\"toggle-label\"}},[_vm._t(\"label\",function(){return [_vm._v(_vm._s(_vm.label))]})],2),_vm._v(\" \"),(_vm.shouldRenderDescription)?_c('span',{staticClass:\"gl-description-label gl-mb-3\",attrs:{\"data-testid\":\"toggle-description\"}},[_vm._t(\"description\",function(){return [_vm._v(_vm._s(_vm.description))]})],2):_vm._e(),_vm._v(\" \"),(_vm.name)?_c('input',{attrs:{\"name\":_vm.name,\"type\":\"hidden\"},domProps:{\"value\":_vm.value}}):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"gl-toggle gl-shrink-0\",class:{\n      'is-checked': _vm.value,\n      'is-disabled': _vm.disabled || _vm.isLoading,\n    },attrs:{\"role\":\"switch\",\"aria-checked\":_vm.isChecked,\"aria-labelledby\":_vm.labelId,\"aria-describedby\":_vm.helpId,\"aria-disabled\":_vm.disabled,\"type\":\"button\",\"disabled\":_vm.disabled},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleFeature.apply(null, arguments)}}},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"toggle-loading\",attrs:{\"color\":\"dark\"}}):_c('span',{staticClass:\"toggle-icon\"},[_c('gl-icon',{attrs:{\"name\":_vm.icon,\"size\":12}})],1)],1),_vm._v(\" \"),(_vm.shouldRenderHelp)?_c('span',{staticClass:\"gl-help-label\",attrs:{\"id\":_vm.helpId,\"data-testid\":\"toggle-help\"}},[_vm._t(\"help\",function(){return [_vm._v(_vm._s(_vm.help))]})],2):_vm._e()])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./querystring_sync.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./querystring_sync.vue?vue&type=script&lang=js\"","<script>\nimport { uniq, isEqual, omit } from 'lodash';\n\nexport default {\n  props: {\n    querystringKey: {\n      type: String,\n      required: true,\n    },\n    value: {\n      type: Array,\n      required: true,\n    },\n    validValues: {\n      type: Array,\n      required: false,\n      default: null,\n    },\n    defaultValues: {\n      type: Array, // of string\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    rawQuerystringIds() {\n      const ids = this.$route.query[this.querystringKey] || [];\n      return Array.isArray(ids) ? ids : ids.split(',');\n    },\n    querystringIds() {\n      return this.cleanUpIds(this.rawQuerystringIds);\n    },\n    validIds() {\n      return new Set(this.validValues);\n    },\n  },\n  watch: {\n    value() {\n      this.updateQueryString();\n    },\n  },\n  created() {\n    // Clean up the querystring if they're not in the right format or if there were no valid IDs.\n    if (\n      !isEqual(this.querystringIds, this.rawQuerystringIds) ||\n      (Object.hasOwn(this.$route.query, this.querystringKey) && !this.querystringIds.length)\n    ) {\n      this.$router.replace({ query: this.getQuerystringObject(this.querystringIds) });\n    }\n\n    this.emitQuerystringIds();\n    // When the user clicks the forward/back browser buttons, emit the input event.\n    window.addEventListener('popstate', this.emitQuerystringIds);\n  },\n  destroyed() {\n    // If this component is being unmounted, it means we are removing the filter from\n    // page. This occurs, for instance, in the vulnerability report filtered search component.\n    // When the user clicks on X to remove a filter, querystring-sync gets unmounted.\n    // For those cases, we need to reset the query string parameters as well.\n    this.updateQueryString(this.defaultValues ?? []);\n    window.removeEventListener('popstate', this.emitQuerystringIds);\n  },\n  methods: {\n    updateQueryString(ids = this.cleanUpIds(this.value)) {\n      // To prevent a console error, don't update the querystring if the IDs are the same as the\n      // existing querystring.\n      if (isEqual(ids, this.querystringIds)) {\n        return;\n      }\n\n      this.$router.push({ query: this.getQuerystringObject(ids) });\n    },\n    emitQuerystringIds() {\n      this.$emit('input', this.querystringIds);\n    },\n    cleanUpIds(ids) {\n      // Trim each ID, remove empty string and undefined entries, remove duplicate IDs, filter by\n      // valid IDs if applicable, and sort the IDs so that the isEqual() check in the watcher will\n      // work properly if the IDs are in a different order.\n      return uniq(\n        ids\n          .map((id) => id?.toString().trim())\n          .filter((id) => Boolean(id) && (this.validIds.size ? this.validIds.has(id) : true))\n          .sort(),\n      );\n    },\n    getQuerystringObject(ids) {\n      // If there are no IDs, remove the querystring key altogether.\n      return ids.length\n        ? { ...this.$route.query, [this.querystringKey]: ids.join(',') }\n        : omit(this.$route.query, this.querystringKey);\n    },\n  },\n  render() {\n    return this.$scopedSlots.default?.();\n  },\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./querystring_sync.vue?vue&type=script&lang=js\"\nexport * from \"./querystring_sync.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var arrayMap = require('./_arrayMap'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n *   { 'user': 'barney' },\n *   { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n  var func = isArray(collection) ? arrayMap : baseMap;\n  return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar $group = require('../internals/array-group');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.groupBy` method\n// https://github.com/tc39/proposal-array-grouping\n// https://bugs.webkit.org/show_bug.cgi?id=236541\n$({ target: 'Array', proto: true, forced: !arrayMethodIsStrict('groupBy') }, {\n  groupBy: function groupBy(callbackfn /* , thisArg */) {\n    var thisArg = arguments.length > 1 ? arguments[1] : undefined;\n    return $group(this, callbackfn, thisArg);\n  }\n});\n\naddToUnscopables('groupBy');\n","var baseConvert = require('./_baseConvert'),\n    util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n  return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSastIac\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ConfigureSastIacInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSastIac\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"successPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":129}};\n    doc.loc.source = {\"body\":\"mutation configureSastIac($input: ConfigureSastIacInput!) {\\n  configureSastIac(input: $input) {\\n    successPath\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"configureSastIac\"] = oneQuery(doc, \"configureSastIac\");\n        \n","import { extend, mergeData } from '../../../vue';\nimport { NAME_COLLAPSE_HELPER } from '../../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { setStyle, requestAF, reflow, removeStyle, getBCR } from '../../../utils/dom';\nimport { makeProp } from '../../../utils/props';\n\n// Generic collapse transion helper component\n\n// --- Helper methods ---\n\n// Transition event handler helpers\nconst onEnter = el => {\n  setStyle(el, 'height', 0);\n  // In a `requestAF()` for `appear` to work\n  requestAF(() => {\n    reflow(el);\n    setStyle(el, 'height', `${el.scrollHeight}px`);\n  });\n};\nconst onAfterEnter = el => {\n  removeStyle(el, 'height');\n};\nconst onLeave = el => {\n  setStyle(el, 'height', 'auto');\n  setStyle(el, 'display', 'block');\n  setStyle(el, 'height', `${getBCR(el).height}px`);\n  reflow(el);\n  setStyle(el, 'height', 0);\n};\nconst onAfterLeave = el => {\n  removeStyle(el, 'height');\n};\n\n// --- Constants ---\n\n// Default transition props\n// `appear` will use the enter classes\nconst TRANSITION_PROPS = {\n  css: true,\n  enterClass: '',\n  enterActiveClass: 'collapsing',\n  enterToClass: 'collapse show',\n  leaveClass: 'collapse show',\n  leaveActiveClass: 'collapsing',\n  leaveToClass: 'collapse'\n};\n\n// Default transition handlers\n// `appear` will use the enter handlers\nconst TRANSITION_HANDLERS = {\n  enter: onEnter,\n  afterEnter: onAfterEnter,\n  leave: onLeave,\n  afterLeave: onAfterLeave\n};\n\n// --- Main component ---\n\nconst props = {\n  // // If `true` (and `visible` is `true` on mount), animate initially visible\n  appear: makeProp(PROP_TYPE_BOOLEAN, false)\n};\n\n// --- Main component ---\n\n// @vue/component\nconst BVCollapse = /*#__PURE__*/extend({\n  name: NAME_COLLAPSE_HELPER,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    return h('transition',\n    // We merge in the `appear` prop last\n    mergeData(data, {\n      props: TRANSITION_PROPS,\n      on: TRANSITION_HANDLERS\n    }, {\n      props\n    }),\n    // Note: `<transition>` supports a single root element only\n    children);\n  }\n});\n\nexport { BVCollapse, props };\n","import { extend } from '../../vue';\nimport { NAME_COLLAPSE } from '../../constants/components';\nimport { EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_HIDE, EVENT_NAME_HIDDEN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { getRootActionEventName, getRootEventName } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVCollapse } from './helpers/bv-collapse';\n\n// --- Constants ---\nconst ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nconst ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nconst ROOT_EVENT_NAME_ACCORDION = getRootEventName(NAME_COLLAPSE, 'accordion');\nconst ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nconst ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('visible', {\n  type: PROP_TYPE_BOOLEAN,\n  defaultValue: false\n});\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  ...modelProps,\n  // If `true` (and `visible` is `true` on mount), animate initially visible\n  accordion: makeProp(PROP_TYPE_STRING),\n  appear: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}), NAME_COLLAPSE);\n\n// --- Main component ---\n\n// @vue/component\nconst BCollapse = /*#__PURE__*/extend({\n  name: NAME_COLLAPSE,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin, listenOnRootMixin],\n  props,\n  data() {\n    return {\n      show: this[MODEL_PROP_NAME],\n      transitioning: false\n    };\n  },\n  computed: {\n    classObject() {\n      const {\n        transitioning\n      } = this;\n      return {\n        collapse: !transitioning,\n        show: this.show && !transitioning\n      };\n    },\n    slotScope() {\n      return {\n        visible: this.show,\n        close: () => {\n          this.show = false;\n        }\n      };\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME](newValue) {\n      if (newValue !== this.show) {\n        this.show = newValue;\n      }\n    },\n    show(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.emitState();\n      }\n    }\n  },\n  created() {\n    this.show = this[MODEL_PROP_NAME];\n  },\n  mounted() {\n    this.show = this[MODEL_PROP_NAME];\n    // Listen for toggle events to open/close us\n    this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggleEvent);\n    // Listen to other collapses for accordion events\n    this.listenOnRoot(ROOT_EVENT_NAME_ACCORDION, this.handleAccordionEvent);\n    this.$nextTick(() => {\n      this.emitState();\n    });\n    // Listen for \"Sync state\" requests from `v-b-toggle`\n    this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, id => {\n      if (id === this.safeId()) {\n        this.$nextTick(this.emitSync);\n      }\n    });\n  },\n  updated() {\n    // Emit a private event every time this component updates to ensure\n    // the toggle button is in sync with the collapse's state\n    // It is emitted regardless if the visible state changes\n    this.emitSync();\n  },\n  beforeDestroy() {\n    // Trigger state emit if needed\n    this.show = false;\n  },\n  methods: {\n    toggle() {\n      this.show = !this.show;\n    },\n    onEnter() {\n      this.transitioning = true;\n      // This should be moved out so we can add cancellable events\n      this.$emit(EVENT_NAME_SHOW);\n    },\n    onAfterEnter() {\n      this.transitioning = false;\n      this.$emit(EVENT_NAME_SHOWN);\n    },\n    onLeave() {\n      this.transitioning = true;\n      // This should be moved out so we can add cancellable events\n      this.$emit(EVENT_NAME_HIDE);\n    },\n    onAfterLeave() {\n      this.transitioning = false;\n      this.$emit(EVENT_NAME_HIDDEN);\n    },\n    emitState() {\n      const {\n        show,\n        accordion\n      } = this;\n      const id = this.safeId();\n      this.$emit(MODEL_EVENT_NAME, show);\n\n      // Let `v-b-toggle` know the state of this collapse\n      this.emitOnRoot(ROOT_EVENT_NAME_STATE, id, show);\n      if (accordion && show) {\n        // Tell the other collapses in this accordion to close\n        this.emitOnRoot(ROOT_EVENT_NAME_ACCORDION, id, accordion);\n      }\n    },\n    emitSync() {\n      // Emit a private event every time this component updates to ensure\n      // the toggle button is in sync with the collapse's state\n      // It is emitted regardless if the visible state changes\n      this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), this.show);\n    },\n    handleToggleEvent(id) {\n      if (id === this.safeId()) {\n        this.toggle();\n      }\n    },\n    handleAccordionEvent(openedId, openAccordion) {\n      const {\n        accordion,\n        show\n      } = this;\n      if (!accordion || accordion !== openAccordion) {\n        return;\n      }\n      const isThis = openedId === this.safeId();\n      // Open this collapse if not shown or\n      // close this collapse if shown\n      if (isThis && !show || !isThis && show) {\n        this.toggle();\n      }\n    }\n  },\n  render(h) {\n    const {\n      appear\n    } = this;\n    const $content = h(this.tag, {\n      class: this.classObject,\n      directives: [{\n        name: 'show',\n        value: this.show\n      }],\n      attrs: {\n        id: this.safeId()\n      }\n    }, this.normalizeSlot(SLOT_NAME_DEFAULT, this.slotScope));\n    return h(BVCollapse, {\n      props: {\n        appear\n      },\n      on: {\n        enter: this.onEnter,\n        afterEnter: this.onAfterEnter,\n        leave: this.onLeave,\n        afterLeave: this.onAfterLeave\n      }\n    }, [$content]);\n  }\n});\n\nexport { BCollapse, props };\n","/**\n * This file is generated based on the contents of highlight.js/lib/languages to avoid\n * utilizing dynamic expressions within `import()` which were the source of some\n * confusion when attempting to produce deterministic webpack compilations across\n * multiple build environments.\n *\n * This list of highlight-able languages will need to be updated as new options are\n * introduced within the highlight.js dependency.\n */\n\nexport default {\n  '1c': () => import(/* webpackChunkName: 'hl-1c' */ 'highlight.js/lib/languages/1c'),\n  abnf: () => import(/* webpackChunkName: 'hl-abnf' */ 'highlight.js/lib/languages/abnf'),\n  accesslog: () =>\n    import(/* webpackChunkName: 'hl-accesslog' */ 'highlight.js/lib/languages/accesslog'),\n  actionscript: () =>\n    import(/* webpackChunkName: 'hl-actionscript' */ 'highlight.js/lib/languages/actionscript'),\n  ada: () => import(/* webpackChunkName: 'hl-ada' */ 'highlight.js/lib/languages/ada'),\n  angelscript: () =>\n    import(/* webpackChunkName: 'hl-angelscript' */ 'highlight.js/lib/languages/angelscript'),\n  apache: () => import(/* webpackChunkName: 'hl-apache' */ 'highlight.js/lib/languages/apache'),\n  applescript: () =>\n    import(/* webpackChunkName: 'hl-applescript' */ 'highlight.js/lib/languages/applescript'),\n  arcade: () => import(/* webpackChunkName: 'hl-arcade' */ 'highlight.js/lib/languages/arcade'),\n  arduino: () => import(/* webpackChunkName: 'hl-arduino' */ 'highlight.js/lib/languages/arduino'),\n  armasm: () => import(/* webpackChunkName: 'hl-armasm' */ 'highlight.js/lib/languages/armasm'),\n  asciidoc: () =>\n    import(/* webpackChunkName: 'hl-asciidoc' */ 'highlight.js/lib/languages/asciidoc'),\n  aspectj: () => import(/* webpackChunkName: 'hl-aspectj' */ 'highlight.js/lib/languages/aspectj'),\n  autohotkey: () =>\n    import(/* webpackChunkName: 'hl-autohotkey' */ 'highlight.js/lib/languages/autohotkey'),\n  autoit: () => import(/* webpackChunkName: 'hl-autoit' */ 'highlight.js/lib/languages/autoit'),\n  avrasm: () => import(/* webpackChunkName: 'hl-avrasm' */ 'highlight.js/lib/languages/avrasm'),\n  awk: () => import(/* webpackChunkName: 'hl-awk' */ 'highlight.js/lib/languages/awk'),\n  axapta: () => import(/* webpackChunkName: 'hl-axapta' */ 'highlight.js/lib/languages/axapta'),\n  bash: () => import(/* webpackChunkName: 'hl-bash' */ 'highlight.js/lib/languages/bash'),\n  basic: () => import(/* webpackChunkName: 'hl-basic' */ 'highlight.js/lib/languages/basic'),\n  bnf: () => import(/* webpackChunkName: 'hl-bnf' */ 'highlight.js/lib/languages/bnf'),\n  brainfuck: () =>\n    import(/* webpackChunkName: 'hl-brainfuck' */ 'highlight.js/lib/languages/brainfuck'),\n  c: () => import(/* webpackChunkName: 'hl-c' */ 'highlight.js/lib/languages/c'),\n  cal: () => import(/* webpackChunkName: 'hl-cal' */ 'highlight.js/lib/languages/cal'),\n  capnproto: () =>\n    import(/* webpackChunkName: 'hl-capnproto' */ 'highlight.js/lib/languages/capnproto'),\n  ceylon: () => import(/* webpackChunkName: 'hl-ceylon' */ 'highlight.js/lib/languages/ceylon'),\n  clean: () => import(/* webpackChunkName: 'hl-clean' */ 'highlight.js/lib/languages/clean'),\n  'clojure-repl': () =>\n    import(/* webpackChunkName: 'hl-clojure-repl' */ 'highlight.js/lib/languages/clojure-repl'),\n  clojure: () => import(/* webpackChunkName: 'hl-clojure' */ 'highlight.js/lib/languages/clojure'),\n  codeowners: () =>\n    import(\n      /* webpackChunkName: 'hl-codeowners' */ '~/vue_shared/components/source_viewer/languages/codeowners'\n    ),\n  cmake: () => import(/* webpackChunkName: 'hl-cmake' */ 'highlight.js/lib/languages/cmake'),\n  coffeescript: () =>\n    import(/* webpackChunkName: 'hl-coffeescript' */ 'highlight.js/lib/languages/coffeescript'),\n  coq: () => import(/* webpackChunkName: 'hl-coq' */ 'highlight.js/lib/languages/coq'),\n  cos: () => import(/* webpackChunkName: 'hl-cos' */ 'highlight.js/lib/languages/cos'),\n  cpp: () => import(/* webpackChunkName: 'hl-cpp' */ 'highlight.js/lib/languages/cpp'),\n  crmsh: () => import(/* webpackChunkName: 'hl-crmsh' */ 'highlight.js/lib/languages/crmsh'),\n  crystal: () => import(/* webpackChunkName: 'hl-crystal' */ 'highlight.js/lib/languages/crystal'),\n  csharp: () => import(/* webpackChunkName: 'hl-csharp' */ 'highlight.js/lib/languages/csharp'),\n  csp: () => import(/* webpackChunkName: 'hl-csp' */ 'highlight.js/lib/languages/csp'),\n  css: () => import(/* webpackChunkName: 'hl-css' */ 'highlight.js/lib/languages/css'),\n  d: () => import(/* webpackChunkName: 'hl-d' */ 'highlight.js/lib/languages/d'),\n  dart: () => import(/* webpackChunkName: 'hl-dart' */ 'highlight.js/lib/languages/dart'),\n  delphi: () => import(/* webpackChunkName: 'hl-delphi' */ 'highlight.js/lib/languages/delphi'),\n  diff: () => import(/* webpackChunkName: 'hl-diff' */ 'highlight.js/lib/languages/diff'),\n  django: () => import(/* webpackChunkName: 'hl-django' */ 'highlight.js/lib/languages/django'),\n  dns: () => import(/* webpackChunkName: 'hl-dns' */ 'highlight.js/lib/languages/dns'),\n  dockerfile: () =>\n    import(/* webpackChunkName: 'hl-dockerfile' */ 'highlight.js/lib/languages/dockerfile'),\n  dos: () => import(/* webpackChunkName: 'hl-dos' */ 'highlight.js/lib/languages/dos'),\n  dsconfig: () =>\n    import(/* webpackChunkName: 'hl-dsconfig' */ 'highlight.js/lib/languages/dsconfig'),\n  dts: () => import(/* webpackChunkName: 'hl-dts' */ 'highlight.js/lib/languages/dts'),\n  dust: () => import(/* webpackChunkName: 'hl-dust' */ 'highlight.js/lib/languages/dust'),\n  ebnf: () => import(/* webpackChunkName: 'hl-ebnf' */ 'highlight.js/lib/languages/ebnf'),\n  elixir: () => import(/* webpackChunkName: 'hl-elixir' */ 'highlight.js/lib/languages/elixir'),\n  elm: () => import(/* webpackChunkName: 'hl-elm' */ 'highlight.js/lib/languages/elm'),\n  erb: () => import(/* webpackChunkName: 'hl-erb' */ 'highlight.js/lib/languages/erb'),\n  'erlang-repl': () =>\n    import(/* webpackChunkName: 'hl-erlang-repl' */ 'highlight.js/lib/languages/erlang-repl'),\n  erlang: () => import(/* webpackChunkName: 'hl-erlang' */ 'highlight.js/lib/languages/erlang'),\n  excel: () => import(/* webpackChunkName: 'hl-excel' */ 'highlight.js/lib/languages/excel'),\n  fix: () => import(/* webpackChunkName: 'hl-fix' */ 'highlight.js/lib/languages/fix'),\n  flix: () => import(/* webpackChunkName: 'hl-flix' */ 'highlight.js/lib/languages/flix'),\n  fortran: () => import(/* webpackChunkName: 'hl-fortran' */ 'highlight.js/lib/languages/fortran'),\n  fsharp: () => import(/* webpackChunkName: 'hl-fsharp' */ 'highlight.js/lib/languages/fsharp'),\n  gams: () => import(/* webpackChunkName: 'hl-gams' */ 'highlight.js/lib/languages/gams'),\n  gauss: () => import(/* webpackChunkName: 'hl-gauss' */ 'highlight.js/lib/languages/gauss'),\n  gcode: () => import(/* webpackChunkName: 'hl-gcode' */ 'highlight.js/lib/languages/gcode'),\n  gherkin: () => import(/* webpackChunkName: 'hl-gherkin' */ 'highlight.js/lib/languages/gherkin'),\n  glsl: () => import(/* webpackChunkName: 'hl-glsl' */ 'highlight.js/lib/languages/glsl'),\n  gml: () => import(/* webpackChunkName: 'hl-gml' */ 'highlight.js/lib/languages/gml'),\n  go: () => import(/* webpackChunkName: 'hl-go' */ 'highlight.js/lib/languages/go'),\n  golo: () => import(/* webpackChunkName: 'hl-golo' */ 'highlight.js/lib/languages/golo'),\n  gradle: () => import(/* webpackChunkName: 'hl-gradle' */ 'highlight.js/lib/languages/gradle'),\n  groovy: () => import(/* webpackChunkName: 'hl-groovy' */ 'highlight.js/lib/languages/groovy'),\n  haml: () => import(/* webpackChunkName: 'hl-haml' */ 'highlight.js/lib/languages/haml'),\n  handlebars: () =>\n    import(/* webpackChunkName: 'hl-handlebars' */ 'highlight.js/lib/languages/handlebars'),\n  haskell: () => import(/* webpackChunkName: 'hl-haskell' */ 'highlight.js/lib/languages/haskell'),\n  haxe: () => import(/* webpackChunkName: 'hl-haxe' */ 'highlight.js/lib/languages/haxe'),\n  hsp: () => import(/* webpackChunkName: 'hl-hsp' */ 'highlight.js/lib/languages/hsp'),\n  http: () => import(/* webpackChunkName: 'hl-http' */ 'highlight.js/lib/languages/http'),\n  hy: () => import(/* webpackChunkName: 'hl-hy' */ 'highlight.js/lib/languages/hy'),\n  inform7: () => import(/* webpackChunkName: 'hl-inform7' */ 'highlight.js/lib/languages/inform7'),\n  ini: () => import(/* webpackChunkName: 'hl-ini' */ 'highlight.js/lib/languages/ini'),\n  irpf90: () => import(/* webpackChunkName: 'hl-irpf90' */ 'highlight.js/lib/languages/irpf90'),\n  isbl: () => import(/* webpackChunkName: 'hl-isbl' */ 'highlight.js/lib/languages/isbl'),\n  java: () => import(/* webpackChunkName: 'hl-java' */ 'highlight.js/lib/languages/java'),\n  javascript: () =>\n    import(/* webpackChunkName: 'hl-javascript' */ 'highlight.js/lib/languages/javascript'),\n  'jboss-cli': () =>\n    import(/* webpackChunkName: 'hl-jboss-cli' */ 'highlight.js/lib/languages/jboss-cli'),\n  json: () => import(/* webpackChunkName: 'hl-json' */ 'highlight.js/lib/languages/json'),\n  'julia-repl': () =>\n    import(/* webpackChunkName: 'hl-julia-repl' */ 'highlight.js/lib/languages/julia-repl'),\n  julia: () => import(/* webpackChunkName: 'hl-julia' */ 'highlight.js/lib/languages/julia'),\n  kotlin: () => import(/* webpackChunkName: 'hl-kotlin' */ 'highlight.js/lib/languages/kotlin'),\n  lasso: () => import(/* webpackChunkName: 'hl-lasso' */ 'highlight.js/lib/languages/lasso'),\n  latex: () => import(/* webpackChunkName: 'hl-latex' */ 'highlight.js/lib/languages/latex'),\n  ldif: () => import(/* webpackChunkName: 'hl-ldif' */ 'highlight.js/lib/languages/ldif'),\n  leaf: () => import(/* webpackChunkName: 'hl-leaf' */ 'highlight.js/lib/languages/leaf'),\n  less: () => import(/* webpackChunkName: 'hl-less' */ 'highlight.js/lib/languages/less'),\n  lisp: () => import(/* webpackChunkName: 'hl-lisp' */ 'highlight.js/lib/languages/lisp'),\n  livecodeserver: () =>\n    import(/* webpackChunkName: 'hl-livecodeserver' */ 'highlight.js/lib/languages/livecodeserver'),\n  livescript: () =>\n    import(/* webpackChunkName: 'hl-livescript' */ 'highlight.js/lib/languages/livescript'),\n  llvm: () => import(/* webpackChunkName: 'hl-llvm' */ 'highlight.js/lib/languages/llvm'),\n  lsl: () => import(/* webpackChunkName: 'hl-lsl' */ 'highlight.js/lib/languages/lsl'),\n  lua: () => import(/* webpackChunkName: 'hl-lua' */ 'highlight.js/lib/languages/lua'),\n  makefile: () =>\n    import(/* webpackChunkName: 'hl-makefile' */ 'highlight.js/lib/languages/makefile'),\n  markdown: () =>\n    import(/* webpackChunkName: 'hl-markdown' */ 'highlight.js/lib/languages/markdown'),\n  mathematica: () =>\n    import(/* webpackChunkName: 'hl-mathematica' */ 'highlight.js/lib/languages/mathematica'),\n  matlab: () => import(/* webpackChunkName: 'hl-matlab' */ 'highlight.js/lib/languages/matlab'),\n  maxima: () => import(/* webpackChunkName: 'hl-maxima' */ 'highlight.js/lib/languages/maxima'),\n  mel: () => import(/* webpackChunkName: 'hl-mel' */ 'highlight.js/lib/languages/mel'),\n  mercury: () => import(/* webpackChunkName: 'hl-mercury' */ 'highlight.js/lib/languages/mercury'),\n  mipsasm: () => import(/* webpackChunkName: 'hl-mipsasm' */ 'highlight.js/lib/languages/mipsasm'),\n  mizar: () => import(/* webpackChunkName: 'hl-mizar' */ 'highlight.js/lib/languages/mizar'),\n  mojolicious: () =>\n    import(/* webpackChunkName: 'hl-mojolicious' */ 'highlight.js/lib/languages/mojolicious'),\n  monkey: () => import(/* webpackChunkName: 'hl-monkey' */ 'highlight.js/lib/languages/monkey'),\n  moonscript: () =>\n    import(/* webpackChunkName: 'hl-moonscript' */ 'highlight.js/lib/languages/moonscript'),\n  n1ql: () => import(/* webpackChunkName: 'hl-n1ql' */ 'highlight.js/lib/languages/n1ql'),\n  nestedtext: () =>\n    import(/* webpackChunkName: 'hl-nestedtext' */ 'highlight.js/lib/languages/nestedtext'),\n  nginx: () => import(/* webpackChunkName: 'hl-nginx' */ 'highlight.js/lib/languages/nginx'),\n  nim: () => import(/* webpackChunkName: 'hl-nim' */ 'highlight.js/lib/languages/nim'),\n  nix: () => import(/* webpackChunkName: 'hl-nix' */ 'highlight.js/lib/languages/nix'),\n  'node-repl': () =>\n    import(/* webpackChunkName: 'hl-node-repl' */ 'highlight.js/lib/languages/node-repl'),\n  nsis: () => import(/* webpackChunkName: 'hl-nsis' */ 'highlight.js/lib/languages/nsis'),\n  objectivec: () =>\n    import(/* webpackChunkName: 'hl-objectivec' */ 'highlight.js/lib/languages/objectivec'),\n  ocaml: () => import(/* webpackChunkName: 'hl-ocaml' */ 'highlight.js/lib/languages/ocaml'),\n  openscad: () =>\n    import(/* webpackChunkName: 'hl-openscad' */ 'highlight.js/lib/languages/openscad'),\n  oxygene: () => import(/* webpackChunkName: 'hl-oxygene' */ 'highlight.js/lib/languages/oxygene'),\n  parser3: () => import(/* webpackChunkName: 'hl-parser3' */ 'highlight.js/lib/languages/parser3'),\n  perl: () => import(/* webpackChunkName: 'hl-perl' */ 'highlight.js/lib/languages/perl'),\n  pf: () => import(/* webpackChunkName: 'hl-pf' */ 'highlight.js/lib/languages/pf'),\n  pgsql: () => import(/* webpackChunkName: 'hl-pgsql' */ 'highlight.js/lib/languages/pgsql'),\n  'php-template': () =>\n    import(/* webpackChunkName: 'hl-php-template' */ 'highlight.js/lib/languages/php-template'),\n  php: () => import(/* webpackChunkName: 'hl-php' */ 'highlight.js/lib/languages/php'),\n  plaintext: () =>\n    import(/* webpackChunkName: 'hl-plaintext' */ 'highlight.js/lib/languages/plaintext'),\n  pony: () => import(/* webpackChunkName: 'hl-pony' */ 'highlight.js/lib/languages/pony'),\n  powershell: () =>\n    import(/* webpackChunkName: 'hl-powershell' */ 'highlight.js/lib/languages/powershell'),\n  processing: () =>\n    import(/* webpackChunkName: 'hl-processing' */ 'highlight.js/lib/languages/processing'),\n  profile: () => import(/* webpackChunkName: 'hl-profile' */ 'highlight.js/lib/languages/profile'),\n  prolog: () => import(/* webpackChunkName: 'hl-prolog' */ 'highlight.js/lib/languages/prolog'),\n  properties: () =>\n    import(/* webpackChunkName: 'hl-properties' */ 'highlight.js/lib/languages/properties'),\n  protobuf: () =>\n    import(/* webpackChunkName: 'hl-protobuf' */ 'highlight.js/lib/languages/protobuf'),\n  puppet: () => import(/* webpackChunkName: 'hl-puppet' */ 'highlight.js/lib/languages/puppet'),\n  purebasic: () =>\n    import(/* webpackChunkName: 'hl-purebasic' */ 'highlight.js/lib/languages/purebasic'),\n  'python-repl': () =>\n    import(/* webpackChunkName: 'hl-python-repl' */ 'highlight.js/lib/languages/python-repl'),\n  python: () => import(/* webpackChunkName: 'hl-python' */ 'highlight.js/lib/languages/python'),\n  q: () => import(/* webpackChunkName: 'hl-q' */ 'highlight.js/lib/languages/q'),\n  qml: () => import(/* webpackChunkName: 'hl-qml' */ 'highlight.js/lib/languages/qml'),\n  r: () => import(/* webpackChunkName: 'hl-r' */ 'highlight.js/lib/languages/r'),\n  reasonml: () =>\n    import(/* webpackChunkName: 'hl-reasonml' */ 'highlight.js/lib/languages/reasonml'),\n  rib: () => import(/* webpackChunkName: 'hl-rib' */ 'highlight.js/lib/languages/rib'),\n  roboconf: () =>\n    import(/* webpackChunkName: 'hl-roboconf' */ 'highlight.js/lib/languages/roboconf'),\n  routeros: () =>\n    import(/* webpackChunkName: 'hl-routeros' */ 'highlight.js/lib/languages/routeros'),\n  rsl: () => import(/* webpackChunkName: 'hl-rsl' */ 'highlight.js/lib/languages/rsl'),\n  ruby: () => import(/* webpackChunkName: 'hl-ruby' */ 'highlight.js/lib/languages/ruby'),\n  ruleslanguage: () =>\n    import(/* webpackChunkName: 'hl-ruleslanguage' */ 'highlight.js/lib/languages/ruleslanguage'),\n  rust: () => import(/* webpackChunkName: 'hl-rust' */ 'highlight.js/lib/languages/rust'),\n  sas: () => import(/* webpackChunkName: 'hl-sas' */ 'highlight.js/lib/languages/sas'),\n  scala: () => import(/* webpackChunkName: 'hl-scala' */ 'highlight.js/lib/languages/scala'),\n  scheme: () => import(/* webpackChunkName: 'hl-scheme' */ 'highlight.js/lib/languages/scheme'),\n  scilab: () => import(/* webpackChunkName: 'hl-scilab' */ 'highlight.js/lib/languages/scilab'),\n  scss: () => import(/* webpackChunkName: 'hl-scss' */ 'highlight.js/lib/languages/scss'),\n  shell: () => import(/* webpackChunkName: 'hl-shell' */ 'highlight.js/lib/languages/shell'),\n  smali: () => import(/* webpackChunkName: 'hl-smali' */ 'highlight.js/lib/languages/smali'),\n  smalltalk: () =>\n    import(/* webpackChunkName: 'hl-smalltalk' */ 'highlight.js/lib/languages/smalltalk'),\n  sml: () => import(/* webpackChunkName: 'hl-sml' */ 'highlight.js/lib/languages/sml'),\n  sqf: () => import(/* webpackChunkName: 'hl-sqf' */ 'highlight.js/lib/languages/sqf'),\n  sql: () => import(/* webpackChunkName: 'hl-sql' */ 'highlight.js/lib/languages/sql'),\n  stan: () => import(/* webpackChunkName: 'hl-stan' */ 'highlight.js/lib/languages/stan'),\n  stata: () => import(/* webpackChunkName: 'hl-stata' */ 'highlight.js/lib/languages/stata'),\n  step21: () => import(/* webpackChunkName: 'hl-step21' */ 'highlight.js/lib/languages/step21'),\n  stylus: () => import(/* webpackChunkName: 'hl-stylus' */ 'highlight.js/lib/languages/stylus'),\n  subunit: () => import(/* webpackChunkName: 'hl-subunit' */ 'highlight.js/lib/languages/subunit'),\n  svelte: () =>\n    import(\n      /* webpackChunkName: 'hl-svelte' */ '~/vue_shared/components/source_viewer/languages/svelte'\n    ),\n  hcl: () =>\n    import(\n      /* webpackChunkName: 'hl-hcl' */ '~/packages_and_registries/infrastructure_registry/languages/hcl'\n    ),\n  swift: () => import(/* webpackChunkName: 'hl-swift' */ 'highlight.js/lib/languages/swift'),\n  taggerscript: () =>\n    import(/* webpackChunkName: 'hl-taggerscript' */ 'highlight.js/lib/languages/taggerscript'),\n  tap: () => import(/* webpackChunkName: 'hl-tap' */ 'highlight.js/lib/languages/tap'),\n  tcl: () => import(/* webpackChunkName: 'hl-tcl' */ 'highlight.js/lib/languages/tcl'),\n  thrift: () => import(/* webpackChunkName: 'hl-thrift' */ 'highlight.js/lib/languages/thrift'),\n  tp: () => import(/* webpackChunkName: 'hl-tp' */ 'highlight.js/lib/languages/tp'),\n  twig: () => import(/* webpackChunkName: 'hl-twig' */ 'highlight.js/lib/languages/twig'),\n  typescript: () =>\n    import(/* webpackChunkName: 'hl-typescript' */ 'highlight.js/lib/languages/typescript'),\n  ts: () => import(/* webpackChunkName: 'hl-typescript' */ 'highlight.js/lib/languages/typescript'),\n  vala: () => import(/* webpackChunkName: 'hl-vala' */ 'highlight.js/lib/languages/vala'),\n  vbnet: () => import(/* webpackChunkName: 'hl-vbnet' */ 'highlight.js/lib/languages/vbnet'),\n  'vbscript-html': () =>\n    import(/* webpackChunkName: 'hl-vbscript-html' */ 'highlight.js/lib/languages/vbscript-html'),\n  vbscript: () =>\n    import(/* webpackChunkName: 'hl-vbscript' */ 'highlight.js/lib/languages/vbscript'),\n  verilog: () => import(/* webpackChunkName: 'hl-verilog' */ 'highlight.js/lib/languages/verilog'),\n  vhdl: () => import(/* webpackChunkName: 'hl-vhdl' */ 'highlight.js/lib/languages/vhdl'),\n  vim: () => import(/* webpackChunkName: 'hl-vim' */ 'highlight.js/lib/languages/vim'),\n  wasm: () => import(/* webpackChunkName: 'hl-wasm' */ 'highlight.js/lib/languages/wasm'),\n  wren: () => import(/* webpackChunkName: 'hl-wren' */ 'highlight.js/lib/languages/wren'),\n  x86asm: () => import(/* webpackChunkName: 'hl-x86asm' */ 'highlight.js/lib/languages/x86asm'),\n  xl: () => import(/* webpackChunkName: 'hl-xl' */ 'highlight.js/lib/languages/xl'),\n  xml: () => import(/* webpackChunkName: 'hl-xml' */ 'highlight.js/lib/languages/xml'),\n  xquery: () => import(/* webpackChunkName: 'hl-xquery' */ 'highlight.js/lib/languages/xquery'),\n  yaml: () => import(/* webpackChunkName: 'hl-yaml' */ 'highlight.js/lib/languages/yaml'),\n  zephir: () => import(/* webpackChunkName: 'hl-zephir' */ 'highlight.js/lib/languages/zephir'),\n};\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","import { highlightPlugins } from '~/highlight_js/plugins';\nimport { highlightContent } from '~/highlight_js';\nimport { LINES_PER_CHUNK, NEWLINE, ROUGE_TO_HLJS_LANGUAGE_MAP } from '../constants';\n\nexport const splitByLineBreaks = (content = '') => content.split(/\\r?\\n/);\n\n// eslint-disable-next-line max-params\nconst createChunk = (language, rawChunkLines, highlightedChunkLines = [], startingFrom = 0) => ({\n  highlightedContent: highlightedChunkLines.join(NEWLINE),\n  rawContent: rawChunkLines.join(NEWLINE),\n  totalLines: rawChunkLines.length,\n  startingFrom,\n  language,\n});\n\nconst splitIntoChunks = (language, rawContent, highlightedContent) => {\n  const result = [];\n  const splitRawContent = splitByLineBreaks(rawContent);\n  const splitHighlightedContent = splitByLineBreaks(highlightedContent);\n\n  for (let i = 0; i < splitRawContent.length; i += LINES_PER_CHUNK) {\n    const chunkIndex = Math.floor(i / LINES_PER_CHUNK);\n    const highlightedChunk = splitHighlightedContent.slice(i, i + LINES_PER_CHUNK);\n    const rawChunk = splitRawContent.slice(i, i + LINES_PER_CHUNK);\n    result[chunkIndex] = createChunk(language, rawChunk, highlightedChunk, i);\n  }\n\n  return result;\n};\n\nconst highlight = async (fileType, rawContent, lang) => {\n  const language = ROUGE_TO_HLJS_LANGUAGE_MAP[lang.toLowerCase()];\n  let highlightedChunks;\n\n  if (language) {\n    const plugins = highlightPlugins(fileType, rawContent, true);\n    const highlightedContent = await highlightContent(lang, rawContent, plugins);\n    highlightedChunks = splitIntoChunks(language, rawContent, highlightedContent);\n  }\n\n  return highlightedChunks;\n};\n\nexport { highlight, splitIntoChunks };\n","import GlButton from '../button/button';\nimport GlButtonGroup from '../button_group/button_group';\nimport GlIcon from '../icon/icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlKeysetPagination',\n  components: {\n    GlButtonGroup,\n    GlButton,\n    GlIcon\n  },\n  inheritAttrs: false,\n  props: {\n    // The following 4 properties match the default names of the\n    // [PageInfo](https://docs.gitlab.com/ee/api/graphql/reference/index.html#pageinfo)\n    // GraphQL type, allowing the returned `pageInfo` object to\n    // be bound directly to this component:\n    // `<gl-keyset-pagination v-bind=\"pageInfo\">`\n    /**\n     * Whether or not the \"Prev\" button should be enabled\n     */\n    hasPreviousPage: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Whether or not the \"Next\" button should be enabled\n     */\n    hasNextPage: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * A cursor that points to the first item in the current page.\n     * Will be passed as an event parameter when the \"prev\" event is fired.\n     */\n    startCursor: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * A cursor that points to the last item in the current page.\n     * Will be passed as an event parameter when the \"next\" event is fired.\n     */\n    endCursor: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The text that will be rendered inside the \"Previous\" button.\n     * It's important to provide this parameter since the default text is not translatable.\n     */\n    prevText: {\n      type: String,\n      required: false,\n      default: () => translate('GlKeysetPagination.prevText', 'Previous')\n    },\n    /**\n     * A link that will be used as the \"Prev\" button\\'s \"href\" attribute.\n     * If provided, the \"Prev\" button renders as a link button; otherwise, it is rendered as a regular button.\n     */\n    prevButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The aria-label that needs to be set for the\n     * pagination landmark region.\n     */\n    navigationLabel: {\n      type: String,\n      required: false,\n      default: () => translate('GlKeysetPagination.navigationLabel', 'Pagination')\n    },\n    /**\n     * The text that will be rendered inside the \"Next\" button.\n     * It's important to provide this parameter since the default text is not translatable.\n     */\n    nextText: {\n      type: String,\n      required: false,\n      default: () => translate('GlKeysetPagination.nextText', 'Next')\n    },\n    /**\n     * A link that will be used as the \"Next\" button\\'s \"href\" attribute.\n     * If provided, the \"Next\" button renders as a link button; otherwise, it is rendered as a regular button.\n     */\n    nextButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Whether or not both buttons should be disabled (regardless of the \"hasPreviousPage\" and \"hasNextPage\" values).\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  computed: {\n    isVisible() {\n      return this.hasPreviousPage || this.hasNextPage;\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isVisible)?_c('nav',{staticClass:\"gl-pagination\",attrs:{\"aria-label\":_vm.navigationLabel}},[_c('gl-button-group',_vm._g(_vm._b({staticClass:\"gl-keyset-pagination\"},'gl-button-group',_vm.$attrs,false),_vm.$listeners),[_c('gl-button',{attrs:{\"href\":_vm.prevButtonLink,\"disabled\":_vm.disabled || !_vm.hasPreviousPage,\"data-testid\":\"prevButton\",\"category\":\"tertiary\"},on:{\"click\":function($event){return _vm.$emit('prev', _vm.startCursor)}}},[_vm._t(\"previous-button-content\",function(){return [_c('div',{staticClass:\"gl-align-center gl-flex\"},[_c('gl-icon',{attrs:{\"name\":\"chevron-left\"}}),_vm._v(\"\\n          \"+_vm._s(_vm.prevText)+\"\\n        \")],1)]})],2),_vm._v(\" \"),_c('gl-button',{attrs:{\"href\":_vm.nextButtonLink,\"disabled\":_vm.disabled || !_vm.hasNextPage,\"data-testid\":\"nextButton\",\"category\":\"tertiary\"},on:{\"click\":function($event){return _vm.$emit('next', _vm.endCursor)}}},[_vm._t(\"next-button-content\",function(){return [_c('div',{staticClass:\"gl-align-center gl-flex\"},[_vm._v(\"\\n          \"+_vm._s(_vm.nextText)+\"\\n          \"),_c('gl-icon',{attrs:{\"name\":\"chevron-right\"}})],1)]})],2)],1)],1):_vm._e()};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityRevertToDetected\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityRevertToDetected\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detectedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LastStateTransition\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":328}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/last_state_transition.fragment.graphql\\\"\\n\\nmutation vulnerabilityRevertToDetected($id: VulnerabilityID!, $comment: String) {\\n  vulnerabilityRevertToDetected(input: { id: $id, comment: $comment }) {\\n    errors\\n    vulnerability {\\n      id\\n      state\\n      detectedAt\\n      ...LastStateTransition\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/last_state_transition.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"vulnerabilityRevertToDetected\"] = oneQuery(doc, \"vulnerabilityRevertToDetected\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"agentImages\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"agentName\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"clusterAgent\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"agentName\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityImages\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":238}};\n    doc.loc.source = {\"body\":\"query agentImages($agentName: String!, $projectPath: ID!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    clusterAgent(name: $agentName) {\\n      id\\n      vulnerabilityImages {\\n        nodes {\\n          name\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"agentImages\"] = oneQuery(doc, \"agentImages\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.showVulnerabilityTraining)?_c('div',[_vm._t(\"header\"),_vm._v(\" \"),(_vm.showTrainingNotFound)?_c('p',{attrs:{\"data-testid\":\"unavailable-message\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.trainingUnavailable)+\"\\n  \")]):(_vm.isUrlsLoading)?_c('div',[_c('gl-skeleton-loader',{attrs:{\"width\":200,\"lines\":3}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.securityTrainingUrls),function({ name, url, identifier, status },index){return _c('div',{key:index,staticClass:\"gl-mt-6\"},[(status === _vm.$options.SECURITY_TRAINING_URL_STATUS_COMPLETED)?_c('div',[_c('div',[(_vm.$options.TEMP_PROVIDER_LOGOS[name])?_c('span',{staticClass:\"gl-mr-1 gl-inline-flex\"},[_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.$options.TEMP_PROVIDER_LOGOS[name].svg),expression:\"$options.TEMP_PROVIDER_LOGOS[name].svg\"}],staticStyle:{\"width\":\"12px\"},attrs:{\"data-testid\":\"provider-logo\",\"role\":\"presentation\"}})]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-base gl-font-bold\",attrs:{\"data-testid\":\"security-training-text\"}},[_vm._v(_vm._s(name))])]),_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":url,\"target\":\"_blank\",\"data-testid\":\"security-training-link\",\"data-qa-training-name\":name},on:{\"click\":function($event){return _vm.clickTrainingLink(name, identifier)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.viewTraining)+\"\\n        \"),_c('gl-icon',{staticClass:\"gl-ml-2\",attrs:{\"name\":\"external-link\",\"size\":12}})],1)],1):_vm._e()])})],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlLink, GlIcon, GlSkeletonLoader } from '@gitlab/ui';\nimport * as Sentry from '~/sentry/sentry_browser_wrapper';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { s__, __ } from '~/locale';\nimport securityTrainingProvidersQuery from '~/security_configuration/graphql/security_training_providers.query.graphql';\nimport securityTrainingVulnerabilityQuery from '~/security_configuration/graphql/security_training_vulnerability.query.graphql';\nimport Tracking from '~/tracking';\nimport {\n  TRACK_CLICK_TRAINING_LINK_ACTION,\n  TRACK_TRAINING_LOADED_ACTION,\n  TEMP_PROVIDER_LOGOS,\n} from '~/security_configuration/constants';\nimport { SECURITY_TRAINING_URL_STATUS_COMPLETED } from '../constants';\nimport { formatIdentifierExternalIds, isSupportedIdentifier } from '../helpers';\n\nexport const i18n = {\n  trainingUnavailable: s__('Vulnerability|Training not available for this vulnerability.'),\n  viewTraining: s__('Vulnerability|View training'),\n  loading: __('Loading'),\n};\n\nexport const TRAINING_URL_POLLING_INTERVAL = 5000;\n\nexport default {\n  i18n,\n  TEMP_PROVIDER_LOGOS,\n  SECURITY_TRAINING_URL_STATUS_COMPLETED,\n  components: {\n    GlLink,\n    GlIcon,\n    GlSkeletonLoader,\n  },\n  directives: {\n    SafeHtml,\n  },\n  mixins: [Tracking.mixin()],\n  props: {\n    projectFullPath: {\n      type: String,\n      required: true,\n    },\n    identifiers: {\n      type: Array,\n      required: true,\n    },\n    file: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  apollo: {\n    securityTrainingProviders: {\n      query: securityTrainingProvidersQuery,\n      update({ project }) {\n        return project?.securityTrainingProviders;\n      },\n      error(e) {\n        Sentry.captureException(e);\n      },\n      variables() {\n        return {\n          fullPath: this.projectFullPath,\n        };\n      },\n    },\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    securityTrainingUrls: {\n      query: securityTrainingVulnerabilityQuery,\n      pollInterval: TRAINING_URL_POLLING_INTERVAL,\n      update({ project }) {\n        if (!project) {\n          return [];\n        }\n        const { securityTrainingUrls = [] } = project;\n\n        const allUrlsAreReady = securityTrainingUrls.every(\n          ({ status }) => status === SECURITY_TRAINING_URL_STATUS_COMPLETED,\n        );\n\n        if (allUrlsAreReady) {\n          this.$apollo.queries.securityTrainingUrls.stopPolling();\n          this.isUrlsLoading = false;\n        }\n\n        return securityTrainingUrls;\n      },\n      variables() {\n        const { file } = this;\n\n        return {\n          projectFullPath: this.projectFullPath,\n          identifierExternalIds: this.supportedIdentifiersExternalIds,\n          ...(file && { filename: file }),\n        };\n      },\n      error(e) {\n        Sentry.captureException(e);\n      },\n    },\n  },\n  data() {\n    return {\n      securityTrainingProviders: [],\n      vulnerability: {},\n      training: null,\n      isUrlsLoading: true,\n    };\n  },\n  computed: {\n    showVulnerabilityTraining() {\n      return Boolean(this.hasSecurityTrainingProviders);\n    },\n    showTrainingNotFound() {\n      return !this.hasSupportedIdentifier || !this.hasSecurityTrainingUrls;\n    },\n    hasSecurityTrainingProviders() {\n      return this.securityTrainingProviders?.some(({ isEnabled }) => isEnabled);\n    },\n    supportedIdentifiersExternalIds() {\n      return this.identifiers.flatMap((identifier) =>\n        isSupportedIdentifier(identifier.externalType)\n          ? formatIdentifierExternalIds(identifier)\n          : [],\n      );\n    },\n    hasSupportedIdentifier() {\n      return this.supportedIdentifiersExternalIds.length > 0;\n    },\n    hasSecurityTrainingUrls() {\n      return this.securityTrainingUrls?.length > 0;\n    },\n  },\n  watch: {\n    showVulnerabilityTraining: {\n      immediate: true,\n      handler(showVulnerabilityTraining) {\n        this.$emit('show-vulnerability-training', showVulnerabilityTraining);\n      },\n    },\n  },\n  created() {\n    const unwatchHasSecurityTrainingUrls = this.$watch('hasSecurityTrainingUrls', (hasUrls) => {\n      if (hasUrls) {\n        this.track(TRACK_TRAINING_LOADED_ACTION);\n        // we only want to track this once, so we immediately unsubscribe after the first track\n        unwatchHasSecurityTrainingUrls();\n      }\n    });\n  },\n  methods: {\n    clickTrainingLink(name, identifier) {\n      this.track(TRACK_CLICK_TRAINING_LINK_ACTION, {\n        label: `vendor_${name}`,\n        property: this.projectFullPath,\n        extra: {\n          vulnerability: identifier,\n        },\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"showVulnerabilityTraining\">\n    <slot name=\"header\"></slot>\n    <p v-if=\"showTrainingNotFound\" data-testid=\"unavailable-message\">\n      {{ $options.i18n.trainingUnavailable }}\n    </p>\n    <div v-else-if=\"isUrlsLoading\">\n      <gl-skeleton-loader :width=\"200\" :lines=\"3\" />\n    </div>\n    <div\n      v-for=\"({ name, url, identifier, status }, index) in securityTrainingUrls\"\n      :key=\"index\"\n      class=\"gl-mt-6\"\n    >\n      <div v-if=\"status === $options.SECURITY_TRAINING_URL_STATUS_COMPLETED\">\n        <div>\n          <span v-if=\"$options.TEMP_PROVIDER_LOGOS[name]\" class=\"gl-mr-1 gl-inline-flex\">\n            <div\n              v-safe-html=\"$options.TEMP_PROVIDER_LOGOS[name].svg\"\n              data-testid=\"provider-logo\"\n              style=\"width: 12px\"\n              role=\"presentation\"\n            ></div>\n          </span>\n          <span class=\"gl-text-base gl-font-bold\" data-testid=\"security-training-text\">{{\n            name\n          }}</span>\n        </div>\n        <gl-link\n          :href=\"url\"\n          target=\"_blank\"\n          data-testid=\"security-training-link\"\n          :data-qa-training-name=\"name\"\n          @click=\"clickTrainingLink(name, identifier)\"\n        >\n          {{ $options.i18n.viewTraining }}\n          <gl-icon class=\"gl-ml-2\" name=\"external-link\" :size=\"12\" />\n        </gl-link>\n      </div>\n    </div>\n  </div>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_training.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_training.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vulnerability_training.vue?vue&type=template&id=25bfcc34\"\nimport script from \"./vulnerability_training.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_training.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"gl-flex gl-items-center\"},[_c('ci-icon',{staticClass:\"gl-leading-0\",attrs:{\"size\":_vm.iconSize,\"status\":_vm.status,\"show-tooltip\":false,\"use-link\":false}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-line-clamp-2 gl-pl-3 gl-wrap-anywhere\",attrs:{\"title\":_vm.name}},[_vm._v(\"\\n    \"+_vm._s(_vm.name)+\"\\n  \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_name_component.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_name_component.vue?vue&type=script&lang=js\"","<script>\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\n\n/**\n * Component that renders both the CI icon status and the job name.\n * Used in\n *  - Badge component\n *  - Dropdown badge components\n */\nexport default {\n  components: {\n    CiIcon,\n  },\n  props: {\n    name: {\n      type: String,\n      required: true,\n    },\n    status: {\n      type: Object,\n      required: true,\n    },\n    iconSize: {\n      type: Number,\n      required: false,\n      default: 16,\n    },\n  },\n};\n</script>\n<template>\n  <span class=\"gl-flex gl-items-center\">\n    <ci-icon\n      :size=\"iconSize\"\n      :status=\"status\"\n      :show-tooltip=\"false\"\n      :use-link=\"false\"\n      class=\"gl-leading-0\"\n    />\n    <span class=\"gl-line-clamp-2 gl-pl-3 gl-wrap-anywhere\" :title=\"name\">\n      {{ name }}\n    </span>\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./job_name_component.vue?vue&type=template&id=10612be2\"\nimport script from \"./job_name_component.vue?vue&type=script&lang=js\"\nexport * from \"./job_name_component.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","export const SEVERITY_CLASSES = {\n  info: 'gl-text-blue-400',\n  minor: 'gl-text-orange-300',\n  major: 'gl-text-orange-400',\n  critical: 'gl-text-red-600',\n  blocker: 'gl-text-red-800',\n  unknown: 'gl-text-gray-400',\n};\n\nexport const SEVERITY_ICONS = {\n  info: 'severity-info',\n  minor: 'severity-low',\n  major: 'severity-medium',\n  critical: 'severity-high',\n  blocker: 'severity-critical',\n  unknown: 'severity-unknown',\n};\n\nexport const SEVERITY_ICONS_MR_WIDGET = {\n  info: 'severityInfo',\n  minor: 'severityLow',\n  major: 'severityMedium',\n  critical: 'severityHigh',\n  blocker: 'severityCritical',\n  unknown: 'severityUnknown',\n};\n\nexport const SEVERITIES = {\n  info: {\n    class: SEVERITY_CLASSES.info,\n    name: SEVERITY_ICONS.info,\n  },\n  minor: {\n    class: SEVERITY_CLASSES.minor,\n    name: SEVERITY_ICONS.minor,\n  },\n  major: {\n    class: SEVERITY_CLASSES.major,\n    name: SEVERITY_ICONS.major,\n  },\n  critical: {\n    class: SEVERITY_CLASSES.critical,\n    name: SEVERITY_ICONS.critical,\n  },\n  blocker: {\n    class: SEVERITY_CLASSES.blocker,\n    name: SEVERITY_ICONS.blocker,\n  },\n  unknown: {\n    class: SEVERITY_CLASSES.unknown,\n    name: SEVERITY_ICONS.unknown,\n  },\n};\n","import GlBaseAnimatedIcon from './base_animated_icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlAnimatedChevronRightDownIcon',\n  extends: GlBaseAnimatedIcon\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{class:_vm.iconStateClass,attrs:{\"aria-label\":_vm.ariaLabel,\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{staticClass:\"gl-animated-chevron-right-down-arrow\",attrs:{\"d\":\"M6.75 4.75L10 8L6.75 11.25\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import uniqueId from 'lodash/uniqueId';\nimport { BCollapse } from '../../../vendor/bootstrap-vue/src/components/collapse/collapse';\nimport GlAnimatedChevronRightDownIcon from '../animated_icon/animated_chevron_right_down_icon';\nimport { GlCollapseToggleDirective } from '../../../directives/collapse_toggle';\nimport GlButton from '../button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlAccordionItem',\n  components: {\n    BCollapse,\n    GlButton,\n    GlAnimatedChevronRightDownIcon\n  },\n  directives: {\n    GlCollapseToggle: GlCollapseToggleDirective\n  },\n  inject: ['accordionSetId', 'defaultHeaderLevel'],\n  inheritAttrs: false,\n  model: {\n    prop: 'visible',\n    event: 'input'\n  },\n  props: {\n    /**\n     * Used to set the title of accordion link\n     */\n    title: {\n      type: String,\n      required: true\n    },\n    /**\n     * Used to set the title of accordion link when the content is visible\n     * */\n    titleVisible: {\n      type: String,\n      default: null,\n      required: false\n    },\n    /**\n     * When set, it will ensure the accordion item is initially visible\n     */\n    visible: {\n      type: Boolean,\n      default: false,\n      required: false\n    },\n    /**\n     * The header tag used in the accordion (h1/h2/h3/h4/h5/h6). This overrides the value provided by GlAccordion. For accessibility this should be set to an appropriate value in the context where the accordion is used.,\n     */\n    headerLevel: {\n      type: Number,\n      required: false,\n      default: null,\n      validator(value) {\n        return value > 0 && value <= 6;\n      }\n    },\n    /**\n     * Additional CSS class(es) to be applied to the header\n     */\n    headerClass: {\n      type: [String, Object, Array],\n      required: false,\n      default: ''\n    }\n  },\n  data() {\n    return {\n      accordionItemId: uniqueId('accordion-item-'),\n      isVisible: this.visible\n    };\n  },\n  computed: {\n    headerComponent() {\n      const level = this.headerLevel || this.defaultHeaderLevel();\n      return `h${level}`;\n    },\n    accordion() {\n      return this.accordionSetId() || undefined;\n    },\n    buttonTitle() {\n      return this.isVisible && this.titleVisible ? this.titleVisible : this.title;\n    }\n  },\n  watch: {\n    isVisible: {\n      immediate: true,\n      handler(isVisible) {\n        this.$emit('input', isVisible);\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-accordion-item\"},[_c(_vm.headerComponent,{tag:\"component\",staticClass:\"gl-accordion-item-header\",class:_vm.headerClass},[_c('gl-button',{directives:[{name:\"gl-collapse-toggle\",rawName:\"v-gl-collapse-toggle\",value:(_vm.accordionItemId),expression:\"accordionItemId\"}],attrs:{\"variant\":\"link\",\"button-text-classes\":\"gl-flex\"}},[_c('gl-animated-chevron-right-down-icon',{attrs:{\"is-on\":_vm.isVisible}}),_vm._v(\"\\n      \"+_vm._s(_vm.buttonTitle)+\"\\n    \")],1)],1),_vm._v(\" \"),_c('b-collapse',{staticClass:\"gl-mt-3 gl-text-base\",attrs:{\"id\":_vm.accordionItemId,\"visible\":_vm.isVisible,\"accordion\":_vm.accordion,\"data-testid\":(\"accordion-item-collapse-\" + _vm.accordionItemId)},model:{value:(_vm.isVisible),callback:function ($$v) {_vm.isVisible=$$v;},expression:\"isVisible\"}},[_vm._t(\"default\")],2)],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var before = require('./before');\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n  return before(2, func);\n}\n\nmodule.exports = once;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityConfirm\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityConfirm\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LastStateTransition\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":350}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/last_state_transition.fragment.graphql\\\"\\n\\nmutation vulnerabilityConfirm($id: VulnerabilityID!, $comment: String) {\\n  vulnerabilityConfirm(input: { id: $id, comment: $comment }) {\\n    errors\\n    vulnerability {\\n      id\\n      state\\n      confirmedAt\\n      confirmedBy {\\n        id\\n      }\\n      ...LastStateTransition\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/last_state_transition.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"vulnerabilityConfirm\"] = oneQuery(doc, \"vulnerabilityConfirm\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSast\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ConfigureSastInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSast\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"successPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":120}};\n    doc.loc.source = {\"body\":\"mutation configureSast($input: ConfigureSastInput!) {\\n  configureSast(input: $input) {\\n    successPath\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"configureSast\"] = oneQuery(doc, \"configureSast\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineJobs\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"20\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artifacts\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"downloadPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileType\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"allowFailure\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduledAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"manualJob\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"triggered\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdByTag\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooltip\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"buttonTitle\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"method\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"refPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tags\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shortSha\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"commitPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stage\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"duration\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"finishedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"coverage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"retryable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"playable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cancelable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"active\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stuck\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"readBuild\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"readJobArtifacts\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updateBuild\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":1474}};\n    doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/page_info.fragment.graphql\\\"\\n\\nquery getPipelineJobs($fullPath: ID!, $iid: ID!, $after: String) {\\n  project(fullPath: $fullPath) {\\n    id\\n    pipeline(iid: $iid) {\\n      id\\n      jobs(after: $after, first: 20) {\\n        pageInfo {\\n          ...PageInfo\\n        }\\n        nodes {\\n          artifacts {\\n            # eslint-disable-next-line @graphql-eslint/require-id-when-available\\n            nodes {\\n              downloadPath\\n              fileType\\n            }\\n          }\\n          allowFailure\\n          status\\n          scheduledAt\\n          manualJob\\n          triggered\\n          createdByTag\\n          detailedStatus {\\n            id\\n            detailsPath\\n            group\\n            icon\\n            label\\n            text\\n            tooltip\\n            action {\\n              id\\n              buttonTitle\\n              icon\\n              method\\n              path\\n              title\\n              confirmationMessage\\n            }\\n          }\\n          id\\n          refName\\n          refPath\\n          tags\\n          shortSha\\n          commitPath\\n          stage {\\n            id\\n            name\\n          }\\n          name\\n          duration\\n          finishedAt\\n          coverage\\n          retryable\\n          playable\\n          cancelable\\n          active\\n          stuck\\n          userPermissions {\\n            readBuild\\n            readJobArtifacts\\n            updateBuild\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/page_info.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getPipelineJobs\"] = oneQuery(doc, \"getPipelineJobs\");\n        \n","\n /*! \n  * portal-vue © Thorsten Lünborg, 2019 \n  * \n  * Version: 2.1.7\n  * \n  * LICENCE: MIT \n  * \n  * https://github.com/linusborg/portal-vue\n  * \n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Vue = _interopDefault(require('vue'));\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n  if (Array.isArray(item) || _typeof(item) === 'object') {\n    return Object.freeze(item);\n  }\n\n  return item;\n}\nfunction combinePassengers(transports) {\n  var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return transports.reduce(function (passengers, transport) {\n    var temp = transport.passengers[0];\n    var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n    return passengers.concat(newPassengers);\n  }, []);\n}\nfunction stableSort(array, compareFn) {\n  return array.map(function (v, idx) {\n    return [idx, v];\n  }).sort(function (a, b) {\n    return compareFn(a[1], b[1]) || a[0] - b[0];\n  }).map(function (c) {\n    return c[1];\n  });\n}\nfunction pick(obj, keys) {\n  return keys.reduce(function (acc, key) {\n    if (obj.hasOwnProperty(key)) {\n      acc[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n  data: function data() {\n    return {\n      transports: transports,\n      targets: targets,\n      sources: sources,\n      trackInstances: inBrowser\n    };\n  },\n  methods: {\n    open: function open(transport) {\n      if (!inBrowser) return;\n      var to = transport.to,\n          from = transport.from,\n          passengers = transport.passengers,\n          _transport$order = transport.order,\n          order = _transport$order === void 0 ? Infinity : _transport$order;\n      if (!to || !from || !passengers) return;\n      var newTransport = {\n        to: to,\n        from: from,\n        passengers: freeze(passengers),\n        order: order\n      };\n      var keys = Object.keys(this.transports);\n\n      if (keys.indexOf(to) === -1) {\n        Vue.set(this.transports, to, []);\n      }\n\n      var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n      var newTransports = this.transports[to].slice(0);\n\n      if (currentIndex === -1) {\n        newTransports.push(newTransport);\n      } else {\n        newTransports[currentIndex] = newTransport;\n      }\n\n      this.transports[to] = stableSort(newTransports, function (a, b) {\n        return a.order - b.order;\n      });\n    },\n    close: function close(transport) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var to = transport.to,\n          from = transport.from;\n      if (!to || !from && force === false) return;\n\n      if (!this.transports[to]) {\n        return;\n      }\n\n      if (force) {\n        this.transports[to] = [];\n      } else {\n        var index = this.$_getTransportIndex(transport);\n\n        if (index >= 0) {\n          // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n          var newTransports = this.transports[to].slice(0);\n          newTransports.splice(index, 1);\n          this.transports[to] = newTransports;\n        }\n      }\n    },\n    registerTarget: function registerTarget(target, vm, force) {\n      if (!inBrowser) return;\n\n      if (this.trackInstances && !force && this.targets[target]) {\n        console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n      }\n\n      this.$set(this.targets, target, Object.freeze([vm]));\n    },\n    unregisterTarget: function unregisterTarget(target) {\n      this.$delete(this.targets, target);\n    },\n    registerSource: function registerSource(source, vm, force) {\n      if (!inBrowser) return;\n\n      if (this.trackInstances && !force && this.sources[source]) {\n        console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n      }\n\n      this.$set(this.sources, source, Object.freeze([vm]));\n    },\n    unregisterSource: function unregisterSource(source) {\n      this.$delete(this.sources, source);\n    },\n    hasTarget: function hasTarget(to) {\n      return !!(this.targets[to] && this.targets[to][0]);\n    },\n    hasSource: function hasSource(to) {\n      return !!(this.sources[to] && this.sources[to][0]);\n    },\n    hasContentFor: function hasContentFor(to) {\n      return !!this.transports[to] && !!this.transports[to].length;\n    },\n    // Internal\n    $_getTransportIndex: function $_getTransportIndex(_ref) {\n      var to = _ref.to,\n          from = _ref.from;\n\n      for (var i in this.transports[to]) {\n        if (this.transports[to][i].from === from) {\n          return +i;\n        }\n      }\n\n      return -1;\n    }\n  }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n  name: 'portal',\n  props: {\n    disabled: {\n      type: Boolean\n    },\n    name: {\n      type: String,\n      default: function _default() {\n        return String(_id++);\n      }\n    },\n    order: {\n      type: Number,\n      default: 0\n    },\n    slim: {\n      type: Boolean\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'DIV'\n    },\n    to: {\n      type: String,\n      default: function _default() {\n        return String(Math.round(Math.random() * 10000000));\n      }\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      wormhole.registerSource(_this.name, _this);\n    });\n  },\n  mounted: function mounted() {\n    if (!this.disabled) {\n      this.sendUpdate();\n    }\n  },\n  updated: function updated() {\n    if (this.disabled) {\n      this.clear();\n    } else {\n      this.sendUpdate();\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    wormhole.unregisterSource(this.name);\n    this.clear();\n  },\n  watch: {\n    to: function to(newValue, oldValue) {\n      oldValue && oldValue !== newValue && this.clear(oldValue);\n      this.sendUpdate();\n    }\n  },\n  methods: {\n    clear: function clear(target) {\n      var closer = {\n        from: this.name,\n        to: target || this.to\n      };\n      wormhole.close(closer);\n    },\n    normalizeSlots: function normalizeSlots() {\n      return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n    },\n    normalizeOwnChildren: function normalizeOwnChildren(children) {\n      return typeof children === 'function' ? children(this.slotProps) : children;\n    },\n    sendUpdate: function sendUpdate() {\n      var slotContent = this.normalizeSlots();\n\n      if (slotContent) {\n        var transport = {\n          from: this.name,\n          to: this.to,\n          passengers: _toConsumableArray(slotContent),\n          order: this.order\n        };\n        wormhole.open(transport);\n      } else {\n        this.clear();\n      }\n    }\n  },\n  render: function render(h) {\n    var children = this.$slots.default || this.$scopedSlots.default || [];\n    var Tag = this.tag;\n\n    if (children && this.disabled) {\n      return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n    } else {\n      return this.slim ? h() : h(Tag, {\n        class: {\n          'v-portal': true\n        },\n        style: {\n          display: 'none'\n        },\n        key: 'v-portal-placeholder'\n      });\n    }\n  }\n});\n\nvar PortalTarget = Vue.extend({\n  name: 'portalTarget',\n  props: {\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    name: {\n      type: String,\n      required: true\n    },\n    slim: {\n      type: Boolean,\n      default: false\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: [String, Object, Function]\n    }\n  },\n  data: function data() {\n    return {\n      transports: wormhole.transports,\n      firstRender: true\n    };\n  },\n  created: function created() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      wormhole.registerTarget(_this.name, _this);\n    });\n  },\n  watch: {\n    ownTransports: function ownTransports() {\n      this.$emit('change', this.children().length > 0);\n    },\n    name: function name(newVal, oldVal) {\n      /**\r\n       * TODO\r\n       * This should warn as well ...\r\n       */\n      wormhole.unregisterTarget(oldVal);\n      wormhole.registerTarget(newVal, this);\n    }\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    if (this.transition) {\n      this.$nextTick(function () {\n        // only when we have a transition, because it causes a re-render\n        _this2.firstRender = false;\n      });\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    wormhole.unregisterTarget(this.name);\n  },\n  computed: {\n    ownTransports: function ownTransports() {\n      var transports = this.transports[this.name] || [];\n\n      if (this.multiple) {\n        return transports;\n      }\n\n      return transports.length === 0 ? [] : [transports[transports.length - 1]];\n    },\n    passengers: function passengers() {\n      return combinePassengers(this.ownTransports, this.slotProps);\n    }\n  },\n  methods: {\n    // can't be a computed prop because it has to \"react\" to $slot changes.\n    children: function children() {\n      return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n    },\n    // can't be a computed prop because it has to \"react\" to this.children().\n    noWrapper: function noWrapper() {\n      var noWrapper = this.slim && !this.transition;\n\n      if (noWrapper && this.children().length > 1) {\n        console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n      }\n\n      return noWrapper;\n    }\n  },\n  render: function render(h) {\n    var noWrapper = this.noWrapper();\n    var children = this.children();\n    var Tag = this.transition || this.tag;\n    return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n      props: {\n        // if we have a transition component, pass the tag if it exists\n        tag: this.transition && this.tag ? this.tag : undefined\n      },\n      class: {\n        'vue-portal-target': true\n      }\n    }, children);\n  }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nvar MountingPortal = Vue.extend({\n  name: 'MountingPortal',\n  inheritAttrs: false,\n  props: {\n    append: {\n      type: [Boolean, String]\n    },\n    bail: {\n      type: Boolean\n    },\n    mountTo: {\n      type: String,\n      required: true\n    },\n    // Portal\n    disabled: {\n      type: Boolean\n    },\n    // name for the portal\n    name: {\n      type: String,\n      default: function _default() {\n        return 'mounted_' + String(_id$1++);\n      }\n    },\n    order: {\n      type: Number,\n      default: 0\n    },\n    slim: {\n      type: Boolean\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'DIV'\n    },\n    // name for the target\n    to: {\n      type: String,\n      default: function _default() {\n        return String(Math.round(Math.random() * 10000000));\n      }\n    },\n    // Target\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    targetSlim: {\n      type: Boolean\n    },\n    targetSlotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    targetTag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: [String, Object, Function]\n    }\n  },\n  created: function created() {\n    if (typeof document === 'undefined') return;\n    var el = document.querySelector(this.mountTo);\n\n    if (!el) {\n      console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n      return;\n    }\n\n    var props = this.$props; // Target already exists\n\n    if (wormhole.targets[props.name]) {\n      if (props.bail) {\n        console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n        Aborting because 'bail: true' is set\"));\n      } else {\n        this.portalTarget = wormhole.targets[props.name];\n      }\n\n      return;\n    }\n\n    var append = props.append;\n\n    if (append) {\n      var type = typeof append === 'string' ? append : 'DIV';\n      var mountEl = document.createElement(type);\n      el.appendChild(mountEl);\n      el = mountEl;\n    } // get props for target from $props\n    // we have to rename a few of them\n\n\n    var _props = pick(this.$props, targetProps);\n\n    _props.slim = this.targetSlim;\n    _props.tag = this.targetTag;\n    _props.slotProps = this.targetSlotProps;\n    _props.name = this.to;\n    this.portalTarget = new PortalTarget({\n      el: el,\n      parent: this.$parent || this,\n      propsData: _props\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    var target = this.portalTarget;\n\n    if (this.append) {\n      var el = target.$el;\n      el.parentNode.removeChild(el);\n    }\n\n    target.$destroy();\n  },\n  render: function render(h) {\n    if (!this.portalTarget) {\n      console.warn(\"[portal-vue] Target wasn't mounted\");\n      return h();\n    } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n\n\n    if (!this.$scopedSlots.manual) {\n      var props = pick(this.$props, portalProps);\n      return h(Portal, {\n        props: props,\n        attrs: this.$attrs,\n        on: this.$listeners,\n        scopedSlots: this.$scopedSlots\n      }, this.$slots.default);\n    } // else, we render the scoped slot\n\n\n    var content = this.$scopedSlots.manual({\n      to: this.to\n    }); // if user used <template> for the scoped slot\n    // content will be an array\n\n    if (Array.isArray(content)) {\n      content = content[0];\n    }\n\n    if (!content) return h();\n    return content;\n  }\n});\n\nfunction install(Vue$$1) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  Vue$$1.component(options.portalName || 'Portal', Portal);\n  Vue$$1.component(options.portalTargetName || 'PortalTarget', PortalTarget);\n  Vue$$1.component(options.MountingPortalName || 'MountingPortal', MountingPortal);\n}\n\nvar index = {\n  install: install\n};\n\nexports.default = index;\nexports.Portal = Portal;\nexports.PortalTarget = PortalTarget;\nexports.MountingPortal = MountingPortal;\nexports.Wormhole = wormhole;\n//# sourceMappingURL=portal-vue.common.js.map\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","import { extend, mergeData } from '../../vue';\nimport { NAME_NAV } from '../../constants/components';\nimport { PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Helper methods ---\n\nconst computeJustifyContent = value => {\n  value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n  return `justify-content-${value}`;\n};\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  align: makeProp(PROP_TYPE_STRING),\n  // Set to `true` if placing in a card header\n  cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  fill: makeProp(PROP_TYPE_BOOLEAN, false),\n  justified: makeProp(PROP_TYPE_BOOLEAN, false),\n  pills: makeProp(PROP_TYPE_BOOLEAN, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'ul')\n}, NAME_NAV);\n\n// --- Main component ---\n\n// @vue/component\nconst BNav = /*#__PURE__*/extend({\n  name: NAME_NAV,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    const {\n      tabs,\n      pills,\n      align,\n      cardHeader\n    } = props;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'nav',\n      class: {\n        'nav-tabs': tabs,\n        'nav-pills': pills && !tabs,\n        'card-header-tabs': cardHeader && tabs,\n        'card-header-pills': cardHeader && pills && !tabs,\n        'nav-fill': props.fill,\n        'nav-justified': props.justified,\n        [computeJustifyContent(align)]: align,\n        small: props.small\n      }\n    }), children);\n  }\n});\n\nexport { BNav, props };\n","import { extend, COMPONENT_UID_KEY, REF_FOR_KEY } from '../../vue';\nimport { NAME_TAB_BUTTON_HELPER, NAME_TABS } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CLICK, EVENT_NAME_FIRST, EVENT_NAME_PREV, EVENT_NAME_LAST, EVENT_NAME_NEXT, EVENT_NAME_CHANGED, EVENT_NAME_ACTIVATE_TAB } from '../../constants/events';\nimport { CODE_SPACE, CODE_UP, CODE_LEFT, CODE_HOME, CODE_DOWN, CODE_RIGHT, CODE_END } from '../../constants/key-codes';\nimport { PROP_TYPE_NUMBER, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE, SLOT_NAME_TABS_START, SLOT_NAME_TABS_END, SLOT_NAME_EMPTY } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, selectAll, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { stableSort } from '../../utils/stable-sort';\nimport { props as props$2, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink } from '../link/link';\nimport { props as props$1, BNav } from '../nav/nav';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('value', {\n  type: PROP_TYPE_NUMBER\n});\n\n// --- Helper methods ---\n\n// Filter function to filter out disabled tabs\nconst notDisabled = tab => !tab.disabled;\n\n// --- Helper components ---\n\n// @vue/component\nconst BVTabButton = /*#__PURE__*/extend({\n  name: NAME_TAB_BUTTON_HELPER,\n  inject: {\n    getBvTabs: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  props: {\n    controls: makeProp(PROP_TYPE_STRING),\n    id: makeProp(PROP_TYPE_STRING),\n    noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n    posInSet: makeProp(PROP_TYPE_NUMBER),\n    setSize: makeProp(PROP_TYPE_NUMBER),\n    // Reference to the child <b-tab> instance\n    tab: makeProp(),\n    tabIndex: makeProp(PROP_TYPE_NUMBER)\n  },\n  computed: {\n    bvTabs() {\n      return this.getBvTabs();\n    }\n  },\n  methods: {\n    focus() {\n      attemptFocus(this.$refs.link);\n    },\n    handleEvent(event) {\n      /* istanbul ignore next */\n      if (this.tab.disabled) {\n        return;\n      }\n      const {\n        type,\n        keyCode,\n        shiftKey\n      } = event;\n      if (type === 'click') {\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n        // For ARIA tabs the SPACE key will also trigger a click/select\n        // Even with keyboard navigation disabled, SPACE should \"click\" the button\n        // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && !this.noKeyNav) {\n        // For keyboard navigation\n        if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n          if (shiftKey || keyCode === CODE_HOME) {\n            this.$emit(EVENT_NAME_FIRST, event);\n          } else {\n            this.$emit(EVENT_NAME_PREV, event);\n          }\n        } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n          if (shiftKey || keyCode === CODE_END) {\n            this.$emit(EVENT_NAME_LAST, event);\n          } else {\n            this.$emit(EVENT_NAME_NEXT, event);\n          }\n        }\n      }\n    }\n  },\n  render(h) {\n    const {\n      id,\n      tabIndex,\n      setSize,\n      posInSet,\n      controls,\n      handleEvent\n    } = this;\n    const {\n      title,\n      localActive,\n      disabled,\n      titleItemClass,\n      titleLinkClass,\n      titleLinkAttributes\n    } = this.tab;\n    const $link = h(BLink, {\n      staticClass: 'nav-link',\n      class: [{\n        active: localActive && !disabled,\n        disabled\n      }, titleLinkClass,\n      // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n      localActive ? this.bvTabs.activeNavItemClass : null],\n      props: {\n        disabled\n      },\n      attrs: {\n        ...titleLinkAttributes,\n        id,\n        role: 'tab',\n        // Roving tab index when keynav enabled\n        tabindex: tabIndex,\n        'aria-selected': localActive && !disabled ? 'true' : 'false',\n        'aria-setsize': setSize,\n        'aria-posinset': posInSet,\n        'aria-controls': controls\n      },\n      on: {\n        click: handleEvent,\n        keydown: handleEvent\n      },\n      ref: 'link'\n    }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n    return h('li', {\n      staticClass: 'nav-item',\n      class: [titleItemClass],\n      attrs: {\n        role: 'presentation'\n      }\n    }, [$link]);\n  }\n});\n\n// --- Props ---\n\nconst navProps = omit(props$1, ['tabs', 'cardHeader']);\nconst props = makePropsConfigurable(sortKeys({\n  ...props$2,\n  ...modelProps,\n  ...navProps,\n  // Only applied to the currently active `<b-nav-item>`\n  activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Only applied to the currently active `<b-tab>`\n  // This prop is sniffed by the `<b-tab>` child\n  activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Synonym for 'bottom'\n  end: makeProp(PROP_TYPE_BOOLEAN, false),\n  // This prop is sniffed by the `<b-tab>` child\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n  noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}), NAME_TABS);\n\n// --- Main component ---\n\n// @vue/component\nconst BTabs = /*#__PURE__*/extend({\n  name: NAME_TABS,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTabs: () => this\n    };\n  },\n  props,\n  data() {\n    return {\n      // Index of current tab\n      currentTab: toInteger(this[MODEL_PROP_NAME], -1),\n      // Array of direct child `<b-tab>` instances, in DOM order\n      tabs: [],\n      // Array of child instances registered (for triggering reactive updates)\n      registeredTabs: []\n    };\n  },\n  computed: {\n    fade() {\n      // This computed prop is sniffed by the tab child\n      return !this.noFade;\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME](newValue, oldValue) {\n      if (newValue !== oldValue) {\n        newValue = toInteger(newValue, -1);\n        oldValue = toInteger(oldValue, 0);\n        const $tab = this.tabs[newValue];\n        if ($tab && !$tab.disabled) {\n          this.activateTab($tab);\n        } else {\n          // Try next or prev tabs\n          if (newValue < oldValue) {\n            this.previousTab();\n          } else {\n            this.nextTab();\n          }\n        }\n      }\n    },\n    currentTab(newValue) {\n      let index = -1;\n\n      // Ensure only one tab is active at most\n      this.tabs.forEach(($tab, i) => {\n        if (i === newValue && !$tab.disabled) {\n          $tab.localActive = true;\n          index = i;\n        } else {\n          $tab.localActive = false;\n        }\n      });\n\n      // Update the v-model\n      this.$emit(MODEL_EVENT_NAME, index);\n    },\n    // If tabs added, removed, or re-ordered, we emit a `changed` event\n    tabs(newValue, oldValue) {\n      // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n      // if no explicit ID is provided, causing duplicate emits\n      if (!looseEqual(newValue.map($tab => $tab[COMPONENT_UID_KEY]), oldValue.map($tab => $tab[COMPONENT_UID_KEY]))) {\n        // In a `$nextTick()` to ensure `currentTab` has been set first\n        this.$nextTick(() => {\n          // We emit shallow copies of the new and old arrays of tabs,\n          // to prevent users from potentially mutating the internal arrays\n          this.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n        });\n      }\n    },\n    // Each `<b-tab>` will register/unregister itself\n    // We use this to detect when tabs are added/removed\n    // to trigger the update of the tabs\n    registeredTabs() {\n      this.updateTabs();\n    }\n  },\n  created() {\n    // Create private non-reactive props\n    this.$_observer = null;\n  },\n  mounted() {\n    this.setObserver(true);\n  },\n  beforeDestroy() {\n    this.setObserver(false);\n    // Ensure no references to child instances exist\n    this.tabs = [];\n  },\n  methods: {\n    registerTab($tab) {\n      if (!arrayIncludes(this.registeredTabs, $tab)) {\n        this.registeredTabs.push($tab);\n      }\n    },\n    unregisterTab($tab) {\n      this.registeredTabs = this.registeredTabs.slice().filter($t => $t !== $tab);\n    },\n    // DOM observer is needed to detect changes in order of tabs\n    setObserver() {\n      let on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      this.$_observer && this.$_observer.disconnect();\n      this.$_observer = null;\n      if (on) {\n        /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n        const handler = () => {\n          this.$nextTick(() => {\n            requestAF(() => {\n              this.updateTabs();\n            });\n          });\n        };\n\n        // Watch for changes to `<b-tab>` sub components\n        this.$_observer = observeDom(this.$refs.content, handler, {\n          childList: true,\n          subtree: false,\n          attributes: true,\n          attributeFilter: ['id']\n        });\n      }\n    },\n    getTabs() {\n      const $tabs = this.registeredTabs;\n      // Dropped intentionally\n      // .filter(\n      //   $tab => $tab.$children.filter($t => $t && $t._isTab).length === 0\n      // )\n\n      // DOM Order of Tabs\n      let order = [];\n      /* istanbul ignore next: too difficult to test */\n      if (IS_BROWSER && $tabs.length > 0) {\n        // We rely on the DOM when mounted to get the \"true\" order of the `<b-tab>` children\n        // `querySelectorAll()` always returns elements in document order, regardless of\n        // order specified in the selector\n        const selector = $tabs.map($tab => `#${$tab.safeId()}`).join(', ');\n        order = selectAll(selector, this.$el).map($el => $el.id).filter(identity);\n      }\n\n      // Stable sort keeps the original order if not found in the `order` array,\n      // which will be an empty array before mount\n      return stableSort($tabs, (a, b) => order.indexOf(a.safeId()) - order.indexOf(b.safeId()));\n    },\n    updateTabs() {\n      const $tabs = this.getTabs();\n\n      // Find last active non-disabled tab in current tabs\n      // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n      let tabIndex = $tabs.indexOf($tabs.slice().reverse().find($tab => $tab.localActive && !$tab.disabled));\n\n      // Else try setting to `currentTab`\n      if (tabIndex < 0) {\n        const {\n          currentTab\n        } = this;\n        if (currentTab >= $tabs.length) {\n          // Handle last tab being removed, so find the last non-disabled tab\n          tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n        } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n          // Current tab is not disabled\n          tabIndex = currentTab;\n        }\n      }\n\n      // Else find first non-disabled tab in current tabs\n      if (tabIndex < 0) {\n        tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n      }\n\n      // Ensure only one tab is active at a time\n      $tabs.forEach(($tab, index) => {\n        $tab.localActive = index === tabIndex;\n      });\n      this.tabs = $tabs;\n      this.currentTab = tabIndex;\n    },\n    // Find a button that controls a tab, given the tab reference\n    // Returns the button vm instance\n    getButtonForTab($tab) {\n      return (this.$refs.buttons || []).find($btn => $btn.tab === $tab);\n    },\n    // Force a button to re-render its content, given a `<b-tab>` instance\n    // Called by `<b-tab>` on `update()`\n    updateButton($tab) {\n      const $button = this.getButtonForTab($tab);\n      if ($button && $button.$forceUpdate) {\n        $button.$forceUpdate();\n      }\n    },\n    // Activate a tab given a `<b-tab>` instance\n    // Also accessed by `<b-tab>`\n    activateTab($tab) {\n      const {\n        currentTab,\n        tabs: $tabs\n      } = this;\n      let result = false;\n      if ($tab) {\n        const index = $tabs.indexOf($tab);\n        if (index !== currentTab && index > -1 && !$tab.disabled) {\n          const tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n            cancelable: true,\n            vueTarget: this,\n            componentId: this.safeId()\n          });\n          this.$emit(tabEvent.type, index, currentTab, tabEvent);\n          if (!tabEvent.defaultPrevented) {\n            this.currentTab = index;\n            result = true;\n          }\n        }\n      }\n\n      // Couldn't set tab, so ensure v-model is up to date\n      /* istanbul ignore next: should rarely happen */\n      if (!result && this[MODEL_PROP_NAME] !== currentTab) {\n        this.$emit(MODEL_EVENT_NAME, currentTab);\n      }\n      return result;\n    },\n    // Deactivate a tab given a `<b-tab>` instance\n    // Accessed by `<b-tab>`\n    deactivateTab($tab) {\n      if ($tab) {\n        // Find first non-disabled tab that isn't the one being deactivated\n        // If no tabs are available, then don't deactivate current tab\n        return this.activateTab(this.tabs.filter($t => $t !== $tab).find(notDisabled));\n      }\n      /* istanbul ignore next: should never/rarely happen */\n      return false;\n    },\n    // Focus a tab button given its `<b-tab>` instance\n    focusButton($tab) {\n      // Wrap in `$nextTick()` to ensure DOM has completed rendering\n      this.$nextTick(() => {\n        attemptFocus(this.getButtonForTab($tab));\n      });\n    },\n    // Emit a click event on a specified `<b-tab>` component instance\n    emitTabClick(tab, event) {\n      if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n        tab.$emit(EVENT_NAME_CLICK, event);\n      }\n    },\n    // Click handler\n    clickTab($tab, event) {\n      this.activateTab($tab);\n      this.emitTabClick($tab, event);\n    },\n    // Move to first non-disabled tab\n    firstTab(focus) {\n      const $tab = this.tabs.find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to previous non-disabled tab\n    previousTab(focus) {\n      const currentIndex = mathMax(this.currentTab, 0);\n      const $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to next non-disabled tab\n    nextTab(focus) {\n      const currentIndex = mathMax(this.currentTab, -1);\n      const $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to last non-disabled tab\n    lastTab(focus) {\n      const $tab = this.tabs.slice().reverse().find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    }\n  },\n  render(h) {\n    const {\n      align,\n      end,\n      fill,\n      firstTab,\n      justified,\n      lastTab,\n      nextTab,\n      noKeyNav,\n      noNavStyle,\n      pills,\n      previousTab,\n      small,\n      tabs: $tabs\n    } = this;\n\n    // Currently active tab\n    const $activeTab = $tabs.find($tab => $tab.localActive && !$tab.disabled);\n\n    // Tab button to allow focusing when no active tab found (keynav only)\n    const $fallbackTab = $tabs.find($tab => !$tab.disabled);\n\n    // For each `<b-tab>` found create the tab buttons\n    const $buttons = $tabs.map(($tab, index) => {\n      const {\n        safeId\n      } = $tab;\n\n      // Ensure at least one tab button is focusable when keynav enabled (if possible)\n      let tabIndex = null;\n      if (!noKeyNav) {\n        // Buttons are not in tab index unless active, or a fallback tab\n        tabIndex = -1;\n        if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n          // Place tab button in tab sequence\n          tabIndex = null;\n        }\n      }\n      return h(BVTabButton, {\n        props: {\n          controls: safeId ? safeId() : null,\n          id: $tab.controlledBy || (safeId ? safeId(`_BV_tab_button_`) : null),\n          noKeyNav,\n          posInSet: index + 1,\n          setSize: $tabs.length,\n          tab: $tab,\n          tabIndex\n        },\n        on: {\n          [EVENT_NAME_CLICK]: event => {\n            this.clickTab($tab, event);\n          },\n          [EVENT_NAME_FIRST]: firstTab,\n          [EVENT_NAME_PREV]: previousTab,\n          [EVENT_NAME_NEXT]: nextTab,\n          [EVENT_NAME_LAST]: lastTab\n        },\n        key: $tab[COMPONENT_UID_KEY] || index,\n        ref: 'buttons',\n        // Needed to make `this.$refs.buttons` an array\n        [REF_FOR_KEY]: true\n      });\n    });\n    let $nav = h(BNav, {\n      class: this.navClass,\n      attrs: {\n        role: 'tablist',\n        id: this.safeId('_BV_tab_controls_')\n      },\n      props: {\n        fill,\n        justified,\n        align,\n        tabs: !noNavStyle && !pills,\n        pills: !noNavStyle && pills,\n        small\n      },\n      ref: 'nav'\n    }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n    $nav = h('div', {\n      class: this.navWrapperClass,\n      key: 'bv-tabs-nav'\n    }, [$nav]);\n    const $children = this.normalizeSlot() || [];\n    let $empty = h();\n    if ($children.length === 0) {\n      $empty = h('div', {\n        class: ['tab-pane', 'active'],\n        key: 'bv-empty-tab'\n      }, this.normalizeSlot(SLOT_NAME_EMPTY));\n    }\n    const $content = h('div', {\n      staticClass: 'tab-content',\n      class: this.contentClass,\n      attrs: {\n        id: this.safeId('_BV_tab_container_')\n      },\n      key: 'bv-content',\n      ref: 'content'\n    }, [$children, $empty]);\n\n    // Render final output\n    return h(this.tag, {\n      staticClass: 'tabs',\n      attrs: {\n        id: this.safeId()\n      }\n    }, [end ? $content : h(), $nav, end ? h() : $content]);\n  }\n});\n\nexport { BTabs, props };\n","import { BTabs } from '../../../../vendor/bootstrap-vue/src/components/tabs/tabs';\nimport { tabsButtonDefaults } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst validatorHelper = obj => Object.keys(obj).every(val => val === 'text' || val === 'attributes');\nvar script = {\n  name: 'GlTabs',\n  components: {\n    BTabs,\n    GlButton\n  },\n  inheritAttrs: false,\n  props: {\n    actionPrimary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    actionSecondary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    actionTertiary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    contentClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    navClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    justified: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Sync active tab with query string parameters. Allows for deep linking into specific tabs.\n     */\n    syncActiveTabWithQueryParams: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Name to use for query string parameter.\n     */\n    queryParamName: {\n      type: String,\n      required: false,\n      default: 'tab'\n    },\n    value: {\n      type: Number,\n      required: false,\n      default: 0\n    }\n  },\n  data() {\n    return {\n      activeTabIndex: 0\n    };\n  },\n  computed: {\n    hasActions() {\n      return [this.actionPrimary, this.actionSecondary, this.actionTertiary].some(Boolean);\n    },\n    listeners() {\n      return {\n        ...this.$listeners,\n        input: this.handleInput\n      };\n    }\n  },\n  watch: {\n    value: {\n      handler(newValue) {\n        if (this.activeTabIndex !== newValue) {\n          this.activeTabIndex = newValue;\n        }\n      },\n      immediate: true\n    }\n  },\n  mounted() {\n    if (this.syncActiveTabWithQueryParams) {\n      this.syncActiveTabFromQueryParams();\n      window.addEventListener('popstate', this.syncActiveTabFromQueryParams);\n    }\n\n    // Because we are manually binding `value` attribute to `b-tabs` the `input`\n    // event is no longer automatically fired when the component is mounted.\n    // To maintain parity with original `b-tabs` functionality\n    // we manually fire the `input` event when the component is mounted.\n    this.$emit('input', this.activeTabIndex);\n  },\n  destroyed() {\n    window.removeEventListener('popstate', this.syncActiveTabFromQueryParams);\n  },\n  methods: {\n    buttonBinding(prop, name) {\n      if (!prop.attributes) {\n        return tabsButtonDefaults[name];\n      }\n      return prop.attributes;\n    },\n    primary() {\n      this.$emit('primary');\n    },\n    secondary() {\n      this.$emit('secondary');\n    },\n    tertiary() {\n      this.$emit('tertiary');\n    },\n    /**\n     * When the query parameter is updated, update the active tab to match.\n     */\n    async syncActiveTabFromQueryParams() {\n      await this.$nextTick();\n      const queryParamValue = this.getQueryParamValue();\n      const tabIndexToActivate = this.getTabs().findIndex((tab, tabIndex) => this.getTabQueryParamValue(tabIndex) === queryParamValue);\n      this.activeTabIndex = tabIndexToActivate !== -1 ? tabIndexToActivate : 0;\n    },\n    /**\n     * Returns a list of all <b-tab> instances associated with this tab control.\n     */\n    getTabs() {\n      return this.$refs.bTabs.getTabs();\n    },\n    /**\n     * Get the value of the query param as defined by the `queryParamName` prop.\n     */\n    getQueryParamValue() {\n      const searchParams = new URLSearchParams(window.location.search);\n      return searchParams.get(this.queryParamName);\n    },\n    /**\n     * Set the value of the query param as defined by the `queryParamName` prop.\n     * This method does nothing if the query param is already up to date.\n     */\n    setQueryParamValueIfNecessary(tabIndex) {\n      const currentQueryParamValue = this.getQueryParamValue();\n      const newQueryParamValue = this.getTabQueryParamValue(tabIndex);\n\n      // If the current query parameter is already up-to-date,\n      // avoid creating a duplicate history entry.\n      if (tabIndex === 0 && !currentQueryParamValue || tabIndex !== 0 && currentQueryParamValue === newQueryParamValue) {\n        return;\n      }\n      const searchParams = new URLSearchParams(window.location.search);\n      searchParams.set(this.queryParamName, newQueryParamValue);\n      window.history.pushState({}, '', `${window.location.pathname}?${searchParams.toString()}`);\n    },\n    /**\n     * Returns the query param value for a tab.\n     * Defaults to the tab index unless the `query-param-value` attribute is set.\n     */\n    getTabQueryParamValue(tabIndex) {\n      const tab = this.getTabs()[tabIndex];\n      return (tab === null || tab === void 0 ? void 0 : tab.$attrs['query-param-value']) || tabIndex.toString();\n    },\n    /**\n     * Event handler for `input` event.\n     */\n    handleInput(tabIndex) {\n      this.$emit('input', tabIndex);\n      this.activeTabIndex = tabIndex;\n      if (this.syncActiveTabWithQueryParams) {\n        this.setQueryParamValueIfNecessary(tabIndex);\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tabs',_vm._g(_vm._b({ref:\"bTabs\",staticClass:\"gl-tabs\",attrs:{\"no-nav-style\":true,\"no-fade\":true,\"active-nav-item-class\":\"gl-tab-nav-item-active\",\"content-class\":[_vm.contentClass, 'gl-tab-content'],\"nav-class\":[_vm.navClass, 'gl-tabs-nav'],\"justified\":_vm.justified,\"value\":_vm.activeTabIndex},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),(_vm.hasActions)?{key:\"tabs-start\",fn:function(){return [_c('div',{staticClass:\"gl-actions-tabs-start\",attrs:{\"data-testid\":\"actions-tabs-start\"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-primary\"},on:{\"click\":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionPrimary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-secondary\"},on:{\"click\":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionSecondary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-tertiary\"},on:{\"click\":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionTertiary.text)+\"\\n      \")]):_vm._e()],1)]},proxy:true}:null,(_vm.hasActions)?{key:\"tabs-end\",fn:function(){return [_c('div',{staticClass:\"gl-actions-tabs-end\",attrs:{\"data-testid\":\"actions-tabs-end\"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-primary\"},on:{\"click\":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionPrimary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-secondary\"},on:{\"click\":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionSecondary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-tertiary\"},on:{\"click\":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionTertiary.text)+\"\\n      \")]):_vm._e()],1)]},proxy:true}:null],null,true)},'b-tabs',_vm.$attrs,false),_vm.listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import axios from '~/lib/utils/axios_utils';\nimport { HTTP_STATUS_OK } from './http_status';\nimport Poll from './poll';\n\n/**\n * Polls an endpoint until it returns either a 200 OK or a error status.\n * The Poll-Interval header in the responses are used to determine how\n * frequently to poll.\n *\n * Once a 200 OK is received, the promise resolves with that response. If an\n * error status is received, the promise rejects with the error.\n *\n * @param {string} url - The URL to poll.\n * @param {Object} [config] - The config to provide to axios.get().\n * @returns {Promise}\n */\nexport default (url, config = {}) =>\n  new Promise((resolve, reject) => {\n    const eTagPoll = new Poll({\n      resource: {\n        axiosGet(data) {\n          return axios.get(data.url, {\n            headers: {\n              'Content-Type': 'application/json',\n            },\n            ...data.config,\n          });\n        },\n      },\n      data: { url, config },\n      method: 'axiosGet',\n      successCallback: (response) => {\n        if (response.status === HTTP_STATUS_OK) {\n          resolve(response);\n          eTagPoll.stop();\n        }\n      },\n      errorCallback: reject,\n    });\n\n    eTagPoll.makeRequest();\n  });\n","import debounce from 'lodash/debounce';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport { breakpoints, GlBreakpointInstance } from '../../../utils/breakpoints';\nimport { alignOptions, resizeDebounceTime } from '../../../utils/constants';\nimport { translate, sprintf } from '../../../utils/i18n';\nimport GlIcon from '../icon/icon';\nimport GlLink from '../link/link';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst pageRange = (from, to) => range(from, to + 1, 1);\nvar script = {\n  name: 'Pagination',\n  components: {\n    GlLink,\n    GlIcon\n  },\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    value: {\n      type: Number,\n      required: false,\n      default: 1,\n      validator: x => x > 0\n    },\n    /**\n     * Number of items per page\n     */\n    perPage: {\n      type: Number,\n      required: false,\n      default: 20,\n      validator: x => x > 0\n    },\n    /**\n     * Total number of items\n     */\n    totalItems: {\n      type: Number,\n      required: false,\n      default: 0\n    },\n    /**\n     * The object must contain the xs, sm, md and default keys\n     */\n    limits: {\n      type: Object,\n      required: false,\n      default: () => ({\n        xs: 0,\n        sm: 3,\n        md: 9,\n        default: 9\n      }),\n      validator: value => {\n        const missingSizes = Object.keys(breakpoints).filter(size => !value[size]).length;\n        return missingSizes === 0 ? true : value.default;\n      }\n    },\n    /**\n     * A function that receives the page number and that returns a string representing the page URL\n     */\n    linkGen: {\n      type: Function,\n      required: false,\n      default: null\n    },\n    /**\n     * When using the compact pagination, use this prop to pass the previous page number\n     */\n    prevPage: {\n      type: Number,\n      required: false,\n      default: null\n    },\n    /**\n     * Text for the previous button (overridden by \"previous\" slot)\n     */\n    prevText: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.prevText', 'Previous')\n    },\n    /**\n     * When using the compact pagination, use this prop to pass the next page number\n     */\n    nextPage: {\n      type: Number,\n      required: false,\n      default: null\n    },\n    /**\n     * Text for the next button (overridden by \"next\" slot)\n     */\n    nextText: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.nextText', 'Next')\n    },\n    /**\n     * Text for the ellipsis (overridden by \"ellipsis-left\" and \"ellipsis-right\" slots)\n     */\n    ellipsisText: {\n      type: String,\n      required: false,\n      default: '…'\n    },\n    /**\n     * aria-label for the nav\n     */\n    labelNav: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.nav', 'Pagination')\n    },\n    /**\n     * aria-label for the first page item\n     */\n    labelFirstPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelFirstPage', 'Go to first page')\n    },\n    /**\n     * aria-label for the previous page item\n     */\n    labelPrevPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelPrevPage', 'Go to previous page')\n    },\n    /**\n     * aria-label for the next page item\n     */\n    labelNextPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelNextPage', 'Go to next page')\n    },\n    /**\n     * aria-label for the last page item\n     */\n    labelLastPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelLastPage', 'Go to last page')\n    },\n    /**\n     * aria-label getter for numbered page items, defaults to \"Go to page <page_number>\"\n     */\n    labelPage: {\n      // note: `Function` support is for legacy reasons\n      type: [Function, String],\n      required: false,\n      default: translate('GlPagination.labelPage', 'Go to page %{page}')\n    },\n    /**\n     * Controls the component\\'s horizontal alignment, value should be one of \"left\", \"center\", \"right\" or \"fill\"\n     */\n    align: {\n      type: String,\n      required: false,\n      default: alignOptions.left,\n      validator: value => Object.keys(alignOptions).includes(value)\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      breakpoint: GlBreakpointInstance.getBreakpointSize(),\n      // If total pages count is below or equal to minTotalPagesToCollapse, collapsing is disabled\n      minTotalPagesToCollapse: 4\n    };\n  },\n  computed: {\n    isVisible() {\n      return this.totalPages > 1 || this.isCompactPagination;\n    },\n    isLinkBased() {\n      return isFunction(this.linkGen);\n    },\n    paginationLimit() {\n      return typeof this.limits[this.breakpoint] !== 'undefined' ? this.limits[this.breakpoint] : this.limits.default;\n    },\n    maxAdjacentPages() {\n      return Math.max(Math.ceil((this.paginationLimit - 1) / 2), 0);\n    },\n    totalPages() {\n      return Math.ceil(this.totalItems / this.perPage);\n    },\n    isFillAlign() {\n      return this.align === alignOptions.fill;\n    },\n    wrapperClasses() {\n      const classes = [];\n      if (this.align === alignOptions.center) {\n        classes.push('gl-justify-center');\n      }\n      if (this.align === alignOptions.right) {\n        classes.push('gl-justify-end');\n      }\n      if (this.isFillAlign) {\n        classes.push('gl-text-center');\n      }\n      return classes;\n    },\n    shouldCollapseLeftSide() {\n      const diff = this.value - this.maxAdjacentPages;\n\n      // Magic 3: prevents collapsing a single page on the left side\n      return diff >= this.maxAdjacentPages && diff > 3 && this.totalPages > this.minTotalPagesToCollapse;\n    },\n    shouldCollapseRightSide() {\n      // Magic 2: prevents collapsing a single page on the right side\n      const diff = this.totalPages - 2 - this.value;\n      return diff > this.maxAdjacentPages && this.totalPages > this.minTotalPagesToCollapse;\n    },\n    visibleItems() {\n      let items = [];\n      if (!this.isCompactPagination) {\n        let firstPage = this.shouldCollapseLeftSide ? this.value - this.maxAdjacentPages : 1;\n        // If we're on last page, show at least one page to the left\n        firstPage = Math.min(firstPage, this.totalPages - 1);\n        let lastPage = this.shouldCollapseRightSide ? this.value + this.maxAdjacentPages : this.totalPages;\n        // If we're on first page, show at least one page to the right\n        lastPage = Math.max(lastPage, 2);\n\n        // Default numbered items\n        items = pageRange(firstPage, lastPage).map(page => this.getPageItem(page));\n        if (this.shouldCollapseLeftSide) {\n          items.splice(0, 0, this.getPageItem(1, this.labelFirstPage), this.getEllipsisItem('left'));\n        }\n        if (this.shouldCollapseRightSide) {\n          items.push(this.getEllipsisItem('right'), this.getPageItem(this.totalPages, this.labelLastPage));\n        }\n      }\n      return items;\n    },\n    isCompactPagination() {\n      return Boolean(!this.totalItems && (this.prevPage || this.nextPage));\n    },\n    prevPageIsDisabled() {\n      return this.pageIsDisabled(this.value - 1);\n    },\n    nextPageIsDisabled() {\n      return this.pageIsDisabled(this.value + 1);\n    },\n    prevPageAriaLabel() {\n      return this.prevPageIsDisabled ? false : this.labelPrevPage || this.labelForPage(this.value - 1);\n    },\n    nextPageAriaLabel() {\n      return this.nextPageIsDisabled ? false : this.labelNextPage || this.labelForPage(this.value + 1);\n    },\n    prevPageHref() {\n      if (this.prevPageIsDisabled) return false;\n      if (this.isLinkBased) return this.linkGen(this.value - 1);\n      return '#';\n    },\n    nextPageHref() {\n      if (this.nextPageIsDisabled) return false;\n      if (this.isLinkBased) return this.linkGen(this.value + 1);\n      return '#';\n    }\n  },\n  created() {\n    window.addEventListener('resize', debounce(this.setBreakpoint, resizeDebounceTime));\n  },\n  beforeDestroy() {\n    window.removeEventListener('resize', debounce(this.setBreakpoint, resizeDebounceTime));\n  },\n  methods: {\n    labelForPage(page) {\n      if (isFunction(this.labelPage)) {\n        return this.labelPage(page);\n      }\n      return sprintf(this.labelPage, {\n        page\n      });\n    },\n    setBreakpoint() {\n      this.breakpoint = GlBreakpointInstance.getBreakpointSize();\n    },\n    pageIsDisabled(page) {\n      return this.disabled || page < 1 || this.isCompactPagination && page > this.value && !this.nextPage || !this.isCompactPagination && page > this.totalPages;\n    },\n    getPageItem(page) {\n      let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      const commonAttrs = {\n        'aria-label': label || this.labelForPage(page),\n        href: '#',\n        class: []\n      };\n      const isActivePage = page === this.value;\n      const isDisabled = this.pageIsDisabled(page);\n      const attrs = {\n        ...commonAttrs\n      };\n      const listeners = {};\n      if (isActivePage) {\n        attrs.class.push('active');\n        attrs['aria-current'] = 'page';\n      }\n      // Disable previous and/or next buttons if needed\n      if (this.isLinkBased) {\n        attrs.href = this.linkGen(page);\n      }\n      listeners.click = e => this.handleClick(e, page);\n      return {\n        content: page,\n        component: isDisabled ? 'span' : GlLink,\n        disabled: isDisabled,\n        key: `page_${page}`,\n        slot: 'page-number',\n        slotData: {\n          page,\n          active: isActivePage,\n          disabled: isDisabled\n        },\n        attrs,\n        listeners\n      };\n    },\n    getEllipsisItem(side) {\n      return {\n        content: this.ellipsisText,\n        key: `ellipsis_${side}`,\n        slot: `ellipsis-${side}`,\n        component: 'span',\n        disabled: true,\n        slotData: {},\n        listeners: {}\n      };\n    },\n    handleClick(event, value) {\n      if (!this.isLinkBased) {\n        event.preventDefault();\n        /**\n         * Emitted when the page changes\n         * @event input\n         * @arg {number} value The page that just got loaded\n         */\n        this.$emit('input', value);\n      }\n    },\n    handlePrevious(event, value) {\n      this.handleClick(event, value);\n      /**\n       * Emitted when the \"previous\" button is clicked\n       * @event previous\n       */\n      this.$emit('previous');\n    },\n    handleNext(event, value) {\n      this.handleClick(event, value);\n      /**\n       * Emitted when the \"next\" button is clicked\n       * @event next\n       */\n      this.$emit('next');\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isVisible)?_c('nav',{staticClass:\"gl-pagination\",attrs:{\"aria-label\":_vm.labelNav}},[_c('ul',{class:_vm.wrapperClasses},[_c('li',{class:{\n        disabled: _vm.prevPageIsDisabled,\n        'gl-flex-auto': _vm.isFillAlign,\n      },attrs:{\"aria-disabled\":_vm.prevPageIsDisabled,\"aria-hidden\":_vm.prevPageIsDisabled,\"data-testid\":\"gl-pagination-li\"}},[_c(_vm.prevPageIsDisabled ? 'span' : 'a',{tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-prev\",\"aria-label\":_vm.prevPageAriaLabel,\"href\":_vm.prevPageHref},on:{\"click\":function($event){!_vm.prevPageIsDisabled ? _vm.handlePrevious($event, _vm.value - 1) : null;}}},[_vm._t(\"previous\",function(){return [_c('gl-icon',{attrs:{\"name\":\"chevron-left\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-hidden sm:gl-block\"},[_vm._v(_vm._s(_vm.prevText))])]},null,{ page: _vm.value - 1, disabled: _vm.prevPageIsDisabled })],2)],1),_vm._v(\" \"),_vm._l((_vm.visibleItems),function(item){return _c('li',{key:item.key,class:{\n        disabled: item.disabled,\n        'gl-flex-auto': _vm.isFillAlign,\n      },attrs:{\"data-testid\":\"gl-pagination-li\"}},[_c(item.component,_vm._g(_vm._b({tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-item\",\"size\":\"md\",\"aria-disabled\":item.disabled}},'component',item.attrs,false),item.listeners),[_vm._t(item.slot,function(){return [_vm._v(_vm._s(item.content))]},null,item.slotData)],2)],1)}),_vm._v(\" \"),_c('li',{class:{\n        disabled: _vm.nextPageIsDisabled,\n        'gl-flex-auto': _vm.isFillAlign,\n      },attrs:{\"aria-disabled\":_vm.nextPageIsDisabled,\"aria-hidden\":_vm.nextPageIsDisabled,\"data-testid\":\"gl-pagination-li\"}},[_c(_vm.nextPageIsDisabled ? 'span' : 'a',{tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-next\",\"aria-label\":_vm.nextPageAriaLabel,\"href\":_vm.nextPageHref},on:{\"click\":function($event){!_vm.nextPageIsDisabled ? _vm.handleNext($event, _vm.value + 1) : null;}}},[_vm._t(\"next\",function(){return [_c('span',{staticClass:\"gl-hidden sm:gl-block\"},[_vm._v(_vm._s(_vm.nextText))]),_vm._v(\" \"),_c('gl-icon',{attrs:{\"name\":\"chevron-right\"}})]},null,{ page: _vm.value + 1, disabled: _vm.nextPageIsDisabled })],2)],1)],2)]):_vm._e()};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","var arrayMap = require('./_arrayMap'),\n    baseClone = require('./_baseClone'),\n    baseUnset = require('./_baseUnset'),\n    castPath = require('./_castPath'),\n    copyObject = require('./_copyObject'),\n    customOmitClone = require('./_customOmitClone'),\n    flatRest = require('./_flatRest'),\n    getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n  var result = {};\n  if (object == null) {\n    return result;\n  }\n  var isDeep = false;\n  paths = arrayMap(paths, function(path) {\n    path = castPath(path, object);\n    isDeep || (isDeep = path.length > 1);\n    return path;\n  });\n  copyObject(object, getAllKeysIn(object), result);\n  if (isDeep) {\n    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n  }\n  var length = paths.length;\n  while (length--) {\n    baseUnset(result, paths[length]);\n  }\n  return result;\n});\n\nmodule.exports = omit;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"JobArtifacts\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Pipeline\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"securityReportTypes\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reportTypes\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"artifacts\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"downloadPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileType\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":223}};\n    doc.loc.source = {\"body\":\"fragment JobArtifacts on Pipeline {\\n  id\\n  jobs(securityReportTypes: $reportTypes) {\\n    nodes {\\n      id\\n      name\\n      artifacts {\\n        nodes {\\n          downloadPath\\n          fileType\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"JobArtifacts\"] = oneQuery(doc, \"JobArtifacts\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"retryPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobRetry\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":184}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation retryPipelineMiniGraphJob($id: CiProcessableID!) {\\n  jobRetry(input: { id: $id }) {\\n    job {\\n      ...Job\\n    }\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"retryPipelineMiniGraphJob\"] = oneQuery(doc, \"retryPipelineMiniGraphJob\");\n        \n","import isPlainObject from 'lodash/isPlainObject';\nimport { REPORT_TYPES_ALL } from 'ee/security_dashboard/constants';\nimport { convertObjectPropsToSnakeCase } from '~/lib/utils/common_utils';\nimport { __ } from '~/locale';\n\n/**\n * Provided a security reports summary from the GraphQL API, this returns an array of arrays\n * representing a properly formatted report ready to be displayed in the UI. Each sub-array consists\n * of the user-friend report's name, and the summary's payload. Note that summary entries are\n * considered empty and are filtered out of the return if the payload is `null` or don't include\n * a vulnerabilitiesCount property. Report types whose name can't be matched to a user-friendly\n * name are filtered out as well.\n *\n * Take the following summary for example:\n * {\n *   containerScanning: { vulnerabilitiesCount: 123 },\n *   invalidReportType: { vulnerabilitiesCount: 123 },\n *   dast: null,\n * }\n *\n * The formatted summary would look like this:\n * [\n *   ['containerScanning', { vulnerabilitiesCount: 123 }]\n * ]\n *\n * Note that `invalidReportType` was filtered out as it can't be matched with a user-friendly name,\n * and the DAST report was omitted because it's empty (`null`).\n *\n * @param {Object} rawSummary\n * @returns {Array}\n */\nexport const getFormattedSummary = (rawSummary = {}) => {\n  if (!isPlainObject(rawSummary)) {\n    return [];\n  }\n  // Convert keys to snake case so they can be matched against REPORT_TYPES keys for translation\n  const snakeCasedSummary = convertObjectPropsToSnakeCase(rawSummary);\n  // Convert object to an array of entries to make it easier to loop through\n  const summaryEntries = Object.entries(snakeCasedSummary);\n  // Filter out empty entries as we don't want to display those in the summary\n  const withoutEmptyEntries = summaryEntries.filter(\n    ([, scanSummary]) => scanSummary?.vulnerabilitiesCount !== undefined,\n  );\n  // Replace keys with translations found in REPORT_TYPES if available\n  const formattedEntries = withoutEmptyEntries.map(([scanType, scanSummary]) => {\n    const name = REPORT_TYPES_ALL[scanType];\n    return name ? [name, scanSummary] : null;\n  });\n  // Filter out keys that could not be matched with any translation and are thus considered invalid\n  return formattedEntries.filter((entry) => entry !== null);\n};\n\nexport const PROJECT_LOADING_ERROR_MESSAGE = __('An error occurred while retrieving projects.');\n\nexport default () => ({});\n","import { extend } from '../../vue';\nimport { NAME_TAB } from '../../constants/components';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_OBJECT } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTransition } from '../transition/bv-transition';\n\n// --- Constants ---\n\nconst MODEL_PROP_NAME_ACTIVE = 'active';\nconst MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE;\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  [MODEL_PROP_NAME_ACTIVE]: makeProp(PROP_TYPE_BOOLEAN, false),\n  buttonId: makeProp(PROP_TYPE_STRING),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  title: makeProp(PROP_TYPE_STRING),\n  // Sniffed by `<b-tabs>` and added to nav `li.nav-item`\n  titleItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  titleLinkAttributes: makeProp(PROP_TYPE_OBJECT),\n  // Sniffed by `<b-tabs>` and added to nav `a.nav-link`\n  titleLinkClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}), NAME_TAB);\n\n// --- Main component ---\n\n// @vue/component\nconst BTab = /*#__PURE__*/extend({\n  name: NAME_TAB,\n  mixins: [idMixin, normalizeSlotMixin],\n  inject: {\n    getBvTabs: {\n      default: () => () => ({})\n    }\n  },\n  props,\n  data() {\n    return {\n      localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n    };\n  },\n  computed: {\n    bvTabs() {\n      return this.getBvTabs();\n    },\n    // For parent sniffing of child\n    _isTab() {\n      return true;\n    },\n    tabClasses() {\n      const {\n        localActive: active,\n        disabled\n      } = this;\n      return [{\n        active,\n        disabled,\n        'card-body': this.bvTabs.card && !this.noBody\n      },\n      // Apply <b-tabs> `activeTabClass` styles when this tab is active\n      active ? this.bvTabs.activeTabClass : null];\n    },\n    controlledBy() {\n      return this.buttonId || this.safeId('__BV_tab_button__');\n    },\n    computedNoFade() {\n      return !(this.bvTabs.fade || false);\n    },\n    computedLazy() {\n      return this.bvTabs.lazy || this.lazy;\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME_ACTIVE](newValue, oldValue) {\n      if (newValue !== oldValue) {\n        if (newValue) {\n          // If activated post mount\n          this.activate();\n        } else {\n          /* istanbul ignore next */\n          if (!this.deactivate()) {\n            // Tab couldn't be deactivated, so we reset the synced active prop\n            // Deactivation will fail if no other tabs to activate\n            this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n          }\n        }\n      }\n    },\n    disabled(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        const {\n          firstTab\n        } = this.bvTabs;\n        if (newValue && this.localActive && firstTab) {\n          this.localActive = false;\n          firstTab();\n        }\n      }\n    },\n    localActive(newValue) {\n      // Make `active` prop work with `.sync` modifier\n      this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n    }\n  },\n  mounted() {\n    // Inform `<b-tabs>` of our presence\n    this.registerTab();\n  },\n  updated() {\n    // Force the tab button content to update (since slots are not reactive)\n    // Only done if we have a title slot, as the title prop is reactive\n    const {\n      updateButton\n    } = this.bvTabs;\n    if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n      updateButton(this);\n    }\n  },\n  beforeDestroy() {\n    // Inform `<b-tabs>` of our departure\n    this.unregisterTab();\n  },\n  methods: {\n    // Private methods\n    registerTab() {\n      // Inform `<b-tabs>` of our presence\n      const {\n        registerTab\n      } = this.bvTabs;\n      if (registerTab) {\n        registerTab(this);\n      }\n    },\n    unregisterTab() {\n      // Inform `<b-tabs>` of our departure\n      const {\n        unregisterTab\n      } = this.bvTabs;\n      if (unregisterTab) {\n        unregisterTab(this);\n      }\n    },\n    // Public methods\n    activate() {\n      // Not inside a `<b-tabs>` component or tab is disabled\n      const {\n        activateTab\n      } = this.bvTabs;\n      return activateTab && !this.disabled ? activateTab(this) : false;\n    },\n    deactivate() {\n      // Not inside a `<b-tabs>` component or not active to begin with\n      const {\n        deactivateTab\n      } = this.bvTabs;\n      return deactivateTab && this.localActive ? deactivateTab(this) : false;\n    }\n  },\n  render(h) {\n    const {\n      localActive\n    } = this;\n    const $content = h(this.tag, {\n      staticClass: 'tab-pane',\n      class: this.tabClasses,\n      directives: [{\n        name: 'show',\n        value: localActive\n      }],\n      attrs: {\n        role: 'tabpanel',\n        id: this.safeId(),\n        'aria-hidden': localActive ? 'false' : 'true',\n        'aria-labelledby': this.controlledBy || null\n      },\n      ref: 'panel'\n    },\n    // Render content lazily if requested\n    [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n    return h(BVTransition, {\n      props: {\n        mode: 'out-in',\n        noFade: this.computedNoFade\n      }\n    }, [$content]);\n  }\n});\n\nexport { BTab, props };\n","import isPlainObject from 'lodash/isPlainObject';\nimport { BTab } from '../../../../vendor/bootstrap-vue/src/components/tabs/tab';\nimport { DEFAULT_TAB_TITLE_LINK_CLASS } from '../constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlTab',\n  components: {\n    BTab\n  },\n  inheritAttrs: false,\n  props: {\n    titleLinkClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: ''\n    },\n    /**\n     * Query string parameter value to use when `gl-tabs` `sync-active-tab-with-query-params` prop is set to `true`.\n     */\n    queryParamValue: {\n      type: String,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    linkClass() {\n      const {\n        titleLinkClass\n      } = this;\n      if (Array.isArray(titleLinkClass)) {\n        return [...titleLinkClass, DEFAULT_TAB_TITLE_LINK_CLASS];\n      }\n      if (isPlainObject(titleLinkClass)) {\n        return {\n          ...titleLinkClass,\n          [DEFAULT_TAB_TITLE_LINK_CLASS]: true\n        };\n      }\n      return `${titleLinkClass} ${DEFAULT_TAB_TITLE_LINK_CLASS}`.trim();\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tab',_vm._g(_vm._b({attrs:{\"title-link-class\":_vm.linkClass,\"query-param-value\":_vm.queryParamValue},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}})],null,true)},'b-tab',_vm.$attrs,false),_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","const DEFAULT_TAB_TITLE_LINK_CLASS = 'gl-tab-nav-item';\n\nexport { DEFAULT_TAB_TITLE_LINK_CLASS };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-text-sm\"},[(_vm.showSingleSeverity)?_c(_vm.component(_vm.highlights[_vm.showSingleSeverity]),{tag:\"component\",class:_vm.$options.cssClass[_vm.showSingleSeverity]},[_vm._v(_vm._s(_vm.formattedCounts(_vm.highlights[_vm.showSingleSeverity]))+\"\\n    \"+_vm._s(_vm.n__('vulnerability', 'vulnerabilities', _vm.highlights[_vm.showSingleSeverity])))]):_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.highlights},scopedSlots:_vm._u([{key:\"critical\",fn:function({ content }){return [_c(_vm.component(_vm.criticalSeverityCount),{tag:\"component\",staticClass:\"gl-text-red-800\",attrs:{\"data-testid\":\"critical\"}},[_vm._v(_vm._s(_vm.criticalSeverityCount)+\" \"+_vm._s(content))])]}},{key:\"high\",fn:function({ content }){return [_c(_vm.component(_vm.highSeverityCount),{tag:\"component\",staticClass:\"gl-text-red-600\",attrs:{\"data-testid\":\"high\"}},[_vm._v(_vm._s(_vm.highSeverityCount)+\" \"+_vm._s(content))])]}},{key:\"other\",fn:function({ content }){return [_c(_vm.component(_vm.otherSeverityCount),{tag:\"component\",attrs:{\"data-testid\":\"other\"}},[_vm._v(_vm._s(_vm.otherSeverityCount)+\" \"+_vm._s(content))])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary_highlights.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./summary_highlights.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf } from '@gitlab/ui';\nimport {\n  CRITICAL,\n  HIGH,\n  MEDIUM,\n  LOW,\n  INFO,\n  UNKNOWN,\n  SEVERITY_COUNT_LIMIT,\n} from 'ee/vulnerabilities/constants';\nimport { s__, sprintf } from '~/locale';\nimport { SEVERITY_CLASS_NAME_MAP } from './constants';\n\nexport default {\n  components: {\n    GlSprintf,\n  },\n  i18n: {\n    highlights: s__(\n      'ciReport|%{criticalStart}critical%{criticalEnd}, %{highStart}high%{highEnd} and %{otherStart}others%{otherEnd}',\n    ),\n  },\n  props: {\n    /**\n     * If provided, this will display only the count for the given severity.\n     */\n    showSingleSeverity: {\n      type: String,\n      required: false,\n      default: '',\n      validator: (severity) =>\n        !severity || [CRITICAL, HIGH, MEDIUM, LOW, INFO, UNKNOWN].includes(severity),\n    },\n    highlights: {\n      type: Object,\n      required: true,\n      validator: (highlights) =>\n        [CRITICAL, HIGH].every((requiredField) => {\n          if (typeof highlights[requiredField] === 'undefined') {\n            return true;\n          }\n\n          return Number.isInteger(highlights[requiredField]);\n        }),\n    },\n    capped: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    criticalSeverityCount() {\n      return this.formattedCounts(this.highlights[CRITICAL]);\n    },\n    highSeverityCount() {\n      return this.formattedCounts(this.highlights[HIGH]);\n    },\n    otherSeverityCount() {\n      if (typeof this.highlights.other !== 'undefined') {\n        return this.formattedCounts(this.highlights.other);\n      }\n\n      let totalCounts = 0;\n      let isCapped = false;\n\n      [MEDIUM, LOW, INFO, UNKNOWN].forEach((severity) => {\n        const count = this.highlights[severity];\n\n        if (count) {\n          totalCounts += count;\n        }\n\n        if (this.capped && count > SEVERITY_COUNT_LIMIT) {\n          isCapped = true;\n        }\n      });\n\n      return isCapped ? this.formattedCounts(totalCounts) : totalCounts;\n    },\n  },\n  methods: {\n    formattedCounts(count) {\n      if (this.capped) {\n        return count > SEVERITY_COUNT_LIMIT\n          ? sprintf(s__('SecurityReports|%{count}+'), { count: SEVERITY_COUNT_LIMIT })\n          : count;\n      }\n\n      return count;\n    },\n    component(count) {\n      if (parseInt(count, 10) > 0) {\n        return 'strong';\n      }\n\n      return 'span';\n    },\n  },\n  cssClass: SEVERITY_CLASS_NAME_MAP,\n};\n</script>\n\n<template>\n  <div class=\"gl-text-sm\">\n    <component\n      :is=\"component(highlights[showSingleSeverity])\"\n      v-if=\"showSingleSeverity\"\n      :class=\"$options.cssClass[showSingleSeverity]\"\n      >{{ formattedCounts(highlights[showSingleSeverity]) }}\n      {{ n__('vulnerability', 'vulnerabilities', highlights[showSingleSeverity]) }}</component\n    >\n    <gl-sprintf v-else :message=\"$options.i18n.highlights\">\n      <template #critical=\"{ content }\"\n        ><component\n          :is=\"component(criticalSeverityCount)\"\n          class=\"gl-text-red-800\"\n          data-testid=\"critical\"\n          >{{ criticalSeverityCount }} {{ content }}</component\n        ></template\n      >\n      <template #high=\"{ content }\"\n        ><component :is=\"component(highSeverityCount)\" class=\"gl-text-red-600\" data-testid=\"high\"\n          >{{ highSeverityCount }} {{ content }}</component\n        ></template\n      >\n      <template #other=\"{ content }\"\n        ><component :is=\"component(otherSeverityCount)\" data-testid=\"other\"\n          >{{ otherSeverityCount }} {{ content }}</component\n        ></template\n      >\n    </gl-sprintf>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./summary_highlights.vue?vue&type=template&id=7821a119\"\nimport script from \"./summary_highlights.vue?vue&type=script&lang=js\"\nexport * from \"./summary_highlights.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-mr-3 gl-flex gl-h-6 gl-w-6 gl-self-start\"},[_c('div',{staticClass:\"gl-m-auto gl-flex\"},[(_vm.isMerged)?_c('gl-icon',{attrs:{\"name\":\"merge\",\"size\":16,\"variant\":\"info\"}}):(_vm.isClosed)?_c('gl-icon',{attrs:{\"name\":\"merge-request-close\",\"size\":16,\"variant\":\"danger\"}}):(_vm.status === 'approval')?_c('gl-icon',{attrs:{\"name\":\"approval\",\"size\":16}}):(_vm.isEmpty)?_c('status-icon',{staticClass:\"!gl-m-0\",attrs:{\"icon-name\":\"neutral\",\"level\":1}}):_c('status-icon',{staticClass:\"!gl-m-0\",attrs:{\"is-loading\":_vm.isLoading,\"icon-name\":_vm.status,\"level\":1}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mr_widget_status_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mr_widget_status_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport { STATUS_CLOSED, STATUS_MERGED, STATUS_EMPTY } from '~/issues/constants';\nimport StatusIcon from './widget/status_icon.vue';\n\nexport default {\n  components: {\n    StatusIcon,\n    GlIcon,\n  },\n  props: {\n    status: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    isClosed() {\n      return this.status === STATUS_CLOSED;\n    },\n    isLoading() {\n      return this.status === 'loading';\n    },\n    isMerged() {\n      return this.status === STATUS_MERGED;\n    },\n    isEmpty() {\n      return this.status === STATUS_EMPTY;\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"gl-mr-3 gl-flex gl-h-6 gl-w-6 gl-self-start\">\n    <div class=\"gl-m-auto gl-flex\">\n      <gl-icon v-if=\"isMerged\" name=\"merge\" :size=\"16\" variant=\"info\" />\n      <gl-icon v-else-if=\"isClosed\" name=\"merge-request-close\" :size=\"16\" variant=\"danger\" />\n      <gl-icon v-else-if=\"status === 'approval'\" name=\"approval\" :size=\"16\" />\n      <status-icon v-else-if=\"isEmpty\" icon-name=\"neutral\" :level=\"1\" class=\"!gl-m-0\" />\n      <status-icon v-else :is-loading=\"isLoading\" :icon-name=\"status\" :level=\"1\" class=\"!gl-m-0\" />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_status_icon.vue?vue&type=template&id=a9429b6c\"\nimport script from \"./mr_widget_status_icon.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_status_icon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"playJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobPlay\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":165}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation playJob($id: CiProcessableID!) {\\n  jobPlay(input: { id: $id }) {\\n    job {\\n      ...Job\\n    }\\n    errors\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"playJob\"] = oneQuery(doc, \"playJob\");\n        \n","import { escape } from 'lodash';\n\n/**\n * Highlight.js plugin for wrapping nodes with the correct selectors to ensure\n * child-elements are highlighted correctly after we split up the result into chunks and lines.\n *\n * Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\n *\n * @param {Object} Result - an object that represents the highlighted result from Highlight.js\n */\nconst newlineRegex = /\\r?\\n/;\nconst generateClassName = (suffix) => (suffix ? `hljs-${escape(suffix)}` : '');\nconst generateCloseTag = (includeClose) => (includeClose ? '</span>' : '');\nconst generateHLJSTag = (scope, content = '', includeClose) =>\n  `<span class=\"${generateClassName(scope)}\">${escape(content)}${generateCloseTag(includeClose)}`;\n\nconst format = (node, scope = '') => {\n  let buffer = '';\n\n  if (typeof node === 'string') {\n    buffer += node\n      .split(newlineRegex)\n      .map((newline) => generateHLJSTag(scope, newline, true))\n      .join('\\n');\n  } else if (node.children) {\n    const { children } = node;\n    if (children.length && children.length === 1) {\n      buffer += format(children[0], node.scope);\n    } else {\n      buffer += generateHLJSTag(node.scope);\n      children.forEach((subChild) => {\n        buffer += format(subChild, node.scope);\n      });\n      buffer += `</span>`;\n    }\n  }\n\n  return buffer;\n};\n\nexport default (result) => {\n  // NOTE: We're using the private Emitter API here as we expect the Emitter API to be publicly available soon (https://github.com/highlightjs/highlight.js/issues/3621)\n  // eslint-disable-next-line no-param-reassign, no-underscore-dangle\n  result.value = result._emitter.rootNode.children.reduce((val, node) => val + format(node), ''); // Highlight.js expects the result param to be mutated for plugins to work\n};\n","import {\n  BIDI_CHARS,\n  BIDI_CHARS_CLASS_LIST,\n  BIDI_CHAR_TOOLTIP,\n} from '~/vue_shared/components/source_viewer/constants';\n\n/**\n * Highlight.js plugin for wrapping BIDI chars.\n * This ensures potentially dangerous BIDI characters are highlighted.\n *\n * Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\n *\n * @param {Object} Result - an object that represents the highlighted result from Highlight.js\n */\n\nfunction wrapBidiChar(bidiChar) {\n  return `<span class=\"${BIDI_CHARS_CLASS_LIST}\" title=\"${BIDI_CHAR_TOOLTIP}\">${bidiChar}</span>`;\n}\n\nexport default (result) => {\n  let { value } = result;\n  BIDI_CHARS.forEach((bidiChar) => {\n    if (value.includes(bidiChar)) {\n      value = value.replace(bidiChar, wrapBidiChar(bidiChar));\n    }\n  });\n\n  // eslint-disable-next-line no-param-reassign\n  result.value = value; // Highlight.js expects the result param to be mutated for plugins to work\n};\n","import { escape } from 'lodash';\n\nexport const createLink = (href, innerText) =>\n  `<a href=\"${escape(href)}\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">${escape(\n    innerText,\n  )}</a>`;\n\nexport const generateHLJSOpenTag = (type, delimiter = '&quot;') =>\n  `<span class=\"hljs-${escape(type)}\">${delimiter}`;\n\nexport const getObjectKeysByKeyName = (obj, keyName, acc) => {\n  if (obj instanceof Array) {\n    obj.map((subObj) => getObjectKeysByKeyName(subObj, keyName, acc));\n  } else {\n    for (const key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        if (key === keyName) {\n          acc.push(...Object.keys(obj[key]));\n        }\n        if (obj[key] instanceof Object || obj[key] instanceof Array) {\n          getObjectKeysByKeyName(obj[key], keyName, acc);\n        }\n      }\n    }\n  }\n  return acc;\n};\n","import { unescape } from 'lodash';\nimport { createLink, generateHLJSOpenTag } from './dependency_linker_util';\n\nconst NPM_URL = 'https://npmjs.com/package/';\nconst attrOpenTag = generateHLJSOpenTag('attr');\nconst stringOpenTag = generateHLJSOpenTag('string');\nconst closeTag = '&quot;</span>';\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: <span class=\"hljs-attr\">&quot;@babel/core&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;^7.18.5&quot;</span>\n   * Group 1:  @babel/core\n   * Group 2:  ^7.18.5\n   */\n  `${attrOpenTag}(.*)${closeTag}.*${stringOpenTag}(.*[0-9].*)(${closeTag})`,\n  'gm',\n);\n\n// eslint-disable-next-line max-params\nconst handleReplace = (original, packageName, version, dependenciesToLink) => {\n  const unescapedPackageName = unescape(packageName);\n  const unescapedVersion = unescape(version);\n  const href = `${NPM_URL}${unescapedPackageName}`;\n  const packageLink = createLink(href, unescapedPackageName);\n  const versionLink = createLink(href, unescapedVersion);\n  const closeAndOpenTag = `${closeTag}: ${attrOpenTag}`;\n  const dependencyToLink = dependenciesToLink[unescapedPackageName];\n\n  if (dependencyToLink && dependencyToLink === unescapedVersion) {\n    return `${attrOpenTag}${packageLink}${closeAndOpenTag}${versionLink}${closeTag}`;\n  }\n\n  return original;\n};\n\nexport default (result, raw) => {\n  const { dependencies, devDependencies, peerDependencies, optionalDependencies } = JSON.parse(raw);\n\n  const dependenciesToLink = {\n    ...dependencies,\n    ...devDependencies,\n    ...peerDependencies,\n    ...optionalDependencies,\n  };\n\n  return result.value.replace(DEPENDENCY_REGEX, (original, packageName, version) =>\n    handleReplace(original, packageName, version, dependenciesToLink),\n  );\n};\n","import { createLink, generateHLJSOpenTag } from './dependency_linker_util';\n\nconst GEM_URL = 'https://rubygems.org/gems/';\nconst methodRegex = '.*add_dependency.*|.*add_runtime_dependency.*|.*add_development_dependency.*';\nconst openTagRegex = generateHLJSOpenTag('string', '(&.*;)');\nconst closeTagRegex = '&.*</span>';\n\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects gemspec dependencies inside of content that is highlighted by Highlight.js\n   * Example: s.add_dependency(<span class=\"hljs-string\">&#x27;rugged&#x27;</span>, <span class=\"hljs-string\">&#x27;~&gt; 0.24.0&#x27;</span>)\n   *\n   * Group 1 (method)     :  s.add_dependency(\n   * Group 2 (delimiter)  :  &#x27;\n   * Group 3 (packageName):  rugged\n   * Group 4 (closeTag)   :  &#x27;</span>\n   * Group 5 (rest)       :  \t, <span class=\"hljs-string\">&#x27;~&gt; 0.24.0&#x27;</span>)\n   */\n  `(${methodRegex})${openTagRegex}(.*)(${closeTagRegex})(.*${closeTagRegex})`,\n  'gm',\n);\n\n// eslint-disable-next-line max-params\nconst handleReplace = (method, delimiter, packageName, closeTag, rest) => {\n  // eslint-disable-next-line @gitlab/require-i18n-strings\n  const openTag = generateHLJSOpenTag('string linked', delimiter);\n  const href = `${GEM_URL}${packageName}`;\n  const packageLink = createLink(href, packageName);\n\n  return `${method}${openTag}${packageLink}${closeTag}${rest}`;\n};\n\nexport default (result) => {\n  return result.value.replace(\n    DEPENDENCY_REGEX,\n    // eslint-disable-next-line max-params\n    (_, method, delimiter, packageName, closeTag, rest) =>\n      handleReplace(method, delimiter, packageName, closeTag, rest),\n  );\n};\n","import { createLink, generateHLJSOpenTag } from './dependency_linker_util';\n\nconst PROTOCOL = 'https://';\nconst GODOCS_DOMAIN = 'godoc.org/';\nconst REPO_PATH = '/tree/master/';\nconst GODOCS_REGEX = /golang.org/;\nconst GITLAB_REPO_PATH = `/_${REPO_PATH}`;\nconst REPO_REGEX = `[^/'\"]+/[^/'\"]+`;\nconst NESTED_REPO_REGEX = '([^/]+/)+[^/]+?';\nconst GITHUB_REPO_REGEX = new RegExp(`(github.com/${REPO_REGEX})/(.+)`);\nconst GITLAB_REPO_REGEX = new RegExp(`(gitlab.com/${REPO_REGEX})/(.+)`);\nconst GITLAB_NESTED_REPO_REGEX = new RegExp(`(gitlab.com/${NESTED_REPO_REGEX}).git/(.+)`);\nconst attrOpenTag = generateHLJSOpenTag('attr');\nconst stringOpenTag = generateHLJSOpenTag('string');\nconst closeTag = '&quot;</span>';\nconst importPathString =\n  'ImportPath&quot;</span><span class=\"hljs-punctuation\">:</span><span class=\"\"> </span>';\n\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: <span class=\"hljs-attr\">&quot;ImportPath&quot;</span><span class=\"hljs-punctuation\">:</span><span class=\"\"> </span><span class=\"hljs-string\">&quot;github.com/ayufan/golang-kardianos-service&quot;</span>\n   * Group 1:  github.com/ayufan/golang-kardianos-service\n   */\n  `${importPathString}${stringOpenTag}(.*)${closeTag}`,\n  'gm',\n);\n\nconst replaceRepoPath = (dependency, regex, repoPath) =>\n  dependency.replace(regex, (_, repo, path) => `${PROTOCOL}${repo}${repoPath}${path}`);\n\nconst regexConfigs = [\n  {\n    matcher: GITHUB_REPO_REGEX,\n    resolver: (dep) => replaceRepoPath(dep, GITHUB_REPO_REGEX, REPO_PATH),\n  },\n  {\n    matcher: GITLAB_REPO_REGEX,\n    resolver: (dep) => replaceRepoPath(dep, GITLAB_REPO_REGEX, GITLAB_REPO_PATH),\n  },\n  {\n    matcher: GITLAB_NESTED_REPO_REGEX,\n    resolver: (dep) => replaceRepoPath(dep, GITLAB_NESTED_REPO_REGEX, GITLAB_REPO_PATH),\n  },\n  {\n    matcher: GODOCS_REGEX,\n    resolver: (dep) => `${PROTOCOL}${GODOCS_DOMAIN}${dep}`,\n  },\n];\n\nconst getLinkHref = (dependency) => {\n  const regexConfig = regexConfigs.find((config) => dependency.match(config.matcher));\n  return regexConfig ? regexConfig.resolver(dependency) : `${PROTOCOL}${dependency}`;\n};\n\nconst handleReplace = (dependency) => {\n  const linkHref = getLinkHref(dependency);\n  const link = createLink(linkHref, dependency);\n  return `${importPathString}${attrOpenTag}${link}${closeTag}`;\n};\n\nexport default (result) => {\n  return result.value.replace(DEPENDENCY_REGEX, (_, dependency) => handleReplace(dependency));\n};\n","import { createLink, generateHLJSOpenTag } from './dependency_linker_util';\n\nconst GEM_URL = 'https://rubygems.org/gems/';\nconst GEM_STRING = 'gem </span>';\nconst delimiter = '&#39;';\nconst stringOpenTag = generateHLJSOpenTag('string', delimiter);\n\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: 'gem </span><span class=\"hljs-string\">&#39;paranoia&#39;'\n   * Group 1 (packageName)     :  'paranoia'\n   */\n  `${GEM_STRING}${stringOpenTag}(.+?(?=${delimiter}))`,\n  'gm',\n);\n\nconst handleReplace = (packageName) => {\n  const href = `${GEM_URL}${packageName}`;\n  const packageLink = createLink(href, packageName);\n  return `${GEM_STRING}${stringOpenTag}${packageLink}`;\n};\nexport default (result) => {\n  return result.value.replace(DEPENDENCY_REGEX, (_, packageName) => handleReplace(packageName));\n};\n","import { createLink, generateHLJSOpenTag, getObjectKeysByKeyName } from './dependency_linker_util';\n\nconst COCOAPODS_URL = 'https://cocoapods.org/pods/';\nconst beginString = generateHLJSOpenTag('attr');\nconst endString =\n  '&quot;</span><span class=\"hljs-punctuation\">:</span><span class=\"\"> </span><span class=\"hljs-punctuation\">\\\\[';\n\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: <span class=\"hljs-attr\">&quot;AFNetworking/Security&quot;</span><span class=\"hljs-punctuation\">:</span><span class=\"\"> </span><span class=\"hljs-punctuation\"> [\n   * Group 1:  AFNetworking/Serialization\n   */\n  `${beginString}([^/]+/?[^/]+.)${endString}`,\n  'gm',\n);\n\nconst handleReplace = (original, dependency, dependenciesToLink) => {\n  if (dependenciesToLink.includes(dependency)) {\n    const href = `${COCOAPODS_URL}${dependency.split('/')[0]}`;\n    const link = createLink(href, dependency);\n    return `${beginString}${link}${endString.replace('\\\\', '')}`;\n  }\n  return original;\n};\n\nexport default (result, raw) => {\n  const dependenciesToLink = getObjectKeysByKeyName(JSON.parse(raw), 'dependencies', []);\n  return result.value.replace(DEPENDENCY_REGEX, (original, dependency) =>\n    handleReplace(original, dependency, dependenciesToLink),\n  );\n};\n","import { createLink, generateHLJSOpenTag } from './dependency_linker_util';\n\nconst PACKAGIST_URL = 'https://packagist.org/packages/';\nconst DRUPAL_URL = 'https://www.drupal.org/project/';\n\nconst attrOpenTag = generateHLJSOpenTag('attr');\nconst stringOpenTag = generateHLJSOpenTag('string');\nconst closeTag = '&quot;</span>';\nconst DRUPAL_PROJECT_SEPARATOR = 'drupal/';\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: <span class=\"hljs-attr\">&quot;composer/installers&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;^1.2&quot;</span>\n   * Group 1:  composer/installers\n   * Group 2:  ^1.2\n   */\n  `${attrOpenTag}([^/]+/[^/]+.)${closeTag}.*${stringOpenTag}(.*[0-9].*)(${closeTag})`,\n  'gm',\n);\n\n// eslint-disable-next-line max-params\nconst handleReplace = (original, packageName, version, dependenciesToLink) => {\n  const isDrupalDependency = packageName.includes(DRUPAL_PROJECT_SEPARATOR);\n  const href = isDrupalDependency\n    ? `${DRUPAL_URL}${packageName.split(DRUPAL_PROJECT_SEPARATOR)[1]}`\n    : `${PACKAGIST_URL}${packageName}`;\n  const packageLink = createLink(href, packageName);\n  const versionLink = createLink(href, version);\n  const closeAndOpenTag = `${closeTag}: ${attrOpenTag}`;\n  const dependencyToLink = dependenciesToLink[packageName];\n\n  if (dependencyToLink && dependencyToLink === version) {\n    return `${attrOpenTag}${packageLink}${closeAndOpenTag}${versionLink}${closeTag}`;\n  }\n\n  return original;\n};\n\nexport default (result, raw) => {\n  const rawParsed = JSON.parse(raw);\n\n  const dependenciesToLink = {\n    ...rawParsed.require,\n    ...rawParsed['require-dev'],\n  };\n\n  return result.value.replace(DEPENDENCY_REGEX, (original, packageName, version) =>\n    handleReplace(original, packageName, version, dependenciesToLink),\n  );\n};\n","import { createLink } from './dependency_linker_util';\n\nconst openTag = '<span class=\"\">';\nconst closeTag = '</span>';\nconst TAG_URL = 'https://sum.golang.org/lookup/';\nconst GO_PACKAGE_URL = 'https://pkg.go.dev/';\n\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: '<span class=\"\">cloud.google.com/Go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=</span>'\n   * Group 1 (packagePath):  'cloud.google.com/Go/bigquery'\n   * Group 2 (version): 'v1.0.1/go.mod'\n   * Group 3 (base64url): 'i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o='\n   */\n  `${openTag}(.*) (v.*) h1:(.*)${closeTag}`,\n  'gm',\n);\n\nconst handleReplace = (packagePath, version, tag) => {\n  const lowercasePath = packagePath.toLowerCase();\n  const packageHref = `${GO_PACKAGE_URL}${lowercasePath}`;\n  const packageLink = createLink(packageHref, packagePath);\n  const tagHref = `${TAG_URL}${lowercasePath}@${version.split('/go.mod')[0]}`;\n  const tagLink = createLink(tagHref, tag);\n\n  return `${openTag}${packageLink} ${version} h1:${tagLink}${closeTag}`;\n};\n\nexport default (result) => {\n  // eslint-disable-next-line max-params\n  return result.value.replace(DEPENDENCY_REGEX, (_, packagePath, version, tag) =>\n    handleReplace(packagePath, version, tag),\n  );\n};\n","import packageJsonLinker from './utils/package_json_linker';\nimport gemspecLinker from './utils/gemspec_linker';\nimport godepsJsonLinker from './utils/godeps_json_linker';\nimport gemfileLinker from './utils/gemfile_linker';\nimport podspecJsonLinker from './utils/podspec_json_linker';\nimport composerJsonLinker from './utils/composer_json_linker';\nimport goSumLinker from './utils/go_sum_linker';\n\nconst DEPENDENCY_LINKERS = {\n  package_json: packageJsonLinker,\n  gemspec: gemspecLinker,\n  godeps_json: godepsJsonLinker,\n  gemfile: gemfileLinker,\n  podspec_json: podspecJsonLinker,\n  composer_json: composerJsonLinker,\n  go_sum: goSumLinker,\n};\n\n/**\n * Highlight.js plugin for generating links to dependencies when viewing dependency files.\n *\n * Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\n *\n * @param {Object} result - an object that represents the highlighted result from Highlight.js\n * @param {String} fileType - a string containing the file type\n * @param {String} rawContent - raw (non-highlighted) file content\n */\nexport default (result, fileType, rawContent) => {\n  if (DEPENDENCY_LINKERS[fileType]) {\n    try {\n      // eslint-disable-next-line no-param-reassign\n      result.value = DEPENDENCY_LINKERS[fileType](result, rawContent);\n    } catch (e) {\n      // Shallowed (do nothing), in this case the original unlinked dependencies will be rendered.\n    }\n  }\n};\n","/**\n * Highlight.js plugin for wrapping lines in the correct classes and attributes.\n * Needed for things like hash highlighting to work.\n *\n * Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\n *\n * @param content - represents the highlighted content\n * @param number - represents the highlighted line number\n * @param language - represents the highlighted language\n */\n\nfunction wrapLine(content, number, language) {\n  return `<div id=\"LC${number}\" lang=\"${language}\" class=\"line\">${content}</div>`;\n}\n\nexport default (result) => {\n  // eslint-disable-next-line no-param-reassign\n  result.value = result.value\n    .split(/\\r?\\n/)\n    .map((content, index) => wrapLine(content, index + 1, result.language))\n    .join('\\n');\n};\n","import wrapChildNodes from '~/vue_shared/components/source_viewer/plugins/wrap_child_nodes';\nimport wrapBidiChars from '~/vue_shared/components/source_viewer/plugins/wrap_bidi_chars';\nimport linkDependencies from '~/vue_shared/components/source_viewer/plugins/link_dependencies';\nimport wrapLines from '~/vue_shared/components/source_viewer/plugins/wrap_lines';\n\nconst HLJS_ON_AFTER_HIGHLIGHT = 'after:highlight';\n\n// Registers our plugins for Highlight.js\n// Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\nexport const highlightPlugins = (fileType, rawContent, shouldWrapLines) => {\n  const plugins = [\n    wrapChildNodes,\n    wrapBidiChars,\n    (result) => linkDependencies(result, fileType, rawContent),\n  ];\n  if (shouldWrapLines) {\n    plugins.push(wrapLines);\n  }\n  return plugins;\n};\n\nexport const registerPlugins = (hljs, plugins) => {\n  if (!plugins) {\n    return;\n  }\n  for (const plugin of plugins) {\n    hljs.addPlugin({ [HLJS_ON_AFTER_HIGHLIGHT]: plugin });\n  }\n};\n","import { GlToast } from '@gitlab/ui';\nimport Vue from 'vue';\n\nVue.use(GlToast);\nconst instance = new Vue();\n\nexport default function showGlobalToast(...args) {\n  return instance.$toast.show(...args);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown-item',{staticClass:\"ci-job-component\",attrs:{\"item\":_vm.item,\"data-testid\":\"ci-job-item\"},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('div',{staticClass:\"-gl-my-2 gl-flex gl-items-center gl-justify-between\"},[_c('job-name-component',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],attrs:{\"title\":_vm.tooltipText,\"name\":_vm.job.name,\"status\":_vm.status,\"data-testid\":\"job-name\"}}),_vm._v(\" \"),(_vm.hasJobAction)?_c('job-action-button',{staticClass:\"gl-ml-6\",attrs:{\"job-id\":_vm.job.id,\"job-action\":_vm.status.action,\"job-name\":_vm.job.name},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')}}}):_vm._e()],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_modal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal } from '@gitlab/ui';\nimport { s__, __, sprintf } from '~/locale';\n\nexport default {\n  name: 'JobActionModal',\n  i18n: {\n    title: s__('PipelineGraph|Are you sure you want to run %{jobName}?'),\n    confirmationText: s__('PipelineGraph|Do you want to continue?'),\n    actionCancel: { text: __('Cancel') },\n  },\n  components: {\n    GlModal,\n  },\n  model: {\n    prop: 'visible',\n    event: 'change',\n  },\n  props: {\n    customMessage: {\n      type: String,\n      required: true,\n    },\n    visible: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    jobName: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    modalText() {\n      return {\n        confirmButton: {\n          text: sprintf(__('Yes, run %{jobName}'), {\n            jobName: this.jobName,\n          }),\n        },\n        message: sprintf(__('Custom confirmation message: %{message}'), {\n          message: this.customMessage,\n        }),\n        title: sprintf(this.$options.i18n.title, {\n          jobName: this.jobName,\n        }),\n      };\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-modal\n    modal-id=\"job-action-modal\"\n    :action-cancel=\"$options.i18n.actionCancel\"\n    :action-primary=\"modalText.confirmButton\"\n    :title=\"modalText.title\"\n    :visible=\"visible\"\n    @primary=\"$emit('confirm')\"\n    @change=\"$emit('change', $event)\"\n  >\n    <div>\n      <p>{{ modalText.message }}</p>\n      <span>{{ $options.i18n.confirmationText }}</span>\n    </div>\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./job_action_modal.vue?vue&type=template&id=0793f7d2\"\nimport script from \"./job_action_modal.vue?vue&type=script&lang=js\"\nexport * from \"./job_action_modal.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-modal',{attrs:{\"modal-id\":\"job-action-modal\",\"action-cancel\":_vm.$options.i18n.actionCancel,\"action-primary\":_vm.modalText.confirmButton,\"title\":_vm.modalText.title,\"visible\":_vm.visible},on:{\"primary\":function($event){return _vm.$emit('confirm')},\"change\":function($event){return _vm.$emit('change', $event)}}},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.modalText.message))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$options.i18n.confirmationText))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton, GlIcon, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { s__ } from '~/locale';\nimport { reportToSentry } from '~/ci/utils';\nimport cancelJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_cancel.mutation.graphql';\nimport playJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_play.mutation.graphql';\nimport retryJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_retry.mutation.graphql';\nimport unscheduleJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_unschedule.mutation.graphql';\nimport JobActionModal from './job_action_modal.vue';\n\nexport const i18n = {\n  errors: {\n    cancelJob: s__('Pipeline|There was a problem canceling the job.'),\n    playJob: s__('Pipeline|There was a problem running the job.'),\n    retryJob: s__('Pipeline|There was a problem running the job again.'),\n    unscheduleJob: s__('Pipeline|There was a problem unscheduling the job.'),\n  },\n};\n\nexport default {\n  name: 'JobActionButton',\n  JOB_ACTIONS: {\n    cancel: {\n      dataName: 'jobCancel',\n      error: i18n.errors.cancelJob,\n      mutation: cancelJobMutation,\n    },\n    play: {\n      dataName: 'jobPlay',\n      error: i18n.errors.playJob,\n      mutation: playJobMutation,\n    },\n    retry: {\n      dataName: 'jobRetry',\n      error: i18n.errors.retryJob,\n      mutation: retryJobMutation,\n    },\n    'time-out': {\n      dataName: 'jobUnschedule',\n      error: i18n.errors.unscheduleJob,\n      mutation: unscheduleJobMutation,\n    },\n  },\n  i18n,\n  components: {\n    GlButton,\n    GlIcon,\n    GlLoadingIcon,\n    JobActionModal,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    jobId: {\n      type: String,\n      required: true,\n    },\n    jobAction: {\n      type: Object,\n      required: true,\n    },\n    jobName: {\n      type: String,\n      required: true,\n    },\n  },\n  emits: ['jobActionExecuted'],\n  data() {\n    return {\n      isLoading: false,\n      showConfirmationModal: false,\n    };\n  },\n  computed: {\n    actionType() {\n      return this.jobAction.icon;\n    },\n    hasConfirmationModal() {\n      return this.jobAction?.confirmationMessage !== null;\n    },\n  },\n  methods: {\n    onActionButtonClick() {\n      if (this.hasConfirmationModal) {\n        this.showConfirmationModal = true;\n      } else {\n        this.executeJobAction();\n      }\n    },\n    async executeJobAction() {\n      try {\n        this.isLoading = true;\n        const {\n          data: {\n            [this.$options.JOB_ACTIONS[this.actionType].dataName]: { errors },\n          },\n        } = await this.$apollo.mutate({\n          mutation: this.$options.JOB_ACTIONS[this.actionType].mutation,\n          variables: { id: this.jobId },\n        });\n        if (errors.length) {\n          reportToSentry(this.$options.name, new Error(errors.join(', ')));\n        }\n      } catch (error) {\n        createAlert({ message: this.$options.JOB_ACTIONS[this.actionType].error });\n        reportToSentry(this.$options.name, error);\n      } finally {\n        this.isLoading = false;\n        this.$emit('jobActionExecuted');\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <gl-button\n      v-gl-tooltip.viewport.left\n      :title=\"jobAction.title\"\n      :aria-label=\"jobAction.title\"\n      :disabled=\"isLoading\"\n      size=\"small\"\n      class=\"gl-h-6 gl-w-6 !gl-rounded-full !gl-p-0\"\n      data-testid=\"ci-action-button\"\n      @click.prevent=\"onActionButtonClick\"\n    >\n      <gl-loading-icon v-if=\"isLoading\" size=\"sm\" class=\"gl-m-2\" />\n      <gl-icon v-else :name=\"jobAction.icon\" :size=\"12\" />\n    </gl-button>\n    <job-action-modal\n      v-if=\"hasConfirmationModal\"\n      v-model=\"showConfirmationModal\"\n      :job-name=\"jobName\"\n      :custom-message=\"jobAction.confirmationMessage\"\n      @confirm=\"executeJobAction\"\n    />\n  </div>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_button.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_action_button.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_dropdown_item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_dropdown_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlDisclosureDropdownItem, GlTooltipDirective } from '@gitlab/ui';\nimport { sprintf } from '~/locale';\nimport { capitalizeFirstCharacter } from '~/lib/utils/text_utility';\nimport delayedJobMixin from '~/ci/mixins/delayed_job_mixin';\nimport JobActionButton from './job_action_button.vue';\nimport JobNameComponent from './job_name_component.vue';\n\nexport default {\n  name: 'JobDropdownItem',\n  components: {\n    JobActionButton,\n    JobNameComponent,\n    GlDisclosureDropdownItem,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [delayedJobMixin],\n  props: {\n    job: {\n      type: Object,\n      required: true,\n    },\n  },\n  emits: ['jobActionExecuted'],\n  computed: {\n    hasJobAction() {\n      return Boolean(this.status?.action?.id);\n    },\n    item() {\n      return {\n        text: this.job.name,\n        href: this.status?.detailsPath || '',\n      };\n    },\n    status() {\n      return this.job.detailedStatus || this.job.status;\n    },\n    tooltipText() {\n      const statusTooltip = capitalizeFirstCharacter(this.status?.tooltip);\n\n      if (this.isDelayedJob) {\n        return sprintf(statusTooltip, { remainingTime: this.remainingTime });\n      }\n      return statusTooltip;\n    },\n  },\n};\n</script>\n<template>\n  <gl-disclosure-dropdown-item :item=\"item\" class=\"ci-job-component\" data-testid=\"ci-job-item\">\n    <template #list-item>\n      <div class=\"-gl-my-2 gl-flex gl-items-center gl-justify-between\">\n        <job-name-component\n          v-gl-tooltip.viewport.left\n          :title=\"tooltipText\"\n          :name=\"job.name\"\n          :status=\"status\"\n          data-testid=\"job-name\"\n        />\n        <job-action-button\n          v-if=\"hasJobAction\"\n          class=\"gl-ml-6\"\n          :job-id=\"job.id\"\n          :job-action=\"status.action\"\n          :job-name=\"job.name\"\n          @jobActionExecuted=\"$emit('jobActionExecuted')\"\n        />\n      </div>\n    </template>\n  </gl-disclosure-dropdown-item>\n</template>\n","import { render, staticRenderFns } from \"./job_action_button.vue?vue&type=template&id=6a2f3078\"\nimport script from \"./job_action_button.vue?vue&type=script&lang=js\"\nexport * from \"./job_action_button.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"gl-h-6 gl-w-6 !gl-rounded-full !gl-p-0\",attrs:{\"title\":_vm.jobAction.title,\"aria-label\":_vm.jobAction.title,\"disabled\":_vm.isLoading,\"size\":\"small\",\"data-testid\":\"ci-action-button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onActionButtonClick.apply(null, arguments)}}},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-m-2\",attrs:{\"size\":\"sm\"}}):_c('gl-icon',{attrs:{\"name\":_vm.jobAction.icon,\"size\":12}})],1),_vm._v(\" \"),(_vm.hasConfirmationModal)?_c('job-action-modal',{attrs:{\"job-name\":_vm.jobName,\"custom-message\":_vm.jobAction.confirmationMessage},on:{\"confirm\":_vm.executeJobAction},model:{value:(_vm.showConfirmationModal),callback:function ($$v) {_vm.showConfirmationModal=$$v},expression:\"showConfirmationModal\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./job_dropdown_item.vue?vue&type=template&id=2ef1d186\"\nimport script from \"./job_dropdown_item.vue?vue&type=script&lang=js\"\nexport * from \"./job_dropdown_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-modal',{ref:\"modal\",attrs:{\"size\":\"lg\",\"visible\":true,\"title\":_vm.title,\"hide-footer\":_vm.showNoFindingMessage,\"content-class\":\"gl-p-5\",\"modal-id\":\"security-finding-modal\",\"data-testid\":\"vulnerability-modal-content\"},on:{\"hidden\":function($event){return _vm.$emit('hidden')}},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [(_vm.isLoading)?_c('gl-skeleton-loader',{attrs:{\"data-testid\":\"title-loading-indicator\",\"width\":400,\"lines\":1}}):_c('h2',{staticClass:\"gl-m-0 gl-text-lg\"},[_vm._v(\"\\n      \"+_vm._s(_vm.title)+\"\\n    \")])]},proxy:true},{key:\"modal-footer\",fn:function(){return [(_vm.isEditingDismissal)?[_c('gl-button',{attrs:{\"data-testid\":\"cancel-editing-dismissal\"},on:{\"click\":_vm.cancelDismissal}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.cancel)+\"\\n      \")]),_vm._v(\" \"),_c('gl-button',{attrs:{\"data-testid\":\"save-editing-dismissal\",\"variant\":\"confirm\",\"loading\":_vm.isUpdatingFindingState},on:{\"click\":_vm.updateDismissal}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.confirmDismissal)+\"\\n      \")])]:[_c('gl-button',{attrs:{\"data-testid\":\"cancel-button\"},on:{\"click\":_vm.closeModal}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.cancel)+\"\\n      \")]),_vm._v(\" \"),(_vm.canAdminVulnerability && _vm.isFindingDismissed)?[_c('gl-button',{attrs:{\"data-testid\":\"undo-dismiss-button\",\"loading\":_vm.isUpdatingFindingState},on:{\"click\":_vm.undoDismissal}},[_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.revertDismissFinding)+\"\\n        \")])]:(_vm.canAdminVulnerability)?[_c('gl-button',{attrs:{\"data-testid\":\"dismiss-button\",\"loading\":_vm.isUpdatingFindingState},on:{\"click\":function($event){_vm.isEditingDismissal = true}}},[_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.dismissFinding)+\"\\n        \")])]:_vm._e()],_vm._v(\" \"),(!_vm.isEditingDismissal)?_c('split-button',{staticClass:\"gl-mr-0\",attrs:{\"buttons\":_vm.footerActionButtons,\"loading\":_vm.isCreatingIssue || _vm.isCreatingJiraIssue || _vm.isCreatingMergeRequest},on:{\"create-merge-request\":_vm.createMergeRequest,\"download-patch\":_vm.downloadPatch,\"create-issue\":_vm.createIssue,\"create-jira-issue\":_vm.createJiraIssue}}):_vm._e(),_vm._v(\" \"),(_vm.isFindingAIResolvable)?_c('resolve-with-ai-button',{attrs:{\"vulnerability-id\":_vm.vulnerabilityId,\"finding-uuid\":_vm.findingUuid,\"merge-request-id\":_vm.mergeRequestId,\"show-public-project-warning\":_vm.isPublicProject},on:{\"resolveStart\":_vm.resetErrorMessage,\"success\":_vm.handleResolveWithAiSuccess,\"error\":_vm.handleResolveWithAiError}}):_vm._e()]},proxy:true}])},[_vm._v(\" \"),(_vm.isLoading)?_c('div',{attrs:{\"data-testid\":\"content-loading-indicator\"}},[_c('gl-skeleton-loader',{attrs:{\"width\":80,\"lines\":1}}),_vm._v(\" \"),_c('gl-skeleton-loader',{attrs:{\"width\":200,\"lines\":1}})],1):(_vm.finding)?[(_vm.showCodeFlowTabs)?_c('gl-tabs',{model:{value:(_vm.tabIndex),callback:function ($$v) {_vm.tabIndex=$$v},expression:\"tabIndex\"}},[_c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.VULNERABILITY_TAB_NAMES.DETAILS}},[_c('vulnerability-finding-modal-details',{staticClass:\"finding-modal-details gl-pt-5\",attrs:{\"vulnerability\":_vm.finding},on:{\"redirectToCodeFlowTab\":function($event){return _vm.redirectToCodeFlowTab()}}})],1),_vm._v(\" \"),_c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.VULNERABILITY_TAB_NAMES.CODE_FLOW}},[_c('vulnerability-code-flow',{attrs:{\"branch-ref\":_vm.branchRef,\"details\":_vm.codeFlowData,\"project-full-path\":_vm.sourceProjectFullPath || _vm.projectFullPath,\"description\":_vm.finding.description,\"description-html\":_vm.finding.descriptionHtml,\"inside-modal\":true}})],1)],1):[_c('vulnerability-finding-modal-details',{attrs:{\"vulnerability\":_vm.finding}})],_vm._v(\" \"),(_vm.isFindingDismissed || _vm.isEditingDismissal)?_c('gl-card',{attrs:{\"data-testid\":\"dismissal-edit-section\"}},[(_vm.dismissalFeedback)?_c('dismissal-note',{attrs:{\"feedback\":_vm.dismissalFeedback,\"is-editing-dismissal\":_vm.isEditingDismissal,\"project\":_vm.dismissalProject,\"show-dismissal-actions\":!_vm.isEditingDismissal},on:{\"editDismissal\":function($event){_vm.isEditingDismissal = true}}}):_vm._e(),_vm._v(\" \"),(!_vm.dismissalFeedback && _vm.isEditingDismissal)?_c('event-item',{attrs:{\"author\":_vm.currentUser,\"icon-name\":\"cancel\",\"icon-class\":\"ci-status-icon-pending\"}}):_vm._e(),_vm._v(\" \"),(_vm.isEditingDismissal)?_c('div',{staticClass:\"gl-border-t gl-mt-5 gl-pt-5\"},[_c('vulnerability-dismissal-reason',{attrs:{\"state\":_vm.dismissalReasonState},model:{value:(_vm.dismissalReason),callback:function ($$v) {_vm.dismissalReason=$$v},expression:\"dismissalReason\"}}),_vm._v(\" \"),_c('gl-form-group',{staticClass:\"gl-mb-0\",attrs:{\"label\":_vm.$options.i18n.dismissalComment,\"label-for\":\"dismissal-comment\",\"invalid-feedback\":_vm.$options.i18n.dismissalInvalidFeedback,\"state\":_vm.dismissalCommentState}},[_c('gl-form-input',{attrs:{\"id\":\"dismissal-comment\",\"data-testid\":\"dismissal-comment\",\"placeholder\":_vm.$options.i18n.dismissCommentPlaceholder},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if(!$event.metaKey)return null;return _vm.updateDismissal.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;$event.stopPropagation();$event.preventDefault();return _vm.handleCommentEsc.apply(null, arguments)}]},model:{value:(_vm.dismissalComment),callback:function ($$v) {_vm.dismissalComment=$$v},expression:\"dismissalComment\"}})],1)],1):_vm._e()],1):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.showErrorMessage)?_c('gl-alert',{attrs:{\"variant\":\"danger\",\"dismissible\":false,\"data-testid\":\"error-alert\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.errorMessage || _vm.$options.i18n.fetchErrorMessage)+\"\\n  \")]):(_vm.showNoFindingMessage)?_c('gl-alert',{attrs:{\"variant\":\"warning\",\"dismissible\":false,\"data-testid\":\"no-finding-alert\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.noFindingErrorMessage},scopedSlots:_vm._u([{key:\"bold\",fn:function({ content }){return [_c('strong',[_vm._v(_vm._s(content))])]}}])})],1):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dismissal_note.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dismissal_note.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlLink } from '@gitlab/ui';\nimport EventItem from 'ee/vue_shared/security_reports/components/event_item.vue';\nimport { s__ } from '~/locale';\nimport { DISMISSAL_REASONS } from 'ee/vulnerabilities/constants';\nimport { getDismissalNoteEventText } from './helpers';\n\nexport default {\n  components: {\n    EventItem,\n    GlSprintf,\n    GlLink,\n  },\n  props: {\n    feedback: {\n      type: Object,\n      required: true,\n    },\n    project: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    isEditingDismissal: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showDismissalActions: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    pipeline() {\n      return this.feedback?.pipeline;\n    },\n    dismissalReason() {\n      return DISMISSAL_REASONS[this.feedback.dismissalReason?.toLowerCase()];\n    },\n    eventText() {\n      const { project, pipeline } = this;\n\n      const hasPipeline = Boolean(pipeline?.path && pipeline?.id);\n      const hasProject = Boolean(project?.url && project?.value);\n      const hasDismissalReason = Boolean(this.dismissalReason);\n\n      return getDismissalNoteEventText({ hasProject, hasPipeline, hasDismissalReason });\n    },\n    commentDetails() {\n      return this.feedback.comment_details;\n    },\n    actionButtons() {\n      return [\n        {\n          iconName: 'pencil',\n          onClick: () => this.$emit('editDismissal'),\n          title: s__('SecurityReports|Edit dismissal'),\n        },\n      ];\n    },\n    showFeedbackActions() {\n      return this.showDismissalActions && !this.commentDetails;\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <event-item\n      :action-buttons=\"actionButtons\"\n      :author=\"feedback.author\"\n      :created-at=\"feedback.created_at\"\n      :show-action-buttons=\"showFeedbackActions\"\n      icon-name=\"cancel\"\n      icon-class=\"ci-status-icon-pending\"\n    >\n      <div v-if=\"feedback.created_at\">\n        <gl-sprintf :message=\"eventText\">\n          <template v-if=\"pipeline\" #pipelineLink>\n            <gl-link :href=\"pipeline.path\" data-testid=\"pipeline-link\">#{{ pipeline.id }}</gl-link>\n          </template>\n          <template v-if=\"project\" #projectLink>\n            <gl-link :href=\"project.url\" data-testid=\"project-link\">{{ project.value }}</gl-link>\n          </template>\n          <template #status=\"{ content }\">{{ content }}</template>\n          <template v-if=\"dismissalReason\" #dismissalReason>\n            {{ dismissalReason }}\n          </template>\n        </gl-sprintf>\n      </div>\n    </event-item>\n    <template v-if=\"commentDetails && !isEditingDismissal\">\n      <hr class=\"gl-my-5\" />\n      <event-item\n        :action-buttons=\"actionButtons\"\n        :author=\"commentDetails.comment_author\"\n        :created-at=\"commentDetails.comment_timestamp\"\n        :show-action-buttons=\"showDismissalActions\"\n        icon-name=\"comment\"\n        icon-class=\"ci-status-icon-pending\"\n      >\n        {{ commentDetails.comment }}\n      </event-item>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./dismissal_note.vue?vue&type=template&id=153c73c9\"\nimport script from \"./dismissal_note.vue?vue&type=script&lang=js\"\nexport * from \"./dismissal_note.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('event-item',{attrs:{\"action-buttons\":_vm.actionButtons,\"author\":_vm.feedback.author,\"created-at\":_vm.feedback.created_at,\"show-action-buttons\":_vm.showFeedbackActions,\"icon-name\":\"cancel\",\"icon-class\":\"ci-status-icon-pending\"}},[(_vm.feedback.created_at)?_c('div',[_c('gl-sprintf',{attrs:{\"message\":_vm.eventText},scopedSlots:_vm._u([(_vm.pipeline)?{key:\"pipelineLink\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.pipeline.path,\"data-testid\":\"pipeline-link\"}},[_vm._v(\"#\"+_vm._s(_vm.pipeline.id))])]},proxy:true}:null,(_vm.project)?{key:\"projectLink\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.project.url,\"data-testid\":\"project-link\"}},[_vm._v(_vm._s(_vm.project.value))])]},proxy:true}:null,{key:\"status\",fn:function({ content }){return [_vm._v(_vm._s(content))]}},(_vm.dismissalReason)?{key:\"dismissalReason\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.dismissalReason)+\"\\n        \")]},proxy:true}:null],null,true)})],1):_vm._e()]),_vm._v(\" \"),(_vm.commentDetails && !_vm.isEditingDismissal)?[_c('hr',{staticClass:\"gl-my-5\"}),_vm._v(\" \"),_c('event-item',{attrs:{\"action-buttons\":_vm.actionButtons,\"author\":_vm.commentDetails.comment_author,\"created-at\":_vm.commentDetails.comment_timestamp,\"show-action-buttons\":_vm.showDismissalActions,\"icon-name\":\"comment\",\"icon-class\":\"ci-status-icon-pending\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.commentDetails.comment)+\"\\n    \")])]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./split_button.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./split_button.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlButtonGroup,\n  GlButton,\n  GlCollapsibleListbox,\n  GlBadge,\n  GlTooltipDirective as GlTooltip,\n} from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport { visitUrl } from '~/lib/utils/url_utility';\n\nexport default {\n  components: {\n    GlButtonGroup,\n    GlButton,\n    GlCollapsibleListbox,\n    GlBadge,\n  },\n  directives: {\n    GlTooltip,\n  },\n  props: {\n    buttons: {\n      type: Array,\n      required: true,\n    },\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      selectedButtonIndex: 0,\n    };\n  },\n  computed: {\n    selectedButton() {\n      return this.buttons[this.selectedButtonIndex];\n    },\n    items() {\n      return this.buttons.map((button, index) => ({ ...button, value: index }));\n    },\n    category() {\n      const { category } = this.selectedButton;\n\n      if (category) {\n        return category;\n      }\n\n      if (this.buttons.length > 1) {\n        return 'primary';\n      }\n\n      return 'secondary';\n    },\n  },\n  methods: {\n    handleClick() {\n      if (this.selectedButton.href) {\n        visitUrl(this.selectedButton.href, true);\n      } else {\n        this.$emit(this.selectedButton.action);\n      }\n    },\n  },\n  i18n: {\n    changeAction: __('Change action'),\n  },\n};\n</script>\n\n<template>\n  <gl-button-group v-if=\"selectedButton\">\n    <gl-button\n      :key=\"selectedButton.name\"\n      v-gl-tooltip\n      :title=\"selectedButton.tooltip\"\n      :aria-label=\"selectedButton.tooltip\"\n      variant=\"confirm\"\n      :category=\"category\"\n      :href=\"selectedButton.href\"\n      :icon=\"selectedButton.icon\"\n      :loading=\"loading\"\n      :data-testid=\"`${selectedButton.action}-button`\"\n      @click=\"handleClick\"\n    >\n      {{ selectedButton.name }}\n      <gl-badge v-if=\"selectedButton.badge\" class=\"gl-ml-1\" variant=\"info\">\n        {{ selectedButton.badge }}\n      </gl-badge>\n    </gl-button>\n    <gl-collapsible-listbox\n      v-if=\"buttons.length > 1\"\n      v-model=\"selectedButtonIndex\"\n      variant=\"confirm\"\n      text-sr-only\n      :toggle-text=\"$options.i18n.changeAction\"\n      :disabled=\"loading\"\n      :items=\"items\"\n    >\n      <template #list-item=\"{ item }\">\n        <div :data-testid=\"`${item.action}-button`\">\n          <strong>\n            {{ item.name }}\n          </strong>\n          <p class=\"gl-m-0\">\n            {{ item.tagline }}\n            <gl-badge v-if=\"item.badge\" variant=\"info\">{{ item.badge }}</gl-badge>\n          </p>\n        </div>\n      </template>\n    </gl-collapsible-listbox>\n  </gl-button-group>\n</template>\n","import { render, staticRenderFns } from \"./split_button.vue?vue&type=template&id=a33b5002\"\nimport script from \"./split_button.vue?vue&type=script&lang=js\"\nexport * from \"./split_button.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.selectedButton)?_c('gl-button-group',[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],key:_vm.selectedButton.name,attrs:{\"title\":_vm.selectedButton.tooltip,\"aria-label\":_vm.selectedButton.tooltip,\"variant\":\"confirm\",\"category\":_vm.category,\"href\":_vm.selectedButton.href,\"icon\":_vm.selectedButton.icon,\"loading\":_vm.loading,\"data-testid\":`${_vm.selectedButton.action}-button`},on:{\"click\":_vm.handleClick}},[_vm._v(\"\\n    \"+_vm._s(_vm.selectedButton.name)+\"\\n    \"),(_vm.selectedButton.badge)?_c('gl-badge',{staticClass:\"gl-ml-1\",attrs:{\"variant\":\"info\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.selectedButton.badge)+\"\\n    \")]):_vm._e()],1),_vm._v(\" \"),(_vm.buttons.length > 1)?_c('gl-collapsible-listbox',{attrs:{\"variant\":\"confirm\",\"text-sr-only\":\"\",\"toggle-text\":_vm.$options.i18n.changeAction,\"disabled\":_vm.loading,\"items\":_vm.items},scopedSlots:_vm._u([{key:\"list-item\",fn:function({ item }){return [_c('div',{attrs:{\"data-testid\":`${item.action}-button`}},[_c('strong',[_vm._v(\"\\n          \"+_vm._s(item.name)+\"\\n        \")]),_vm._v(\" \"),_c('p',{staticClass:\"gl-m-0\"},[_vm._v(\"\\n          \"+_vm._s(item.tagline)+\"\\n          \"),(item.badge)?_c('gl-badge',{attrs:{\"variant\":\"info\"}},[_vm._v(_vm._s(item.badge))]):_vm._e()],1)])]}}],null,false,2234215008),model:{value:(_vm.selectedButtonIndex),callback:function ($$v) {_vm.selectedButtonIndex=$$v},expression:\"selectedButtonIndex\"}}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_dismissal_reason.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_dismissal_reason.vue?vue&type=script&lang=js\"","<script>\nimport { GlFormGroup, GlCollapsibleListbox } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { DISMISSAL_REASONS } from 'ee/vulnerabilities/constants';\nimport HelpPopover from '~/vue_shared/components/help_popover.vue';\n\nexport default {\n  components: {\n    GlFormGroup,\n    GlCollapsibleListbox,\n    HelpPopover,\n  },\n  inject: ['dismissalDescriptions'],\n  props: {\n    value: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    state: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    toggleText() {\n      return this.value ? DISMISSAL_REASONS[this.value] : this.$options.i18n.selectAReason;\n    },\n    isInvalid() {\n      return !this.value && this.state === false;\n    },\n  },\n  i18n: {\n    dismissalReason: s__('SecurityReports|Dismissal reason (required)'),\n    selectAReason: s__('SecurityReports|Select dismissal reason'),\n    fieldRequired: s__('SecurityReports|A dismissal reason is required.'),\n  },\n  items: Object.entries(DISMISSAL_REASONS).map(([value, text]) => ({\n    value,\n    text,\n  })),\n};\n</script>\n\n<template>\n  <gl-form-group\n    label-for=\"dismissal-reason\"\n    :invalid-feedback=\"$options.i18n.fieldRequired\"\n    :state=\"!isInvalid\"\n  >\n    <template #label>\n      {{ $options.i18n.dismissalReason }}\n      <help-popover>\n        <div v-for=\"reason in $options.items\" :key=\"reason.value\">\n          <strong>{{ reason.text }}</strong>\n          <p>{{ dismissalDescriptions[reason.value] }}</p>\n        </div>\n      </help-popover>\n    </template>\n    <gl-collapsible-listbox\n      id=\"dismissal-reason\"\n      data-testid=\"dismissal-reason\"\n      :items=\"$options.items\"\n      :selected=\"value\"\n      :toggle-text=\"toggleText\"\n      :variant=\"isInvalid ? 'danger' : 'default'\"\n      category=\"secondary\"\n      @select=\"$emit('input', $event)\"\n    />\n  </gl-form-group>\n</template>\n","import { render, staticRenderFns } from \"./vulnerability_dismissal_reason.vue?vue&type=template&id=a214879c\"\nimport script from \"./vulnerability_dismissal_reason.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_dismissal_reason.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-form-group',{attrs:{\"label-for\":\"dismissal-reason\",\"invalid-feedback\":_vm.$options.i18n.fieldRequired,\"state\":!_vm.isInvalid},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.dismissalReason)+\"\\n    \"),_c('help-popover',_vm._l((_vm.$options.items),function(reason){return _c('div',{key:reason.value},[_c('strong',[_vm._v(_vm._s(reason.text))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.dismissalDescriptions[reason.value]))])])}),0)]},proxy:true}])},[_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"id\":\"dismissal-reason\",\"data-testid\":\"dismissal-reason\",\"items\":_vm.$options.items,\"selected\":_vm.value,\"toggle-text\":_vm.toggleText,\"variant\":_vm.isInvalid ? 'danger' : 'default',\"category\":\"secondary\"},on:{\"select\":function($event){return _vm.$emit('input', $event)}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./solution_card_graphql.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./solution_card_graphql.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlCard } from '@gitlab/ui';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { renderGFM } from '~/behaviors/markdown/render_gfm';\n\nexport default {\n  directives: {\n    SafeHtml,\n  },\n  components: { GlIcon, GlCard },\n  props: {\n    solutionHtml: {\n      type: String,\n      default: null,\n      required: false,\n    },\n    solution: {\n      type: String,\n      default: '',\n      required: false,\n    },\n    remediation: {\n      type: Object,\n      default: null,\n      required: false,\n    },\n    mergeRequest: {\n      type: Object,\n      default: null,\n      required: false,\n    },\n  },\n  computed: {\n    solutionText() {\n      return this.solution || this.remediation?.summary;\n    },\n    showCreateMergeRequestMessage() {\n      return !this.hasMr && this.remediation?.diff?.length > 0;\n    },\n    hasMr() {\n      return Boolean(this.mergeRequest?.id);\n    },\n  },\n  mounted() {\n    renderGFM(this.$refs.markdownContent);\n  },\n};\n</script>\n\n<template>\n  <gl-card v-if=\"solutionHtml || solutionText\" class=\"gl-my-6\">\n    <template #default>\n      <div class=\"gl-flex gl-items-start\">\n        <div class=\"gl-flex gl-items-center gl-justify-end gl-pl-0 gl-pr-5\">\n          <gl-icon class=\"gl-mr-3\" name=\"bulb\" />\n          <strong data-testid=\"solution-title\">{{ s__('ciReport|Solution') }}:</strong>\n        </div>\n        <span\n          v-if=\"solutionHtml\"\n          ref=\"markdownContent\"\n          v-safe-html=\"solutionHtml\"\n          class=\"md\"\n          data-testid=\"solution-html\"\n        ></span>\n        <span v-else data-testid=\"solution-text\">{{ solutionText }}</span>\n      </div>\n    </template>\n    <template v-if=\"showCreateMergeRequestMessage\" #footer>\n      <em class=\"gl-text-subtle\" data-testid=\"merge-request-solution\">\n        {{\n          s__(\n            'ciReport|Create a merge request to implement this solution, or download and apply the patch manually.',\n          )\n        }}\n      </em>\n    </template>\n  </gl-card>\n</template>\n","import { render, staticRenderFns } from \"./solution_card_graphql.vue?vue&type=template&id=a27f2b5a\"\nimport script from \"./solution_card_graphql.vue?vue&type=script&lang=js\"\nexport * from \"./solution_card_graphql.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.solutionHtml || _vm.solutionText)?_c('gl-card',{staticClass:\"gl-my-6\",scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-items-start\"},[_c('div',{staticClass:\"gl-flex gl-items-center gl-justify-end gl-pl-0 gl-pr-5\"},[_c('gl-icon',{staticClass:\"gl-mr-3\",attrs:{\"name\":\"bulb\"}}),_vm._v(\" \"),_c('strong',{attrs:{\"data-testid\":\"solution-title\"}},[_vm._v(_vm._s(_vm.s__('ciReport|Solution'))+\":\")])],1),_vm._v(\" \"),(_vm.solutionHtml)?_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.solutionHtml),expression:\"solutionHtml\"}],ref:\"markdownContent\",staticClass:\"md\",attrs:{\"data-testid\":\"solution-html\"}}):_c('span',{attrs:{\"data-testid\":\"solution-text\"}},[_vm._v(_vm._s(_vm.solutionText))])])]},proxy:true},(_vm.showCreateMergeRequestMessage)?{key:\"footer\",fn:function(){return [_c('em',{staticClass:\"gl-text-subtle\",attrs:{\"data-testid\":\"merge-request-solution\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.s__(\n          'ciReport|Create a merge request to implement this solution, or download and apply the patch manually.',\n        ))+\"\\n    \")])]},proxy:true}:null],null,true)}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_request_note_graphql.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_request_note_graphql.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlLink } from '@gitlab/ui';\nimport EventItem from 'ee/vue_shared/security_reports/components/event_item.vue';\nimport { __ } from '~/locale';\n\nexport default {\n  components: {\n    EventItem,\n    GlSprintf,\n    GlLink,\n  },\n  props: {\n    mergeRequest: {\n      type: Object,\n      required: false,\n      default: undefined,\n    },\n    project: {\n      type: Object,\n      required: false,\n      default: undefined,\n    },\n  },\n  computed: {\n    eventText() {\n      return this.project\n        ? __('Created merge request %{mergeRequestLink} at %{projectLink}')\n        : __('Created merge request %{mergeRequestLink}');\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"mergeRequest\" class=\"card gl-my-6\">\n    <event-item\n      :author=\"mergeRequest.author\"\n      :created-at=\"mergeRequest.createdAt\"\n      icon-name=\"merge-request\"\n      class=\"card-body\"\n    >\n      <gl-sprintf :message=\"eventText\">\n        <template #mergeRequestLink>\n          <gl-link :href=\"mergeRequest.webUrl\" data-testid=\"merge-request-link\">\n            #{{ mergeRequest.iid }}\n          </gl-link>\n        </template>\n        <template v-if=\"project\" #projectLink>\n          <gl-link :href=\"project.webUrl\" data-testid=\"project-link\">\n            {{ project.nameWithNamespace }}\n          </gl-link>\n        </template>\n      </gl-sprintf>\n    </event-item>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./merge_request_note_graphql.vue?vue&type=template&id=55c66189\"\nimport script from \"./merge_request_note_graphql.vue?vue&type=script&lang=js\"\nexport * from \"./merge_request_note_graphql.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.mergeRequest)?_c('div',{staticClass:\"card gl-my-6\"},[_c('event-item',{staticClass:\"card-body\",attrs:{\"author\":_vm.mergeRequest.author,\"created-at\":_vm.mergeRequest.createdAt,\"icon-name\":\"merge-request\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.eventText},scopedSlots:_vm._u([{key:\"mergeRequestLink\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.mergeRequest.webUrl,\"data-testid\":\"merge-request-link\"}},[_vm._v(\"\\n          #\"+_vm._s(_vm.mergeRequest.iid)+\"\\n        \")])]},proxy:true},(_vm.project)?{key:\"projectLink\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.project.webUrl,\"data-testid\":\"project-link\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.project.nameWithNamespace)+\"\\n        \")])]},proxy:true}:null],null,true)})],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_section_graphql.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_section_graphql.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapse, GlIcon } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport ReportItem, { GRAPHQL_TYPENAMES } from './report_item_graphql.vue';\n\nexport default {\n  i18n: {\n    heading: s__('Vulnerability|Evidence'),\n  },\n  components: {\n    GlCollapse,\n    GlIcon,\n    ReportItem,\n  },\n  props: {\n    reportItems: {\n      type: Array,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      showSection: true,\n    };\n  },\n  computed: {\n    itemsToRender() {\n      return this.reportItems.filter(({ type }) => GRAPHQL_TYPENAMES.includes(type));\n    },\n  },\n  methods: {\n    toggleShowSection() {\n      this.showSection = !this.showSection;\n    },\n  },\n};\n</script>\n<template>\n  <section v-if=\"itemsToRender.length > 0\">\n    <header\n      class=\"gl-font-size-h3 gl-inline-flex gl-cursor-pointer gl-items-center\"\n      @click=\"toggleShowSection\"\n    >\n      <gl-icon name=\"chevron-lg-right\" class=\"gl-mr-2\" :class=\"{ 'gl-rotate-90': showSection }\" />\n      <h3 class=\"!gl-my-0 gl-text-lg\">\n        {{ $options.i18n.heading }}\n      </h3>\n    </header>\n    <gl-collapse :visible=\"showSection\">\n      <div class=\"generic-report-container\" data-testid=\"reports\">\n        <div\n          v-for=\"(item, index) in itemsToRender\"\n          :key=\"index\"\n          class=\"generic-report-row\"\n          :data-testid=\"`report-row-${item.type}`\"\n        >\n          <strong class=\"generic-report-column\">{{ item.name || item.type }}</strong>\n          <div class=\"generic-report-column\" data-testid=\"reportContent\">\n            <report-item :item=\"item\" :data-testid=\"`report-item-${item.type}`\" />\n          </div>\n        </div>\n      </div>\n    </gl-collapse>\n  </section>\n</template>\n","import { render, staticRenderFns } from \"./report_section_graphql.vue?vue&type=template&id=3afdee78\"\nimport script from \"./report_section_graphql.vue?vue&type=script&lang=js\"\nexport * from \"./report_section_graphql.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.itemsToRender.length > 0)?_c('section',[_c('header',{staticClass:\"gl-font-size-h3 gl-inline-flex gl-cursor-pointer gl-items-center\",on:{\"click\":_vm.toggleShowSection}},[_c('gl-icon',{staticClass:\"gl-mr-2\",class:{ 'gl-rotate-90': _vm.showSection },attrs:{\"name\":\"chevron-lg-right\"}}),_vm._v(\" \"),_c('h3',{staticClass:\"!gl-my-0 gl-text-lg\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.heading)+\"\\n    \")])],1),_vm._v(\" \"),_c('gl-collapse',{attrs:{\"visible\":_vm.showSection}},[_c('div',{staticClass:\"generic-report-container\",attrs:{\"data-testid\":\"reports\"}},_vm._l((_vm.itemsToRender),function(item,index){return _c('div',{key:index,staticClass:\"generic-report-row\",attrs:{\"data-testid\":`report-row-${item.type}`}},[_c('strong',{staticClass:\"generic-report-column\"},[_vm._v(_vm._s(item.name || item.type))]),_vm._v(\" \"),_c('div',{staticClass:\"generic-report-column\",attrs:{\"data-testid\":\"reportContent\"}},[_c('report-item',{attrs:{\"item\":item,\"data-testid\":`report-item-${item.type}`}})],1)])}),0)])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { s__ } from '~/locale';\n\nconst SAST = 'SAST';\nconst DEPENDENCY_SCANNING = 'DEPENDENCY_SCANNING';\nconst CONTAINER_SCANNING = 'CONTAINER_SCANNING';\nconst DAST = 'DAST';\nconst SECRET_DETECTION = 'SECRET_DETECTION';\nconst COVERAGE_FUZZING = 'COVERAGE_FUZZING';\nconst API_FUZZING = 'API_FUZZING';\nconst CLUSTER_IMAGE_SCANNING = 'CLUSTER_IMAGE_SCANNING';\nconst GENERIC = 'GENERIC';\n\n// This is a capture of all possible values of the GraphQL type `VulnerabilityReportType`\nexport const REPORT_TYPES = [\n  SAST,\n  DEPENDENCY_SCANNING,\n  CONTAINER_SCANNING,\n  DAST,\n  SECRET_DETECTION,\n  COVERAGE_FUZZING,\n  API_FUZZING,\n  CLUSTER_IMAGE_SCANNING,\n  GENERIC,\n];\n\n/**\n * Note: once https://gitlab.com/gitlab-org/gitlab/-/issues/376022 is implemented, this mapping (and possibly the REPORT_TYPE array) can be removed.\n */\nexport const REPORT_TYPES_TO_HUMAN_READABLE = {\n  SAST: s__('ciReport|SAST'),\n  DEPENDENCY_SCANNING: s__('ciReport|Dependency Scanning'),\n  CONTAINER_SCANNING: s__('ciReport|Container Scanning'),\n  DAST: s__('ciReport|DAST'),\n  SECRET_DETECTION: s__('ciReport|Secret Detection'),\n  COVERAGE_FUZZING: s__('ciReport|Coverage Fuzzing'),\n  API_FUZZING: s__('ciReport|API Fuzzing'),\n  CLUSTER_IMAGE_SCANNING: s__('ciReport|Cluster Image Scanning'),\n  GENERIC: s__('ciReport|Generic Report'),\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[(_vm.heading)?_c('h2',{staticClass:\"gl-mt-0 gl-text-lg\"},[_vm._v(_vm._s(_vm.heading))]):_vm._e(),_vm._v(\" \"),_vm._t(\"default\"),_vm._v(\" \"),(_vm.$scopedSlots.list)?_c('ul',{staticClass:\"gl-list-none gl-space-y-3 gl-p-0\"},[_vm._t(\"list\")],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./details_section.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./details_section.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  props: {\n    /**\n     * The section's heading - gets rendered within a `h2` tag\n     *\n     * @type {string}\n     */\n    heading: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n};\n</script>\n\n<template>\n  <section>\n    <h2 v-if=\"heading\" class=\"gl-mt-0 gl-text-lg\">{{ heading }}</h2>\n    <slot name=\"default\"></slot>\n    <ul v-if=\"$scopedSlots.list\" class=\"gl-list-none gl-space-y-3 gl-p-0\">\n      <slot name=\"list\"></slot>\n    </ul>\n  </section>\n</template>\n","import { render, staticRenderFns } from \"./details_section.vue?vue&type=template&id=43d87bb3\"\nimport script from \"./details_section.vue?vue&type=script&lang=js\"\nexport * from \"./details_section.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./details_section_list_item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./details_section_list_item.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  /**\n   * The item's label - gets rendered within a `strong` tag\n   *\n   * @type {string}\n   */\n  props: {\n    label: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <li>\n    <strong class=\"gl-font-bold\">{{ label }}</strong>\n    <slot></slot>\n  </li>\n</template>\n","import { render, staticRenderFns } from \"./details_section_list_item.vue?vue&type=template&id=43f8cd5e\"\nimport script from \"./details_section_list_item.vue?vue&type=script&lang=js\"\nexport * from \"./details_section_list_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',[_c('strong',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(_vm.label))]),_vm._v(\" \"),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","<!-- eslint-disable vue/multi-word-component-names -->\n<script>\nimport { GlLink, GlSprintf, GlFriendlyWrap, GlButton } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { renderGFM } from '~/behaviors/markdown/render_gfm';\nimport StatusBadge from 'ee/vue_shared/security_reports/components/status_badge.vue';\nimport SeverityBadge from 'ee/vue_shared/security_reports/components/severity_badge.vue';\nimport FalsePositiveAlert from 'ee/vulnerabilities/components/false_positive_alert.vue';\nimport CodeBlock from '~/vue_shared/components/code_block.vue';\nimport GenericReportSection from 'ee/vulnerabilities/components/generic_report/report_section_graphql.vue';\nimport VulnerabilityTraining from 'ee/vulnerabilities/components/vulnerability_training.vue';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { getHttpString } from 'ee/vue_shared/security_reports/components/helpers';\nimport {\n  SUPPORTING_MESSAGE_TYPES,\n  VULNERABILITY_TRAINING_HEADING,\n} from 'ee/vulnerabilities/constants';\nimport glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { VULNERABILITY_DETAIL_CODE_FLOWS } from 'ee/security_dashboard/constants';\nimport { REPORT_TYPES_TO_HUMAN_READABLE } from './constants';\nimport DetailsSection from './details_section.vue';\nimport DetailsSectionListItem from './details_section_list_item.vue';\n\nexport default {\n  directives: { SafeHtml },\n  i18n: {\n    descriptionSectionHeading: s__('Vulnerability|Description'),\n    severityLabel: s__('Vulnerability|Severity:'),\n    stateLabel: s__('Vulnerability|Status:'),\n    projectLabel: s__('Vulnerability|Project:'),\n    toolLabel: s__('Vulnerability|Tool:'),\n    scannerLabel: s__('Vulnerability|Scanner:'),\n    evidenceLabel: s__('Vulnerability|Evidence:'),\n    locationHeading: s__('Vulnerability|Location'),\n    locationFileLabel: s__('Vulnerability|File:'),\n    locationImageLabel: s__('Vulnerability|Image:'),\n    locationOperatingSystemLabel: s__('Vulnerability|Namespace:'),\n    locationCrashTypeLabel: s__('Vulnerability|Crash type:'),\n    locationCrashAddressLabel: s__('Vulnerability|Crash address:'),\n    locationStacktraceSnippetLabel: s__('Vulnerability|Stacktrace snippet:'),\n    locationVulnerableClassLabel: s__('Vulnerability|Vulnerable class:'),\n    locationVulnerableMethodLabel: s__('Vulnerability|Vulnerable method:'),\n    linksSectionHeading: s__('Vulnerability|Links'),\n    identifiersSectionHeading: s__('Vulnerability|Identifiers'),\n    assetsSectionHeading: s__('Vulnerability|Reproduction Assets'),\n    requestResponseHeading: s__('Vulnerability|Request/Response'),\n    requestLabel: s__('Vulnerability|Sent request:'),\n    responseLabel: s__('Vulnerability|Actual response:'),\n    recordedResponseLabel: s__('Vulnerability|Unmodified response:'),\n    additionalInfoHeading: s__('Vulnerability|Additional Info'),\n    assertLabel: s__('Vulnerability|Assert:'),\n    requestUrlLabel: s__('Vulnerability|URL:'),\n    VULNERABILITY_TRAINING_HEADING,\n    codeFlowButton: s__('Vulnerability|View code flow'),\n  },\n  components: {\n    VulnerabilityTraining,\n    GlLink,\n    GlSprintf,\n    GlFriendlyWrap,\n    StatusBadge,\n    SeverityBadge,\n    DetailsSection,\n    DetailsSectionListItem,\n    FalsePositiveAlert,\n    GenericReportSection,\n    CodeBlock,\n    GlButton,\n  },\n  mixins: [glFeatureFlagMixin()],\n  inheritAttrs: false,\n  props: {\n    description: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    descriptionHtml: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    state: {\n      type: String,\n      required: true,\n    },\n    severity: {\n      type: String,\n      required: true,\n    },\n    project: {\n      type: Object,\n      required: true,\n    },\n    evidence: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    location: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    reportType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    links: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    identifiers: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    scanner: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    assets: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    falsePositive: {\n      type: Boolean,\n      required: true,\n    },\n    details: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n  },\n  data() {\n    return {\n      showTraining: false,\n    };\n  },\n  computed: {\n    humanReadableReportType() {\n      return REPORT_TYPES_TO_HUMAN_READABLE[this.reportType];\n    },\n    lineNumber() {\n      const startLine = this.location?.startLine ?? null;\n      const endLine = this.location?.endLine ?? null;\n\n      if (startLine === null && endLine === null) {\n        return '';\n      }\n\n      if (startLine < endLine) {\n        return `${startLine}-${endLine}`;\n      }\n\n      return startLine;\n    },\n    file() {\n      const { blobPath, file } = this.location || {};\n      const { lineNumber } = this;\n\n      const name = file ? `${file}${lineNumber && `:${lineNumber}`}` : '';\n      let url = blobPath || '';\n\n      // if the blobPath already contains a hash, we don't want to add another one\n      if (lineNumber && !url.includes('#')) {\n        url += `#L${lineNumber}`;\n      }\n\n      return {\n        url,\n        name,\n      };\n    },\n    requestString() {\n      const { method, url, headers } = this.evidence?.request || {};\n\n      return method && url && headers?.length ? getHttpString(this.evidence?.request) : '';\n    },\n    requestUrl() {\n      return this.evidence?.request?.url || this.fileLocation;\n    },\n    fileLocation() {\n      const { location: { hostname = '', path = '' } = {} } = this;\n\n      return hostname + path;\n    },\n    responseString() {\n      const { statusCode, headers } = this.evidence?.response || {};\n\n      return statusCode && headers?.length ? getHttpString(this.evidence?.response) : '';\n    },\n    assertion() {\n      return this.evidence?.source?.name;\n    },\n    evidenceSummary() {\n      return this.evidence?.summary;\n    },\n    recordedResponseString() {\n      const recordedResponse = this.evidence?.supportingMessages?.find(\n        (msg) => msg.name === SUPPORTING_MESSAGE_TYPES.RECORDED,\n      )?.response;\n      return getHttpString(recordedResponse);\n    },\n    projectFullPath() {\n      return this.project?.fullPath;\n    },\n    shouldShowLocationSection() {\n      const { file, location = {} } = this;\n      const hasLocationData = (field) => location[field];\n\n      return (\n        file.name ||\n        [\n          'image',\n          'operatingSystem',\n          'crashType',\n          'crashAddress',\n          'stacktraceSnippet',\n          'vulnerableClass',\n          'vulnerableMethod',\n        ].some(hasLocationData)\n      );\n    },\n    locationSectionListItems() {\n      const testId = (field) => `location-${field}-list-item`;\n      const items = [\n        {\n          label: this.$options.i18n.locationImageLabel,\n          testId: testId('image'),\n          content: this.location.image,\n        },\n        {\n          label: this.$options.i18n.locationOperatingSystemLabel,\n          testId: testId('operating-system'),\n          content: this.location.operatingSystem,\n        },\n        {\n          label: this.$options.i18n.locationCrashTypeLabel,\n          testId: testId('crash-type'),\n          content: this.location.crashType,\n        },\n        {\n          label: this.$options.i18n.locationCrashAddressLabel,\n          testId: testId('crash-address'),\n          content: this.location.crashAddress,\n        },\n        {\n          label: this.$options.i18n.locationVulnerableClassLabel,\n          testId: testId('vulnerable-class'),\n          content: this.location.vulnerableClass,\n        },\n        {\n          label: this.$options.i18n.locationVulnerableMethodLabel,\n          testId: testId('vulnerable-method'),\n          content: this.location.vulnerableMethod,\n        },\n      ];\n      return items.filter((item) => item.content);\n    },\n    showCodeFlowButton() {\n      const vulnDetailCodeFlow = this.details.find(\n        (detail) => detail.type === VULNERABILITY_DETAIL_CODE_FLOWS,\n      );\n      return vulnDetailCodeFlow?.items?.length > 0;\n    },\n  },\n  mounted() {\n    renderGFM(this.$refs.description);\n  },\n  methods: {\n    handleShowTraining(showVulnerabilityTraining) {\n      this.showTraining = showVulnerabilityTraining;\n    },\n  },\n};\n</script>\n\n<template>\n  <article class=\"gl-flex gl-flex-col gl-gap-3\">\n    <false-positive-alert v-if=\"falsePositive\" class=\"gl-mb-4\" />\n\n    <details-section\n      v-if=\"description || descriptionHtml\"\n      :heading=\"$options.i18n.descriptionSectionHeading\"\n      data-testid=\"description-section\"\n    >\n      <div\n        v-if=\"descriptionHtml\"\n        ref=\"description\"\n        v-safe-html=\"descriptionHtml\"\n        data-testid=\"description-html\"\n      ></div>\n      <p v-else>{{ description }}</p>\n    </details-section>\n\n    <details-section data-testid=\"main-section\">\n      <template #list>\n        <details-section-list-item\n          v-if=\"state\"\n          :label=\"$options.i18n.stateLabel\"\n          data-testid=\"state-list-item\"\n        >\n          <status-badge :state=\"state.toLowerCase()\" />\n        </details-section-list-item>\n\n        <details-section-list-item\n          :label=\"$options.i18n.severityLabel\"\n          data-testid=\"severity-list-item\"\n        >\n          <severity-badge class=\"gl-ml-2 gl-inline-block\" :severity=\"severity\" />\n        </details-section-list-item>\n\n        <details-section-list-item\n          :label=\"$options.i18n.projectLabel\"\n          data-testid=\"project-list-item\"\n        >\n          <gl-link :href=\"project.webUrl\">{{ project.name }}</gl-link>\n        </details-section-list-item>\n\n        <details-section-list-item\n          v-if=\"humanReadableReportType\"\n          :label=\"$options.i18n.toolLabel\"\n          data-testid=\"report-type-list-item\"\n        >\n          {{ humanReadableReportType }}\n        </details-section-list-item>\n\n        <details-section-list-item\n          v-if=\"scanner\"\n          :label=\"$options.i18n.scannerLabel\"\n          data-testid=\"scanner-list-item\"\n        >\n          <gl-sprintf\n            v-if=\"scanner.version\"\n            :message=\"s__('Vulnerability|%{scannerName} (version %{scannerVersion})')\"\n          >\n            <template #scannerName>{{ scanner.name }}</template>\n            <template #scannerVersion>{{ scanner.version }}</template>\n          </gl-sprintf>\n          <template v-else>{{ scanner.name }}</template>\n        </details-section-list-item>\n\n        <details-section-list-item\n          v-if=\"requestUrl\"\n          :label=\"$options.i18n.requestUrlLabel\"\n          data-testid=\"request-url-list-item\"\n        >\n          <gl-link :href=\"requestUrl\" target=\"_blank\">\n            <gl-friendly-wrap :text=\"requestUrl\" />\n          </gl-link>\n        </details-section-list-item>\n\n        <details-section-list-item\n          v-if=\"evidenceSummary\"\n          :label=\"$options.i18n.evidenceLabel\"\n          data-testid=\"evidence-list-item\"\n        >\n          {{ evidenceSummary }}\n        </details-section-list-item>\n      </template>\n    </details-section>\n\n    <details-section\n      v-if=\"shouldShowLocationSection\"\n      :heading=\"$options.i18n.locationHeading\"\n      data-testid=\"location-section\"\n    >\n      <template #list>\n        <details-section-list-item\n          v-if=\"file.name\"\n          :label=\"$options.i18n.locationFileLabel\"\n          data-testid=\"location-file-list-item\"\n        >\n          <gl-link v-if=\"file.url\" :href=\"file.url\" target=\"_blank\">{{ file.name }}</gl-link>\n          <span v-else>{{ file.name }}</span>\n        </details-section-list-item>\n        <details-section-list-item\n          v-for=\"item in locationSectionListItems\"\n          :key=\"item.testId\"\n          :label=\"item.label\"\n          :data-testid=\"item.testId\"\n        >\n          {{ item.content }}\n        </details-section-list-item>\n        <details-section-list-item\n          v-if=\"location.stacktraceSnippet\"\n          :label=\"$options.i18n.locationStacktraceSnippetLabel\"\n          data-testid=\"location-stack-trace-snippet-list-item\"\n        >\n          <code-block :code=\"location.stacktraceSnippet\" max-height=\"225px\" />\n        </details-section-list-item>\n      </template>\n    </details-section>\n\n    <details-section\n      v-if=\"links.length\"\n      :heading=\"$options.i18n.linksSectionHeading\"\n      data-testid=\"links-section\"\n    >\n      <ul class=\"gl-p-0\">\n        <li v-for=\"link in links\" :key=\"link.url\" class=\"gl-list-inside\">\n          <gl-link :href=\"link.url\">\n            {{ link.name || link.url }}\n          </gl-link>\n        </li>\n      </ul>\n    </details-section>\n\n    <div v-if=\"showCodeFlowButton\" class=\"gl-mb-6\">\n      <gl-button\n        category=\"primary\"\n        variant=\"default\"\n        data-testid=\"show-code-flow\"\n        @click=\"$emit('redirectToCodeFlowTab')\"\n      >\n        {{ $options.i18n.codeFlowButton }}\n      </gl-button>\n    </div>\n\n    <details-section\n      v-if=\"identifiers.length\"\n      :heading=\"$options.i18n.identifiersSectionHeading\"\n      data-testid=\"identifiers-section\"\n    >\n      <ul class=\"gl-p-0\">\n        <li v-for=\"identifier in identifiers\" :key=\"identifier.name\" class=\"gl-list-inside\">\n          <gl-link v-if=\"identifier.url\" :href=\"identifier.url\">\n            {{ identifier.name }}\n          </gl-link>\n          <template v-else>{{ identifier.name }}</template>\n        </li>\n      </ul>\n    </details-section>\n\n    <details-section\n      v-if=\"requestString || responseString || recordedResponseString\"\n      :heading=\"$options.i18n.requestResponseHeading\"\n      data-testid=\"request-response-section\"\n    >\n      <template #list>\n        <details-section-list-item\n          v-if=\"requestString\"\n          :label=\"$options.i18n.requestLabel\"\n          data-testid=\"request-item\"\n        >\n          <code-block class=\"gl-mt-3\" :code=\"requestString\" max-height=\"225px\" />\n        </details-section-list-item>\n\n        <details-section-list-item\n          v-if=\"recordedResponseString\"\n          :label=\"$options.i18n.recordedResponseLabel\"\n          data-testid=\"recorded-response-item\"\n        >\n          <code-block class=\"gl-mt-3\" :code=\"recordedResponseString\" max-height=\"225px\" />\n        </details-section-list-item>\n\n        <details-section-list-item\n          v-if=\"responseString\"\n          :label=\"$options.i18n.responseLabel\"\n          data-testid=\"response-item\"\n        >\n          <code-block class=\"gl-mt-3\" :code=\"responseString\" max-height=\"225px\" />\n        </details-section-list-item>\n      </template>\n    </details-section>\n\n    <details-section\n      v-if=\"assertion\"\n      :heading=\"$options.i18n.additionalInfoHeading\"\n      data-testid=\"additional-info-section\"\n    >\n      <template #list>\n        <details-section-list-item :label=\"$options.i18n.assertLabel\" data-testid=\"assert-item\">\n          {{ assertion }}\n        </details-section-list-item>\n      </template>\n    </details-section>\n\n    <details-section\n      v-if=\"assets.length\"\n      :heading=\"$options.i18n.assetsSectionHeading\"\n      data-testid=\"assets-section\"\n    >\n      <ul class=\"gl-p-0\">\n        <li v-for=\"asset in assets\" :key=\"asset.name\" class=\"gl-list-inside\">\n          <gl-link v-if=\"asset.url\" :href=\"asset.url\">\n            {{ asset.name }}\n          </gl-link>\n          <template v-else>{{ asset.name }}</template>\n        </li>\n      </ul>\n    </details-section>\n\n    <generic-report-section :report-items=\"details\" />\n\n    <details-section\n      v-if=\"identifiers.length > 0 && projectFullPath\"\n      v-show=\"showTraining\"\n      :heading=\"$options.i18n.VULNERABILITY_TRAINING_HEADING.title\"\n      data-testid=\"training\"\n    >\n      <vulnerability-training\n        :project-full-path=\"projectFullPath\"\n        :identifiers=\"identifiers\"\n        :file=\"location.file\"\n        class=\"gl-mb-6\"\n        @show-vulnerability-training=\"handleShowTraining\"\n      />\n    </details-section>\n  </article>\n</template>\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=05ce7b2a\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('article',{staticClass:\"gl-flex gl-flex-col gl-gap-3\"},[(_vm.falsePositive)?_c('false-positive-alert',{staticClass:\"gl-mb-4\"}):_vm._e(),_vm._v(\" \"),(_vm.description || _vm.descriptionHtml)?_c('details-section',{attrs:{\"heading\":_vm.$options.i18n.descriptionSectionHeading,\"data-testid\":\"description-section\"}},[(_vm.descriptionHtml)?_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.descriptionHtml),expression:\"descriptionHtml\"}],ref:\"description\",attrs:{\"data-testid\":\"description-html\"}}):_c('p',[_vm._v(_vm._s(_vm.description))])]):_vm._e(),_vm._v(\" \"),_c('details-section',{attrs:{\"data-testid\":\"main-section\"},scopedSlots:_vm._u([{key:\"list\",fn:function(){return [(_vm.state)?_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.stateLabel,\"data-testid\":\"state-list-item\"}},[_c('status-badge',{attrs:{\"state\":_vm.state.toLowerCase()}})],1):_vm._e(),_vm._v(\" \"),_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.severityLabel,\"data-testid\":\"severity-list-item\"}},[_c('severity-badge',{staticClass:\"gl-ml-2 gl-inline-block\",attrs:{\"severity\":_vm.severity}})],1),_vm._v(\" \"),_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.projectLabel,\"data-testid\":\"project-list-item\"}},[_c('gl-link',{attrs:{\"href\":_vm.project.webUrl}},[_vm._v(_vm._s(_vm.project.name))])],1),_vm._v(\" \"),(_vm.humanReadableReportType)?_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.toolLabel,\"data-testid\":\"report-type-list-item\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.humanReadableReportType)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.scanner)?_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.scannerLabel,\"data-testid\":\"scanner-list-item\"}},[(_vm.scanner.version)?_c('gl-sprintf',{attrs:{\"message\":_vm.s__('Vulnerability|%{scannerName} (version %{scannerVersion})')},scopedSlots:_vm._u([{key:\"scannerName\",fn:function(){return [_vm._v(_vm._s(_vm.scanner.name))]},proxy:true},{key:\"scannerVersion\",fn:function(){return [_vm._v(_vm._s(_vm.scanner.version))]},proxy:true}],null,false,1679275529)}):[_vm._v(_vm._s(_vm.scanner.name))]],2):_vm._e(),_vm._v(\" \"),(_vm.requestUrl)?_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.requestUrlLabel,\"data-testid\":\"request-url-list-item\"}},[_c('gl-link',{attrs:{\"href\":_vm.requestUrl,\"target\":\"_blank\"}},[_c('gl-friendly-wrap',{attrs:{\"text\":_vm.requestUrl}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.evidenceSummary)?_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.evidenceLabel,\"data-testid\":\"evidence-list-item\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.evidenceSummary)+\"\\n      \")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_vm.shouldShowLocationSection)?_c('details-section',{attrs:{\"heading\":_vm.$options.i18n.locationHeading,\"data-testid\":\"location-section\"},scopedSlots:_vm._u([{key:\"list\",fn:function(){return [(_vm.file.name)?_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.locationFileLabel,\"data-testid\":\"location-file-list-item\"}},[(_vm.file.url)?_c('gl-link',{attrs:{\"href\":_vm.file.url,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.file.name))]):_c('span',[_vm._v(_vm._s(_vm.file.name))])],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.locationSectionListItems),function(item){return _c('details-section-list-item',{key:item.testId,attrs:{\"label\":item.label,\"data-testid\":item.testId}},[_vm._v(\"\\n        \"+_vm._s(item.content)+\"\\n      \")])}),_vm._v(\" \"),(_vm.location.stacktraceSnippet)?_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.locationStacktraceSnippetLabel,\"data-testid\":\"location-stack-trace-snippet-list-item\"}},[_c('code-block',{attrs:{\"code\":_vm.location.stacktraceSnippet,\"max-height\":\"225px\"}})],1):_vm._e()]},proxy:true}],null,false,353882795)}):_vm._e(),_vm._v(\" \"),(_vm.links.length)?_c('details-section',{attrs:{\"heading\":_vm.$options.i18n.linksSectionHeading,\"data-testid\":\"links-section\"}},[_c('ul',{staticClass:\"gl-p-0\"},_vm._l((_vm.links),function(link){return _c('li',{key:link.url,staticClass:\"gl-list-inside\"},[_c('gl-link',{attrs:{\"href\":link.url}},[_vm._v(\"\\n          \"+_vm._s(link.name || link.url)+\"\\n        \")])],1)}),0)]):_vm._e(),_vm._v(\" \"),(_vm.showCodeFlowButton)?_c('div',{staticClass:\"gl-mb-6\"},[_c('gl-button',{attrs:{\"category\":\"primary\",\"variant\":\"default\",\"data-testid\":\"show-code-flow\"},on:{\"click\":function($event){return _vm.$emit('redirectToCodeFlowTab')}}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.codeFlowButton)+\"\\n    \")])],1):_vm._e(),_vm._v(\" \"),(_vm.identifiers.length)?_c('details-section',{attrs:{\"heading\":_vm.$options.i18n.identifiersSectionHeading,\"data-testid\":\"identifiers-section\"}},[_c('ul',{staticClass:\"gl-p-0\"},_vm._l((_vm.identifiers),function(identifier){return _c('li',{key:identifier.name,staticClass:\"gl-list-inside\"},[(identifier.url)?_c('gl-link',{attrs:{\"href\":identifier.url}},[_vm._v(\"\\n          \"+_vm._s(identifier.name)+\"\\n        \")]):[_vm._v(_vm._s(identifier.name))]],2)}),0)]):_vm._e(),_vm._v(\" \"),(_vm.requestString || _vm.responseString || _vm.recordedResponseString)?_c('details-section',{attrs:{\"heading\":_vm.$options.i18n.requestResponseHeading,\"data-testid\":\"request-response-section\"},scopedSlots:_vm._u([{key:\"list\",fn:function(){return [(_vm.requestString)?_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.requestLabel,\"data-testid\":\"request-item\"}},[_c('code-block',{staticClass:\"gl-mt-3\",attrs:{\"code\":_vm.requestString,\"max-height\":\"225px\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.recordedResponseString)?_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.recordedResponseLabel,\"data-testid\":\"recorded-response-item\"}},[_c('code-block',{staticClass:\"gl-mt-3\",attrs:{\"code\":_vm.recordedResponseString,\"max-height\":\"225px\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.responseString)?_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.responseLabel,\"data-testid\":\"response-item\"}},[_c('code-block',{staticClass:\"gl-mt-3\",attrs:{\"code\":_vm.responseString,\"max-height\":\"225px\"}})],1):_vm._e()]},proxy:true}],null,false,2354217209)}):_vm._e(),_vm._v(\" \"),(_vm.assertion)?_c('details-section',{attrs:{\"heading\":_vm.$options.i18n.additionalInfoHeading,\"data-testid\":\"additional-info-section\"},scopedSlots:_vm._u([{key:\"list\",fn:function(){return [_c('details-section-list-item',{attrs:{\"label\":_vm.$options.i18n.assertLabel,\"data-testid\":\"assert-item\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.assertion)+\"\\n      \")])]},proxy:true}],null,false,4097085632)}):_vm._e(),_vm._v(\" \"),(_vm.assets.length)?_c('details-section',{attrs:{\"heading\":_vm.$options.i18n.assetsSectionHeading,\"data-testid\":\"assets-section\"}},[_c('ul',{staticClass:\"gl-p-0\"},_vm._l((_vm.assets),function(asset){return _c('li',{key:asset.name,staticClass:\"gl-list-inside\"},[(asset.url)?_c('gl-link',{attrs:{\"href\":asset.url}},[_vm._v(\"\\n          \"+_vm._s(asset.name)+\"\\n        \")]):[_vm._v(_vm._s(asset.name))]],2)}),0)]):_vm._e(),_vm._v(\" \"),_c('generic-report-section',{attrs:{\"report-items\":_vm.details}}),_vm._v(\" \"),(_vm.identifiers.length > 0 && _vm.projectFullPath)?_c('details-section',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTraining),expression:\"showTraining\"}],attrs:{\"heading\":_vm.$options.i18n.VULNERABILITY_TRAINING_HEADING.title,\"data-testid\":\"training\"}},[_c('vulnerability-training',{staticClass:\"gl-mb-6\",attrs:{\"project-full-path\":_vm.projectFullPath,\"identifiers\":_vm.identifiers,\"file\":_vm.location.file},on:{\"show-vulnerability-training\":_vm.handleShowTraining}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issue_note_graphql.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./issue_note_graphql.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlLink } from '@gitlab/ui';\nimport EventItem from 'ee/vue_shared/security_reports/components/event_item.vue';\nimport { __ } from '~/locale';\n\nexport default {\n  components: {\n    EventItem,\n    GlSprintf,\n    GlLink,\n  },\n  props: {\n    issueLinks: {\n      type: Array,\n      required: true,\n    },\n    project: {\n      type: Object,\n      required: false,\n      default: undefined,\n    },\n  },\n  computed: {\n    createdIssue() {\n      return this.issueLinks.find(({ linkType }) => linkType === 'CREATED')?.issue;\n    },\n    eventText() {\n      return this.project\n        ? __('Created issue %{issueLink} at %{projectLink}')\n        : __('Created issue %{issueLink}');\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"createdIssue\" class=\"card gl-my-6\">\n    <event-item\n      :author=\"createdIssue.author\"\n      :created-at=\"createdIssue.createdAt\"\n      icon-name=\"issues\"\n      class=\"card-body\"\n    >\n      <gl-sprintf :message=\"eventText\">\n        <template #issueLink>\n          <gl-link :href=\"createdIssue.webUrl\" data-testid=\"issue-link\">\n            #{{ createdIssue.iid }}\n          </gl-link>\n        </template>\n        <template v-if=\"project\" #projectLink>\n          <gl-link :href=\"project.webUrl\" data-testid=\"project-link\">\n            {{ project.nameWithNamespace }}\n          </gl-link>\n        </template>\n      </gl-sprintf>\n    </event-item>\n  </div>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_finding_modal_details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_finding_modal_details.vue?vue&type=script&lang=js\"","<script>\nimport SolutionCard from 'ee/vue_shared/security_reports/components/solution_card_graphql.vue';\nimport MergeRequestNote from 'ee/vue_shared/security_reports/components/merge_request_note_graphql.vue';\nimport VulnerabilityDetailsGraphql from 'ee/security_dashboard/components/shared/vulnerability_details_graphql/index.vue';\nimport IssueNote from 'ee/vue_shared/security_reports/components/issue_note_graphql.vue';\n\nexport default {\n  name: 'VulnerabilityFindingModalDetails',\n  components: {\n    IssueNote,\n    MergeRequestNote,\n    SolutionCard,\n    VulnerabilityDetailsGraphql,\n  },\n  props: {\n    vulnerability: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    remediation() {\n      return this.vulnerability?.remediations?.[0];\n    },\n    mergeRequest() {\n      return this.vulnerability?.vulnerability?.mergeRequest;\n    },\n    issueLinks() {\n      return this.vulnerability?.issueLinks?.nodes || [];\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"vulnerability\">\n    <vulnerability-details-graphql\n      v-bind=\"vulnerability\"\n      @redirectToCodeFlowTab=\"$emit('redirectToCodeFlowTab')\"\n    />\n\n    <solution-card\n      :solution-html=\"vulnerability.solutionHtml\"\n      :solution=\"vulnerability.solution\"\n      :remediation=\"remediation\"\n      :merge-request=\"mergeRequest\"\n    />\n\n    <issue-note :issue-links=\"issueLinks\" :project=\"vulnerability.project\" />\n    <merge-request-note :merge-request=\"mergeRequest\" :project=\"vulnerability.project\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./issue_note_graphql.vue?vue&type=template&id=654d4d3e\"\nimport script from \"./issue_note_graphql.vue?vue&type=script&lang=js\"\nexport * from \"./issue_note_graphql.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.createdIssue)?_c('div',{staticClass:\"card gl-my-6\"},[_c('event-item',{staticClass:\"card-body\",attrs:{\"author\":_vm.createdIssue.author,\"created-at\":_vm.createdIssue.createdAt,\"icon-name\":\"issues\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.eventText},scopedSlots:_vm._u([{key:\"issueLink\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.createdIssue.webUrl,\"data-testid\":\"issue-link\"}},[_vm._v(\"\\n          #\"+_vm._s(_vm.createdIssue.iid)+\"\\n        \")])]},proxy:true},(_vm.project)?{key:\"projectLink\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.project.webUrl,\"data-testid\":\"project-link\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.project.nameWithNamespace)+\"\\n        \")])]},proxy:true}:null],null,true)})],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./vulnerability_finding_modal_details.vue?vue&type=template&id=6914767a\"\nimport script from \"./vulnerability_finding_modal_details.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_finding_modal_details.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.vulnerability)?_c('div',[_c('vulnerability-details-graphql',_vm._b({on:{\"redirectToCodeFlowTab\":function($event){return _vm.$emit('redirectToCodeFlowTab')}}},'vulnerability-details-graphql',_vm.vulnerability,false)),_vm._v(\" \"),_c('solution-card',{attrs:{\"solution-html\":_vm.vulnerability.solutionHtml,\"solution\":_vm.vulnerability.solution,\"remediation\":_vm.remediation,\"merge-request\":_vm.mergeRequest}}),_vm._v(\" \"),_c('issue-note',{attrs:{\"issue-links\":_vm.issueLinks,\"project\":_vm.vulnerability.project}}),_vm._v(\" \"),_c('merge-request-note',{attrs:{\"merge-request\":_vm.mergeRequest,\"project\":_vm.vulnerability.project}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resolve_with_ai_info_popover.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resolve_with_ai_info_popover.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert, GlPopover, GlSprintf, GlLink } from '@gitlab/ui';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nexport default {\n  components: {\n    GlAlert,\n    GlPopover,\n    GlSprintf,\n    GlLink,\n  },\n  props: {\n    target: {\n      type: String,\n      required: true,\n    },\n    showPublicProjectWarning: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  confidentialMRHelpPagePath: helpPagePath('/user/application_security/vulnerabilities/index', {\n    anchor: 'vulnerability-resolution',\n  }),\n};\n</script>\n\n<template>\n  <gl-popover :target=\"target\">\n    <p class=\"gl-mb-0\">\n      {{ s__('AI|Use GitLab Duo to generate a merge request with a suggested solution.') }}\n    </p>\n    <gl-alert\n      v-if=\"showPublicProjectWarning\"\n      variant=\"warning\"\n      :dismissible=\"false\"\n      class=\"gl-mt-3 gl-text-sm\"\n    >\n      <gl-sprintf\n        :message=\"\n          s__(\n            'AI|Creating an MR from a public project will publicly expose the vulnerability and offered resolution. To create the MR privately, see %{linkStart} Resolving a vulnerability privately%{linkEnd}.',\n          )\n        \"\n      >\n        <template #link=\"{ content }\">\n          <gl-link :href=\"$options.confidentialMRHelpPagePath\" target=\"_blank\">{{\n            content\n          }}</gl-link>\n        </template>\n      </gl-sprintf>\n    </gl-alert>\n  </gl-popover>\n</template>\n","import { render, staticRenderFns } from \"./resolve_with_ai_info_popover.vue?vue&type=template&id=727ab0a2\"\nimport script from \"./resolve_with_ai_info_popover.vue?vue&type=script&lang=js\"\nexport * from \"./resolve_with_ai_info_popover.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-popover',{attrs:{\"target\":_vm.target}},[_c('p',{staticClass:\"gl-mb-0\"},[_vm._v(\"\\n    \"+_vm._s(_vm.s__('AI|Use GitLab Duo to generate a merge request with a suggested solution.'))+\"\\n  \")]),_vm._v(\" \"),(_vm.showPublicProjectWarning)?_c('gl-alert',{staticClass:\"gl-mt-3 gl-text-sm\",attrs:{\"variant\":\"warning\",\"dismissible\":false}},[_c('gl-sprintf',{attrs:{\"message\":_vm.s__(\n          'AI|Creating an MR from a public project will publicly expose the vulnerability and offered resolution. To create the MR privately, see %{linkStart} Resolving a vulnerability privately%{linkEnd}.',\n        )},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.confidentialMRHelpPagePath,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}],null,false,3957889908)})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { v4 as uuidv4 } from 'uuid';\nimport aiResponseSubscription from 'ee/graphql_shared/subscriptions/ai_completion_response.subscription.graphql';\nimport aiResolveVulnerability from 'ee/vulnerabilities/graphql/ai_resolve_vulnerability.mutation.graphql';\nimport securityFindingCreateVulnerability from 'ee/vulnerabilities/graphql/security_finding_create_vulnerability.mutation.graphql';\nimport ResolveWithAiInfoPopover from 'ee/security_dashboard/components/pipeline/resolve_with_ai_info_popover.vue';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport {\n  TYPENAME_USER,\n  TYPENAME_MERGE_REQUEST,\n  TYPENAME_VULNERABILITY,\n} from '~/graphql_shared/constants';\n\nconst CLIENT_SUBSCRIPTION_ID = uuidv4();\n\nexport default {\n  components: {\n    GlButton,\n    ResolveWithAiInfoPopover,\n  },\n  props: {\n    mergeRequestId: {\n      type: [String, Number],\n      required: true,\n    },\n    findingUuid: {\n      type: String,\n      required: true,\n    },\n    // some findings don't have a vulnerability yet, so this is not required\n    vulnerabilityId: {\n      type: [String, Number],\n      required: false,\n      default: null,\n    },\n    showPublicProjectWarning: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      isResolving: false,\n      createdVulnerabilityId: null,\n    };\n  },\n  apollo: {\n    $subscribe: {\n      // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n      aiCompletionResponse: {\n        query: aiResponseSubscription,\n        skip: true, // We manually start and stop the subscription.\n        variables() {\n          return {\n            resourceId: this.vulnerabilityGraphqlId,\n            userId: convertToGraphQLId(TYPENAME_USER, gon.current_user_id),\n            clientSubscriptionId: CLIENT_SUBSCRIPTION_ID,\n          };\n        },\n        async result({ data }) {\n          const { errors, content } = data.aiCompletionResponse || {};\n\n          // Once the subscription is ready, we will receive a null aiCompletionResponse. Once we get this, it's safe to\n          // start the AI request mutation. Otherwise, it's possible that backend will send the AI response before the\n          // subscription is ready, and the AI response will be lost.\n          if (!data.aiCompletionResponse) {\n            this.resolveVulnerabilityWithAi();\n          } else if (errors?.length) {\n            this.handleError(errors[0]);\n          } else if (content) {\n            this.stopResolveWithAISubscription();\n            this.$emit('success', content);\n          }\n        },\n        error(e) {\n          this.handleError(e?.message || e.toString());\n        },\n      },\n    },\n  },\n  computed: {\n    mergeRequestGraphQLId() {\n      return convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.mergeRequestId);\n    },\n    vulnerabilityGraphqlId() {\n      if (this.createdVulnerabilityId) {\n        return this.createdVulnerabilityId;\n      }\n      if (this.vulnerabilityId) {\n        return convertToGraphQLId(TYPENAME_VULNERABILITY, this.vulnerabilityId);\n      }\n\n      return null;\n    },\n  },\n  methods: {\n    createVulnerabilityForFinding() {\n      return this.$apollo\n        .mutate({\n          mutation: securityFindingCreateVulnerability,\n          variables: {\n            uuid: this.findingUuid,\n          },\n        })\n        .then(({ data }) => {\n          this.createdVulnerabilityId = data.securityFindingCreateVulnerability.vulnerability.id;\n        })\n        .catch((e) => {\n          this.handleError(e);\n        });\n    },\n    resolveVulnerabilityWithAi() {\n      this.$apollo\n        .mutate({\n          mutation: aiResolveVulnerability,\n          variables: {\n            clientSubscriptionId: CLIENT_SUBSCRIPTION_ID,\n            resourceId: this.vulnerabilityGraphqlId,\n            vulnerableMergeRequestId: this.mergeRequestGraphQLId,\n          },\n        })\n        .then(({ data }) => {\n          const error = data.aiAction.errors[0];\n          if (error) {\n            this.handleError(error);\n          }\n        })\n        .catch((e) => {\n          this.handleError(e.message);\n        });\n    },\n    startResolveWithAISubscription() {\n      this.$apollo.subscriptions.aiCompletionResponse.start();\n    },\n    stopResolveWithAISubscription() {\n      this.isResolving = false;\n      this.$apollo.subscriptions.aiCompletionResponse.stop();\n    },\n    async handleClick() {\n      this.isResolving = true;\n      // if there is no vulnerability then kick of the mutation to create one\n      if (!this.vulnerabilityId) {\n        await this.createVulnerabilityForFinding();\n      }\n      this.startResolveWithAISubscription();\n      this.$emit('resolveStart');\n    },\n    handleError(e) {\n      // The full error handling will be done in https://gitlab.com/gitlab-org/gitlab/-/issues/481792\n      this.stopResolveWithAISubscription();\n      this.$emit('error', e);\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-button\n    id=\"resolve-with-ai-button\"\n    data-testid=\"resolve-with-ai\"\n    variant=\"confirm\"\n    icon=\"tanuki-ai\"\n    :loading=\"isResolving\"\n    @click=\"handleClick\"\n  >\n    {{ s__('AI|Resolve with AI') }}\n    <resolve-with-ai-info-popover\n      v-if=\"!isResolving\"\n      target=\"resolve-with-ai-button\"\n      :show-public-project-warning=\"showPublicProjectWarning\"\n    />\n  </gl-button>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resolve_with_ai_button.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resolve_with_ai_button.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./resolve_with_ai_button.vue?vue&type=template&id=d12a1632\"\nimport script from \"./resolve_with_ai_button.vue?vue&type=script&lang=js\"\nexport * from \"./resolve_with_ai_button.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-button',{attrs:{\"id\":\"resolve-with-ai-button\",\"data-testid\":\"resolve-with-ai\",\"variant\":\"confirm\",\"icon\":\"tanuki-ai\",\"loading\":_vm.isResolving},on:{\"click\":_vm.handleClick}},[_vm._v(\"\\n  \"+_vm._s(_vm.s__('AI|Resolve with AI'))+\"\\n  \"),(!_vm.isResolving)?_c('resolve-with-ai-info-popover',{attrs:{\"target\":\"resolve-with-ai-button\",\"show-public-project-warning\":_vm.showPublicProjectWarning}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport {\n  GlAlert,\n  GlSprintf,\n  GlCard,\n  GlButton,\n  GlFormGroup,\n  GlFormInput,\n  GlModal,\n  GlSkeletonLoader,\n  GlTabs,\n  GlTab,\n} from '@gitlab/ui';\nimport { __, s__ } from '~/locale';\nimport download from '~/lib/utils/downloader';\nimport { visitUrl } from '~/lib/utils/url_utility';\nimport { fetchPolicies } from '~/lib/graphql';\nimport {\n  CREATE_MR_ACTION,\n  DOWNLOAD_PATCH_ACTION,\n  VULNERABILITY_TAB_NAMES,\n} from 'ee/vulnerabilities/constants';\nimport DismissalNote from 'ee/vue_shared/security_reports/components/dismissal_note.vue';\nimport SplitButton from 'ee/vue_shared/security_reports/components/split_button.vue';\nimport EventItem from 'ee/vue_shared/security_reports/components/event_item.vue';\nimport securityReportFindingQuery from 'ee/security_dashboard/graphql/queries/security_report_finding.query.graphql';\nimport vulnerabilityExternalIssuesQuery from 'ee/security_dashboard/graphql/queries/vulnerability_external_issues.query.graphql';\nimport dismissFindingMutation from 'ee/security_dashboard/graphql/mutations/dismiss_finding.mutation.graphql';\nimport createMergeRequestMutation from 'ee/security_dashboard/graphql/mutations/finding_create_merge_request.mutation.graphql';\nimport revertFindingToDetectedMutation from 'ee/security_dashboard/graphql/mutations/revert_finding_to_detected.mutation.graphql';\nimport createIssueMutation from 'ee/security_dashboard/graphql/mutations/finding_create_issue.mutation.graphql';\nimport createJiraIssueMutation from 'ee/security_dashboard/graphql/mutations/finding_create_jira_issue.mutation.graphql';\nimport VulnerabilityCodeFlow from 'ee/vue_shared/components/code_flow/vulnerability_code_flow.vue';\nimport glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport glAbilitiesMixin from '~/vue_shared/mixins/gl_abilities_mixin';\nimport { VULNERABILITY_DETAIL_CODE_FLOWS } from 'ee/security_dashboard/constants';\nimport VulnerabilityDismissalReason from './vulnerability_dismissal_reason.vue';\nimport VulnerabilityFindingModalDetails from './vulnerability_finding_modal_details.vue';\nimport ResolveWithAiButton from './resolve_with_ai_button.vue';\n\nconst CREATE_ISSUE_ACTION = {\n  name: __('Create issue'),\n  tagline: s__('SecurityReports|Investigate this vulnerability by creating an issue'),\n  action: 'create-issue',\n};\n\nconst CREATE_JIRA_ISSUE_ACTION = {\n  name: s__('SecurityReports|Create Jira issue'),\n  tagline: s__('SecurityReports|Investigate this vulnerability by creating an issue'),\n  action: 'create-jira-issue',\n  icon: 'external-link',\n};\n\nexport const STATE_DISMISSED = 'DISMISSED';\nexport const STATE_DETECTED = 'DETECTED';\nexport const STATE_RESOLVED = 'RESOLVED';\nexport const VULNERABILITY_POLLING_INTERVAL = 1000;\n\nexport default {\n  components: {\n    VulnerabilityCodeFlow,\n    VulnerabilityFindingModalDetails,\n    DismissalNote,\n    EventItem,\n    GlAlert,\n    GlSprintf,\n    GlCard,\n    GlButton,\n    GlFormGroup,\n    GlFormInput,\n    GlModal,\n    GlSkeletonLoader,\n    SplitButton,\n    VulnerabilityDismissalReason,\n    GlTabs,\n    GlTab,\n    ResolveWithAiButton,\n  },\n  mixins: [glAbilitiesMixin(), glFeatureFlagMixin()],\n  props: {\n    findingUuid: {\n      type: String,\n      required: true,\n    },\n    pipelineIid: {\n      type: Number,\n      required: true,\n    },\n    branchRef: {\n      type: String,\n      required: true,\n    },\n    projectFullPath: {\n      type: String,\n      required: true,\n    },\n    sourceProjectFullPath: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    showAiResolution: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    mergeRequestId: {\n      type: Number,\n      required: false,\n      default: null,\n    },\n  },\n  data() {\n    return {\n      finding: null,\n      tabIndex: 0,\n      projectId: null,\n      hasFindingFetchError: false,\n      errorMessage: '',\n      isUpdatingFindingState: false,\n      isEditingDismissal: false,\n      isCreatingMergeRequest: false,\n      isCreatingIssue: false,\n      isCreatingJiraIssue: false,\n      dismissalReason: null,\n      dismissalComment: '',\n      dismissalReasonState: null,\n      dismissalCommentState: null,\n    };\n  },\n  apollo: {\n    finding: {\n      query: securityReportFindingQuery,\n      fetchPolicy: fetchPolicies.NETWORK_ONLY,\n      variables() {\n        return this.queryVariables;\n      },\n      update(data) {\n        return data.project?.pipeline?.securityReportFinding;\n      },\n      result({ data = {} }) {\n        const { project } = data;\n        const stateComment = project?.pipeline?.securityReportFinding?.stateComment;\n        const dismissalReason = project?.pipeline?.securityReportFinding?.dismissalReason;\n\n        if (project) {\n          this.projectId = project.id;\n        }\n\n        // if there is an existing comment then this will show it in the text area for editing\n        if (stateComment) {\n          this.dismissalComment = stateComment;\n        }\n        if (dismissalReason) {\n          this.dismissalReason = dismissalReason.toLowerCase();\n        }\n      },\n      error() {\n        this.errorMessage = this.$options.i18n.fetchErrorMessage;\n      },\n    },\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    vulnerabilityExternalIssues: {\n      query: vulnerabilityExternalIssuesQuery,\n      manual: true,\n      variables() {\n        return {\n          vulnerabilityId: this.vulnerabilityId,\n        };\n      },\n      skip() {\n        return !this.vulnerabilityId || !this.isCreatingJiraIssue;\n      },\n      result({\n        data: {\n          vulnerability: {\n            externalIssueLinks: { nodes },\n          },\n        },\n      }) {\n        const [firstExternalIssueLink = {}] = nodes;\n        const { externalIssue } = firstExternalIssueLink;\n\n        if (externalIssue?.webUrl) {\n          this.isCreatingJiraIssue = false;\n\n          const openedInNewTab = true;\n          visitUrl(externalIssue.webUrl, openedInNewTab);\n        }\n      },\n      error() {\n        this.isCreatingJiraIssue = false;\n        this.errorMessage = this.$options.i18n.createJiraIssueErrorMessage;\n      },\n    },\n  },\n  computed: {\n    queryVariables() {\n      const { projectFullPath, pipelineIid, findingUuid } = this;\n\n      return {\n        projectFullPath,\n        pipelineIid,\n        findingUuid,\n      };\n    },\n    remediation() {\n      return this.finding?.remediations?.[0];\n    },\n    issueLinks() {\n      return this.finding?.issueLinks?.nodes || [];\n    },\n    isFindingResolved() {\n      return this.finding?.state === STATE_RESOLVED;\n    },\n    canDownloadPatch() {\n      return this.canCreateMergeRequest && this.remediation?.diff?.length > 0;\n    },\n    canCreateMergeRequest() {\n      return !this.isFindingResolved && !this.mergeRequest && this.remediation;\n    },\n    showCreateMergeRequestButton() {\n      return this.canCreateMergeRequest && this.finding?.vulnerability?.presentOnDefaultBranch;\n    },\n    canAdminVulnerability() {\n      return this.finding?.userPermissions.adminVulnerability;\n    },\n    canCreateIssue() {\n      return this.issueLinks.length < 1 && this.finding?.userPermissions?.createIssue;\n    },\n    showErrorMessage() {\n      return !this.isLoading && Boolean(this.errorMessage);\n    },\n    showNoFindingMessage() {\n      return !this.isLoading && !this.finding;\n    },\n    isLoading() {\n      return this.$apollo.queries.finding.loading;\n    },\n    isFindingDismissed() {\n      return this.finding?.state === STATE_DISMISSED;\n    },\n    currentUser() {\n      const {\n        current_user_id: id,\n        current_username: username,\n        current_user_fullname: name,\n      } = window.gon;\n\n      return {\n        id,\n        name,\n        username,\n        state: 'active',\n      };\n    },\n    isPublicProject() {\n      return this.finding?.project?.visibility === 'public';\n    },\n    hasJiraVulnerabilityIssueCreationEnabled() {\n      return this.finding?.project?.hasJiraVulnerabilityIssueCreationEnabled;\n    },\n    dismissalProject() {\n      const { nameWithNamespace: value, webUrl: url } = this.finding.project;\n      return {\n        value,\n        url,\n      };\n    },\n    dismissalFeedback() {\n      if (!this.finding.dismissedAt) {\n        return null;\n      }\n\n      const { dismissedAt, dismissedBy, stateComment: comment, dismissalReason } = this.finding;\n      // dismissedBy can be null in some edge cases for which we still want to properly load\n      // the finding modal, see https://gitlab.com/gitlab-org/gitlab/-/issues/435425 for details\n      let author = {};\n      if (dismissedBy) {\n        const { id, name, username, webUrl } = dismissedBy;\n\n        author = {\n          id,\n          name,\n          username,\n          webUrl,\n        };\n      }\n\n      const commentDetails = comment ? { comment_author: author, comment } : null;\n\n      return {\n        created_at: dismissedAt,\n        author,\n        comment_details: commentDetails,\n        dismissalReason,\n      };\n    },\n    mutationConfigs() {\n      const { i18n } = this.$options;\n      return {\n        dismiss: {\n          mutationName: 'securityFindingDismiss',\n          mutation: dismissFindingMutation,\n          errorMessage: i18n.dismissErrorMessage,\n        },\n        revertToDetected: {\n          mutationName: 'securityFindingRevertToDetected',\n          mutation: revertFindingToDetectedMutation,\n          errorMessage: i18n.revertDismissErrorMessage,\n        },\n      };\n    },\n    footerActionButtons() {\n      const buttons = [];\n\n      if (this.showCreateMergeRequestButton) {\n        buttons.push(CREATE_MR_ACTION);\n      }\n\n      if (this.canDownloadPatch) {\n        buttons.push(DOWNLOAD_PATCH_ACTION);\n      }\n\n      if (this.canCreateIssue) {\n        if (!this.hasExistingExternalIssue && this.hasJiraVulnerabilityIssueCreationEnabled) {\n          buttons.push(CREATE_JIRA_ISSUE_ACTION);\n        }\n\n        if (!this.hasJiraVulnerabilityIssueCreationEnabled) {\n          buttons.push(CREATE_ISSUE_ACTION);\n        }\n      }\n\n      return buttons;\n    },\n    hasExistingExternalIssue() {\n      return this.finding?.vulnerability?.externalIssueLinks.nodes.length > 0;\n    },\n    mergeRequest() {\n      return this.finding?.vulnerability?.mergeRequest;\n    },\n    vulnerabilityId() {\n      return this.finding?.vulnerability?.id;\n    },\n    title() {\n      return this.finding ? this.finding.title : this.$options.i18n.fetchErrorTitle;\n    },\n    showCodeFlowTabs() {\n      return this.codeFlowData?.items?.length > 0;\n    },\n    codeFlowData() {\n      return this.finding.details.find((detail) => detail.type === VULNERABILITY_DETAIL_CODE_FLOWS);\n    },\n    isFindingAIResolvable() {\n      return (\n        // controlled by the parent, so the AI features can be disabled if needed (e.g. feature flag, pipeline security report)\n        this.showAiResolution &&\n        this.glAbilities.resolveVulnerabilityWithAi &&\n        this.finding?.aiResolutionEnabled\n      );\n    },\n  },\n  methods: {\n    handleCommentEsc() {\n      this.isEditingDismissal = false;\n      // we need to set the focus on the modal so any subsequent esc key presses can get handled by it\n      this.$refs.modal.setFocus();\n    },\n    closeModal() {\n      this.$refs.modal.hide();\n    },\n    handleResolveWithAiSuccess(resultUrl) {\n      this.$emit('resolveWithAiSuccess', resultUrl);\n    },\n    updateDismissal() {\n      this.dismissalReasonState = Boolean(this.dismissalReason);\n      this.dismissalCommentState = Boolean(this.dismissalComment);\n\n      if (!this.dismissalReasonState || !this.dismissalCommentState) {\n        return false;\n      }\n\n      return this.mutateFinding({ ...this.mutationConfigs.dismiss, toggledState: STATE_DISMISSED });\n    },\n    undoDismissal() {\n      return this.mutateFinding({\n        ...this.mutationConfigs.revertToDetected,\n        toggledState: STATE_DETECTED,\n      });\n    },\n    cancelDismissal() {\n      this.isEditingDismissal = false;\n    },\n    async mutateFinding({ mutation, mutationName, errorMessage, toggledState }) {\n      this.isUpdatingFindingState = true;\n\n      try {\n        await this.$apollo.mutate({\n          mutation,\n          refetchQueries: [securityReportFindingQuery],\n          variables: {\n            uuid: this.findingUuid,\n            comment: this.dismissalComment,\n            dismissalReason: this.dismissalReason?.toUpperCase(),\n          },\n          update: (store, response) => {\n            const { errors } = response.data[mutationName];\n\n            if (errors.length > 0) {\n              throw new Error(errors[0]);\n            }\n\n            if (toggledState) {\n              this.$emit(toggledState.toLowerCase());\n            }\n\n            this.closeModal();\n          },\n        });\n      } catch {\n        this.errorMessage = errorMessage;\n      } finally {\n        this.isUpdatingFindingState = false;\n      }\n    },\n    async executeMutation({ mutation, variables, errorMessage }) {\n      try {\n        const { data } = await this.$apollo.mutate({\n          mutation,\n          variables,\n        });\n\n        const firstResponseItem = data[Object.keys(data)[0]];\n        const { errors } = firstResponseItem;\n\n        if (errors.length > 0) {\n          throw new Error(errors[0]);\n        }\n\n        return data;\n      } catch {\n        this.errorMessage = errorMessage;\n        return null;\n      }\n    },\n    async createMergeRequest() {\n      this.isCreatingMergeRequest = true;\n\n      const data = await this.executeMutation({\n        mutation: createMergeRequestMutation,\n        variables: {\n          uuid: this.findingUuid,\n        },\n        errorMessage: s__(\n          'SecurityReports|There was an error creating the merge request. Please try again.',\n        ),\n      });\n\n      if (data) {\n        const { mergeRequest } = data.securityFindingCreateMergeRequest;\n        visitUrl(mergeRequest.webUrl);\n      }\n\n      this.isCreatingMergeRequest = false;\n    },\n    async createIssue() {\n      this.isCreatingIssue = true;\n\n      const data = await this.executeMutation({\n        mutation: createIssueMutation,\n        variables: {\n          findingUuid: this.findingUuid,\n          projectId: this.projectId,\n        },\n        errorMessage: s__(\n          'SecurityReports|There was an error creating the issue. Please try again.',\n        ),\n      });\n\n      if (data) {\n        const { webUrl } = data.securityFindingCreateIssue.issue;\n        visitUrl(webUrl);\n      } else {\n        // Stop loader spinner only if mutation did not succeed\n        this.isCreatingIssue = false;\n      }\n    },\n    async createJiraIssue() {\n      const { vulnerabilityId } = this;\n\n      if (!vulnerabilityId) {\n        return;\n      }\n\n      const { createJiraIssueErrorMessage } = this.$options.i18n;\n      this.isCreatingJiraIssue = true;\n\n      const data = await this.executeMutation({\n        mutation: createJiraIssueMutation,\n        variables: {\n          vulnerabilityId,\n        },\n        errorMessage: createJiraIssueErrorMessage,\n      });\n\n      if (data) {\n        // the mutation creates the Jira issue in the background\n        // that means we don't get the URL of the created issue straight away but need to poll for it\n        this.$apollo.queries.vulnerabilityExternalIssues.startPolling(\n          this.$options.VULNERABILITY_POLLING_INTERVAL,\n        );\n      } else {\n        this.isCreatingJiraIssue = false;\n      }\n    },\n    downloadPatch() {\n      download({ fileData: this.remediation.diff, fileName: 'remediation.patch' });\n    },\n    redirectToCodeFlowTab() {\n      this.tabIndex = 1;\n    },\n    handleResolveWithAiError(errorMessage) {\n      this.errorMessage = errorMessage;\n    },\n    resetErrorMessage() {\n      this.errorMessage = '';\n    },\n  },\n  i18n: {\n    fetchErrorTitle: __('Error'),\n    fetchErrorMessage: s__(\n      'SecurityReports|There was an error fetching the finding. Please try again.',\n    ),\n    // We instruct the user to re-run the pipeline when the finding is not found because there's a bug\n    // when using the modal in context of MRs. Findings can still appear in the \"MR security widget\",\n    // after the pipeline has expired. In that case the finding cannot be fetched anymore.\n    // After https://gitlab.com/gitlab-org/gitlab/-/issues/390185 is implemented, we can remove\n    // this specific error message.\n    noFindingErrorMessage: s__(\n      `SecurityReports|There was an error fetching the finding. The security report for this pipeline may have expired. To generate a new security report, go the %{boldStart}Pipelines%{boldEnd} tab and run a pipeline.`,\n    ),\n    dismissErrorMessage: s__(\n      'SecurityReports|There was an error dismissing the finding. Please try again.',\n    ),\n    createJiraIssueErrorMessage: s__(\n      'SecurityReports|There was an error creating a Jira issue for the finding. Please try again.',\n    ),\n    revertDismissErrorMessage: s__('SecurityReports|There was an error reverting the dismissal.'),\n    cancel: __('Cancel'),\n    confirmDismissal: s__('SecurityReports|Confirm dismissal'),\n    dismissFinding: s__('SecurityReports|Dismiss vulnerability'),\n    revertDismissFinding: s__('SecurityReports|Undo dismiss'),\n    dismissalComment: s__('SecurityReports|Comment (required)'),\n    dismissCommentPlaceholder: s__('SecurityReports|Add a comment or reason for dismissal'),\n    dismissalInvalidFeedback: s__('SecurityReports|A comment is required when dismissing.'),\n    VULNERABILITY_TAB_NAMES,\n  },\n  VULNERABILITY_POLLING_INTERVAL,\n};\n</script>\n\n<template>\n  <gl-modal\n    ref=\"modal\"\n    size=\"lg\"\n    :visible=\"true\"\n    :title=\"title\"\n    :hide-footer=\"showNoFindingMessage\"\n    content-class=\"gl-p-5\"\n    modal-id=\"security-finding-modal\"\n    data-testid=\"vulnerability-modal-content\"\n    @hidden=\"$emit('hidden')\"\n  >\n    <template #modal-header>\n      <gl-skeleton-loader\n        v-if=\"isLoading\"\n        data-testid=\"title-loading-indicator\"\n        :width=\"400\"\n        :lines=\"1\"\n      />\n      <h2 v-else class=\"gl-m-0 gl-text-lg\">\n        {{ title }}\n      </h2>\n    </template>\n\n    <div v-if=\"isLoading\" data-testid=\"content-loading-indicator\">\n      <!-- this is just a placeholder until the designs have been finalized. Captured in: https://gitlab.com/gitlab-org/gitlab/-/issues/377217 -->\n      <!-- the skeleton loaders will also be moved into a separate component so they can be re-used -->\n      <gl-skeleton-loader :width=\"80\" :lines=\"1\" />\n      <gl-skeleton-loader :width=\"200\" :lines=\"1\" />\n    </div>\n\n    <template v-else-if=\"finding\">\n      <gl-tabs v-if=\"showCodeFlowTabs\" v-model=\"tabIndex\">\n        <gl-tab :title=\"$options.i18n.VULNERABILITY_TAB_NAMES.DETAILS\">\n          <vulnerability-finding-modal-details\n            class=\"finding-modal-details gl-pt-5\"\n            :vulnerability=\"finding\"\n            @redirectToCodeFlowTab=\"redirectToCodeFlowTab()\"\n          />\n        </gl-tab>\n\n        <gl-tab :title=\"$options.i18n.VULNERABILITY_TAB_NAMES.CODE_FLOW\">\n          <vulnerability-code-flow\n            :branch-ref=\"branchRef\"\n            :details=\"codeFlowData\"\n            :project-full-path=\"sourceProjectFullPath || projectFullPath\"\n            :description=\"finding.description\"\n            :description-html=\"finding.descriptionHtml\"\n            :inside-modal=\"true\"\n          />\n        </gl-tab>\n      </gl-tabs>\n\n      <template v-else>\n        <vulnerability-finding-modal-details :vulnerability=\"finding\" />\n      </template>\n\n      <gl-card v-if=\"isFindingDismissed || isEditingDismissal\" data-testid=\"dismissal-edit-section\">\n        <dismissal-note\n          v-if=\"dismissalFeedback\"\n          :feedback=\"dismissalFeedback\"\n          :is-editing-dismissal=\"isEditingDismissal\"\n          :project=\"dismissalProject\"\n          :show-dismissal-actions=\"!isEditingDismissal\"\n          @editDismissal=\"isEditingDismissal = true\"\n        />\n        <event-item\n          v-if=\"!dismissalFeedback && isEditingDismissal\"\n          :author=\"currentUser\"\n          icon-name=\"cancel\"\n          icon-class=\"ci-status-icon-pending\"\n        />\n        <div v-if=\"isEditingDismissal\" class=\"gl-border-t gl-mt-5 gl-pt-5\">\n          <vulnerability-dismissal-reason v-model=\"dismissalReason\" :state=\"dismissalReasonState\" />\n          <gl-form-group\n            :label=\"$options.i18n.dismissalComment\"\n            label-for=\"dismissal-comment\"\n            :invalid-feedback=\"$options.i18n.dismissalInvalidFeedback\"\n            :state=\"dismissalCommentState\"\n            class=\"gl-mb-0\"\n          >\n            <gl-form-input\n              id=\"dismissal-comment\"\n              v-model=\"dismissalComment\"\n              data-testid=\"dismissal-comment\"\n              :placeholder=\"$options.i18n.dismissCommentPlaceholder\"\n              @keydown.meta.enter=\"updateDismissal\"\n              @keydown.esc.stop.prevent=\"handleCommentEsc\"\n            />\n          </gl-form-group>\n        </div>\n      </gl-card>\n    </template>\n\n    <gl-alert\n      v-if=\"showErrorMessage\"\n      variant=\"danger\"\n      :dismissible=\"false\"\n      data-testid=\"error-alert\"\n    >\n      {{ errorMessage || $options.i18n.fetchErrorMessage }}\n    </gl-alert>\n\n    <gl-alert\n      v-else-if=\"showNoFindingMessage\"\n      variant=\"warning\"\n      :dismissible=\"false\"\n      data-testid=\"no-finding-alert\"\n    >\n      <gl-sprintf :message=\"$options.i18n.noFindingErrorMessage\">\n        <template #bold=\"{ content }\"\n          ><strong>{{ content }}</strong></template\n        >\n      </gl-sprintf>\n    </gl-alert>\n\n    <template #modal-footer>\n      <template v-if=\"isEditingDismissal\">\n        <gl-button data-testid=\"cancel-editing-dismissal\" @click=\"cancelDismissal\">\n          {{ $options.i18n.cancel }}\n        </gl-button>\n        <gl-button\n          data-testid=\"save-editing-dismissal\"\n          variant=\"confirm\"\n          :loading=\"isUpdatingFindingState\"\n          @click=\"updateDismissal\"\n        >\n          {{ $options.i18n.confirmDismissal }}\n        </gl-button>\n      </template>\n      <template v-else>\n        <gl-button data-testid=\"cancel-button\" @click=\"closeModal\">\n          {{ $options.i18n.cancel }}\n        </gl-button>\n        <template v-if=\"canAdminVulnerability && isFindingDismissed\">\n          <gl-button\n            data-testid=\"undo-dismiss-button\"\n            :loading=\"isUpdatingFindingState\"\n            @click=\"undoDismissal\"\n          >\n            {{ $options.i18n.revertDismissFinding }}\n          </gl-button>\n        </template>\n        <template v-else-if=\"canAdminVulnerability\">\n          <gl-button\n            data-testid=\"dismiss-button\"\n            :loading=\"isUpdatingFindingState\"\n            @click=\"isEditingDismissal = true\"\n          >\n            {{ $options.i18n.dismissFinding }}\n          </gl-button>\n        </template>\n      </template>\n      <split-button\n        v-if=\"!isEditingDismissal\"\n        class=\"gl-mr-0\"\n        :buttons=\"footerActionButtons\"\n        :loading=\"isCreatingIssue || isCreatingJiraIssue || isCreatingMergeRequest\"\n        @create-merge-request=\"createMergeRequest\"\n        @download-patch=\"downloadPatch\"\n        @create-issue=\"createIssue\"\n        @create-jira-issue=\"createJiraIssue\"\n      />\n      <resolve-with-ai-button\n        v-if=\"isFindingAIResolvable\"\n        :vulnerability-id=\"vulnerabilityId\"\n        :finding-uuid=\"findingUuid\"\n        :merge-request-id=\"mergeRequestId\"\n        :show-public-project-warning=\"isPublicProject\"\n        @resolveStart=\"resetErrorMessage\"\n        @success=\"handleResolveWithAiSuccess\"\n        @error=\"handleResolveWithAiError\"\n      />\n    </template>\n  </gl-modal>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_finding_modal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vulnerability_finding_modal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./vulnerability_finding_modal.vue?vue&type=template&id=4abd1d37\"\nimport script from \"./vulnerability_finding_modal.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_finding_modal.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { n__ } from '~/locale';\n\n/**\n * Accepts an array of options and an array of selected option IDs\n * and optionally a placeholder and maximum number of options to show.\n *\n * Returns a string with the text of the selected options:\n * - If no options are selected, returns the placeholder or an empty string.\n * - If less than maxOptionsShown is selected, returns the text of those options comma-separated.\n * - If more than maxOptionsShown is selected, returns the text of those options comma-separated\n *   followed by the text \"+X more\", where X is the number of additional selected options\n *\n * @param {Object} opts\n * @param {Array<{ id: number | string, value: string }>} opts.options\n * @param {Array<{ id: number | string }>} opts.selected\n * @param {String} opts.placeholder - Placeholder when no option is selected\n * @param {Integer} opts.maxOptionsShown – Max number of options to show\n * @returns {String}\n */\nexport const getSelectedOptionsText = ({\n  options,\n  selected,\n  placeholder = '',\n  maxOptionsShown = 1,\n}) => {\n  const selectedOptions = options.filter(({ id, value }) => selected.includes(id || value));\n\n  if (selectedOptions.length === 0) {\n    return placeholder;\n  }\n\n  const optionTexts = selectedOptions.map((option) => option.text);\n\n  if (selectedOptions.length <= maxOptionsShown) {\n    return optionTexts.join(', ');\n  }\n\n  // Prevent showing \"+-1 more\" when the array is empty.\n  const additionalItemsCount = selectedOptions.length - maxOptionsShown;\n  return `${optionTexts.slice(0, maxOptionsShown).join(', ')} ${n__(\n    '+%d more',\n    '+%d more',\n    additionalItemsCount,\n  )}`;\n};\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.jobs.length > 0)?_c('gl-table',{attrs:{\"items\":_vm.jobs,\"fields\":_vm.tableFields,\"tbody-tr-attr\":{ 'data-testid': 'jobs-table-row' },\"data-testid\":\"jobs-table\",\"stacked\":\"lg\",\"fixed\":\"\"},scopedSlots:_vm._u([{key:\"table-colgroup\",fn:function({ fields }){return _vm._l((fields),function(field){return _c('col',{key:field.key,class:field.columnClass})})}},{key:\"cell(status)\",fn:function({ item }){return [_c('status-cell',{attrs:{\"job\":item}})]}},{key:\"cell(job)\",fn:function({ item }){return [_c('job-cell',{attrs:{\"job\":item}})]}},{key:\"cell(pipeline)\",fn:function({ item }){return [_c('pipeline-cell',{attrs:{\"job\":item}})]}},{key:\"cell(stage)\",fn:function({ item }){return [_c('div',{staticClass:\"gl-truncate\"},[(item.stage)?_c('span',{staticClass:\"gl-text-subtle\",attrs:{\"data-testid\":\"job-stage-name\"}},[_vm._v(_vm._s(item.stage.name))]):_vm._e()])]}},(_vm.admin)?{key:\"cell(project)\",fn:function({ item }){return [_c('project-cell',{attrs:{\"job\":item}})]}}:null,(_vm.admin)?{key:\"cell(runner)\",fn:function({ item }){return [_c('runner-cell',{attrs:{\"job\":item}})]}}:null,{key:\"cell(coverage)\",fn:function({ item }){return [(_vm.showCoverage(item.coverage))?_c('span',{attrs:{\"data-testid\":\"job-coverage\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.formatCoverage(item.coverage))+\"\\n    \")]):_vm._e()]}},{key:\"cell(actions)\",fn:function({ item }){return [_c('actions-cell',{staticClass:\"gl-float-right\",attrs:{\"job\":item}})]}}],null,true)}):_c('empty-result',{attrs:{\"type\":\"search\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project_cell.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project_cell.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlLink,\n  },\n  props: {\n    job: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    projectName() {\n      return this.job.pipeline?.project?.fullPath;\n    },\n    projectUrl() {\n      return this.job.pipeline?.project?.webUrl;\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"gl-truncate\">\n    <gl-link :href=\"projectUrl\" data-testid=\"job-project-link\">{{ projectName }}</gl-link>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./project_cell.vue?vue&type=template&id=ea78ffca\"\nimport script from \"./project_cell.vue?vue&type=script&lang=js\"\nexport * from \"./project_cell.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-truncate\"},[_c('gl-link',{attrs:{\"href\":_vm.projectUrl,\"data-testid\":\"job-project-link\"}},[_vm._v(_vm._s(_vm.projectName))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport {\n  INSTANCE_TYPE,\n  GROUP_TYPE,\n  PROJECT_TYPE,\n  I18N_INSTANCE_TYPE,\n  I18N_INSTANCE_RUNNER_DESCRIPTION,\n  I18N_GROUP_TYPE,\n  I18N_GROUP_RUNNER_DESCRIPTION,\n  I18N_PROJECT_TYPE,\n  I18N_PROJECT_RUNNER_DESCRIPTION,\n} from '../constants';\n\nconst ICON_DATA = {\n  [INSTANCE_TYPE]: {\n    name: 'users',\n    tooltip: `${I18N_INSTANCE_TYPE}: ${I18N_INSTANCE_RUNNER_DESCRIPTION}`,\n  },\n  [GROUP_TYPE]: {\n    name: 'group',\n    tooltip: `${I18N_GROUP_TYPE}: ${I18N_GROUP_RUNNER_DESCRIPTION}`,\n  },\n  [PROJECT_TYPE]: {\n    name: 'project',\n    tooltip: `${I18N_PROJECT_TYPE}: ${I18N_PROJECT_RUNNER_DESCRIPTION}`,\n  },\n};\n\nexport default {\n  components: {\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    type: {\n      type: String,\n      required: false,\n      default: null,\n      validator(type) {\n        return Boolean(ICON_DATA[type]);\n      },\n    },\n  },\n  computed: {\n    icon() {\n      return ICON_DATA[this.type];\n    },\n  },\n};\n</script>\n<template>\n  <gl-icon\n    v-if=\"icon\"\n    v-gl-tooltip=\"icon.tooltip\"\n    :aria-label=\"icon.tooltip\"\n    :name=\"icon.name\"\n    v-bind=\"$attrs\"\n  />\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./runner_type_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./runner_type_icon.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./runner_type_icon.vue?vue&type=template&id=37e37e22\"\nimport script from \"./runner_type_icon.vue?vue&type=script&lang=js\"\nexport * from \"./runner_type_icon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.icon)?_c('gl-icon',_vm._b({directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.icon.tooltip),expression:\"icon.tooltip\"}],attrs:{\"aria-label\":_vm.icon.tooltip,\"name\":_vm.icon.name}},'gl-icon',_vm.$attrs,false)):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./runner_cell.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./runner_cell.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlTooltipDirective } from '@gitlab/ui';\nimport RunnerTypeIcon from '~/ci/runner/components/runner_type_icon.vue';\nimport { RUNNER_EMPTY_TEXT, RUNNER_NO_DESCRIPTION } from '../../constants';\n\nexport default {\n  i18n: {\n    emptyRunnerText: RUNNER_EMPTY_TEXT,\n    noRunnerDescription: RUNNER_NO_DESCRIPTION,\n  },\n  components: {\n    GlLink,\n    RunnerTypeIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    job: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    adminUrl() {\n      return this.job.runner?.adminUrl;\n    },\n    description() {\n      return this.job.runner?.description\n        ? this.job.runner.description\n        : this.$options.i18n.noRunnerDescription;\n    },\n    runnerType() {\n      return this.job.runner?.runnerType;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-truncate\">\n    <span v-if=\"adminUrl\">\n      <runner-type-icon :type=\"runnerType\" class=\"gl-align-middle\" />\n      <gl-link :href=\"adminUrl\" data-testid=\"job-runner-link\"> {{ description }} </gl-link>\n    </span>\n    <span v-else data-testid=\"empty-runner-text\"> {{ $options.i18n.emptyRunnerText }}</span>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./runner_cell.vue?vue&type=template&id=3a2b7273\"\nimport script from \"./runner_cell.vue?vue&type=script&lang=js\"\nexport * from \"./runner_cell.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-truncate\"},[(_vm.adminUrl)?_c('span',[_c('runner-type-icon',{staticClass:\"gl-align-middle\",attrs:{\"type\":_vm.runnerType}}),_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":_vm.adminUrl,\"data-testid\":\"job-runner-link\"}},[_vm._v(\" \"+_vm._s(_vm.description)+\" \")])],1):_c('span',{attrs:{\"data-testid\":\"empty-runner-text\"}},[_vm._v(\" \"+_vm._s(_vm.$options.i18n.emptyRunnerText))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./actions_cell.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./actions_cell.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlButton,\n  GlButtonGroup,\n  GlModal,\n  GlModalDirective,\n  GlSprintf,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport { reportToSentry } from '~/ci/utils';\nimport GlCountdown from '~/vue_shared/components/gl_countdown.vue';\nimport { visitUrl } from '~/lib/utils/url_utility';\nimport { confirmJobConfirmationMessage } from '~/ci/pipeline_details/graph/utils';\n\nimport {\n  ACTIONS_DOWNLOAD_ARTIFACTS,\n  ACTIONS_START_NOW,\n  ACTIONS_UNSCHEDULE,\n  ACTIONS_PLAY,\n  ACTIONS_RETRY,\n  ACTIONS_RUN_AGAIN,\n  CANCEL,\n  GENERIC_ERROR,\n  JOB_SCHEDULED,\n  JOB_SUCCESS,\n  PLAY_JOB_CONFIRMATION_MESSAGE,\n  RUN_JOB_NOW_HEADER_TITLE,\n  FILE_TYPE_ARCHIVE,\n} from '../../constants';\nimport eventHub from '../../event_hub';\nimport cancelJobMutation from '../../graphql/mutations/job_cancel.mutation.graphql';\nimport playJobMutation from '../../graphql/mutations/job_play.mutation.graphql';\nimport retryJobMutation from '../../graphql/mutations/job_retry.mutation.graphql';\nimport unscheduleJobMutation from '../../graphql/mutations/job_unschedule.mutation.graphql';\n\nexport default {\n  ACTIONS_DOWNLOAD_ARTIFACTS,\n  ACTIONS_START_NOW,\n  ACTIONS_UNSCHEDULE,\n  ACTIONS_PLAY,\n  ACTIONS_RETRY,\n  CANCEL,\n  GENERIC_ERROR,\n  PLAY_JOB_CONFIRMATION_MESSAGE,\n  RUN_JOB_NOW_HEADER_TITLE,\n  jobRetry: 'jobRetry',\n  jobCancel: 'jobCancel',\n  jobPlay: 'jobPlay',\n  jobUnschedule: 'jobUnschedule',\n  playJobModalId: 'play-job-modal',\n  name: 'JobActionsCell',\n  components: {\n    GlButton,\n    GlButtonGroup,\n    GlCountdown,\n    GlModal,\n    GlSprintf,\n  },\n  directives: {\n    GlModalDirective,\n    GlTooltip: GlTooltipDirective,\n  },\n  inject: {\n    admin: {\n      default: false,\n    },\n  },\n  props: {\n    job: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      retryingJob: false,\n      cancelBtnDisabled: false,\n      playManualBtnDisabled: false,\n      unscheduleBtnDisabled: false,\n    };\n  },\n  computed: {\n    hasArtifacts() {\n      return this.job.artifacts.nodes.find((artifact) => artifact.fileType === FILE_TYPE_ARCHIVE);\n    },\n    artifactDownloadPath() {\n      return this.hasArtifacts.downloadPath;\n    },\n    canCancelJob() {\n      return this.job.userPermissions?.cancelBuild;\n    },\n    canReadJob() {\n      return this.job.userPermissions?.readBuild;\n    },\n    canUpdateJob() {\n      return this.job.userPermissions?.updateBuild;\n    },\n    canReadArtifacts() {\n      return this.job.userPermissions?.readJobArtifacts;\n    },\n    isActive() {\n      return this.job.active;\n    },\n    manualJobPlayable() {\n      return this.job.playable && !this.admin && this.job.manualJob;\n    },\n    isRetryable() {\n      return this.job.retryable;\n    },\n    isScheduled() {\n      return this.job.status === JOB_SCHEDULED;\n    },\n    scheduledAt() {\n      return this.job.scheduledAt;\n    },\n    currentJobActionPath() {\n      return this.job.detailedStatus?.action?.path;\n    },\n    currentJobMethod() {\n      return this.job.detailedStatus?.action?.method;\n    },\n    shouldDisplayArtifacts() {\n      return this.canReadArtifacts && this.hasArtifacts;\n    },\n    retryButtonTitle() {\n      return this.job.status === JOB_SUCCESS ? ACTIONS_RUN_AGAIN : ACTIONS_RETRY;\n    },\n  },\n  methods: {\n    async postJobAction(name, mutation, redirect = false) {\n      try {\n        const {\n          data: {\n            [name]: { errors, job },\n          },\n        } = await this.$apollo.mutate({\n          mutation,\n          variables: { id: this.job.id },\n        });\n        if (errors.length > 0) {\n          reportToSentry(this.$options.name, new Error(errors.join(', ')));\n          this.showToastMessage();\n        } else if (redirect) {\n          // Retry and Play actions redirect to job detail view\n          // we don't need to refetch with jobActionPerformed event\n          visitUrl(job.detailedStatus.detailsPath);\n        } else {\n          eventHub.$emit('jobActionPerformed');\n        }\n      } catch (failure) {\n        reportToSentry(this.$options.name, failure);\n        this.showToastMessage();\n      }\n    },\n    showToastMessage() {\n      const toastProps = {\n        text: this.$options.GENERIC_ERROR,\n        variant: 'danger',\n      };\n\n      this.$toast.show(toastProps.text, {\n        variant: toastProps.variant,\n      });\n    },\n    cancelJob() {\n      this.cancelBtnDisabled = true;\n\n      this.postJobAction(this.$options.jobCancel, cancelJobMutation);\n    },\n    async retryJob() {\n      if (this.job?.detailedStatus?.action?.confirmationMessage) {\n        const confirmed = await confirmJobConfirmationMessage(\n          this.job.name,\n          this.job.detailedStatus.action.confirmationMessage,\n        );\n\n        if (!confirmed) {\n          return;\n        }\n      }\n\n      this.retryingJob = true;\n\n      this.postJobAction(this.$options.jobRetry, retryJobMutation, true);\n    },\n    async playJob() {\n      if (this.job?.detailedStatus?.action?.confirmationMessage) {\n        const confirmed = await confirmJobConfirmationMessage(\n          this.job.name,\n          this.job.detailedStatus.action.confirmationMessage,\n        );\n\n        if (!confirmed) {\n          return;\n        }\n      }\n\n      this.playManualBtnDisabled = true;\n\n      this.postJobAction(this.$options.jobPlay, playJobMutation, true);\n    },\n    unscheduleJob() {\n      this.unscheduleBtnDisabled = true;\n\n      this.postJobAction(this.$options.jobUnschedule, unscheduleJobMutation);\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-button-group>\n    <template v-if=\"canReadJob && canUpdateJob\">\n      <gl-button\n        v-if=\"isActive && canCancelJob\"\n        v-gl-tooltip\n        icon=\"cancel\"\n        :title=\"$options.CANCEL\"\n        :aria-label=\"$options.CANCEL\"\n        :disabled=\"cancelBtnDisabled\"\n        data-testid=\"cancel-button\"\n        @click=\"cancelJob()\"\n      />\n      <template v-else-if=\"isScheduled\">\n        <gl-button icon=\"planning\" disabled data-testid=\"countdown\">\n          <gl-countdown :end-date-string=\"scheduledAt\" />\n        </gl-button>\n        <gl-button\n          v-gl-modal-directive=\"$options.playJobModalId\"\n          v-gl-tooltip\n          icon=\"play\"\n          :title=\"$options.ACTIONS_START_NOW\"\n          :aria-label=\"$options.ACTIONS_START_NOW\"\n          data-testid=\"play-scheduled\"\n        />\n        <gl-modal\n          :modal-id=\"$options.playJobModalId\"\n          :title=\"$options.RUN_JOB_NOW_HEADER_TITLE\"\n          @primary=\"playJob()\"\n        >\n          <gl-sprintf :message=\"$options.PLAY_JOB_CONFIRMATION_MESSAGE\">\n            <template #job_name>{{ job.name }}</template>\n          </gl-sprintf>\n        </gl-modal>\n        <gl-button\n          v-gl-tooltip\n          icon=\"time-out\"\n          :title=\"$options.ACTIONS_UNSCHEDULE\"\n          :aria-label=\"$options.ACTIONS_UNSCHEDULE\"\n          :disabled=\"unscheduleBtnDisabled\"\n          data-testid=\"unschedule\"\n          @click=\"unscheduleJob()\"\n        />\n      </template>\n      <template v-else>\n        <!--Note: This is the manual job play button -->\n        <gl-button\n          v-if=\"manualJobPlayable\"\n          v-gl-tooltip\n          icon=\"play\"\n          :title=\"$options.ACTIONS_PLAY\"\n          :aria-label=\"$options.ACTIONS_PLAY\"\n          :disabled=\"playManualBtnDisabled\"\n          data-testid=\"play\"\n          @click=\"playJob()\"\n        />\n        <gl-button\n          v-else-if=\"isRetryable\"\n          v-gl-tooltip\n          icon=\"retry\"\n          :title=\"retryButtonTitle\"\n          :aria-label=\"retryButtonTitle\"\n          :method=\"currentJobMethod\"\n          :loading=\"retryingJob\"\n          data-testid=\"retry\"\n          @click=\"retryJob()\"\n        />\n      </template>\n    </template>\n    <gl-button\n      v-if=\"shouldDisplayArtifacts\"\n      v-gl-tooltip\n      icon=\"download\"\n      :title=\"$options.ACTIONS_DOWNLOAD_ARTIFACTS\"\n      :aria-label=\"$options.ACTIONS_DOWNLOAD_ARTIFACTS\"\n      :href=\"artifactDownloadPath\"\n      rel=\"nofollow\"\n      download\n      data-testid=\"download-artifacts\"\n    />\n  </gl-button-group>\n</template>\n","import { render, staticRenderFns } from \"./actions_cell.vue?vue&type=template&id=2c77cca8\"\nimport script from \"./actions_cell.vue?vue&type=script&lang=js\"\nexport * from \"./actions_cell.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-button-group',[(_vm.canReadJob && _vm.canUpdateJob)?[(_vm.isActive && _vm.canCancelJob)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"icon\":\"cancel\",\"title\":_vm.$options.CANCEL,\"aria-label\":_vm.$options.CANCEL,\"disabled\":_vm.cancelBtnDisabled,\"data-testid\":\"cancel-button\"},on:{\"click\":function($event){return _vm.cancelJob()}}}):(_vm.isScheduled)?[_c('gl-button',{attrs:{\"icon\":\"planning\",\"disabled\":\"\",\"data-testid\":\"countdown\"}},[_c('gl-countdown',{attrs:{\"end-date-string\":_vm.scheduledAt}})],1),_vm._v(\" \"),_c('gl-button',{directives:[{name:\"gl-modal-directive\",rawName:\"v-gl-modal-directive\",value:(_vm.$options.playJobModalId),expression:\"$options.playJobModalId\"},{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"icon\":\"play\",\"title\":_vm.$options.ACTIONS_START_NOW,\"aria-label\":_vm.$options.ACTIONS_START_NOW,\"data-testid\":\"play-scheduled\"}}),_vm._v(\" \"),_c('gl-modal',{attrs:{\"modal-id\":_vm.$options.playJobModalId,\"title\":_vm.$options.RUN_JOB_NOW_HEADER_TITLE},on:{\"primary\":function($event){return _vm.playJob()}}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.PLAY_JOB_CONFIRMATION_MESSAGE},scopedSlots:_vm._u([{key:\"job_name\",fn:function(){return [_vm._v(_vm._s(_vm.job.name))]},proxy:true}],null,false,1885934785)})],1),_vm._v(\" \"),_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"icon\":\"time-out\",\"title\":_vm.$options.ACTIONS_UNSCHEDULE,\"aria-label\":_vm.$options.ACTIONS_UNSCHEDULE,\"disabled\":_vm.unscheduleBtnDisabled,\"data-testid\":\"unschedule\"},on:{\"click\":function($event){return _vm.unscheduleJob()}}})]:[(_vm.manualJobPlayable)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"icon\":\"play\",\"title\":_vm.$options.ACTIONS_PLAY,\"aria-label\":_vm.$options.ACTIONS_PLAY,\"disabled\":_vm.playManualBtnDisabled,\"data-testid\":\"play\"},on:{\"click\":function($event){return _vm.playJob()}}}):(_vm.isRetryable)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"icon\":\"retry\",\"title\":_vm.retryButtonTitle,\"aria-label\":_vm.retryButtonTitle,\"method\":_vm.currentJobMethod,\"loading\":_vm.retryingJob,\"data-testid\":\"retry\"},on:{\"click\":function($event){return _vm.retryJob()}}}):_vm._e()]]:_vm._e(),_vm._v(\" \"),(_vm.shouldDisplayArtifacts)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"icon\":\"download\",\"title\":_vm.$options.ACTIONS_DOWNLOAD_ARTIFACTS,\"aria-label\":_vm.$options.ACTIONS_DOWNLOAD_ARTIFACTS,\"href\":_vm.artifactDownloadPath,\"rel\":\"nofollow\",\"download\":\"\",\"data-testid\":\"download-artifacts\"}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status_cell.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status_cell.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport { formatTime } from '~/lib/utils/datetime_utility';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\nimport timeagoMixin from '~/vue_shared/mixins/timeago';\n\nexport default {\n  iconSize: 12,\n  components: {\n    CiIcon,\n    GlIcon,\n    TimeAgoTooltip,\n  },\n  mixins: [timeagoMixin],\n  props: {\n    job: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    finishedTime() {\n      return this.job?.finishedAt;\n    },\n    duration() {\n      return this.job?.duration;\n    },\n    durationFormatted() {\n      return formatTime(this.duration * 1000);\n    },\n    hasDurationAndFinishedTime() {\n      return this.finishedTime && this.duration;\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <ci-icon :status=\"job.detailedStatus\" show-status-text />\n    <div class=\"gl-ml-1 gl-mt-2 gl-text-sm gl-text-subtle\">\n      <div v-if=\"duration\" data-testid=\"job-duration\">\n        <gl-icon name=\"timer\" :size=\"$options.iconSize\" data-testid=\"duration-icon\" />\n        {{ durationFormatted }}\n      </div>\n      <div v-if=\"finishedTime\" data-testid=\"job-finished-time\">\n        <gl-icon name=\"calendar\" :size=\"$options.iconSize\" data-testid=\"finished-time-icon\" />\n        <time-ago-tooltip :time=\"finishedTime\" />\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./status_cell.vue?vue&type=template&id=6d7da9b9\"\nimport script from \"./status_cell.vue?vue&type=script&lang=js\"\nexport * from \"./status_cell.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ci-icon',{attrs:{\"status\":_vm.job.detailedStatus,\"show-status-text\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-ml-1 gl-mt-2 gl-text-sm gl-text-subtle\"},[(_vm.duration)?_c('div',{attrs:{\"data-testid\":\"job-duration\"}},[_c('gl-icon',{attrs:{\"name\":\"timer\",\"size\":_vm.$options.iconSize,\"data-testid\":\"duration-icon\"}}),_vm._v(\"\\n      \"+_vm._s(_vm.durationFormatted)+\"\\n    \")],1):_vm._e(),_vm._v(\" \"),(_vm.finishedTime)?_c('div',{attrs:{\"data-testid\":\"job-finished-time\"}},[_c('gl-icon',{attrs:{\"name\":\"calendar\",\"size\":_vm.$options.iconSize,\"data-testid\":\"finished-time-icon\"}}),_vm._v(\" \"),_c('time-ago-tooltip',{attrs:{\"time\":_vm.finishedTime}})],1):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_cell.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_cell.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlIcon, GlLink, GlTooltipDirective } from '@gitlab/ui';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { s__ } from '~/locale';\nimport { SUCCESS_STATUS } from '../../../constants';\n\nexport default {\n  iconSize: 12,\n  i18n: {\n    stuckText: s__('Jobs|Job is stuck. Check runners.'),\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlBadge,\n    GlIcon,\n    GlLink,\n  },\n  props: {\n    job: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    jobId() {\n      const id = getIdFromGraphQLId(this.job.id);\n      return `#${id}`;\n    },\n    jobPath() {\n      return this.job.detailedStatus?.detailsPath;\n    },\n    jobRef() {\n      return this.job?.refName;\n    },\n    jobTags() {\n      return this.job.tags;\n    },\n    createdByTag() {\n      return this.job.createdByTag;\n    },\n    triggered() {\n      return this.job.triggered;\n    },\n    isManualJob() {\n      return this.job.manualJob;\n    },\n    successfulJob() {\n      return this.job.status === SUCCESS_STATUS;\n    },\n    showAllowedToFailBadge() {\n      return this.job.allowFailure && !this.successfulJob;\n    },\n    isScheduledJob() {\n      return Boolean(this.job.scheduledAt);\n    },\n    canReadJob() {\n      return this.job?.userPermissions?.readBuild;\n    },\n    jobStuck() {\n      return this.job?.stuck;\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div class=\"-gl-mx-3 -gl-mb-2 -gl-mt-3 gl-truncate gl-p-3\">\n      <gl-icon\n        v-if=\"jobStuck\"\n        v-gl-tooltip=\"$options.i18n.stuckText\"\n        name=\"warning\"\n        :size=\"$options.iconSize\"\n        class=\"gl-mr-2\"\n        data-testid=\"stuck-icon\"\n      />\n\n      <gl-link v-if=\"canReadJob\" :href=\"jobPath\" data-testid=\"job-id-link\">\n        <span class=\"gl-truncate\">\n          <span data-testid=\"job-name\">{{ jobId }}: {{ job.name }}</span>\n        </span>\n      </gl-link>\n\n      <span v-else data-testid=\"job-id-limited-access\">{{ jobId }}: {{ job.name }}</span>\n    </div>\n\n    <div class=\"gl-mt-1 gl-flex gl-items-center gl-justify-end gl-text-subtle lg:gl-justify-start\">\n      <div v-if=\"jobRef\" class=\"gl-max-w-26 gl-truncate gl-rounded-base gl-bg-gray-50 gl-px-2\">\n        <gl-icon\n          v-if=\"createdByTag\"\n          name=\"label\"\n          :size=\"$options.iconSize\"\n          data-testid=\"label-icon\"\n        />\n        <gl-icon v-else name=\"fork\" :size=\"$options.iconSize\" data-testid=\"fork-icon\" />\n        <gl-link\n          class=\"gl-text-sm gl-text-subtle gl-font-monospace hover:gl-text-subtle\"\n          :href=\"job.refPath\"\n          data-testid=\"job-ref\"\n          >{{ job.refName }}</gl-link\n        >\n      </div>\n      <span v-else>{{ __('none') }}</span>\n      <div class=\"gl-ml-2 gl-flex gl-items-center gl-rounded-base gl-bg-gray-50 gl-px-2\">\n        <gl-icon class=\"gl-mx-2\" name=\"commit\" :size=\"$options.iconSize\" />\n        <gl-link\n          class=\"gl-text-sm gl-text-subtle gl-font-monospace hover:gl-text-subtle\"\n          :href=\"job.commitPath\"\n          data-testid=\"job-sha\"\n          >{{ job.shortSha }}</gl-link\n        >\n      </div>\n    </div>\n\n    <div class=\"gl-mt-2\">\n      <gl-badge v-for=\"tag in jobTags\" :key=\"tag\" variant=\"info\" data-testid=\"job-tag-badge\">\n        {{ tag }}\n      </gl-badge>\n      <gl-badge v-if=\"triggered\" variant=\"info\" data-testid=\"trigger-token-job-badge\"\n        >{{ s__('Job|trigger token') }}\n      </gl-badge>\n      <gl-badge v-if=\"showAllowedToFailBadge\" variant=\"warning\" data-testid=\"fail-job-badge\"\n        >{{ s__('Job|allowed to fail') }}\n      </gl-badge>\n      <gl-badge v-if=\"isScheduledJob\" variant=\"info\" data-testid=\"delayed-job-badge\"\n        >{{ s__('Job|delayed') }}\n      </gl-badge>\n      <gl-badge v-if=\"isManualJob\" variant=\"info\" data-testid=\"manual-job-badge\">\n        {{ s__('Job|manual') }}\n      </gl-badge>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./job_cell.vue?vue&type=template&id=8e09e2d4\"\nimport script from \"./job_cell.vue?vue&type=script&lang=js\"\nexport * from \"./job_cell.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"-gl-mx-3 -gl-mb-2 -gl-mt-3 gl-truncate gl-p-3\"},[(_vm.jobStuck)?_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.$options.i18n.stuckText),expression:\"$options.i18n.stuckText\"}],staticClass:\"gl-mr-2\",attrs:{\"name\":\"warning\",\"size\":_vm.$options.iconSize,\"data-testid\":\"stuck-icon\"}}):_vm._e(),_vm._v(\" \"),(_vm.canReadJob)?_c('gl-link',{attrs:{\"href\":_vm.jobPath,\"data-testid\":\"job-id-link\"}},[_c('span',{staticClass:\"gl-truncate\"},[_c('span',{attrs:{\"data-testid\":\"job-name\"}},[_vm._v(_vm._s(_vm.jobId)+\": \"+_vm._s(_vm.job.name))])])]):_c('span',{attrs:{\"data-testid\":\"job-id-limited-access\"}},[_vm._v(_vm._s(_vm.jobId)+\": \"+_vm._s(_vm.job.name))])],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-1 gl-flex gl-items-center gl-justify-end gl-text-subtle lg:gl-justify-start\"},[(_vm.jobRef)?_c('div',{staticClass:\"gl-max-w-26 gl-truncate gl-rounded-base gl-bg-gray-50 gl-px-2\"},[(_vm.createdByTag)?_c('gl-icon',{attrs:{\"name\":\"label\",\"size\":_vm.$options.iconSize,\"data-testid\":\"label-icon\"}}):_c('gl-icon',{attrs:{\"name\":\"fork\",\"size\":_vm.$options.iconSize,\"data-testid\":\"fork-icon\"}}),_vm._v(\" \"),_c('gl-link',{staticClass:\"gl-text-sm gl-text-subtle gl-font-monospace hover:gl-text-subtle\",attrs:{\"href\":_vm.job.refPath,\"data-testid\":\"job-ref\"}},[_vm._v(_vm._s(_vm.job.refName))])],1):_c('span',[_vm._v(_vm._s(_vm.__('none')))]),_vm._v(\" \"),_c('div',{staticClass:\"gl-ml-2 gl-flex gl-items-center gl-rounded-base gl-bg-gray-50 gl-px-2\"},[_c('gl-icon',{staticClass:\"gl-mx-2\",attrs:{\"name\":\"commit\",\"size\":_vm.$options.iconSize}}),_vm._v(\" \"),_c('gl-link',{staticClass:\"gl-text-sm gl-text-subtle gl-font-monospace hover:gl-text-subtle\",attrs:{\"href\":_vm.job.commitPath,\"data-testid\":\"job-sha\"}},[_vm._v(_vm._s(_vm.job.shortSha))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-2\"},[_vm._l((_vm.jobTags),function(tag){return _c('gl-badge',{key:tag,attrs:{\"variant\":\"info\",\"data-testid\":\"job-tag-badge\"}},[_vm._v(\"\\n      \"+_vm._s(tag)+\"\\n    \")])}),_vm._v(\" \"),(_vm.triggered)?_c('gl-badge',{attrs:{\"variant\":\"info\",\"data-testid\":\"trigger-token-job-badge\"}},[_vm._v(_vm._s(_vm.s__('Job|trigger token'))+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.showAllowedToFailBadge)?_c('gl-badge',{attrs:{\"variant\":\"warning\",\"data-testid\":\"fail-job-badge\"}},[_vm._v(_vm._s(_vm.s__('Job|allowed to fail'))+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.isScheduledJob)?_c('gl-badge',{attrs:{\"variant\":\"info\",\"data-testid\":\"delayed-job-badge\"}},[_vm._v(_vm._s(_vm.s__('Job|delayed'))+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.isManualJob)?_c('gl-badge',{attrs:{\"variant\":\"info\",\"data-testid\":\"manual-job-badge\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.s__('Job|manual'))+\"\\n    \")]):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_cell.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_cell.vue?vue&type=script&lang=js\"","<script>\nimport { GlAvatar, GlLink } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\n\nexport default {\n  i18n: {\n    stageLabel: s__('Jobs|Stage'),\n  },\n  components: {\n    GlAvatar,\n    GlLink,\n  },\n  props: {\n    job: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    pipelineId() {\n      const id = getIdFromGraphQLId(this.job.pipeline.id);\n      return `#${id}`;\n    },\n    pipelinePath() {\n      return this.job.pipeline?.path;\n    },\n    pipelineUserAvatar() {\n      return this.job.pipeline?.user?.avatarUrl;\n    },\n    userPath() {\n      return this.job.pipeline?.user?.webPath;\n    },\n    showAvatar() {\n      return this.job.pipeline?.user;\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div class=\"-gl-mx-3 -gl-mt-3 gl-p-3\">\n      <gl-link class=\"gl-truncate\" :href=\"pipelinePath\" data-testid=\"pipeline-id\">\n        {{ pipelineId }}\n      </gl-link>\n\n      <span class=\"gl-text-subtle\">\n        <span>{{ __('created by') }}</span>\n        <gl-link v-if=\"showAvatar\" :href=\"userPath\" data-testid=\"pipeline-user-link\">\n          <gl-avatar :src=\"pipelineUserAvatar\" :size=\"16\" />\n        </gl-link>\n        <span v-else>{{ __('API') }}</span>\n      </span>\n    </div>\n\n    <div v-if=\"job.stage\" class=\"gl-mt-1 gl-truncate gl-text-sm gl-text-subtle\">\n      <span data-testid=\"job-stage-name\">{{ $options.i18n.stageLabel }}: {{ job.stage.name }}</span>\n    </div>\n  </div>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./jobs_table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./jobs_table.vue?vue&type=script&lang=js\"","<script>\nimport { GlTable } from '@gitlab/ui';\nimport EmptyResult from '~/vue_shared/components/empty_result.vue';\nimport ProjectCell from '~/ci/admin/jobs_table/components/cells/project_cell.vue';\nimport RunnerCell from '~/ci/admin/jobs_table/components/cells/runner_cell.vue';\nimport { JOBS_DEFAULT_FIELDS } from '../constants';\nimport ActionsCell from './job_cells/actions_cell.vue';\nimport StatusCell from './job_cells/status_cell.vue';\nimport JobCell from './job_cells/job_cell.vue';\nimport PipelineCell from './job_cells/pipeline_cell.vue';\n\nexport default {\n  components: {\n    ActionsCell,\n    StatusCell,\n    JobCell,\n    PipelineCell,\n    ProjectCell,\n    RunnerCell,\n    GlTable,\n    EmptyResult,\n  },\n  props: {\n    jobs: {\n      type: Array,\n      required: true,\n    },\n    tableFields: {\n      type: Array,\n      required: false,\n      default: () => JOBS_DEFAULT_FIELDS,\n    },\n    admin: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  methods: {\n    showCoverage(coverage) {\n      return coverage || coverage === 0;\n    },\n    formatCoverage(coverage) {\n      return `${coverage}%`;\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-table\n    v-if=\"jobs.length > 0\"\n    :items=\"jobs\"\n    :fields=\"tableFields\"\n    :tbody-tr-attr=\"{ 'data-testid': 'jobs-table-row' }\"\n    data-testid=\"jobs-table\"\n    stacked=\"lg\"\n    fixed\n  >\n    <template #table-colgroup=\"{ fields }\">\n      <col v-for=\"field in fields\" :key=\"field.key\" :class=\"field.columnClass\" />\n    </template>\n\n    <template #cell(status)=\"{ item }\">\n      <status-cell :job=\"item\" />\n    </template>\n\n    <template #cell(job)=\"{ item }\">\n      <job-cell :job=\"item\" />\n    </template>\n\n    <template #cell(pipeline)=\"{ item }\">\n      <pipeline-cell :job=\"item\" />\n    </template>\n\n    <template #cell(stage)=\"{ item }\">\n      <div class=\"gl-truncate\">\n        <span v-if=\"item.stage\" data-testid=\"job-stage-name\" class=\"gl-text-subtle\">{{\n          item.stage.name\n        }}</span>\n      </div>\n    </template>\n\n    <template v-if=\"admin\" #cell(project)=\"{ item }\">\n      <project-cell :job=\"item\" />\n    </template>\n\n    <template v-if=\"admin\" #cell(runner)=\"{ item }\">\n      <runner-cell :job=\"item\" />\n    </template>\n\n    <template #cell(coverage)=\"{ item }\">\n      <span v-if=\"showCoverage(item.coverage)\" data-testid=\"job-coverage\">\n        {{ formatCoverage(item.coverage) }}\n      </span>\n    </template>\n\n    <template #cell(actions)=\"{ item }\">\n      <actions-cell class=\"gl-float-right\" :job=\"item\" />\n    </template>\n  </gl-table>\n  <empty-result v-else type=\"search\" />\n</template>\n","import { render, staticRenderFns } from \"./pipeline_cell.vue?vue&type=template&id=4fc56abc\"\nimport script from \"./pipeline_cell.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_cell.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"-gl-mx-3 -gl-mt-3 gl-p-3\"},[_c('gl-link',{staticClass:\"gl-truncate\",attrs:{\"href\":_vm.pipelinePath,\"data-testid\":\"pipeline-id\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.pipelineId)+\"\\n    \")]),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-subtle\"},[_c('span',[_vm._v(_vm._s(_vm.__('created by')))]),_vm._v(\" \"),(_vm.showAvatar)?_c('gl-link',{attrs:{\"href\":_vm.userPath,\"data-testid\":\"pipeline-user-link\"}},[_c('gl-avatar',{attrs:{\"src\":_vm.pipelineUserAvatar,\"size\":16}})],1):_c('span',[_vm._v(_vm._s(_vm.__('API')))])],1)],1),_vm._v(\" \"),(_vm.job.stage)?_c('div',{staticClass:\"gl-mt-1 gl-truncate gl-text-sm gl-text-subtle\"},[_c('span',{attrs:{\"data-testid\":\"job-stage-name\"}},[_vm._v(_vm._s(_vm.$options.i18n.stageLabel)+\": \"+_vm._s(_vm.job.stage.name))])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./jobs_table.vue?vue&type=template&id=28f058ac\"\nimport script from \"./jobs_table.vue?vue&type=script&lang=js\"\nexport * from \"./jobs_table.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n  n = guard ? undefined : n;\n  n = (func && n == null) ? func.length : n;\n  return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-empty-state',{attrs:{\"svg-path\":_vm.$options.emptyStateSvgPath,\"title\":_vm.title,\"description\":_vm.description}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport emptyStateSvgPath from '@gitlab/svgs/dist/illustrations/empty-state/empty-search-md.svg';\nimport { GlEmptyState } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport const TYPES = {\n  search: 'search',\n  filter: 'filter',\n};\n\nexport default {\n  i18n: {\n    titleSearch: __('No results found'),\n    descriptionSearch: __('Edit your search and try again.'),\n    titleFilter: __('No results found'),\n    descriptionFilter: __('To widen your search, change or remove filters above.'),\n  },\n  components: {\n    GlEmptyState,\n  },\n  props: {\n    type: {\n      type: String,\n      required: false,\n      default: TYPES.search,\n      validator: (type) => Object.values(TYPES).includes(type),\n    },\n  },\n  computed: {\n    title() {\n      return this.type === TYPES.search\n        ? this.$options.i18n.titleSearch\n        : this.$options.i18n.titleFilter;\n    },\n    description() {\n      return this.type === TYPES.search\n        ? this.$options.i18n.descriptionSearch\n        : this.$options.i18n.descriptionFilter;\n    },\n  },\n  emptyStateSvgPath,\n};\n</script>\n\n<template>\n  <gl-empty-state\n    :svg-path=\"$options.emptyStateSvgPath\"\n    :title=\"title\"\n    :description=\"description\"\n  />\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty_result.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty_result.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./empty_result.vue?vue&type=template&id=4bbd4259\"\nimport script from \"./empty_result.vue?vue&type=script&lang=js\"\nexport * from \"./empty_result.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { DOCS_URL_IN_EE_DIR } from 'jh_else_ce/lib/utils/url_utility';\nimport { stateToComponentMap as classStateMap, stateKey } from './stores/state_maps';\n\nexport const FOUR_MINUTES_IN_MS = 1000 * 60 * 4;\n\nexport const STATE_QUERY_POLLING_INTERVAL_DEFAULT = 5000;\nexport const STATE_QUERY_POLLING_INTERVAL_BACKOFF = 1.2;\n\nexport const SUCCESS = 'success';\nexport const WARNING = 'warning';\nexport const INFO = 'info';\n\nexport const MWPS_MERGE_STRATEGY = 'merge_when_pipeline_succeeds';\nexport const MWCP_MERGE_STRATEGY = 'merge_when_checks_pass';\nexport const MTWPS_MERGE_STRATEGY = 'add_to_merge_train_when_pipeline_succeeds';\nexport const MTWCP_MERGE_STRATEGY = 'add_to_merge_train_when_checks_pass';\nexport const MT_MERGE_STRATEGY = 'merge_train';\n\nexport const PIPELINE_FAILED_STATE = 'failed';\n\nexport const AUTO_MERGE_STRATEGIES = [\n  MWPS_MERGE_STRATEGY,\n  MTWPS_MERGE_STRATEGY,\n  MTWCP_MERGE_STRATEGY,\n  MT_MERGE_STRATEGY,\n  MWCP_MERGE_STRATEGY,\n];\n\n// SP - \"Suggest Pipelines\"\nexport const SP_TRACK_LABEL = 'no_pipeline_noticed';\nexport const SP_SHOW_TRACK_EVENT = 'click_button';\nexport const SP_SHOW_TRACK_VALUE = 10;\nexport const SP_HELP_CONTENT = s__(\n  `mrWidget|GitLab %{linkStart}CI/CD can automatically build, test, and deploy your application.%{linkEnd} It only takes a few minutes to get started, and we can help you create a pipeline configuration file.`,\n);\nexport const SP_HELP_URL = `${DOCS_URL_IN_EE_DIR}/ci/quick_start/`;\nexport const SP_ICON_NAME = 'status_notfound';\n\n// JM - \"Jenkins Migration\"\nexport const JM_JENKINS_TITLE_ICON_NAME = 'information';\nexport const JM_EVENT_NAME = 'click_dismiss_button_jenkins_migration_callout';\nexport const JM_MIGRATION_LINK = helpPagePath('ci/migration/jenkins.md');\n\nexport const MERGE_ACTIVE_STATUS_PHRASES = [\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} Drum roll, please…'),\n    emoji: 'drum',\n  },\n  {\n    message: s__(\"mrWidget|%{boldStart}Merging!%{boldEnd} We're almost there…\"),\n    emoji: 'sparkles',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} Changes will land soon…'),\n    emoji: 'airplane_arriving',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} Changes are being shipped…'),\n    emoji: 'ship',\n  },\n  {\n    message: s__(\"mrWidget|%{boldStart}Merging!%{boldEnd} Everything's good…\"),\n    emoji: 'relieved',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} This is going to be great…'),\n    emoji: 'heart_eyes',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} Lift-off in 5… 4… 3…'),\n    emoji: 'rocket',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} The changes are leaving the station…'),\n    emoji: 'bullettrain_front',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} Take a deep breath and relax…'),\n    emoji: 'sunglasses',\n  },\n];\n\nconst STATE_MACHINE = {\n  states: {\n    IDLE: 'IDLE',\n    MERGING: 'MERGING',\n    MERGED: 'MERGED',\n    AUTO_MERGE: 'AUTO_MERGE',\n  },\n  transitions: {\n    MERGE: 'start-merge',\n    AUTO_MERGE: 'start-auto-merge',\n    MERGE_FAILURE: 'merge-failed',\n    MERGED: 'merge-done',\n    MERGING: 'merging',\n  },\n};\nconst { states, transitions } = STATE_MACHINE;\n\nSTATE_MACHINE.definition = {\n  initial: states.IDLE,\n  states: {\n    [states.IDLE]: {\n      on: {\n        [transitions.MERGE]: states.MERGING,\n        [transitions.AUTO_MERGE]: states.AUTO_MERGE,\n        [transitions.MERGING]: states.MERGING,\n      },\n    },\n    [states.MERGING]: {\n      on: {\n        [transitions.MERGED]: states.MERGED,\n        [transitions.MERGE_FAILURE]: states.IDLE,\n      },\n    },\n    [states.AUTO_MERGE]: {\n      on: {\n        [transitions.MERGED]: states.IDLE,\n        [transitions.MERGE_FAILURE]: states.IDLE,\n      },\n    },\n  },\n};\n\nexport const stateToTransitionMap = {\n  [stateKey.merging]: transitions.MERGE,\n  [stateKey.merged]: transitions.MERGED,\n  [stateKey.autoMergeEnabled]: transitions.AUTO_MERGE,\n};\nexport const stateToComponentMap = {\n  [states.MERGING]: classStateMap[stateKey.merging],\n  [states.MERGED]: classStateMap[stateKey.merged],\n  [states.AUTO_MERGE]: classStateMap[stateKey.autoMergeEnabled],\n};\n\nexport const EXTENSION_ICONS = {\n  failed: 'failed',\n  warning: 'warning',\n  success: 'success',\n  neutral: 'neutral',\n  error: 'error',\n  notice: 'notice',\n  severityCritical: 'severityCritical',\n  severityHigh: 'severityHigh',\n  severityMedium: 'severityMedium',\n  severityLow: 'severityLow',\n  severityInfo: 'severityInfo',\n  severityUnknown: 'severityUnknown',\n};\n\nexport const EXTENSION_ICON_NAMES = {\n  failed: 'status-failed',\n  warning: 'status-alert',\n  success: 'status-success',\n  neutral: 'status-neutral',\n  error: 'status-alert',\n  notice: 'status-alert',\n  scheduled: 'status-scheduled',\n  severityCritical: 'severity-critical',\n  severityHigh: 'severity-high',\n  severityMedium: 'severity-medium',\n  severityLow: 'severity-low',\n  severityInfo: 'severity-info',\n  severityUnknown: 'severity-unknown',\n};\n\nexport const EXTENSION_ICON_CLASS = {\n  failed: {\n    backgroundClass: 'gl-bg-status-danger',\n    iconClass: 'gl-fill-status-danger',\n  },\n  warning: {\n    backgroundClass: 'gl-bg-status-warning',\n    iconClass: 'gl-fill-status-warning',\n  },\n  success: {\n    backgroundClass: 'gl-bg-status-success',\n    iconClass: 'gl-fill-status-success',\n  },\n  neutral: {\n    backgroundClass: 'gl-bg-status-neutral',\n    iconClass: 'gl-fill-status-neutral',\n  },\n  error: {\n    backgroundClass: 'gl-bg-status-danger',\n    iconClass: 'gl-fill-status-danger',\n  },\n  notice: {\n    backgroundClass: 'gl-bg-status-neutral',\n    iconClass: 'gl-fill-status-neutral',\n  },\n  scheduled: {\n    backgroundClass: 'gl-bg-status-info',\n    iconClass: 'gl-fill-status-info',\n  },\n  severityCritical: {\n    backgroundClass: 'gl-bg-red-100',\n    iconClass: 'gl-fill-red-800',\n  },\n  severityHigh: {\n    backgroundClass: 'gl-bg-red-100',\n    iconClass: 'gl-fill-red-600',\n  },\n  severityMedium: {\n    backgroundClass: 'gl-bg-orange-100',\n    iconClass: 'gl-fill-orange-400',\n  },\n  severityLow: {\n    backgroundClass: 'gl-bg-orange-100',\n    iconClass: 'gl-fill-orange-300',\n  },\n  severityInfo: {\n    backgroundClass: 'gl-bg-status-info',\n    iconClass: 'gl-fill-status-info',\n  },\n  severityUnknown: {\n    backgroundClass: 'gl-bg-status-neutral',\n    iconClass: 'gl-fill-status-neutral',\n  },\n};\n\nexport const VIEW_MERGE_REQUEST_WIDGET = 'view_merge_request_widget';\nexport const EXPAND_MERGE_REQUEST_WIDGET = 'expand_merge_request_widget';\nexport const CLICK_FULL_REPORT_ON_MERGE_REQUEST_WIDGET =\n  'click_full_report_on_merge_request_widget';\n\nexport { STATE_MACHINE };\n\nexport const INVALID_RULES_DOCS_PATH = helpPagePath(\n  'user/project/merge_requests/approvals/index.md',\n  {\n    anchor: 'invalid-rules',\n  },\n);\n\nexport const DETAILED_MERGE_STATUS = {\n  PREPARING: 'PREPARING',\n  MERGEABLE: 'MERGEABLE',\n  CHECKING: 'CHECKING',\n  NOT_OPEN: 'NOT_OPEN',\n  DISCUSSIONS_NOT_RESOLVED: 'DISCUSSIONS_NOT_RESOLVED',\n  NOT_APPROVED: 'NOT_APPROVED',\n  DRAFT_STATUS: 'DRAFT_STATUS',\n  BLOCKED_STATUS: 'BLOCKED_STATUS',\n  CI_MUST_PASS: 'CI_MUST_PASS',\n  CI_STILL_RUNNING: 'CI_STILL_RUNNING',\n  EXTERNAL_STATUS_CHECKS: 'EXTERNAL_STATUS_CHECKS',\n};\n\nexport const MT_SKIP_TRAIN = 'skip';\nexport const MT_RESTART_TRAIN = 'restart';\n\n// Pipeline event type names\n\nexport const PIPELINE_EVENT_TYPE_MERGE_TRAIN = 'Merge train pipeline';\nexport const PIPELINE_EVENT_TYPE_MERGED_RESULT = 'Merged results pipeline';\nexport const PIPELINE_EVENT_TYPE_MERGE_REQUEST = 'Merge request pipeline';\n\nexport const PIPELINE_EVENT_TYPE_MAP = {\n  [PIPELINE_EVENT_TYPE_MERGE_TRAIN]: {\n    title: s__('Pipeline|What is a merge train pipeline?'),\n    content: s__(\n      'Pipeline|Merge train pipeline runs on the contents of the merge request combined with the contents of all other merge requests queued for merging into the target branch.',\n    ),\n  },\n  [PIPELINE_EVENT_TYPE_MERGED_RESULT]: {\n    title: s__('Pipeline|What is a merged results pipeline?'),\n    content: s__(\n      'Pipeline|Merged results pipeline runs on the contents of the merge request combined with the contents of the target branch.',\n    ),\n  },\n  [PIPELINE_EVENT_TYPE_MERGE_REQUEST]: {\n    title: s__('Pipeline|What is a merge request pipeline?'),\n    content: s__(\n      \"Pipeline|Merge request pipeline runs on the contents of the merge request's source branch, not the target branch.\",\n    ),\n  },\n};\n","import { extend } from '../../vue';\nimport { NAME_TABLE_LITE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as props$2, captionMixin } from './helpers/mixin-caption';\nimport { props as props$3, colgroupMixin } from './helpers/mixin-colgroup';\nimport { props as props$4, itemsMixin } from './helpers/mixin-items';\nimport { props as props$5, stackedMixin } from './helpers/mixin-stacked';\nimport { props as props$6, tableRendererMixin } from './helpers/mixin-table-renderer';\nimport { props as props$7, tbodyMixin } from './helpers/mixin-tbody';\nimport { props as props$8, tfootMixin } from './helpers/mixin-tfoot';\nimport { props as props$9, theadMixin } from './helpers/mixin-thead';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  ...props$2,\n  ...props$3,\n  ...props$4,\n  ...props$5,\n  ...props$6,\n  ...props$7,\n  ...props$8,\n  ...props$9\n}), NAME_TABLE_LITE);\n\n// --- Main component ---\n\n// @vue/component\nconst BTableLite = /*#__PURE__*/extend({\n  name: NAME_TABLE_LITE,\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component\n  mixins: [\n  // General mixins\n  attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin,\n  // Required table mixins\n  itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin,\n  // Table features mixins\n  // These are pretty lightweight, and are useful for lightweight tables\n  captionMixin, colgroupMixin],\n  props\n\n  // Render function is provided by `tableRendererMixin`\n});\n\nexport { BTableLite, props };\n","import { BTableLite } from '../../../vendor/bootstrap-vue/src/components/table/table-lite';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst {\n  tableClass\n} = BTableLite.options.props;\nvar script = {\n  name: 'GlTableLite',\n  components: {\n    BTableLite\n  },\n  inheritAttrs: false,\n  props: {\n    tableClass,\n    fields: {\n      type: Array,\n      required: false,\n      default: null\n    },\n    stickyHeader: {\n      type: Boolean,\n      default: false,\n      required: false\n    }\n  },\n  computed: {\n    stickyHeaderClass() {\n      return this.stickyHeader ? 'gl-table--sticky-header' : null;\n    },\n    localTableClass() {\n      return ['gl-table', this.tableClass, this.stickyHeaderClass];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-table-lite',_vm._g(_vm._b({attrs:{\"table-class\":_vm.localTableClass,\"fields\":_vm.fields},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'b-table-lite',_vm.$attrs,false),_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.showLinkedLayers)?_c('links-inner',_vm._g(_vm._b({attrs:{\"container-measurements\":_vm.containerMeasurements,\"links-data\":_vm.getLinksData,\"pipeline-data\":_vm.pipelineData}},'links-inner',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2):_c('div',[_c('div',{staticClass:\"gl-relative gl-flex gl-flex-wrap sm:gl-flex-nowrap\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./links_inner.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./links_inner.vue?vue&type=script&lang=js\"","<script>\nimport { isEmpty } from 'lodash';\nimport { STAGE_VIEW } from '~/ci/pipeline_details/graph/constants';\nimport { createJobsHash, generateJobNeedsDict } from '~/ci/pipeline_details/utils';\nimport { reportToSentry } from '~/ci/utils';\nimport { DRAW_FAILURE } from '../../constants';\nimport { generateLinksData } from '../../utils/drawing_utils';\n\nexport default {\n  name: 'LinksInner',\n  STROKE_WIDTH: 2,\n  props: {\n    containerId: {\n      type: String,\n      required: true,\n    },\n    containerMeasurements: {\n      type: Object,\n      required: true,\n    },\n    linksData: {\n      type: Array,\n      required: true,\n    },\n    pipelineId: {\n      type: Number,\n      required: true,\n    },\n    pipelineData: {\n      type: Array,\n      required: true,\n    },\n    defaultLinkColor: {\n      type: String,\n      required: false,\n      default: 'gl-stroke-gray-200',\n    },\n    highlightedJob: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    viewType: {\n      type: String,\n      required: false,\n      default: STAGE_VIEW,\n    },\n  },\n  data() {\n    return {\n      links: [],\n      needsObject: null,\n    };\n  },\n  computed: {\n    hasHighlightedJob() {\n      return Boolean(this.highlightedJob);\n    },\n    isPipelineDataEmpty() {\n      return isEmpty(this.pipelineData);\n    },\n    highlightedJobs() {\n      // If you are hovering on a job, then the jobs we want to highlight are:\n      // The job you are currently hovering + all of its needs.\n      return this.hasHighlightedJob\n        ? [this.highlightedJob, ...this.needsObject[this.highlightedJob]]\n        : [];\n    },\n    highlightedLinks() {\n      // If you are hovering on a job, then the links we want to highlight are:\n      // All the links whose `source` and `target` are highlighted jobs.\n      if (this.hasHighlightedJob) {\n        const filteredLinks = this.links.filter((link) => {\n          return (\n            this.highlightedJobs.includes(link.source) && this.highlightedJobs.includes(link.target)\n          );\n        });\n\n        return filteredLinks.map((link) => link.ref);\n      }\n\n      return [];\n    },\n    viewBox() {\n      return [0, 0, this.containerMeasurements.width, this.containerMeasurements.height];\n    },\n  },\n  watch: {\n    highlightedJob() {\n      // On first hover, generate the needs reference\n      if (!this.needsObject) {\n        const jobs = createJobsHash(this.pipelineData);\n        this.needsObject = generateJobNeedsDict(jobs) ?? {};\n      }\n    },\n    highlightedJobs(jobs) {\n      this.$emit('highlightedJobsChange', jobs);\n    },\n    linksData() {\n      this.calculateLinkData();\n    },\n    viewType() {\n      /*\n        We need to wait a tick so that the layout reflows\n        before the links refresh.\n      */\n      this.$nextTick(() => {\n        this.calculateLinkData();\n      });\n    },\n  },\n  mounted() {\n    if (!isEmpty(this.linksData)) {\n      this.calculateLinkData();\n    }\n  },\n  methods: {\n    isLinkHighlighted(linkRef) {\n      return this.highlightedLinks.includes(linkRef);\n    },\n    calculateLinkData() {\n      try {\n        this.links = generateLinksData(this.linksData, this.containerId, `-${this.pipelineId}`);\n      } catch (err) {\n        this.$emit('error', { type: DRAW_FAILURE, reportToSentry: false });\n        reportToSentry(this.$options.name, err);\n      }\n    },\n    getLinkClasses(link) {\n      return [\n        this.isLinkHighlighted(link.ref) ? 'gl-stroke-blue-400' : this.defaultLinkColor,\n        { 'gl-opacity-3': this.hasHighlightedJob && !this.isLinkHighlighted(link.ref) },\n      ];\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"gl-relative gl-flex\">\n    <svg\n      id=\"link-svg\"\n      class=\"gl-pointer-events-none gl-absolute\"\n      :viewBox=\"viewBox\"\n      :width=\"`${containerMeasurements.width}px`\"\n      :height=\"`${containerMeasurements.height}px`\"\n    >\n      <path\n        v-for=\"link in links\"\n        :key=\"link.path\"\n        :ref=\"link.ref\"\n        :d=\"link.path\"\n        class=\"gl-fill-transparent gl-duration-slow gl-ease-ease\"\n        :class=\"getLinkClasses(link)\"\n        :stroke-width=\"$options.STROKE_WIDTH\"\n      />\n    </svg>\n    <slot></slot>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./links_inner.vue?vue&type=template&id=5ab65ba6\"\nimport script from \"./links_inner.vue?vue&type=script&lang=js\"\nexport * from \"./links_inner.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-relative gl-flex\"},[_c('svg',{staticClass:\"gl-pointer-events-none gl-absolute\",attrs:{\"id\":\"link-svg\",\"viewBox\":_vm.viewBox,\"width\":`${_vm.containerMeasurements.width}px`,\"height\":`${_vm.containerMeasurements.height}px`}},_vm._l((_vm.links),function(link){return _c('path',{key:link.path,ref:link.ref,refInFor:true,staticClass:\"gl-fill-transparent gl-duration-slow gl-ease-ease\",class:_vm.getLinkClasses(link),attrs:{\"d\":link.path,\"stroke-width\":_vm.$options.STROKE_WIDTH}})}),0),_vm._v(\" \"),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { memoize } from 'lodash';\nimport { parseData } from '~/ci/pipeline_details/utils/parsing_utils';\nimport LinksInner from '~/ci/pipeline_details/graph/components/links_inner.vue';\n\nconst parseForLinksBare = (pipeline) => {\n  const arrayOfJobs = pipeline.flatMap(({ groups }) => groups);\n  return parseData(arrayOfJobs).links;\n};\n\nconst parseForLinks = memoize(parseForLinksBare);\n\nexport default {\n  name: 'LinksLayer',\n  components: {\n    LinksInner,\n  },\n  props: {\n    containerMeasurements: {\n      type: Object,\n      required: true,\n    },\n    pipelineData: {\n      type: Array,\n      required: true,\n    },\n    linksData: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    showLinks: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    containerZero() {\n      return !this.containerMeasurements.width || !this.containerMeasurements.height;\n    },\n    getLinksData() {\n      if (this.linksData.length > 0) {\n        return this.linksData;\n      }\n\n      return parseForLinks(this.pipelineData);\n    },\n    showLinkedLayers() {\n      return this.showLinks && !this.containerZero;\n    },\n  },\n};\n</script>\n<template>\n  <links-inner\n    v-if=\"showLinkedLayers\"\n    :container-measurements=\"containerMeasurements\"\n    :links-data=\"getLinksData\"\n    :pipeline-data=\"pipelineData\"\n    v-bind=\"$attrs\"\n    v-on=\"$listeners\"\n  >\n    <slot></slot>\n  </links-inner>\n  <div v-else>\n    <div class=\"gl-relative gl-flex gl-flex-wrap sm:gl-flex-nowrap\">\n      <slot></slot>\n    </div>\n  </div>\n</template>\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_links_layer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_links_layer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./job_links_layer.vue?vue&type=template&id=13b4361b\"\nimport script from \"./job_links_layer.vue?vue&type=script&lang=js\"\nexport * from \"./job_links_layer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { __, s__ } from '~/locale';\n\nimport { STATUS_FAILED, STATUS_NEUTRAL, STATUS_SUCCESS } from '~/ci/reports/constants';\n\nconst STATUSES = {\n  ALLOWED: 'allowed',\n  DENIED: 'denied',\n  UNCLASSIFIED: 'unclassified',\n};\n\nexport const LICENSE_APPROVAL_STATUS = STATUSES;\n\nexport const REPORT_GROUPS = [\n  {\n    name: s__('LicenseManagement|Denied'),\n    description: __(\"Out-of-compliance with this project's policies and should be removed\"),\n    status: STATUS_FAILED,\n  },\n  {\n    name: s__('LicenseManagement|Uncategorized'),\n    description: __('No policy matches this license'),\n    status: STATUS_NEUTRAL,\n  },\n  {\n    name: s__('LicenseManagement|Allowed'),\n    description: __('Acceptable for use in this project'),\n    status: STATUS_SUCCESS,\n  },\n];\n\nexport const LICENSE_LINK_TELEMETRY_EVENT =\n  'users_clicking_license_testing_visiting_external_website';\n\nexport const CLICK_EXTERNAL_LINK_LICENSE_COMPLIANCE = 'click_external_link_license_compliance';\nexport const LICENSE_LIST = 'licenseList';\n","import { Wormhole, PortalTarget } from 'portal-vue';\nimport { extend } from '../../vue';\nimport { NAME_TOASTER } from '../../constants/components';\nimport { EVENT_NAME_DESTROYED } from '../../constants/events';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { requestAF, removeClass } from '../../utils/dom';\nimport { getRootEventName } from '../../utils/events';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { warn } from '../../utils/warn';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Helper components ---\n\n// @vue/component\nconst DefaultTransition = /*#__PURE__*/extend({\n  mixins: [normalizeSlotMixin],\n  data() {\n    return {\n      // Transition classes base name\n      name: 'b-toaster'\n    };\n  },\n  methods: {\n    onAfterEnter(el) {\n      // Work around a Vue.js bug where `*-enter-to` class is not removed\n      // See: https://github.com/vuejs/vue/pull/7901\n      // The `*-move` class is also stuck on elements that moved,\n      // but there are no JavaScript hooks to handle after move\n      // See: https://github.com/vuejs/vue/pull/7906\n      requestAF(() => {\n        removeClass(el, `${this.name}-enter-to`);\n      });\n    }\n  },\n  render(h) {\n    return h('transition-group', {\n      props: {\n        tag: 'div',\n        name: this.name\n      },\n      on: {\n        afterEnter: this.onAfterEnter\n      }\n    }, this.normalizeSlot());\n  }\n});\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Allowed: 'true' or 'false' or `null`\n  ariaAtomic: makeProp(PROP_TYPE_STRING),\n  ariaLive: makeProp(PROP_TYPE_STRING),\n  name: makeProp(PROP_TYPE_STRING, undefined, true),\n  // Required\n  // Aria role\n  role: makeProp(PROP_TYPE_STRING)\n}, NAME_TOASTER);\n\n// --- Main component ---\n\n// @vue/component\nconst BToaster = /*#__PURE__*/extend({\n  name: NAME_TOASTER,\n  mixins: [listenOnRootMixin],\n  props,\n  data() {\n    return {\n      // We don't render on SSR or if a an existing target found\n      doRender: false,\n      dead: false,\n      // Toaster names cannot change once created\n      staticName: this.name\n    };\n  },\n  beforeMount() {\n    const {\n      name\n    } = this;\n    this.staticName = name;\n\n    /* istanbul ignore if */\n    if (Wormhole.hasTarget(name)) {\n      warn(`A \"<portal-target>\" with name \"${name}\" already exists in the document.`, NAME_TOASTER);\n      this.dead = true;\n    } else {\n      this.doRender = true;\n    }\n  },\n  beforeDestroy() {\n    // Let toasts made with `this.$bvToast.toast()` know that this toaster\n    // is being destroyed and should should also destroy/hide themselves\n    if (this.doRender) {\n      this.emitOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), this.name);\n    }\n  },\n  destroyed() {\n    // Remove from DOM if needed\n    const {\n      $el\n    } = this;\n    /* istanbul ignore next: difficult to test */\n    if ($el && $el.parentNode) {\n      $el.parentNode.removeChild($el);\n    }\n  },\n  render(h) {\n    let $toaster = h('div', {\n      class: ['gl-hidden', {\n        'b-dead-toaster': this.dead\n      }]\n    });\n    if (this.doRender) {\n      const $target = h(PortalTarget, {\n        staticClass: 'b-toaster-slot',\n        props: {\n          name: this.staticName,\n          multiple: true,\n          tag: 'div',\n          slim: false,\n          // transition: this.transition || DefaultTransition\n          transition: DefaultTransition\n        }\n      });\n      $toaster = h('div', {\n        staticClass: 'b-toaster',\n        class: [this.staticName],\n        attrs: {\n          id: this.staticName,\n          // Fallback to null to make sure attribute doesn't exist\n          role: this.role || null,\n          'aria-live': this.ariaLive,\n          'aria-atomic': this.ariaAtomic\n        }\n      }, [$target]);\n    }\n    return $toaster;\n  }\n});\n\nexport { BToaster, DefaultTransition, props };\n","import { Wormhole, Portal } from 'portal-vue';\nimport { extend, COMPONENT_UID_KEY } from '../../vue';\nimport { NAME_TOAST, NAME_TOASTER } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_SHOW, EVENT_NAME_HIDE, EVENT_NAME_DESTROYED, EVENT_OPTIONS_NO_CAPTURE, EVENT_NAME_SHOWN, EVENT_NAME_HIDDEN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_TOAST_TITLE, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { requestAF } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOnOff } from '../../utils/events';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { createNewChildComponent } from '../../utils/create-new-child-component';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { props as props$2, idMixin } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { scopedStyleMixin } from '../../mixins/scoped-style';\nimport { props as props$1, BLink } from '../link/link';\nimport { BVTransition } from '../transition/bv-transition';\nimport { BToaster } from './toaster';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('visible', {\n  type: PROP_TYPE_BOOLEAN,\n  defaultValue: false,\n  event: EVENT_NAME_CHANGE\n});\nconst MIN_DURATION = 1000;\n\n// --- Props ---\n\nconst linkProps = pick(props$1, ['href', 'to']);\nconst props = makePropsConfigurable(sortKeys({\n  ...props$2,\n  ...modelProps,\n  ...linkProps,\n  appendToast: makeProp(PROP_TYPE_BOOLEAN, false),\n  autoHideDelay: makeProp(PROP_TYPE_NUMBER_STRING, 5000),\n  bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n  // Switches role to 'status' and aria-live to 'polite'\n  isStatus: makeProp(PROP_TYPE_BOOLEAN, false),\n  noAutoHide: makeProp(PROP_TYPE_BOOLEAN, false),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noHoverPause: makeProp(PROP_TYPE_BOOLEAN, false),\n  solid: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Render the toast in place, rather than in a portal-target\n  static: makeProp(PROP_TYPE_BOOLEAN, false),\n  title: makeProp(PROP_TYPE_STRING),\n  toastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  toaster: makeProp(PROP_TYPE_STRING, 'b-toaster-top-right'),\n  variant: makeProp(PROP_TYPE_STRING)\n}), NAME_TOAST);\n\n// --- Main component ---\n\n// @vue/component\nconst BToast = /*#__PURE__*/extend({\n  name: NAME_TOAST,\n  mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin, scopedStyleMixin],\n  inheritAttrs: false,\n  props,\n  data() {\n    return {\n      isMounted: false,\n      doRender: false,\n      localShow: false,\n      isTransitioning: false,\n      isHiding: false,\n      order: 0,\n      dismissStarted: 0,\n      resumeDismiss: 0\n    };\n  },\n  computed: {\n    toastClasses() {\n      const {\n        appendToast,\n        variant\n      } = this;\n      return {\n        'b-toast-solid': this.solid,\n        'b-toast-append': appendToast,\n        'b-toast-prepend': !appendToast,\n        [`b-toast-${variant}`]: variant\n      };\n    },\n    slotScope() {\n      const {\n        hide\n      } = this;\n      return {\n        hide\n      };\n    },\n    computedDuration() {\n      // Minimum supported duration is 1 second\n      return mathMax(toInteger(this.autoHideDelay, 0), MIN_DURATION);\n    },\n    computedToaster() {\n      return String(this.toaster);\n    },\n    transitionHandlers() {\n      return {\n        beforeEnter: this.onBeforeEnter,\n        afterEnter: this.onAfterEnter,\n        beforeLeave: this.onBeforeLeave,\n        afterLeave: this.onAfterLeave\n      };\n    },\n    computedAttrs() {\n      return {\n        ...this.bvAttrs,\n        id: this.safeId(),\n        tabindex: '0'\n      };\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME](newValue) {\n      this[newValue ? 'show' : 'hide']();\n    },\n    localShow(newValue) {\n      if (newValue !== this[MODEL_PROP_NAME]) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n    },\n    /* istanbul ignore next */\n    toaster() {\n      // If toaster target changed, make sure toaster exists\n      this.$nextTick(this.ensureToaster);\n    },\n    /* istanbul ignore next */\n    static(newValue) {\n      // If static changes to true, and the toast is showing,\n      // ensure the toaster target exists\n      if (newValue && this.localShow) {\n        this.ensureToaster();\n      }\n    }\n  },\n  created() {\n    // Create private non-reactive props\n    this.$_dismissTimer = null;\n  },\n  mounted() {\n    this.isMounted = true;\n    this.$nextTick(() => {\n      if (this[MODEL_PROP_NAME]) {\n        requestAF(() => {\n          this.show();\n        });\n      }\n    });\n    // Listen for global $root show events\n    this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), id => {\n      if (id === this.safeId()) {\n        this.show();\n      }\n    });\n    // Listen for global $root hide events\n    this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), id => {\n      if (!id || id === this.safeId()) {\n        this.hide();\n      }\n    });\n    // Make sure we hide when toaster is destroyed\n    /* istanbul ignore next: difficult to test */\n    this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), toaster => {\n      /* istanbul ignore next */\n      if (toaster === this.computedToaster) {\n        this.hide();\n      }\n    });\n  },\n  beforeDestroy() {\n    this.clearDismissTimer();\n  },\n  methods: {\n    show() {\n      if (!this.localShow) {\n        this.ensureToaster();\n        const showEvent = this.buildEvent(EVENT_NAME_SHOW);\n        this.emitEvent(showEvent);\n        this.dismissStarted = this.resumeDismiss = 0;\n        this.order = Date.now() * (this.appendToast ? 1 : -1);\n        this.isHiding = false;\n        this.doRender = true;\n        this.$nextTick(() => {\n          // We show the toast after we have rendered the portal and b-toast wrapper\n          // so that screen readers will properly announce the toast\n          requestAF(() => {\n            this.localShow = true;\n          });\n        });\n      }\n    },\n    hide() {\n      if (this.localShow) {\n        const hideEvent = this.buildEvent(EVENT_NAME_HIDE);\n        this.emitEvent(hideEvent);\n        this.setHoverHandler(false);\n        this.dismissStarted = this.resumeDismiss = 0;\n        this.clearDismissTimer();\n        this.isHiding = true;\n        requestAF(() => {\n          this.localShow = false;\n        });\n      }\n    },\n    buildEvent(type) {\n      let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return new BvEvent(type, {\n        cancelable: false,\n        target: this.$el || null,\n        relatedTarget: null,\n        ...options,\n        vueTarget: this,\n        componentId: this.safeId()\n      });\n    },\n    emitEvent(bvEvent) {\n      const {\n        type\n      } = bvEvent;\n      this.emitOnRoot(getRootEventName(NAME_TOAST, type), bvEvent);\n      this.$emit(type, bvEvent);\n    },\n    ensureToaster() {\n      if (this.static) {\n        return;\n      }\n      const {\n        computedToaster\n      } = this;\n      if (!Wormhole.hasTarget(computedToaster)) {\n        const div = document.createElement('div');\n        document.body.appendChild(div);\n        const toaster = createNewChildComponent(this.bvEventRoot, BToaster, {\n          propsData: {\n            name: computedToaster\n          }\n        });\n        toaster.$mount(div);\n      }\n    },\n    startDismissTimer() {\n      this.clearDismissTimer();\n      if (!this.noAutoHide) {\n        this.$_dismissTimer = setTimeout(this.hide, this.resumeDismiss || this.computedDuration);\n        this.dismissStarted = Date.now();\n        this.resumeDismiss = 0;\n      }\n    },\n    clearDismissTimer() {\n      clearTimeout(this.$_dismissTimer);\n      this.$_dismissTimer = null;\n    },\n    setHoverHandler(on) {\n      const el = this.$refs['b-toast'];\n      eventOnOff(on, el, 'mouseenter', this.onPause, EVENT_OPTIONS_NO_CAPTURE);\n      eventOnOff(on, el, 'mouseleave', this.onUnPause, EVENT_OPTIONS_NO_CAPTURE);\n    },\n    onPause() {\n      // Determine time remaining, and then pause timer\n      if (this.noAutoHide || this.noHoverPause || !this.$_dismissTimer || this.resumeDismiss) {\n        return;\n      }\n      const passed = Date.now() - this.dismissStarted;\n      if (passed > 0) {\n        this.clearDismissTimer();\n        this.resumeDismiss = mathMax(this.computedDuration - passed, MIN_DURATION);\n      }\n    },\n    onUnPause() {\n      // Restart timer with max of time remaining or 1 second\n      if (this.noAutoHide || this.noHoverPause || !this.resumeDismiss) {\n        this.resumeDismiss = this.dismissStarted = 0;\n        return;\n      }\n      this.startDismissTimer();\n    },\n    onLinkClick() {\n      // We delay the close to allow time for the\n      // browser to process the link click\n      this.$nextTick(() => {\n        requestAF(() => {\n          this.hide();\n        });\n      });\n    },\n    onBeforeEnter() {\n      this.isTransitioning = true;\n    },\n    onAfterEnter() {\n      this.isTransitioning = false;\n      const hiddenEvent = this.buildEvent(EVENT_NAME_SHOWN);\n      this.emitEvent(hiddenEvent);\n      this.startDismissTimer();\n      this.setHoverHandler(true);\n    },\n    onBeforeLeave() {\n      this.isTransitioning = true;\n    },\n    onAfterLeave() {\n      this.isTransitioning = false;\n      this.order = 0;\n      this.resumeDismiss = this.dismissStarted = 0;\n      const hiddenEvent = this.buildEvent(EVENT_NAME_HIDDEN);\n      this.emitEvent(hiddenEvent);\n      this.doRender = false;\n    },\n    // Render helper for generating the toast\n    makeToast(h) {\n      const {\n        slotScope\n      } = this;\n      const link = isLink(this);\n      const $headerContent = [];\n      const $title = this.normalizeSlot(SLOT_NAME_TOAST_TITLE, slotScope);\n      if ($title) {\n        $headerContent.push($title);\n      }\n      let $header = h();\n      if ($headerContent.length > 0) {\n        $header = h(this.headerTag, {\n          staticClass: 'toast-header',\n          class: this.headerClass\n        }, $headerContent);\n      }\n      const $body = h(link ? BLink : 'div', {\n        staticClass: 'toast-body',\n        class: this.bodyClass,\n        props: link ? pluckProps(linkProps, this) : {},\n        on: link ? {\n          click: this.onLinkClick\n        } : {}\n      }, this.normalizeSlot(SLOT_NAME_DEFAULT, slotScope));\n      return h('div', {\n        staticClass: 'toast',\n        class: this.toastClass,\n        attrs: this.computedAttrs,\n        key: `toast-${this[COMPONENT_UID_KEY]}`,\n        ref: 'toast'\n      }, [$header, $body]);\n    }\n  },\n  render(h) {\n    if (!this.doRender || !this.isMounted) {\n      return h();\n    }\n    const {\n      order,\n      static: isStatic,\n      isHiding,\n      isStatus\n    } = this;\n    const name = `b-toast-${this[COMPONENT_UID_KEY]}`;\n    const $toast = h('div', {\n      staticClass: 'b-toast',\n      class: this.toastClasses,\n      attrs: {\n        // If scoped styles are applied and the toast is not static,\n        // make sure the scoped style data attribute is applied\n        ...(isStatic ? {} : this.scopedStyleAttrs),\n        id: this.safeId('_toast_outer'),\n        role: isHiding ? null : isStatus ? 'status' : 'alert',\n        'aria-live': isHiding ? null : isStatus ? 'polite' : 'assertive',\n        'aria-atomic': isHiding ? null : 'true'\n      },\n      key: name,\n      ref: 'b-toast'\n    }, [h(BVTransition, {\n      props: {\n        noFade: this.noFade\n      },\n      on: this.transitionHandlers\n    }, [this.localShow ? this.makeToast(h) : h()])]);\n    return h(Portal, {\n      props: {\n        name,\n        to: this.computedToaster,\n        order,\n        slim: true,\n        disabled: isStatic\n      }\n    }, [$toast]);\n  }\n});\n\nexport { BToast, props };\n","import { NAME_TOAST_POP, NAME_TOASTER, NAME_TOAST } from '../../../constants/components';\nimport { HOOK_EVENT_NAME_DESTROYED, EVENT_NAME_HIDDEN, EVENT_NAME_DESTROYED, EVENT_NAME_SHOW, EVENT_NAME_HIDE } from '../../../constants/events';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { concat } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport { requestAF } from '../../../utils/dom';\nimport { getRootEventName, getRootActionEventName } from '../../../utils/events';\nimport { isUndefined } from '../../../utils/inspect';\nimport { keys, omit, hasOwnProperty, defineProperty, assign, defineProperties, readonlyDescriptor } from '../../../utils/object';\nimport { pluginFactory } from '../../../utils/plugins';\nimport { warn, warnNotClient } from '../../../utils/warn';\nimport { createNewChildComponent } from '../../../utils/create-new-child-component';\nimport { getEventRoot } from '../../../utils/get-event-root';\nimport { props, BToast } from '../toast';\n\n/**\n * Plugin for adding `$bvToast` property to all Vue instances\n */\n\n// --- Constants ---\n\nconst PROP_NAME = '$bvToast';\nconst PROP_NAME_PRIV = '_bv__toast';\n\n// Base toast props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\nconst BASE_PROPS = ['id', ...keys(omit(props, ['static', 'visible']))];\n\n// Map prop names to toast slot names\nconst propsToSlots = {\n  toastContent: 'default',\n  title: 'toast-title'\n};\n\n// --- Helper methods ---\n\n// Method to filter only recognized props that are not undefined\nconst filterOptions = options => {\n  return BASE_PROPS.reduce((memo, key) => {\n    if (!isUndefined(options[key])) {\n      memo[key] = options[key];\n    }\n    return memo;\n  }, {});\n};\n\n// Method to install `$bvToast` VM injection\nconst plugin = Vue => {\n  // Create a private sub-component constructor that\n  // extends BToast and self-destructs after hidden\n  // @vue/component\n  const BVToastPop = Vue.extend({\n    name: NAME_TOAST_POP,\n    extends: BToast,\n    mixins: [useParentMixin],\n    destroyed() {\n      // Make sure we not in document any more\n      const {\n        $el\n      } = this;\n      if ($el && $el.parentNode) {\n        $el.parentNode.removeChild($el);\n      }\n    },\n    mounted() {\n      // Self destruct handler\n      const handleDestroy = () => {\n        // Ensure the toast has been force hidden\n        this.localShow = false;\n        this.doRender = false;\n        this.$nextTick(() => {\n          this.$nextTick(() => {\n            // In a `requestAF()` to release control back to application\n            // and to allow the portal-target time to remove the content\n            requestAF(() => {\n              this.$destroy();\n            });\n          });\n        });\n      };\n      // Self destruct if parent destroyed\n      this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy);\n      // Self destruct after hidden\n      this.$once(EVENT_NAME_HIDDEN, handleDestroy);\n      // Self destruct when toaster is destroyed\n      this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), toaster => {\n        /* istanbul ignore next: hard to test */\n        if (toaster === this.toaster) {\n          handleDestroy();\n        }\n      });\n    }\n  });\n\n  // Private method to generate the on-demand toast\n  const makeToast = (props, parent) => {\n    if (warnNotClient(PROP_NAME)) {\n      /* istanbul ignore next */\n      return;\n    }\n    // Create an instance of `BVToastPop` component\n    const toast = createNewChildComponent(parent, BVToastPop, {\n      // We set parent as the local VM so these toasts can emit events on the\n      // app `$root`, and it ensures `BToast` is destroyed when parent is destroyed\n      propsData: {\n        ...filterOptions(getComponentConfig(NAME_TOAST)),\n        // Add in (filtered) user supplied props\n        ...omit(props, keys(propsToSlots)),\n        // Props that can't be overridden\n        static: false,\n        visible: true\n      }\n    });\n    // Convert certain props to slots\n    keys(propsToSlots).forEach(prop => {\n      const value = props[prop];\n      if (!isUndefined(value)) {\n        toast.$slots[propsToSlots[prop]] = concat(value);\n      }\n    });\n    // Create a mount point (a DIV) and mount it (which triggers the show)\n    const div = document.createElement('div');\n    document.body.appendChild(div);\n    toast.$mount(div);\n  };\n\n  // Declare BvToast instance property class\n  class BvToast {\n    constructor(vm) {\n      // Assign the new properties to this instance\n      assign(this, {\n        _vm: vm,\n        _root: getEventRoot(vm)\n      });\n      // Set these properties as read-only and non-enumerable\n      defineProperties(this, {\n        _vm: readonlyDescriptor(),\n        _root: readonlyDescriptor()\n      });\n    }\n\n    // --- Public Instance methods ---\n\n    // Opens a user defined toast and returns immediately\n    toast(content) {\n      let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!content || warnNotClient(PROP_NAME)) {\n        /* istanbul ignore next */\n        return;\n      }\n      makeToast({\n        ...filterOptions(options),\n        toastContent: content\n      }, this._vm);\n    }\n\n    // shows a `<b-toast>` component with the specified ID\n    show(id) {\n      if (id) {\n        this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), id);\n      }\n    }\n\n    // Hide a toast with specified ID, or if not ID all toasts\n    hide() {\n      let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n      this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), id);\n    }\n  }\n\n  // Add our instance mixin\n  Vue.mixin({\n    beforeCreate() {\n      // Because we need access to `$root` for `$emits`, and VM for parenting,\n      // we have to create a fresh instance of `BvToast` for each VM\n      this[PROP_NAME_PRIV] = new BvToast(this);\n    }\n  });\n\n  // Define our read-only `$bvToast` instance property\n  // Placed in an if just in case in HMR mode\n  if (!hasOwnProperty(Vue.prototype, PROP_NAME)) {\n    defineProperty(Vue.prototype, PROP_NAME, {\n      get() {\n        /* istanbul ignore next */\n        if (!this || !this[PROP_NAME_PRIV]) {\n          warn(`\"${PROP_NAME}\" must be accessed from a Vue instance \"this\" context.`, NAME_TOAST);\n        }\n        return this[PROP_NAME_PRIV];\n      }\n    });\n  }\n};\nconst BVToastPlugin = /*#__PURE__*/pluginFactory({\n  plugins: {\n    plugin\n  }\n});\n\nexport { BVToastPlugin };\n","import { BVToastPlugin } from './helpers/bv-toast';\nimport { BToast } from './toast';\nexport { BToast } from './toast';\nimport { BToaster } from './toaster';\nexport { BToaster } from './toaster';\nimport { pluginFactory } from '../../utils/plugins';\n\nconst ToastPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BToast,\n    BToaster\n  },\n  // $bvToast injection\n  plugins: {\n    BVToastPlugin\n  }\n});\n\nexport { ToastPlugin };\n","import isFunction from 'lodash/isFunction';\nimport { ToastPlugin } from '../../../vendor/bootstrap-vue/src/components/toast/index';\nimport CloseButton from '../../shared_components/close_button/close_button';\n\n/* eslint-disable import/no-default-export */\nconst DEFAULT_OPTIONS = {\n  autoHideDelay: 5000,\n  toastClass: 'gl-toast',\n  isStatus: true,\n  toaster: 'b-toaster-bottom-left'\n};\nlet toastsCount = 0;\nfunction renderTitle(h, toast, options) {\n  const nodes = [h(CloseButton, {\n    class: ['gl-toast-close-button'],\n    on: {\n      click: toast.hide\n    }\n  })];\n  if (options.action) {\n    nodes.splice(0, 0, h('a', {\n      role: 'button',\n      class: ['gl-toast-action'],\n      on: {\n        click: e => options.action.onClick(e, toast)\n      }\n    }, options.action.text));\n  }\n  return nodes;\n}\nfunction showToast(message) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n  const id = `gl-toast-${toastsCount}`;\n  toastsCount += 1;\n  const hide = () => {\n    this.$bvToast.hide(id);\n  };\n  const toast = {\n    id,\n    hide\n  };\n  if (isFunction(options.onComplete)) {\n    const toastHiddenCallback = e => {\n      if (e.componentId === id) {\n        this.$root.$off('bv::toast:hidden', toastHiddenCallback);\n        options.onComplete(e);\n      }\n    };\n    this.$root.$on('bv::toast:hidden', toastHiddenCallback);\n  }\n  const updatedAutoHideDelay = !Number.isNaN(options === null || options === void 0 ? void 0 : options.autoHideDelay) ? {\n    autoHideDelay: options.autoHideDelay\n  } : null;\n  this.$bvToast.toast(message, {\n    ...DEFAULT_OPTIONS,\n    ...updatedAutoHideDelay,\n    id,\n    title: renderTitle(this.$createElement, toast, options)\n  });\n  return toast;\n}\n\n/**\n * Note: This is not a typical Vue component and needs to be registered before instantiating a Vue app.\n * Once registered, the toast will be globally available throughout your app.\n *\n * See https://gitlab-org.gitlab.io/gitlab-ui/ for detailed documentation.\n */\nvar toast = {\n  install(Vue) {\n    Vue.use(ToastPlugin);\n    Vue.mixin({\n      beforeCreate() {\n        if (this.$toast) {\n          return;\n        }\n        this.$toast = {\n          show: showToast.bind(this)\n        };\n      }\n    });\n  }\n};\n\nexport default toast;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getSecurityTrainingProviders\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityTrainingProviders\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isPrimary\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"isEnabled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":217}};\n    doc.loc.source = {\"body\":\"query getSecurityTrainingProviders($fullPath: ID!) {\\n  project(fullPath: $fullPath) {\\n    id\\n    securityTrainingProviders {\\n      name\\n      id\\n      description\\n      isPrimary\\n      isEnabled\\n      url\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getSecurityTrainingProviders\"] = oneQuery(doc, \"getSecurityTrainingProviders\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LastStateTransition\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Vulnerability\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stateTransitions\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":134}};\n    doc.loc.source = {\"body\":\"fragment LastStateTransition on Vulnerability {\\n  stateTransitions(first: 1) {\\n    nodes {\\n      id\\n      dismissalReason\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"LastStateTransition\"] = oneQuery(doc, \"LastStateTransition\");\n        \n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n"],"sourceRoot":""}