###############################################################################
# Copyright (c) 2000, 2003 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials 
# are made available under the terms of the Common Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/cpl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

Breakpoint.no_associated_marker=Breakpoint does not have an associated marker.

BreakpointManager.Missing_breakpoint_definition=Missing breakpoint definition for marker type {0}
BreakpointManager.Missing_model_identifier=Breakpoint missing debug model identifier
BreakpointManager.Breakpoint_extension_{0}_missing_required_attribute__markerType_1=Breakpoint extension {0} missing required attribute: markerType
BreakpointManager.Breakpoint_extension_{0}_missing_required_attribute__class_2=Breakpoint extension {0} missing required attribute: class
BreakpointManager.Class_{0}_specified_by_breakpoint_extension_{1}_does_not_implement_required_interface_IBreakpoint._3=Class {0} specified by breakpoint extension {1} does not implement required interface IBreakpoint.
BreakpointManager.An_exception_occurred_during_breakpoint_change_notification._4=An exception occurred during breakpoint change notification.
BreakpointManager.An_exception_occurred_during_breakpoint_change_notification._5=An exception occurred during breakpoint change notification.

DebugEvent.illegal_detail=detail is not one of the allowed constants, see IDebugEventConstants
DebugEvent.illegal_kind=kind is not one of the allowed constants, see IDebugEventConstants

DebugPlugin.Invalid_status_handler_extension__{0}_2=Invalid status handler extension: {0}
DebugPlugin.Debug_async_queue_1=Debug async queue
DebugPlugin.Exception_occurred_executing_command_line._1=Exception occurred executing command line.
DebugPlugin.Eclipse_runtime_does_not_support_working_directory_2=Eclipse runtime does not support working directory
DebugPlugin.Registered_status_handler_{0}_does_not_implement_required_interface_IStatusHandler._1=Registered status handler {0} does not implement required interface IStatusHandler.
DebugPlugin.An_exception_occurred_while_dispatching_debug_events._2=An exception occurred while dispatching debug events.
DebugPlugin.An_exception_occurred_while_filtering_debug_events._3=An exception occurred while filtering debug events.

InputStreamMonitor.label=Input Stream Monitor

Launch.terminate_failed=Terminate failed

LaunchConfiguration.Exception_occurred_creating_launch_configuration_memento_9=Exception occurred creating launch configuration memento
LaunchConfiguration.Exception_occurred_parsing_memento_5=Exception occurred parsing memento
LaunchConfiguration.Failed_to_delete_launch_configuration._1=Failed to delete launch configuration.
LaunchConfiguration.Invalid_launch_configuration_memento__missing_path_attribute_3=Invalid launch configuration memento: missing path attribute
LaunchConfiguration.Invalid_launch_configuration_memento__missing_local_attribute_4=Invalid launch configuration memento: missing local attribute
LaunchConfiguration.Unable_to_restore_location_for_launch_configuration_from_memento__{0}_1=Unable to restore location for launch configuration from memento: {0}
LaunchConfiguration.Unable_to_generate_memento_for_{0},_shared_file_does_not_exist._1=Unable to generate memento for {0}, shared file does not exist.

LaunchConfigurationInfo.Attribute_{0}_is_not_of_type_boolean._3=Attribute {0} is not of type boolean.
LaunchConfigurationInfo.Attribute_{0}_is_not_of_type_int._2=Attribute {0} is not of type int.
LaunchConfigurationInfo.Attribute_{0}_is_not_of_type_java.lang.String._1=Attribute {0} is not of type java.lang.String.
LaunchConfigurationInfo.Attribute_{0}_is_not_of_type_java.util.List._1=Attribute {0} is not of type java.util.List.
LaunchConfigurationInfo.Attribute_{0}_is_not_of_type_java.util.Map._1=Attribute {0} is not of type java.util.Map.
LaunchConfigurationInfo.Invalid_launch_configuration_XML._10=Invalid launch configuration XML.
LaunchConfigurationInfo.missing_type=Launch configuration type id \"{0}\" does not exist.\nPossible causes:\n\tMissing specification of a launch type (missing plug-in)\n\tIncorrect launch configuration XML

LaunchConfigurationWorkingCopy.{0}_occurred_generating_launch_configuration_XML._1={0} occurred generating launch configuration XML.
LaunchConfigurationWorkingCopy.Specified_container_for_launch_configuration_does_not_exist_2=Specified container for launch configuration does not exist

LaunchManager.{0}_occurred_while_reading_launch_configuration_file._1=Exception occurred while reading launch configuration file: {0}.
LaunchManager.Invalid_launch_configuration_index._18=Invalid launch configuration index.
LaunchManager.Invalid_source_locator_extentsion_defined_by_plug-in___{0}______id___not_specified_12=Invalid source locator extension defined by plug-in \"{0}\": \"id\" not specified
LaunchManager.does_not_exist=Launch configuration {0} at {1} does not exist.
LaunchManager.Source_locator_does_not_exist__{0}_13=Source locator does not exist: {0}
LaunchManager.Invalid_launch_configuration_comparator_extension_defined_by_plug-in_{0}_-_attribute_not_specified_1=Invalid launch configuration comparator extension defined by plug-in {0} - attribute not specified
LaunchManager.An_exception_occurred_during_launch_change_notification._1=An exception occurred during launch change notification.
LaunchManager.An_exception_occurred_during_launch_configuration_change_notification._3=An exception occurred during launch configuration change notification.
LaunchManager.27=Invalid launch mode extension defined by plug-in {0} - mode not specified
LaunchManager.28=Invalid launch mode extension defined by plug-in {0} - label not specified
LaunchManager.30=Unable to retrieve shared launch configuration file for {0}
LaunchManager.31=Unable to restore launch configuration \"{0}\". Probable cause: missing plug-in that defines launch configuration type.

OutputStreamMonitor.label=Output Stream Monitor

ProcessMonitorJob.0=Process monitor

RuntimeProcess.terminate_failed=Terminate failed
RuntimeProcess.Exit_value_not_available_until_process_terminates._1=Exit value not available until process terminates.

ExpressionManager.An_exception_occurred_during_expression_change_notification._1=An exception occurred during expression change notification.

LaunchConfigurationType.Launch_delegate_for_{0}_does_not_implement_required_interface_ILaunchConfigurationDelegate._1=Launch delegate for {0} does not implement required interface ILaunchConfigurationDelegate.
LaunchConfigurationType.9=Launch mode {0} not supported for configuration type {1}
LaunchConfigurationType.10=Launch delegate not registered for configuration type {0}, mode {1}

DefaultVariableExpander.0=No expander class defined for the variable {0}
DefaultVariableExpander.2=An error occurred attempting to expand the variable {0}. {1}
VariableUtil.4=Invalid variable format: {0}
VariableUtil.5=The variable named \"{0}\" does not exist.
VariableUtil.6=Could not resolve environment.
VariableUtil.7=Invalid environment specified for the launch configuration named {0}.

