###############################################################################
# Copyright (c) 2000, 2018 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
#     Google Inc - add support for accepting multiple connections
###############################################################################

PacketReceiveManager_Got_IOException_from_Virtual_Machine_1=Got IOException from Virtual Machine
PacketReceiveManager_Got_IOException_from_Virtual_Machine_2=Got IOException from Virtual Machine
PacketSendManager_Got_IOException_from_Virtual_Machine_1=Got IOException from Virtual Machine
SocketAttachingConnectorImpl_Machine_name_to_which_to_attach_for_VM_connections_1=Machine name to which to attach for VM connections
#Separator for Remote Java application socket attach and listen arguments
SocketConnectionLabelSeparator=:
#For translation of separator ":" it should be consistent to the translated value of SocketConnectionLabelSeparator
SocketAttachingConnectorImpl_Host_2=&Host:
SocketAttachingConnectorImpl_Port_number_to_which_to_attach_for_VM_connections_3=Port number to which to attach for VM connections
#For translation of separator ":" it should be consistent to the translated value of SocketConnectionLabelSeparator
SocketAttachingConnectorImpl_Port_4=Po&rt:
SocketAttachingConnectorImpl_1=Connection Timeout
#For translation of separator ":" it should be consistent to the translated value of SocketConnectionLabelSeparator
SocketAttachingConnectorImpl_2=Connection Timeout:
SocketAttachingConnectorImpl_Attaches_by_socket_to_other_VMs_5=Attaches by socket to other VMs
SocketAttachingConnectorImpl_Connection_argument_is_not_of_the_right_type_6=Connection argument is not of the right type
SocketAttachingConnectorImpl_Necessary_connection_argument_is_null_7=Necessary connection argument is null
SocketAttachingConnectorImpl_Connection_argument_is_not_a_number_8=Connection argument is not a number
SocketLaunchingConnectorImpl_Home_directory_of_the_SDK_or_runtime_environment_used_to_launch_the_application_1=Home directory of the SDK or runtime environment used to launch the application
SocketLaunchingConnectorImpl_Home_2=Home:
SocketLaunchingConnectorImpl_Launched_VM_options_3=Launched VM options
SocketLaunchingConnectorImpl_Options_4=Options:
SocketLaunchingConnectorImpl_Main_class_and_arguments__or_if__jar_is_an_option__the_main_jar_file_and_arguments_5=Main class and arguments, or if -jar is an option, the main jar file and arguments
SocketLaunchingConnectorImpl_Main_6=Main:
SocketLaunchingConnectorImpl_All_threads_will_be_suspended_before_execution_of_main_7=All threads will be suspended before execution of main
SocketLaunchingConnectorImpl_Suspend_8=Suspend:
SocketLaunchingConnectorImpl_Character_used_to_combine_space_delimited_text_into_a_single_command_line_argument_9=Character used to combine space-delimited text into a single command line argument
SocketLaunchingConnectorImpl_Quote_10=Quote:
SocketLaunchingConnectorImpl_Name_of_the_Java_VM_launcher_11=Name of the Java VM launcher
SocketLaunchingConnectorImpl_Launcher_12=Launcher:
SocketLaunchingConnectorImpl_Launches_target_using_Sun_Java_VM_command_line_and_attaches_to_it_13=Launches target using Sun Java VM command line and attaches to it
SocketLaunchingConnectorImpl_Connection_argument_is_not_of_the_right_type_14=Connection argument is not of the right type
SocketLaunchingConnectorImpl_Necessary_connection_argument_is_null_15=Necessary connection argument is null
SocketLaunchingConnectorImpl_Connection_argument_is_not_a_number_16=Connection argument is not a number
SocketListeningConnectorImpl_Port_number_at_which_to_listen_for_VM_connections_1=Port number at which to listen for VM connections
#For translation of separator ":" it should be consistent to the translated value of SocketConnectionLabelSeparator
SocketListeningConnectorImpl_Port_2=Po&rt:
SocketListeningConnectorImpl_Timeout_before_accept_returns_3=Timeout before accept returns
#For translation of separator ":" it should be consistent to the translated value of SocketConnectionLabelSeparator
SocketListeningConnectorImpl_Timeout_4=Timeout:
SocketListeningConnectorImpl_Accepts_socket_connections_initiated_by_other_VMs_5=Accepts socket connections initiated by other VMs
SocketListeningConnectorImpl_Connection_argument_is_not_of_the_right_type_6=Connection argument is not of the right type
SocketListeningConnectorImpl_Necessary_connection_argument_is_null_7=Necessary connection argument is null
SocketListeningConnectorImpl_Connection_argument_is_not_a_number_8=Connection argument is not a number
#For translation of separator ":" it should be consistent to the translated value of SocketConnectionLabelSeparator
SocketListeningConnectorImpl_Limit=Connection &limit:
SocketListeningConnectorImpl_Limit_incoming_connections=Limit incoming connections (0 = no limit)
SocketListeningConnectorImpl_ListeningConnector_Socket_Port=ListeningConnector Socket Port=
SocketRawLaunchingConnectorImpl_Raw_command_to_start_the_debugged_application_VM_1=Raw command to start the debugged application VM
SocketRawLaunchingConnectorImpl_Command_2=Command:
SocketRawLaunchingConnectorImpl_Address_from_which_to_listen_for_a_connection_after_the_raw_command_is_run_3=Address from which to listen for a connection after the raw command is run
SocketRawLaunchingConnectorImpl_Address_4=Address:
SocketRawLaunchingConnectorImpl_Character_used_to_combine_space_delimited_text_into_a_single_command_line_argument_5=Character used to combine space-delimited text into a single command line argument
SocketRawLaunchingConnectorImpl_Quote_6=Quote:
SocketRawLaunchingConnectorImpl_Launches_target_using_user_specified_command_line_and_attaches_to_it_7=Launches target using user-specified command line and attaches to it
SocketRawLaunchingConnectorImpl_Connection_argument_is_not_of_the_right_type_8=Connection argument is not of the right type
SocketRawLaunchingConnectorImpl_Necessary_connection_argument_is_null_9=Necessary connection argument is null
SocketRawLaunchingConnectorImpl_Connection_argument_is_not_a_number_10=Connection argument is not a number
SocketLaunchingConnectorImpl_VM_did_not_connect_within_given_time___0__ms_1=VM did not connect within given time: {0} ms
PacketSendManager_Got__0__from_Virtual_Machine_1=Got {0} from Virtual Machine
PacketSendManager_Got__0__from_Virtual_Machine___1__1=Got {0} from Virtual Machine: {1}
PacketReceiveManager_Got__0__from_Virtual_Machine_1=Got {0} from Virtual Machine
PacketReceiveManager_Got__0__from_Virtual_Machine___1__1=Got {0} from Virtual Machine: {1}
PacketReceiveManager_0=Timeout occurred while waiting for packet {0}.
SocketTransportService_0=Attach Thread
SocketTransportService_1=Handshake Thread