From 28422f10c7f1ce834b34a8c1a040dba450ce52c7 Mon Sep 17 00:00:00 2001 From: Jiri Date: Feb 21 2019 19:11:52 +0000 Subject: updated to soon to release itw 1.8 with native launchers --- diff --git a/.gitignore b/.gitignore index 16ba627..997c6d8 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ /icedtea-web-1.7pre-RC06.tar.gz /icedtea-web-1.7.tar.gz /icedtea-web-1.7.1.tar.gz +/icedtea-web-1.8pre.tar.gz diff --git a/1473-1509.patch b/1473-1509.patch deleted file mode 100644 index 82fe276..0000000 --- a/1473-1509.patch +++ /dev/null @@ -1,11103 +0,0 @@ -diff -r dbb8dc397d15 -r fcb841380712 AUTHORS ---- a/AUTHORS Mon Dec 18 13:22:51 2017 +0100 -+++ b/AUTHORS Tue Dec 18 11:22:16 2018 +0100 -@@ -4,6 +4,7 @@ - Lillian Angel - Andrew Azores - Deepak Bhole -+Laurent Bourgès - Adam Buchta - Ricardo Martín Camarero - Marcin Cieslak -@@ -11,9 +12,11 @@ - Adam Domurad - Lukasz Dracz - Thomas Fitzsimmons -+Olesya Gerasimenko - Michał Górny - Mark Greenwood - Tereza Hlavackova -+Lars Herschke - Peter Hatina - Andrew John Hughes - Jie Kang -diff -r dbb8dc397d15 -r fcb841380712 ChangeLog ---- a/ChangeLog Mon Dec 18 13:22:51 2017 +0100 -+++ b/ChangeLog Tue Dec 18 11:22:16 2018 +0100 -@@ -1,3 +1,282 @@ -+2018-12-10 Jiri Vanek -+ jtesdall -+ -+ Replaced hardcoded BOM character with utf representation (PR3671) -+ * netx/net/sourceforge/nanoxml/XMLElement.java: (scanLeadingWhitespace) resolved PR3671, relaced ' ' by \\ufeff -+ -+2018-11-28 Jiri Vanek -+ -+ deployment.config now support generic url instead just file -+ * netx/net/sourceforge/jnlp/config/Defaults.java: added option KEY_SYSTEM_CONFIG as url and KEY_SYSTEM_CONFIG_MANDATORY as boolean, -+ thus documented -+ * netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java: refactored to work with general url rather then with file only -+ * netx/net/sourceforge/jnlp/config/InfrastructureFileDescriptor.java: added (getUrl) as shortcut to getFile().toURI().toURL() -+ * netx/net/sourceforge/jnlp/controlpanel/CommandLine.java: (CommandLine) made aware of MalformedURLException -+ * tests/netx/unit/net/sourceforge/jnlp/config/DeploymentConfigurationTest.java: added tests for new DeploymentConfiguration.checkUrl -+ covering ok/not ok file, ok/not ok http -+ * NEWS: mentioned -+ -+2018-11-27 Jiri Vanek -+ -+ * netx/net/sourceforge/jnlp/OptionsDefinitions.java: (main) moved from ifelse to switch -+ -+2018-11-27 Jiri Vanek -+ -+ * tests/netx/unit/net/sourceforge/jnlp/runtime/JNLPProxySelectorTest.java: fixed tests in (testConvertingProxyAutoConfigResultToProxyObject) -+ -+2018-11-27 Jiri Vanek -+ -+ https is preffered only on default port -+ * netx/net/sourceforge/jnlp/cache/ResourceUrlCreator.java: (getUrls) when http protocol-ed url have set port -+ its https clone is not put to the list of possible urls -+ -+2018-11-27 Jiri Vanek -+ -+ PR3645, second part - following windows system paths correctly -+ * netx/net/sourceforge/jnlp/config/PathsAndFiles.java: following -+ https://docs.oracle.com/javase/7/docs/technotes/guides/jweb/jcp/properties.html -+ (SystemCofigFileDescriptor) now honor WINDIR on windows -+ -+2018-11-27 Jiri Vanek -+ Lars Herschke -+ -+ Fixed PR3637 - making cache work with jdk9+ #runtime jar url anchor -+ * netx/net/sourceforge/jnlp/runtime/CachedJarFileCallback.java: (retrieve) if jar is not found in cache, ale url without anchor is attempted -+ * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: usinf localFile.toURI().toURL() instead of direct localFile.toURL() -+ -+2018-11-23 Lars Herschke -+ Jiri Vanek -+ -+ Fixed LockedFile for readonly on windows -+ * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: made isUnix deprecated -+ * netx/net/sourceforge/jnlp/util/lockingfile/LockedFile.java: creating file (for windows) only if not readonly -+ * tests/netx/unit/net/sourceforge/jnlp/util/lockingfile/NonWindowsLockedFile.java: tests for os set to no windows -+ * tests/netx/unit/net/sourceforge/jnlp/util/lockingfile/WindowsLockedFileTest.java: tests for os set to windows -+ -+ -+2018-11-23 Lars Herschke -+ -+ Fix for java.lang.NoClassDefFoundError: Could not initialize class net.sourceforge.jnlp.runtime.JNLPRuntime$DeploymentConfigurationHolder -+ * NEWS: mentioned PR3644 -+ * netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java: removed useless logging of headless - initiation of logging - on windows -+ * AUTHORS: added Lars -+ -+2018-11-07 Olesya Gerasimenko -+ -+ Added Russian translation -+ * netx/net/sourceforge/jnlp/resources/Messages_ru.propertie: new file with Russian strings -+ * tests/netx/unit/net/sourceforge/jnlp/resources/MessagesPropertiesTest.java: added RU to iterated sets. -+ * AUTHORS: added Olesya -+ -+2018-10-18 Jiri Vanek -+ -+ Removed gcc if native plugin is not build -+ * acinclude.m4: AC_PROG_CC and AC_PROG_CXX moved behind enable_native_plugin condition -+ * configure.ac: AC_PROG_CC and AC_PROG_CXX moved behind enable_native_plugin condition, Faked fastDepC variables -+ otherwise configure always fell -+ * Makefile.am: plugin native tests made passing without plugin -+ -+2018-10-17 Jiri Vanek -+ Alex Kashchenko -+ -+ * netx/net/sourceforge/jnlp/util/lockingfile/LockedFile.java: caching enabled, or at least semi-enabled on windows -+ -+2018-10-17 Laurent Bourgès -+ -+ * netx/net/sourceforge/jnlp/controlpanel/CachePane.java: using SwingUtils.invokeLater instead of -+ * netx/net/sourceforge/jnlp/controlpanel/CommandLine.java: same + calling SwingUtils.setup -+ * netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java: same -+ * netx/net/sourceforge/jnlp/controlpanel/PolicyPanel.java: same -+ * netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java: same -+ * netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/Blinker.java: same -+ * netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/FreeDesktopIntegrationEditorFrame.java: same -+ * netx/net/sourceforge/jnlp/runtime/Boot.java: same + calling SwingUtils.setup -+ * netx/net/sourceforge/jnlp/security/appletextendedsecurity/ExtendedAppletSecurityHelp.java: same -+ * netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java: same + calling SwingUtils.setup -+ * netx/net/sourceforge/jnlp/splashscreen/parts/BasicComponentErrorSplashScreen.java: same -+ * netx/net/sourceforge/jnlp/splashscreen/parts/JEditorPaneBasedExceptionDialog.java: same -+ * netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java: same -+ * netx/net/sourceforge/jnlp/util/ImageResources.java: added check for null in stream -+ * netx/net/sourceforge/swing/SwingUtils.java: added setup-able. removed EDT_DAEMON_THREAD_POOL (thus currently not -+ working properly in jdk11+, but fix for JDK itself is on the way) -+ -+2018-10-12 Jiri Vanek -+ -+ reworked showDocument logic -+ * netx/net/sourceforge/jnlp/config/BasicValueValidators.java: added special validator for browser -+ * netx/net/sourceforge/jnlp/config/Defaults.java: used this validator -+ * netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java: declared browser's constants and environment variable -+ * netx/net/sourceforge/jnlp/resources/Messages.properties: removed invalid lines, added new lines -+ * netx/net/sourceforge/jnlp/resources/Messages_cs.properties: removed invalid lines, -+ * netx/net/sourceforge/jnlp/resources/Messages_de.properties: removed invalid lines, -+ * netx/net/sourceforge/jnlp/resources/Messages_pl.properties: removed invalid lines, -+ * netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java: showDocument now works -+ * netx/net/sourceforge/jnlp/runtime/Translator.java: added shortcut method to call call VVPossibleBrowserValues -+ * netx/net/sourceforge/jnlp/runtime/html/browser/LinkingBrowser.java: split creation from stand alone launch -+ * netx/net/sourceforge/jnlp/services/XBasicService.java: fully reworked showDocument. Focus on standard desktop api and customization -+ * tests/reproducers/signed/ShowDocument/resources/ShowDocumentApplet.jnlp: test jnlp for applet's context.showDocument -+ * tests/reproducers/signed/ShowDocument/resources/ShowDocumentMain.jnlp: test jnlp for application's basicService.showDocument -+ * tests/reproducers/signed/ShowDocument/resources/document.txt: document to be shown in test -+ * tests/reproducers/signed/ShowDocument/srcs/ShowDocument.java: body of applet/jnlp-app -+ * tests/reproducers/signed/ShowDocument/testcases/ShowDocumentTest.java: two testcases - one for applet, second for app. Both running on headless. -+ -+2018-09-26 Jiri Vanek -+ -+ Allowed itw-settings to be opened from viewer -+ * netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java: used exit instead of dispose -+ * netx/net/sourceforge/jnlp/resources/Messages.properties: new string with key of ButLunchFullItwSettings -+ * netx/net/sourceforge/jnlp/runtime/Boot.java: get rid of exit, and only return from main method -+ * netx/net/sourceforge/jnlp/security/SecurityDialog.java: call too showSingleCertInfoDialog changed to Window -+ * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: added new button to launch ControlPanel main class -+ * netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java: used exit instead of dispose -+ * netx/net/sourceforge/swing/SwingUtils.java: (info) now accepts Window instead of JDialog -+ -+2018-10-01 Laurent Bourgès -+ -+ Fixed EDT hanging -+ * AUTHORS: added Laurent -+ * netx/net/sourceforge/jnlp/GuiLaunchHandler.java: invokeLater and invokeAndWait moved from SwingUtilities to the local wrapper SwingUtils. -+ Simplified splashscreen loading -+ * netx/net/sourceforge/jnlp/JNLPSplashScreen.java: called super and added name to the dialog -+ * netx/net/sourceforge/jnlp/Launcher.java: added log entry for main class loading. Highlighted usage of SwingUtilities on top SwingUtils -+ for this particular space -+ * netx/net/sourceforge/jnlp/about/AboutDialog.java: added name. InvokeLater and invokeAndWait moved from SwingUtilities to the -+ local wrapper SwingUtils. -+ * netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java: reworked to work in SwingUtils.invokeAndWait. Added name. -+ * netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java: added name -+ * netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java: added name -+ * netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java: added top level setup for enabling SwingUtils debugging abilities -+ added log entry for main class loading. Highlighted usage of SwingUtilities on top SwingUtils for this particular space -+ * netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java: instead of invokeAndWait, used SwingUtils.callOnAppContext -+ * netx/net/sourceforge/jnlp/runtime/Boot.java: added top level setup for enabling SwingUtils debugging abilities -+ CertificateViwer moved to invokeAndWait. added log entry for main class loading. Highlighted usage of SwingUtilities instead -+ of SwingUtils for this particular case -+ * netx/net/sourceforge/jnlp/runtime/HtmlBoot.java: invokeLater and invokeAndWait moved from SwingUtilities to the local wrapper SwingUtils. -+ * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: removed import of import javax.swing.JWindow -+ * netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java: direct call to JWindow().getOwner(), moved to SwingUtils.getOrCreateWindowOwner. -+ Its existence doubtful -+ * netx/net/sourceforge/jnlp/security/SecurityDialog.java: installPanel moved to invokeAndWait -+ * netx/net/sourceforge/jnlp/security/SecurityDialogs.java: used SwingUtils instead of SwingUtilities, added name -+ * netx/net/sourceforge/jnlp/security/dialogs/ViwableDialog.java: swing ops moved to invokeAndWait -+ * netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java: calling Swingutils.setup, still all the same -+ * netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java: still the same -+ * netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java: same - name, SwingUtils x SwingUtilities, and proper usage of invokes -+ * netx/net/sourceforge/jnlp/util/FileUtils.java: SwingUtils x SwingUtilities -+ * netx/net/sourceforge/jnlp/util/logging/JavaConsole.java: observable.notifyObservers moved to invokeLater and -+ and invoked only if observable.hasChanged -+ * netx/net/sourceforge/swing/SwingUtils.java: new class. Wrapper around most commonly used SwingUtilities calls. Add debugging bridge -+ property of icedtea-web.edt.debug set to true, can enable it on runtime. -+ * netx/net/sourceforge/swing/ThreadCheckingRepaintManager.java: Based on http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html -+ debugging repaint manager -+ -+2018-10-01 Fridrich Strba -+ -+ Added eternal java version detection -+ * acinclude.m4: used sophisticated head-cut to determine single number major java version -+ * plugin/icedteanp/IcedTeaNPPlugin.cc: similar -+ * launcher/launchers.in: same -+ -+2018-09-05 Jiri Vanek -+ -+ * launcher/launchers.in: inverted logic to detect modular jdk. -+ If it is jdk8, then it is not modular JDK, otherwise it is. -+ -+2018-08-13 Jiri Vanek -+ -+ * LICENSE: new file. Added explicit license with details -+ -+2018-06-20 Jiri Vanek -+ -+ Enhanced itw-settngs' certificate viewer to show what file is backing showed certificate store. -+ * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: adapted to refactoring of KeyStores -+ * netx/net/sourceforge/jnlp/security/KeyStores.java: getKeyStore now returns wrapper with path alongside with ks itself -+ * netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java: adapted to refactoring of KeyStores -+ * netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java: now shows read-only path to shown ks -+ -+2018-06-20 Jiri Vanek -+ -+ * netx/net/sourceforge/jnlp/security/dialogs/CertsInfoPane.java: fixed hex output of certificate signature -+ for jdk8 -+ -+2018-06-20 Jiri Vanek -+ -+ Added semi support for recognition jdk10 and up -+ * netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java: replaced hardcoded 9 by cycle from 9 to 99 -+ * netx/net/sourceforge/jnlp/resources/Messages.properties: replaced jdk9 by jdk9 and up. -+ -+2018-05-28 Jiri Vanek -+ -+ added deployment property to enforce headfull execution -+ * netx/net/sourceforge/jnlp/config/Defaults.java: IGNORE_HEADLESS_CHECK set to false -+ * netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java: deployment.headless.ignore -+ * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: if deployment.headless.ignore is true, then headless state is not checked -+ and environment is always considered as headfull -+ -+2018-05-24 Jiri Vanek -+ -+ Made headless detection softer -+ * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: JWindow().getOwner() repalced by GraphicsEnvironment.isHeadless() -+ JWindow().getOwner() was failing on headfull systems after headless check itself, on NPE. -+ -+2018-05-14 Jiri Vanek -+ -+ * netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java: getDocumentBase now returns codeBase as fallback when -+ documentBase is null. Oracle Applications R12, Oracle Forms Java Webstart application is requesting getDocumentBase -+ where it shouldn't, however they refuse to modify their code and add ITW to supported platforms -+ -+2018-02-06 Jiri Vanek -+ -+ Added test for javafx-desc -+ * tests/reproducers/custom/JavaFx/resources/JavaFx.jar -+ * tests/reproducers/custom/JavaFx/resources/JavaFx.jnlp -+ * tests/reproducers/custom/JavaFx/srcs/Controller.class -+ * tests/reproducers/custom/JavaFx/srcs/Controller.java -+ * tests/reproducers/custom/JavaFx/srcs/Main.class -+ * tests/reproducers/custom/JavaFx/srcs/Main.java -+ * tests/reproducers/custom/JavaFx/srcs/Makefile -+ * tests/reproducers/custom/JavaFx/srcs/helloworld.fxml -+ * tests/reproducers/custom/JavaFx/testcases/JavaFxTest.java -+ -+2018-02-05 Jiri Vanek -+ -+ Added basic support for javafx desc -+ * netx/net/sourceforge/jnlp/ApplicationDesc.java: added flag fx to rember what was initiator -+ * netx/net/sourceforge/jnlp/Node.java: Added abstraction ElementName over string of element name to hold namespace -+ and separate it for name if present -+ * netx/net/sourceforge/jnlp/Parser.java: for javafx-desc ApplicationDesc is instantiated. Adapted to ElementName -+ * tests/netx/unit/net/sourceforge/jnlp/ParserCornerCases.java: ElementName -+ * tests/netx/unit/net/sourceforge/jnlp/ParserTest.java: ElementName -+ -+2018-02-05 Jiri Vanek -+ -+ Fixed news for latest changes -+ * NEWS: mentioned javafx-desc, -nosecurity enhancement and j2se/java resources -+ -+2018-02-03 Jiri Vanek -+ -+ Made ITW to load resources from j2se/java tag too -+ * netx/net/sourceforge/jnlp/Parser.java: constructors/methods made public to help unittests -+ * netx/net/sourceforge/jnlp/ShortcutDesc.java: same -+ * netx/net/sourceforge/jnlp/ResourcesDesc.java: getJars made to iterate recursively over content of j2se -+ * tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java: added testcase -+ * tests/netx/unit/net/sourceforge/jnlp/jarsInJreDesc.jnlp: testfile copied form omegat which have this strange resources -+ -+2018-02-03 Jiri Vanek -+ -+ nosecurity switch made extendable also for certificate issues -+ * netx/net/sourceforge/jnlp/config/Defaults.java: set deployment.security.itw.ignorecertissues -+ * netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java: added deployment.security.itw.ignorecertissues -+ * netx/net/sourceforge/jnlp/resources/Messages.properties: BONosecurity is now tailed by rumor about deployment.security.itw.ignorecertissues -+ * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: when ITW was about to throw certificate-caused launch exception, -+ it i snow consulted with nosecurity and deployment.security.itw.ignorecertissues. If both are here, exception is only printed -+ -+2018-02-03 Jiri Vanek -+ -+ * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: autoformatted -+ -+2018-02-03 Jiri Vanek -+ * netx/net/sourceforge/jnlp/Parser.java: auto-formatted -+ - 2017-12-15 Jiri Vanek - - Pre-release tuning -@@ -11,6 +290,12 @@ - * NEWS: set date and added content for 1.7.1 - * configure.ac: (AC_INIT) set to use 1.7.1 - -+2017-11-08 Alex Kashchenko -+ -+ Support creating cache files with restricted access on windows -+ * netx/net/sourceforge/jnlp/util/FileUtils.java: set proper ACLs for cache files and directories -+ * tests/netx/unit/net/sourceforge/jnlp/util/FileUtilsTest.java: added testCreateRestrictedFile test that checks ACLs for cache file -+ - 2017-15-12 Jiri Vanek - Tomáš Votava - -diff -r dbb8dc397d15 -r fcb841380712 LICENSE ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/LICENSE Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,8 @@ -+*************************************** -+** LGPLv2+ and GPLv2 with exceptions ** -+*************************************** -+ -+ -+Details: -+All newest files, unless claiming differently and all files inherited from GNU Classpath (mostly base of plugin) are GPL+Exceptions -+NetX code is GPL and LGPL only. -diff -r dbb8dc397d15 -r fcb841380712 Makefile.am ---- a/Makefile.am Mon Dec 18 13:22:51 2017 +0100 -+++ b/Makefile.am Tue Dec 18 11:22:16 2018 +0100 -@@ -204,6 +204,13 @@ - export COVERABLE_PLUGIN_DIR=$(TESTS_DIR)/icedteanp-build-with-jacoco - endif - -+if ENABLE_NATIVE_PLUGIN -+ CPPUNIT_IMPL = run-cpp-unit-tests-impl -+ CPPUNIT_CLEAN_IMPL = clean-cpp-unit-tests-impl -+else -+ CPPUNIT_IMPL = run-cpp-unit-tests-impl-placeholder -+ CPPUNIT_CLEAN_IMPL = clean-cpp-unit-tests-placeholder -+endif - - if CP_SUPPORTS_REFLINK - REFLINK = --reflink=auto -@@ -573,12 +580,12 @@ - $(CPP_UNITTEST_FRAMEWORK_LIB)\ - $(BUILT_CPP_UNIT_TEST_FRAMEWORK) -o $@ - --clean-cpp-unit-tests: -+clean-cpp-unit-tests-impl: - rm -f stamps/cpp-unit-tests-compile.stamp - rm -f $(CPP_UNITTEST_EXECUTABLE) - rm -f $(CPP_UNITTEST_DIR)/*.o - --run-cpp-unit-tests: $(CPP_UNITTEST_EXECUTABLE) -+run-cpp-unit-tests-impl: $(CPP_UNITTEST_EXECUTABLE) - $(CPP_UNITTEST_EXECUTABLE) - - # End of CPP Unit test targets -@@ -594,6 +601,17 @@ - fi - endif - -+clean-cpp-unit-tests-placeholder: -+ echo "plugin disabled" -+ -+run-cpp-unit-tests-impl-placeholder: -+ echo "plugin disabled" -+ -+clean-cpp-unit-tests: $(CPPUNIT_CLEAN_IMPL) -+ -+run-cpp-unit-tests: $(CPPUNIT_IMPL) -+ -+ - stamps/plugin.stamp: $(ICEDTEAPLUGIN_TARGET) - mkdir -p stamps - touch stamps/plugin.stamp -diff -r dbb8dc397d15 -r fcb841380712 NEWS ---- a/NEWS Mon Dec 18 13:22:51 2017 +0100 -+++ b/NEWS Tue Dec 18 11:22:16 2018 +0100 -@@ -7,6 +7,13 @@ - GX - http://bugs.gentoo.org/show_bug.cgi?id=X - - CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY -+ -+New in release 1.7.2 (YYYY-MM-DD): -+* added support for javafx-desc and so allwong run of pure-javafx only applications -+* --nosecurity enhanced for possibility to skip invalid signatures -+* enhanced to allow resources to be read also from j2se/java element (OmegaT) -+* PR3644 - java.lang.NoClassDefFoundError: Could not initialize class net.sourceforge.jnlp.runtime.JNLPRuntime$DeploymentConfigurationHolder -+* deployment.config now support generic url instead just file - - New in release 1.7.1 (2017-12-15): - * better work with authors file -diff -r dbb8dc397d15 -r fcb841380712 README ---- a/README Mon Dec 18 13:22:51 2017 +0100 -+++ b/README Tue Dec 18 11:22:16 2018 +0100 -@@ -48,7 +48,7 @@ - - IcedTea-Web contains a Free Software browser plugin based on NPRuntime - called NPPlugin. By default, this will be built, and it can be turned --off using the -disable-plugin option. -+off using the --disable-native-plugin option. - - Building IcedTea-Web - ==================== -@@ -73,7 +73,7 @@ - Some distributions do not provide correct NPAPI headers so you can use those: - https://bitbucket.org/mgorny/npapi-sdk/downloads. - --The plugin can be disabled by passing --disable-plugin. -+The plugin can be disabled by passing --disable-native-plugin. - - The following optional dependencies enable additional features - -@@ -120,7 +120,7 @@ - Other options may be supplied which enable or disable new features. - These are documented fully in the relevant section below. - --* --disable-plugin: Don't build the browser plugin. -+* --disable-native-plugin: Don't build the browser plugin. - * --with-rhino: Specify the location of rhino jar - * --with-tagsoup: Specify the location of the tagsoup jar - * --with-jacoco: Specify the location of the jacoco jar -diff -r dbb8dc397d15 -r fcb841380712 acinclude.m4 ---- a/acinclude.m4 Mon Dec 18 13:22:51 2017 +0100 -+++ b/acinclude.m4 Tue Dec 18 11:22:16 2018 +0100 -@@ -418,6 +418,8 @@ - dnl FIXME: use unstable - AC_REQUIRE([IT_CHECK_NATIVE_PLUGIN]) - if test "x${enable_native_plugin}" = "xyes" ; then -+ AC_PROG_CC -+ AC_PROG_CXX - PKG_CHECK_MODULES(GLIB, glib-2.0) - AC_SUBST(GLIB_CFLAGS) - AC_SUBST(GLIB_LIBS) -@@ -795,10 +797,16 @@ - [ - AC_REQUIRE([IT_FIND_JAVA]) - AC_MSG_CHECKING([JDK version]) -- JAVA_VERSION=`$JAVA -version 2>&1` -+ JAVA_VERSION=`$JAVA -version 2>&1 | head -n 1 | cut -d'-' -f1 | cut -d'"' -f2 | cut -d'.' -f1` -+ if test "${JAVA_VERSION}" -eq "1"; then -+ JAVA_VERSION=`$JAVA -version 2>&1 | head -n 1 | cut -d'-' -f1 | cut -d'"' -f2 | cut -d'.' -f2` -+ fi - AC_MSG_RESULT($JAVA_VERSION) -- HAVE_JAVA8=`if echo $JAVA_VERSION | grep -q -e 1.8.0 ; then echo yes ; fi` -- HAVE_JAVA9=`if echo $JAVA_VERSION | grep -q -e 1.9.0 -e \"9 -e "build 9" ; then echo yes ; fi ` -+ if test "${JAVA_VERSION}" -eq "8"; then -+ HAVE_JAVA8="yes" -+ elif test "$JAVA_VERSION" -ge "9"; then -+ HAVE_JAVA9="yes" -+ fi - if test -z "$HAVE_JAVA8" -a -z "$HAVE_JAVA9"; then - AC_MSG_ERROR([JDK8 or newer is required, detected was: $JAVA_VERSION]) - fi -diff -r dbb8dc397d15 -r fcb841380712 configure.ac ---- a/configure.ac Mon Dec 18 13:22:51 2017 +0100 -+++ b/configure.ac Tue Dec 18 11:22:16 2018 +0100 -@@ -13,8 +13,6 @@ - AC_SUBST(abs_top_srcdir) - - AC_CANONICAL_HOST --AC_PROG_CC --AC_PROG_CXX - IT_SET_ARCH_SETTINGS - - IT_CP_SUPPORTS_REFLINK -@@ -184,4 +182,18 @@ - AC_CONFIG_FILES([jrunscript], [chmod u+x jrunscript]) - AC_CONFIG_FILES([build.properties]) - -+# this is nasty hack to make GCC trully optional -+echo -n "destroying gcc config? ... " -+if test "x${enable_native_plugin}" = "xno" ; then -+am__fastdepCC_TRUE="#" -+am__fastdepCC_FALSE="#" -+am__fastdepCC="#" -+am__fastdepCXX_TRUE="#" -+am__fastdepCXX_FALSE="#" -+am__fastdepCXX="#" -+echo "destroyed!" -+else -+echo "no" -+fi -+ - AC_OUTPUT -diff -r dbb8dc397d15 -r fcb841380712 launcher/launchers.in ---- a/launcher/launchers.in Mon Dec 18 13:22:51 2017 +0100 -+++ b/launcher/launchers.in Tue Dec 18 11:22:16 2018 +0100 -@@ -37,9 +37,13 @@ - LAUNCHER_BOOTCLASSPATH="$LAUNCHER_BOOTCLASSPATH:@JRE@/$NASHORN" - fi; - --JDK9="NO" --if ${JAVA} -version 2>&1 | grep -q "version \"9-" ; then -- JDK9="YES" -+MODULAR_JDK="NO" -+version=`${JAVA} -version 2>&1 | head -n 1 | cut -d'-' -f1 | cut -d'"' -f2 | cut -d'.' -f1` -+if [ $version -eq "1" ]; then -+ version=`${JAVA} -version 2>&1 | head -n 1 | cut -d'-' -f1 | cut -d'"' -f2 | cut -d'.' -f2` -+fi -+if [ $version -ge "9" ]; then -+ MODULAR_JDK="YES" - fi - - JAVA_ARGS=( ) -@@ -82,7 +86,7 @@ - COMMAND[k]="${LAUNCHER_FLAGS}" - k=$((k+1)) - --if [ "x$JDK9" == "xYES" ] ; then -+if [ "x$MODULAR_JDK" == "xYES" ] ; then - COMMAND[k]="--patch-module" - k=$((k+1)) - COMMAND[k]="java.desktop=@PLUGIN_JAR@:@NETX_JAR@" -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/ApplicationDesc.java ---- a/netx/net/sourceforge/jnlp/ApplicationDesc.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/ApplicationDesc.java Tue Dec 18 11:22:16 2018 +0100 -@@ -30,7 +30,8 @@ - private final String mainClass; - - /** the arguments */ -- private String arguments[]; -+ private String arguments[]; -+ private final boolean fx; - - /** - * Create an Application descriptor. -@@ -38,9 +39,10 @@ - * @param mainClass the main class name and package - * @param arguments the arguments - */ -- public ApplicationDesc(String mainClass, String arguments[]) { -+ public ApplicationDesc(String mainClass, String[] arguments, boolean isFX) { - this.mainClass = mainClass; - this.arguments = arguments; -+ this.fx = isFX; - } - - /** -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/GuiLaunchHandler.java ---- a/netx/net/sourceforge/jnlp/GuiLaunchHandler.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/GuiLaunchHandler.java Tue Dec 18 11:22:16 2018 +0100 -@@ -37,10 +37,8 @@ - - package net.sourceforge.jnlp; - --import java.lang.reflect.InvocationTargetException; - import java.net.URL; -- --import javax.swing.SwingUtilities; -+import net.sourceforge.swing.SwingUtils; - - import net.sourceforge.jnlp.cache.ResourceTracker; - import net.sourceforge.jnlp.cache.UpdatePolicy; -@@ -70,7 +68,7 @@ - @Override - public void launchError(final LaunchException exception) { - BasicExceptionDialog.willBeShown(); -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - closeSplashScreen(); -@@ -94,7 +92,7 @@ - - @Override - public void launchStarting(ApplicationInstance application) { -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - closeSplashScreen(); -@@ -117,39 +115,17 @@ - resourceTracker.addResource(splashImageURL, file.getFileVersion(), null, policy); - } - synchronized (mutex) { -- try { -- SwingUtilities.invokeAndWait(new Runnable() { -+ SwingUtils.invokeAndWait(new Runnable() { - -- @Override -- public void run() { -- splashScreen = new JNLPSplashScreen(resourceTracker, file); -- } -- }); -- } catch (InterruptedException ie) { -- // Wait till splash screen is created -- while (splashScreen == null); -- } catch (InvocationTargetException ite) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ite); -- } -- try { -- SwingUtilities.invokeAndWait(new Runnable() { -- -- @Override -- public void run() { -- splashScreen.setSplashImageURL(splashImageURL); -- } -- }); -- } catch (InterruptedException ie) { -- // Wait till splash screen is created -- while (!splashScreen.isSplashImageLoaded()); -- } catch (InvocationTargetException ite) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ite); -- } -- -- -+ @Override -+ public void run() { -+ splashScreen = new JNLPSplashScreen(resourceTracker, file); -+ splashScreen.setSplashImageURL(splashImageURL); -+ } -+ }); - } - -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - - @Override - public void run() { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/JNLPSplashScreen.java ---- a/netx/net/sourceforge/jnlp/JNLPSplashScreen.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/JNLPSplashScreen.java Tue Dec 18 11:22:16 2018 +0100 -@@ -47,6 +47,7 @@ - import java.net.URL; - import javax.imageio.ImageIO; - import javax.swing.JDialog; -+import net.sourceforge.swing.SwingUtils; - import net.sourceforge.jnlp.cache.ResourceTracker; - import net.sourceforge.jnlp.splashscreen.SplashPanel; - import net.sourceforge.jnlp.splashscreen.SplashUtils; -@@ -70,7 +71,9 @@ - private SplashPanel splash; - - public JNLPSplashScreen(ResourceTracker resourceTracker, final JNLPFile file) { -- -+ super(); -+ this.setName("JNLPSplashScreen"); -+ SwingUtils.info(this); - setIconImages(ImageResources.INSTANCE.getApplicationImages()); - - // If the JNLP file does not contain any icon images, the splash image -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/Launcher.java ---- a/netx/net/sourceforge/jnlp/Launcher.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/Launcher.java Tue Dec 18 11:22:16 2018 +0100 -@@ -40,11 +40,11 @@ - import net.sourceforge.jnlp.services.InstanceExistsException; - import net.sourceforge.jnlp.services.ServiceUtil; - --import javax.swing.SwingUtilities; - import javax.swing.text.html.parser.ParserDelegator; - import net.sourceforge.jnlp.splashscreen.SplashUtils; - import net.sourceforge.jnlp.util.StreamUtils; - import net.sourceforge.jnlp.util.logging.OutputController; -+import net.sourceforge.swing.SwingUtils; - - import sun.awt.SunToolkit; - -@@ -549,12 +549,15 @@ - R("LCantDetermineMainClassInfo"))); - } - -+ OutputController.getLogger().log(OutputController.Level.ERROR_ALL, "Starting application [" + mainName + "] ..."); -+ - Class mainClass = app.getClassLoader().loadClass(mainName); - - Method main = mainClass.getMethod("main", new Class[] { String[].class }); - String args[] = file.getApplication().getArguments(); - -- SwingUtilities.invokeAndWait(new Runnable() { -+ // create EDT within application context: -+ SwingUtils.callOnAppContext(new Runnable() { - // dummy method to force Event Dispatch Thread creation - @Override - public void run() { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/Node.java ---- a/netx/net/sourceforge/jnlp/Node.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/Node.java Tue Dec 18 11:22:16 2018 +0100 -@@ -40,6 +40,7 @@ - import java.util.ArrayList; - import java.util.Enumeration; - import java.util.List; -+import java.util.Objects; - - import net.sourceforge.nanoxml.XMLElement; - -@@ -52,7 +53,7 @@ - * regular XML Node interface (for the methods used by Parser). - */ - /* NANO */ --class Node { -+public class Node { - private XMLElement xml; - private Node next; - private Node children[]; -@@ -124,18 +125,62 @@ - return (String) xml.getAttribute(name); - } - -- String getNodeName() { -+ public ElementName getNodeName() { - if (xml.getName() == null) { -- return ""; -+ return new ElementName(""); - } - else { -- return xml.getName(); -+ return new ElementName(xml.getName()); - } - } - -+ - @Override - public String toString() { -- return getNodeName(); -+ return getNodeName().getOriginal(); -+ } -+ -+ public static class ElementName { -+ -+ private final String base; -+ -+ public ElementName(String base) { -+ this.base = base; -+ } -+ -+ @Override -+ public boolean equals(Object obj) { -+ if (obj instanceof ElementName) { -+ return ((ElementName) obj).base.equals(base); -+ } else { -+ return false; -+ } -+ } -+ -+ @Override -+ public int hashCode() { -+ return base.hashCode(); -+ } -+ -+ public String getName() { -+ if (base.contains(":")) { -+ return base.split(":")[1]; -+ } else { -+ return base; -+ } -+ } -+ public String getPrefix() { -+ if (base.contains(":")) { -+ return base.split(":")[0]; -+ } else { -+ return ""; -+ } -+ } -+ -+ private String getOriginal() { -+ return base + "(" + getPrefix() + ":" + getName() + ")"; -+ } -+ - } - } - -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/OptionsDefinitions.java ---- a/netx/net/sourceforge/jnlp/OptionsDefinitions.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/OptionsDefinitions.java Tue Dec 18 11:22:16 2018 +0100 -@@ -234,12 +234,18 @@ - } - - public static void main(String[] args) throws IOException { -- if (args[0].equals(TextsProvider.JAVAWS)) { -- printOptions(getJavaWsOptions()); -- } else if (args[0].equals(TextsProvider.ITWEB_SETTINGS)) { -- printOptions(getItwsettingsCommands()); -- } else if (args[0].equals(TextsProvider.POLICY_EDITOR)) { -- printOptions(getPolicyEditorOptions()); -+ switch (args[0]) { -+ case TextsProvider.JAVAWS: -+ printOptions(getJavaWsOptions()); -+ break; -+ case TextsProvider.ITWEB_SETTINGS: -+ printOptions(getItwsettingsCommands()); -+ break; -+ case TextsProvider.POLICY_EDITOR: -+ printOptions(getPolicyEditorOptions()); -+ break; -+ default: -+ break; - } - } - -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/Parser.java ---- a/netx/net/sourceforge/jnlp/Parser.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/Parser.java Tue Dec 18 11:22:16 2018 +0100 -@@ -14,7 +14,6 @@ - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, write to the Free Software - // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -- - package net.sourceforge.jnlp; - - import static net.sourceforge.jnlp.runtime.Translator.R; -@@ -33,26 +32,25 @@ - import net.sourceforge.jnlp.util.logging.OutputController; - - /** -- * Contains methods to parse an XML document into a JNLPFile. -- * Implements JNLP specification version 1.0. -+ * Contains methods to parse an XML document into a JNLPFile. Implements JNLP -+ * specification version 1.0. - * -- * @author Jon A. Maxwell (JAM) - initial author -+ * @author Jon A. Maxwell -+ * (JAM) - initial author - * @version $Revision: 1.13 $ - */ - public final class Parser { -- -+ - private static String CODEBASE = "codebase"; - private static String MAINCLASS = "main-class"; - private static final Pattern anyWhiteSpace = Pattern.compile("\\s"); - - // defines netx.jnlp.Node class if using Tiny XML or Nano XML -- - // Currently uses the Nano XML parse. Search for "SAX" or - // "TINY" or "NANO" and uncomment those blocks and comment the - // active ones (if any) to switch XML parsers. Also - // (un)comment appropriate Node class at end of this file and - // do a clean build. -- - /** - * Ensure consistent error handling. - */ -@@ -69,80 +67,96 @@ - OutputController.getLogger().log(OutputController.Level.ERROR_ALL, exception); - } - }; -- */ -- -+ */ - // fix: some descriptors need to use the jnlp file at a later - // date and having file ref lets us pass it to their - // constructors - // -- /** the file reference */ -+ /** -+ * the file reference -+ */ - private final JNLPFile file; // do not use (uninitialized) - -- /** the root node */ -+ /** -+ * the root node -+ */ - private final Node root; - -- /** the specification version */ -+ /** -+ * the specification version -+ */ - private final Version spec; - -- /** the base URL that all hrefs are relative to */ -+ /** -+ * the base URL that all hrefs are relative to -+ */ - private final URL base; - -- /** the codebase URL */ -+ /** -+ * the codebase URL -+ */ - private URL codebase; - -- /** the file URL */ -+ /** -+ * the file URL -+ */ - private final URL fileLocation; - -- /** whether to throw errors on non-fatal errors. */ -+ /** -+ * whether to throw errors on non-fatal errors. -+ */ - private final boolean strict; // if strict==true parses a file with no error then strict==false should also - -- /** whether to allow extensions to the JNLP specification */ -+ /** -+ * whether to allow extensions to the JNLP specification -+ */ - private final boolean allowExtensions; // true if extensions to JNLP spec are ok -- -+ - /** -- * Create a parser for the JNLP file. If the location -- * parameters is not null it is used as the default codebase -- * (does not override value of jnlp element's href -- * attribute). -+ * Create a parser for the JNLP file. If the location parameters is not null -+ * it is used as the default codebase (does not override value of jnlp -+ * element's href attribute). - *

-- * The root node may be normalized as a side effect of this -- * constructor. -+ * The root node may be normalized as a side effect of this constructor. - *

-+ * - * @param file the (uninitialized) file reference -- * @param base if codebase is not specified, a default base for relative URLs -+ * @param base if codebase is not specified, a default base for relative -+ * URLs - * @param root the root node - * @param settings the parser settings to use when parsing the JNLP file - * @throws ParseException if the JNLP file is invalid - */ -- Parser(JNLPFile file, URL base, Node root, ParserSettings settings) throws ParseException { -- this(file, base, root, settings, null); -+ public Parser(JNLPFile file, URL base, Node root, ParserSettings settings) throws ParseException { -+ this(file, base, root, settings, null); - } - - /** -- * Create a parser for the JNLP file. If the location -- * parameters is not null it is used as the default codebase -- * (does not override value of jnlp element's href -- * attribute). -+ * Create a parser for the JNLP file. If the location parameters is not null -+ * it is used as the default codebase (does not override value of jnlp -+ * element's href attribute). - *

-- * The root node may be normalized as a side effect of this -- * constructor. -+ * The root node may be normalized as a side effect of this constructor. - *

-+ * - * @param file the (uninitialized) file reference -- * @param base if codebase is not specified, a default base for relative URLs -+ * @param base if codebase is not specified, a default base for relative -+ * URLs - * @param root the root node - * @param settings the parser settings to use when parsing the JNLP file - * @param codebase codebase to use if we did not parse one from JNLP file. - * @throws ParseException if the JNLP file is invalid - */ -- Parser(JNLPFile file, URL base, Node root, ParserSettings settings, URL codebase) throws ParseException { -+ public Parser(JNLPFile file, URL base, Node root, ParserSettings settings, URL codebase) throws ParseException { - this.file = file; - this.root = root; - this.strict = settings.isStrict(); - this.allowExtensions = settings.isExtensionAllowed(); - - // ensure it's a JNLP node -- if (root == null || !root.getNodeName().equals("jnlp")) -+ if (root == null || !root.getNodeName().getName().equals("jnlp")) { - throw new ParseException(R("PInvalidRoot")); -+ } - - // JNLP tag information - this.spec = getVersion(root, "spec", "1.0+"); -@@ -154,7 +168,9 @@ - } - - if (this.codebase == null) // Codebase is overwritten if codebase was not specified in file or if parsing of it failed -+ { - this.codebase = codebase; -+ } - - this.base = (this.codebase != null) ? this.codebase : base; // if codebase not specified use default codebase - fileLocation = getURL(root, "href", this.base); -@@ -165,6 +181,7 @@ - - /** - * Returns the file version. -+ * - * @return version of file - */ - public Version getFileVersion() { -@@ -173,6 +190,7 @@ - - /** - * Returns the file location. -+ * - * @return url of source file - */ - public URL getFileLocation() { -@@ -188,7 +206,7 @@ - - /** - * @return the specification version. -- * -+ * - */ - public Version getSpecVersion() { - return spec; -@@ -198,7 +216,7 @@ - UpdateDesc updateDesc = null; - Node child = parent.getFirstChild(); - while (child != null) { -- if (child.getNodeName().equals("update")) { -+ if (child.getNodeName().getName().equals("update")) { - if (strict && updateDesc != null) { - throw new ParseException(R("PTwoUpdates")); - } -@@ -254,16 +272,15 @@ - // - // This section loads the resources elements - // -- - /** -- * @return all of the ResourcesDesc elements under the specified -- * node (jnlp or j2se). -+ * @return all of the ResourcesDesc elements under the specified node (jnlp -+ * or j2se). - * - * @param parent the parent node (either jnlp or j2se) - * @param j2se true if the resources are located under a j2se or java node - * @throws ParseException if the JNLP file is invalid - */ -- List getResources(Node parent, boolean j2se) -+ public List getResources(Node parent, boolean j2se) - throws ParseException { - List result = new ArrayList<>(); - Node resources[] = getChildNodes(parent, "resources"); -@@ -285,34 +302,39 @@ - * @param j2se true if the resources are located under a j2se or java node - * @throws ParseException if the JNLP file is invalid - */ -- private ResourcesDesc getResourcesDesc(Node node, boolean j2se) throws ParseException { -+ private ResourcesDesc getResourcesDesc(Node node, boolean j2se) throws ParseException { - boolean mainFlag = false; // if found a main tag - - // create resources -- ResourcesDesc resources = -- new ResourcesDesc(file, -- getLocales(node), -- splitString(getAttribute(node, "os", null)), -- splitString(getAttribute(node, "arch", null))); -+ ResourcesDesc resources -+ = new ResourcesDesc(file, -+ getLocales(node), -+ splitString(getAttribute(node, "os", null)), -+ splitString(getAttribute(node, "arch", null))); - - // step through the elements - Node child = node.getFirstChild(); - while (child != null) { -- String name = child.getNodeName(); -+ String name = child.getNodeName().getName(); - - // check for nativelib but no trusted environment -- if ("nativelib".equals(name)) -- if (!isTrustedEnvironment()) -+ if ("nativelib".equals(name)) { -+ if (!isTrustedEnvironment()) { - throw new ParseException(R("PUntrustedNative")); -+ } -+ } - - if ("j2se".equals(name) || "java".equals(name)) { -- if (getChildNode(root, "component-desc") != null) -- if (strict) -+ if (getChildNode(root, "component-desc") != null) { -+ if (strict) { - throw new ParseException(R("PExtensionHasJ2SE")); -- if (!j2se) -+ } -+ } -+ if (!j2se) { - resources.addResource(getJRE(child)); -- else -+ } else { - throw new ParseException(R("PInnerJ2SE")); -+ } - } - - if ("jar".equals(name) || "nativelib".equals(name)) { -@@ -331,14 +353,17 @@ - resources.addResource(jar); - } - -- if ("extension".equals(name)) -+ if ("extension".equals(name)) { - resources.addResource(getExtension(child)); -+ } - -- if ("property".equals(name)) -+ if ("property".equals(name)) { - resources.addResource(getProperty(child)); -+ } - -- if ("package".equals(name)) -+ if ("package".equals(name)) { - resources.addResource(getPackage(child)); -+ } - - child = child.getNextSibling(); - } -@@ -378,16 +403,18 @@ - * @throws ParseException if the JNLP file is invalid - */ - private JARDesc getJAR(Node node) throws ParseException { -- boolean nativeJar = "nativelib".equals(node.getNodeName()); -+ boolean nativeJar = "nativelib".equals(node.getNodeName().getName()); - URL location = getRequiredURL(node, "href", base); - Version version = getVersion(node, "version", null); - String part = getAttribute(node, "part", null); - boolean main = "true".equals(getAttribute(node, "main", "false")); - boolean lazy = "lazy".equals(getAttribute(node, "download", "eager")); - -- if (nativeJar && main) -- if (strict) -+ if (nativeJar && main) { -+ if (strict) { - throw new ParseException(R("PNativeHasMain")); -+ } -+ } - - return new JARDesc(location, version, part, lazy, main, nativeJar, true); - -@@ -445,14 +472,15 @@ - // - // This section loads the information elements - // -- - /** - * Make sure a title and vendor are present and nonempty and localized as - * best matching as possible for the JVM's current locale. Fallback to a -- * generalized title and vendor otherwise. If none is found, throw an exception. -+ * generalized title and vendor otherwise. If none is found, throw an -+ * exception. - * -- * Additionally prints homepage, description, title and vendor to stdout -- * if in Debug mode. -+ * Additionally prints homepage, description, title and vendor to stdout if -+ * in Debug mode. -+ * - * @throws RequiredElementException - */ - void checkForInformation() throws RequiredElementException { -@@ -462,30 +490,34 @@ - String title = file.getTitle(); - String vendor = file.getVendor(); - -- if (title == null || title.trim().isEmpty()) -+ if (title == null || title.trim().isEmpty()) { - throw new MissingTitleException(); -- else OutputController.getLogger().log("Acceptable title tag found, contains: " + title); -+ } else { -+ OutputController.getLogger().log("Acceptable title tag found, contains: " + title); -+ } - -- if (vendor == null || vendor.trim().isEmpty()) -+ if (vendor == null || vendor.trim().isEmpty()) { - throw new MissingVendorException(); -- else OutputController.getLogger().log("Acceptable vendor tag found, contains: " + vendor); -+ } else { -+ OutputController.getLogger().log("Acceptable vendor tag found, contains: " + vendor); -+ } - } - - /** -- * @return all of the information elements under the specified -- * node. -+ * @return all of the information elements under the specified node. - * - * @param parent the parent node (jnlp) - * @throws ParseException if the JNLP file is invalid - */ -- List getInfo(Node parent) -+ public List getInfo(Node parent) - throws ParseException { - List result = new ArrayList<>(); - Node info[] = getChildNodes(parent, "information"); - - // ensure that there are at least one information section present -- if (info.length == 0) -+ if (info.length == 0) { - throw new MissingInformationException(); -+ } - - // create objects from the info sections - for (Node infoNode : info) { -@@ -501,7 +533,7 @@ - * @param node the information node - * @throws ParseException if the JNLP file is invalid - */ -- InformationDesc getInformationDesc(Node node) throws ParseException { -+ InformationDesc getInformationDesc(Node node) throws ParseException { - List descriptionsUsed = new ArrayList<>(); - - // locale -@@ -513,30 +545,38 @@ - // step through the elements - Node child = node.getFirstChild(); - while (child != null) { -- String name = child.getNodeName(); -+ String name = child.getNodeName().getName(); - -- if ("title".equals(name)) -+ if ("title".equals(name)) { - addInfo(info, child, null, getSpanText(child, false)); -- if ("vendor".equals(name)) -+ } -+ if ("vendor".equals(name)) { - addInfo(info, child, null, getSpanText(child, false)); -+ } - if ("description".equals(name)) { - String kind = getAttribute(child, "kind", "default"); -- if (descriptionsUsed.contains(kind)) -- if (strict) -+ if (descriptionsUsed.contains(kind)) { -+ if (strict) { - throw new ParseException(R("PTwoDescriptions", kind)); -+ } -+ } - - descriptionsUsed.add(kind); - addInfo(info, child, kind, getSpanText(child, false)); - } -- if ("homepage".equals(name)) -+ if ("homepage".equals(name)) { - addInfo(info, child, null, getRequiredURL(child, "href", base)); -- if ("icon".equals(name)) -+ } -+ if ("icon".equals(name)) { - addInfo(info, child, getAttribute(child, "kind", "default"), getIcon(child)); -- if ("offline-allowed".equals(name)) -+ } -+ if ("offline-allowed".equals(name)) { - addInfo(info, child, null, Boolean.TRUE); -+ } - if ("sharing-allowed".equals(name)) { -- if (strict && !allowExtensions) -+ if (strict && !allowExtensions) { - throw new ParseException(R("PSharing")); -+ } - addInfo(info, child, null, Boolean.TRUE); - } - if ("association".equals(name)) { -@@ -566,10 +606,11 @@ - protected void addInfo(InformationDesc info, Node node, String mod, Object value) { - String modStr = (mod == null) ? "" : "-" + mod; - -- if (node == null) -+ if (node == null) { - return; -+ } - -- info.addItem(node.getNodeName() + modStr, value); -+ info.addItem(node.getNodeName().getName() + modStr, value); - } - - /** -@@ -592,22 +633,23 @@ - // - // This section loads the security descriptor element - // -- - /** -- * @return the security descriptor element. If no security -- * element was specified in the JNLP file then a SecurityDesc -- * with applet permissions is returned. -+ * @return the security descriptor element. If no security element was -+ * specified in the JNLP file then a SecurityDesc with applet permissions is -+ * returned. - * - * @param parent the parent node - * @throws ParseException if the JNLP file is invalid - */ -- SecurityDesc getSecurity(Node parent) throws ParseException { -+ public SecurityDesc getSecurity(Node parent) throws ParseException { - Node nodes[] = getChildNodes(parent, "security"); - - // test for too many security elements -- if (nodes.length > 1) -- if (strict) -+ if (nodes.length > 1) { -+ if (strict) { - throw new ParseException(R("PTwoSecurity")); -+ } -+ } - - Object type = SecurityDesc.SANDBOX_PERMISSIONS; - RequestedPermissionLevel requestedPermissionLevel = RequestedPermissionLevel.NONE; -@@ -633,16 +675,17 @@ - } - - /** -- * Returns whether the JNLP file requests a trusted execution -- * environment. -+ * Returns whether the JNLP file requests a trusted execution environment. - */ - private boolean isTrustedEnvironment() { - Node security = getChildNode(root, "security"); - -- if (security != null) -+ if (security != null) { - if (getChildNode(security, "all-permissions") != null -- || getChildNode(security, "j2ee-application-client-permissions") != null) -+ || getChildNode(security, "j2ee-application-client-permissions") != null) { - return true; -+ } -+ } - - return false; - } -@@ -650,7 +693,6 @@ - // - // This section loads the launch descriptor element - // -- - /** - * @return the launch descriptor element, either AppletDesc, - * ApplicationDesc, or InstallerDesc. -@@ -658,23 +700,31 @@ - * @param parent the parent node - * @throws ParseException if the JNLP file is invalid - */ -- LaunchDesc getLauncher(Node parent) throws ParseException { -+ public LaunchDesc getLauncher(Node parent) throws ParseException { - // check for other than one application type - if (1 < getChildNodes(parent, "applet-desc").length - + getChildNodes(parent, "application-desc").length -- + getChildNodes(parent, "installer-desc").length) -+ + getChildNodes(parent, "javafx-desc").length -+ + getChildNodes(parent, "installer-desc").length) { - throw new ParseException(R("PTwoDescriptors")); -+ } - - Node child = parent.getFirstChild(); - while (child != null) { -- String name = child.getNodeName(); -+ String name = child.getNodeName().getName(); - -- if ("applet-desc".equals(name)) -+ if ("applet-desc".equals(name)) { - return getApplet(child); -- if ("application-desc".equals(name)) -- return getApplication(child); -- if ("installer-desc".equals(name)) -+ } -+ if ("application-desc".equals(name)) { -+ return getApplication(child, false); -+ } -+ if ("installer-desc".equals(name)) { - return getInstaller(child); -+ } -+ if ("javafx-desc".equals(name)) { -+ return getApplication(child, true); -+ } - - child = child.getNextSibling(); - } -@@ -682,6 +732,8 @@ - // not reached - return null; - } -+ -+ - - /** - * @param node -@@ -701,8 +753,9 @@ - width = Integer.parseInt(getRequiredAttribute(node, "width", "100")); - height = Integer.parseInt(getRequiredAttribute(node, "height", "100")); - } catch (NumberFormatException nfe) { -- if (width <= 0) -+ if (width <= 0) { - throw new ParseException(R("PBadWidth")); -+ } - throw new ParseException(R("PBadWidth")); - } - -@@ -721,13 +774,12 @@ - * @param node - * @throws ParseException if the JNLP file is invalid - */ -- private ApplicationDesc getApplication(Node node) throws ParseException { -+ private ApplicationDesc getApplication(Node node, boolean isFx) throws ParseException { - String main = getMainClass(node, false); - List argsList = new ArrayList<>(); - - // if (main == null) - // only ok if can be found in main jar file (can't check here but make a note) -- - // read parameters - Node args[] = getChildNodes(node, "argument"); - for (Node arg : args) { -@@ -738,7 +790,7 @@ - - String argStrings[] = argsList.toArray(new String[argsList.size()]); - -- return new ApplicationDesc(main, argStrings); -+ return new ApplicationDesc(main, argStrings, isFx); - } - - /** -@@ -754,10 +806,11 @@ - - Node child = parent.getFirstChild(); - while (child != null) { -- String name = child.getNodeName(); -+ String name = child.getNodeName().getName(); - -- if ("component-desc".equals(name)) -+ if ("component-desc".equals(name)) { - return new ComponentDesc(); -+ } - - child = child.getNextSibling(); - } -@@ -801,19 +854,23 @@ - // step through the elements - Node child = node.getFirstChild(); - while (child != null) { -- String name = child.getNodeName(); -+ String name = child.getNodeName().getName(); - -- if (null != name) switch (name) { -- case "desktop": -- if (showOnDesktop && strict) { -- throw new ParseException(R("PTwoDesktops")); -- } showOnDesktop = true; -- break; -- case "menu": -- if (menu != null && strict) { -- throw new ParseException(R("PTwoMenus")); -- } menu = getMenu(child); -- break; -+ if (null != name) { -+ switch (name) { -+ case "desktop": -+ if (showOnDesktop && strict) { -+ throw new ParseException(R("PTwoDesktops")); -+ } -+ showOnDesktop = true; -+ break; -+ case "menu": -+ if (menu != null && strict) { -+ throw new ParseException(R("PTwoMenus")); -+ } -+ menu = getMenu(child); -+ break; -+ } - } - - child = child.getNextSibling(); -@@ -850,24 +907,29 @@ - // step through the elements - Node child = node.getFirstChild(); - while (child != null) { -- String name = child.getNodeName(); -+ String name = child.getNodeName().getName(); - -- if (null != name) switch (name) { -- case "title": -- if (title != null && strict) { -- throw new ParseException(R("PTwoTitles")); -- } title = getSpanText(child, false); -- break; -- case "description": -- if (description != null && strict) { -- throw new ParseException(R("PTwoDescriptions")); -- } description = getSpanText(child, false); -- break; -- case "icon": -- if (icon != null && strict) { -- throw new ParseException(R("PTwoIcons")); -- } icon = getIcon(child); -- break; -+ if (null != name) { -+ switch (name) { -+ case "title": -+ if (title != null && strict) { -+ throw new ParseException(R("PTwoTitles")); -+ } -+ title = getSpanText(child, false); -+ break; -+ case "description": -+ if (description != null && strict) { -+ throw new ParseException(R("PTwoDescriptions")); -+ } -+ description = getSpanText(child, false); -+ break; -+ case "icon": -+ if (icon != null && strict) { -+ throw new ParseException(R("PTwoIcons")); -+ } -+ icon = getIcon(child); -+ break; -+ } - } - - child = child.getNextSibling(); -@@ -883,16 +945,16 @@ - } - - // other methods -- - /** -- * @return an array of substrings seperated by spaces (spaces -- * escaped with backslash do not separate strings). This method -- * splits strings as per the spec except that it does replace -- * escaped other characters with their own value. -+ * @return an array of substrings seperated by spaces (spaces escaped with -+ * backslash do not separate strings). This method splits strings as per the -+ * spec except that it does replace escaped other characters with their own -+ * value. - */ - private String[] splitString(String source) { -- if (source == null) -+ if (source == null) { - return new String[0]; -+ } - - List result = new ArrayList(); - StringTokenizer st = new StringTokenizer(source, " "); -@@ -904,18 +966,20 @@ - while (true) { - part.append(st.nextToken()); - -- if (st.hasMoreTokens() && part.charAt(part.length() - 1) == '\\') -+ if (st.hasMoreTokens() && part.charAt(part.length() - 1) == '\\') { - part.setCharAt(part.length() - 1, ' '); // join with the space -- else -+ } else { - break; // bizarre while format gets \ at end of string right (no extra space added at end) -+ } - } - - // delete \ quote chars -- for (int i = part.length(); i-- > 0;) -- // sweet syntax for reverse loop -- if (part.charAt(i) == '\\') -+ for (int i = part.length(); i-- > 0;) // sweet syntax for reverse loop -+ { -+ if (part.charAt(i) == '\\') { - part.deleteCharAt(i--); // and skip previous char so \\ becomes \ -- -+ } -+ } - result.add(part.toString()); - } - -@@ -929,13 +993,14 @@ - */ - private Locale[] getLocales(Node node) { - List locales = new ArrayList<>(); -- String localeParts[] = -- splitString(getAttribute(node, "locale", "")); -+ String localeParts[] -+ = splitString(getAttribute(node, "locale", "")); - - for (String localePart : localeParts) { - Locale l = getLocale(localePart); -- if (l != null) -+ if (l != null) { - locales.add(l); -+ } - } - - return locales.toArray(new Locale[locales.size()]); -@@ -948,8 +1013,9 @@ - * @return locale of document - */ - public Locale getLocale(String localeStr) { -- if (localeStr.length() < 2) -+ if (localeStr.length() < 2) { - return null; -+ } - - String language = localeStr.substring(0, 2); - String country = (localeStr.length() < 5) ? "" : localeStr.substring(3, 5); -@@ -965,7 +1031,7 @@ - * "<description>text</description>". - * - * @param node the node with text under it -- * @return -+ * @return - * @throws ParseException if the JNLP file is invalid - */ - private String getSpanText(Node node) throws ParseException { -@@ -974,9 +1040,9 @@ - - /** - * Returns the implied text under a node, for example "text" in -- * "<description>text</description>". If preserveSpacing is false, -- * sequences of whitespace characters are turned into a single -- * space character. -+ * "<description>text</description>". If preserveSpacing is -+ * false, sequences of whitespace characters are turned into a single space -+ * character. - * - * @param node the node with text under it - * @param preserveSpacing if true, preserve whitespace -@@ -984,19 +1050,18 @@ - */ - private String getSpanText(Node node, boolean preserveSpacing) - throws ParseException { -- if (node == null) -+ if (node == null) { - return null; -+ } - - // NANO - String val = node.getNodeValue(); - if (preserveSpacing) { - return val; -+ } else if (val == null) { -+ return null; - } else { -- if (val == null) { -- return null; -- } else { -- return val.replaceAll("\\s+", " "); -- } -+ return val.replaceAll("\\s+", " "); - } - - /* TINY -@@ -1005,13 +1070,13 @@ - if (child == null) { - if (strict) - // not sure if this is an error or whether "" is proper -- throw new ParseException("No text specified (node="+node.getNodeName()+")"); -+ throw new ParseException("No text specified (node="+node.getNodeName().getName()+")"); - else - return ""; - } - - return child.getNodeValue(); -- */ -+ */ - } - - /** -@@ -1019,10 +1084,11 @@ - */ - private static Node getChildNode(Node node, String name) { - Node[] result = getChildNodes(node, name); -- if (result.length == 0) -+ if (result.length == 0) { - return null; -- else -+ } else { - return result[0]; -+ } - } - - /** -@@ -1033,8 +1099,9 @@ - - Node child = node.getFirstChild(); - while (child != null) { -- if (child.getNodeName().equals(name)) -+ if (child.getNodeName().getName().equals(name)) { - result.add(child); -+ } - child = child.getNextSibling(); - } - -@@ -1042,12 +1109,13 @@ - } - - /** -- * Returns a URL with a trailing / appended to it if there is no -- * trailing slash on the specifed URL. -+ * Returns a URL with a trailing / appended to it if there is no trailing -+ * slash on the specifed URL. - */ - private URL addSlash(URL source) { -- if (source == null) -+ if (source == null) { - return null; -+ } - - if (!source.toString().endsWith("/")) { - try { -@@ -1060,8 +1128,8 @@ - } - - /** -- * @return the same result as getURL except that a -- * ParseException is thrown if the attribute is null or empty. -+ * @return the same result as getURL except that a ParseException is thrown -+ * if the attribute is null or empty. - * - * @param node the node - * @param name the attribute containing an href -@@ -1077,17 +1145,16 @@ - } - - /** -- * @return a URL object from a href string relative to the -- * code base. If the href denotes a relative URL, it must -- * reference a location that is a subdirectory of the -- * codebase. -+ * @return a URL object from a href string relative to the code base. If the -+ * href denotes a relative URL, it must reference a location that is a -+ * subdirectory of the codebase. - * - * @param node the node - * @param name the attribute containing an href - * @param base the base URL - * @throws ParseException if the JNLP file is invalid - */ -- URL getURL(Node node, String name, URL base) throws ParseException { -+ public URL getURL(Node node, String name, URL base) throws ParseException { - String href; - if (CODEBASE.equals(name)) { - href = getCleanAttribute(node, name); -@@ -1099,17 +1166,17 @@ - } else { - href = getAttribute(node, name, null); - } -- return getURL(href, node.getNodeName(), base, strict); -+ return getURL(href, node.getNodeName().getName(), base, strict); - } -- -+ - public static URL getURL(String href, String nodeName, URL base, boolean strict) throws ParseException { -- if (href == null) { -+ if (href == null) { - return null; // so that code can throw an exception if attribute was required - } - try { -- if (base == null) -+ if (base == null) { - return new URL(href); -- else { -+ } else { - try { - return new URL(href); - } catch (MalformedURLException ex) { -@@ -1119,7 +1186,7 @@ - URL result = new URL(base, href); - - // check for going above the codebase -- if (!result.toString().startsWith(base.toString()) && !base.toString().startsWith(result.toString())){ -+ if (!result.toString().startsWith(base.toString()) && !base.toString().startsWith(result.toString())) { - if (strict) { - throw new ParseException(R("PUrlNotInCodebase", nodeName, href, base)); - } -@@ -1128,16 +1195,16 @@ - } - - } catch (MalformedURLException ex) { -- if (base == null) -+ if (base == null) { - throw new ParseException(R("PBadNonrelativeUrl", nodeName, href)); -- else -+ } else { - throw new ParseException(R("PBadRelativeUrl", nodeName, href, base)); -+ } - } - } - - /** -- * @return a Version from the specified attribute and default -- * value. -+ * @return a Version from the specified attribute and default value. - * - * @param node the node - * @param name the attribute -@@ -1146,14 +1213,16 @@ - */ - private Version getVersion(Node node, String name, String defaultValue) { - String version = getAttribute(node, name, defaultValue); -- if (version == null) -+ if (version == null) { - return null; -- else -+ } else { - return new Version(version); -+ } - } - - /** - * Check that the VM args are valid and safe -+ * - * @param vmArgs a string containing the args - * @throws ParseException if the VM arguments are invalid or dangerous - */ -@@ -1191,76 +1260,75 @@ - /** - * Returns an array of valid (ie safe and supported) arguments for the JVM - * -- * Based on http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html -+ * Based on -+ * http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html - */ - private String[] getValidVMArguments() { -- return new String[] { -- "-d32", /* use a 32-bit data model if available */ -- "-client", /* to select the client VM */ -- "-server", /* to select the server VM */ -- "-verbose", /* enable verbose output */ -- "-version", /* print product version and exit */ -- "-showversion", /* print product version and continue */ -- "-help", /* print this help message */ -- "-X", /* print help on non-standard options */ -- "-ea", /* enable assertions */ -- "-enableassertions", /* enable assertions */ -- "-da", /* disable assertions */ -- "-disableassertions", /* disable assertions */ -- "-esa", /* enable system assertions */ -- "-enablesystemassertions", /* enable system assertions */ -- "-dsa", /* disable system assertione */ -- "-disablesystemassertions", /* disable system assertione */ -- "-Xmixed", /* mixed mode execution (default) */ -- "-Xint", /* interpreted mode execution only */ -- "-Xnoclassgc", /* disable class garbage collection */ -- "-Xincgc", /* enable incremental garbage collection */ -- "-Xbatch", /* disable background compilation */ -- "-Xprof", /* output cpu profiling data */ -- "-Xdebug", /* enable remote debugging */ -- "-Xfuture", /* enable strictest checks, anticipating future default */ -- "-Xrs", /* reduce use of OS signals by Java/VM (see documentation) */ -- "-XX:+ForceTimeHighResolution", /* use high resolution timer */ -- "-XX:-ForceTimeHighResolution", /* use low resolution (default) */ -- }; -+ return new String[]{ -+ "-d32", /* use a 32-bit data model if available */ -+ "-client", /* to select the client VM */ -+ "-server", /* to select the server VM */ -+ "-verbose", /* enable verbose output */ -+ "-version", /* print product version and exit */ -+ "-showversion", /* print product version and continue */ -+ "-help", /* print this help message */ -+ "-X", /* print help on non-standard options */ -+ "-ea", /* enable assertions */ -+ "-enableassertions", /* enable assertions */ -+ "-da", /* disable assertions */ -+ "-disableassertions", /* disable assertions */ -+ "-esa", /* enable system assertions */ -+ "-enablesystemassertions", /* enable system assertions */ -+ "-dsa", /* disable system assertione */ -+ "-disablesystemassertions", /* disable system assertione */ -+ "-Xmixed", /* mixed mode execution (default) */ -+ "-Xint", /* interpreted mode execution only */ -+ "-Xnoclassgc", /* disable class garbage collection */ -+ "-Xincgc", /* enable incremental garbage collection */ -+ "-Xbatch", /* disable background compilation */ -+ "-Xprof", /* output cpu profiling data */ -+ "-Xdebug", /* enable remote debugging */ -+ "-Xfuture", /* enable strictest checks, anticipating future default */ -+ "-Xrs", /* reduce use of OS signals by Java/VM (see documentation) */ -+ "-XX:+ForceTimeHighResolution", /* use high resolution timer */ -+ "-XX:-ForceTimeHighResolution", /* use low resolution (default) */}; - } - - /** - * Returns an array containing the starts of valid (ie safe and supported) - * arguments for the JVM - * -- * Based on http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html -+ * Based on -+ * http://java.sun.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html - */ - private String[] getValidStartingVMArguments() { -- return new String[] { -- "-ea", /* enable assertions for classes */ -- "-enableassertions", /* enable assertions for classes */ -- "-da", /* disable assertions for classes */ -- "-disableassertions", /* disable assertions for classes */ -- "-verbose", /* enable verbose output */ -- "-Xms", /* set initial Java heap size */ -- "-Xmx", /* set maximum Java heap size */ -- "-Xss", /* set java thread stack size */ -- "-XX:NewRatio", /* set Ratio of new/old gen sizes */ -- "-XX:NewSize", /* set initial size of new generation */ -- "-XX:MaxNewSize", /* set max size of new generation */ -- "-XX:PermSize", /* set initial size of permanent gen */ -- "-XX:MaxPermSize", /* set max size of permanent gen */ -- "-XX:MaxHeapFreeRatio", /* heap free percentage (default 70) */ -- "-XX:MinHeapFreeRatio", /* heap free percentage (default 40) */ -- "-XX:UseSerialGC", /* use serial garbage collection */ -- "-XX:ThreadStackSize", /* thread stack size (in KB) */ -- "-XX:MaxInlineSize", /* set max num of bytecodes to inline */ -- "-XX:ReservedCodeCacheSize", /* Reserved code cache size (bytes) */ -- "-XX:MaxDirectMemorySize", -- -- }; -+ return new String[]{ -+ "-ea", /* enable assertions for classes */ -+ "-enableassertions", /* enable assertions for classes */ -+ "-da", /* disable assertions for classes */ -+ "-disableassertions", /* disable assertions for classes */ -+ "-verbose", /* enable verbose output */ -+ "-Xms", /* set initial Java heap size */ -+ "-Xmx", /* set maximum Java heap size */ -+ "-Xss", /* set java thread stack size */ -+ "-XX:NewRatio", /* set Ratio of new/old gen sizes */ -+ "-XX:NewSize", /* set initial size of new generation */ -+ "-XX:MaxNewSize", /* set max size of new generation */ -+ "-XX:PermSize", /* set initial size of permanent gen */ -+ "-XX:MaxPermSize", /* set max size of permanent gen */ -+ "-XX:MaxHeapFreeRatio", /* heap free percentage (default 70) */ -+ "-XX:MinHeapFreeRatio", /* heap free percentage (default 40) */ -+ "-XX:UseSerialGC", /* use serial garbage collection */ -+ "-XX:ThreadStackSize", /* thread stack size (in KB) */ -+ "-XX:MaxInlineSize", /* set max num of bytecodes to inline */ -+ "-XX:ReservedCodeCacheSize", /* Reserved code cache size (bytes) */ -+ "-XX:MaxDirectMemorySize",}; - } - - /** -- * @return the same result as getAttribute except that if strict -- * mode is enabled or the default value is null a parse -- * exception is thrown instead of returning the default value. -+ * @return the same result as getAttribute except that if strict mode is -+ * enabled or the default value is null a parse exception is thrown instead -+ * of returning the default value. - * - * @param node the node - * @param name the attribute -@@ -1270,19 +1338,22 @@ - private String getRequiredAttribute(Node node, String name, String defaultValue) throws ParseException { - String result = getAttribute(node, name, null); - -- if (result == null || result.length() == 0) -- if (strict || defaultValue == null) -- throw new ParseException(R("PNeedsAttribute", node.getNodeName(), name)); -+ if (result == null || result.length() == 0) { -+ if (strict || defaultValue == null) { -+ throw new ParseException(R("PNeedsAttribute", node.getNodeName().getName(), name)); -+ } -+ } - -- if (result == null) -+ if (result == null) { - return defaultValue; -- else -+ } else { - return result; -+ } - } - - /** -- * @return an attribute or the specified defaultValue if there is -- * no such attribute. -+ * @return an attribute or the specified defaultValue if there is no such -+ * attribute. - * - * @param node the node - * @param name the attribute -@@ -1305,32 +1376,31 @@ - return result; - } - -- - public static final String MALFORMED_PARSER_CLASS = "net.sourceforge.jnlp.MalformedXMLParser"; - public static final String NORMAL_PARSER_CLASS = "net.sourceforge.jnlp.XMLParser"; -+ - /** -- * @return the root node from the XML document in the specified -- * input stream. -+ * @return the root node from the XML document in the specified input -+ * stream. - * - * @throws ParseException if the JNLP file is invalid - */ -- static Node getRootNode(InputStream input, ParserSettings settings) throws ParseException { -+ public static Node getRootNode(InputStream input, ParserSettings settings) throws ParseException { - try { - Object parser = getParserInstance(settings); - Method m = parser.getClass().getMethod("getRootNode", InputStream.class); - return (Node) m.invoke(parser, input); - } catch (InvocationTargetException e) { - if (e.getCause() instanceof ParseException) { -- throw (ParseException)(e.getCause()); -+ throw (ParseException) (e.getCause()); - } - throw new ParseException(R("PBadXML"), e); - } catch (Exception e) { - throw new ParseException(R("PBadXML"), e); - } - } -- - -- public static Object getParserInstance(ParserSettings settings) throws ClassNotFoundException, IllegalAccessException, InstantiationException { -+ public static Object getParserInstance(ParserSettings settings) throws ClassNotFoundException, IllegalAccessException, InstantiationException { - String className; - if (settings.isMalformedXmlAllowed()) { - className = MALFORMED_PARSER_CLASS; -@@ -1364,7 +1434,7 @@ - return instance; - } - -- private String getOptionalMainClass(Node node) { -+ private String getOptionalMainClass(Node node) { - try { - return getMainClass(node, false); - } catch (ParseException ex) { -@@ -1401,7 +1471,7 @@ - OutputController.getLogger().log(OutputController.Level.MESSAGE_DEBUG, "Invlaid char in main-class: '" + main.charAt(0) + "'"); - } - for (int i = 1; i < main.length(); i++) { -- if (main.charAt(i)=='.'){ -+ if (main.charAt(i) == '.') { - //dot connects identifiers - continue; - } -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/ResourcesDesc.java ---- a/netx/net/sourceforge/jnlp/ResourcesDesc.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/ResourcesDesc.java Tue Dec 18 11:22:16 2018 +0100 -@@ -213,15 +213,34 @@ - */ - public List getResources(Class type) { - List result = new ArrayList<>(); -- - for (Object resource : resources) { -- if (type.isAssignableFrom(resource.getClass())) -- result.add(type.cast(resource)); -+ if (resource instanceof JREDesc) { -+ JREDesc jre = (JREDesc) resource; -+ List descs = jre.getResourcesDesc(); -+ for (ResourcesDesc desc : descs) { -+ result.addAll(desc.getResources(type)); -+ } -+ } -+ if (isWontedResource(resource, type)) { -+ result.add(getWontedResource(resource, type)); -+ } - } - - return result; - } - -+ private static boolean isWontedResource(Object resource, Class type) { -+ T l = getWontedResource(resource, type); -+ return l != null; -+ } -+ -+ private static T getWontedResource(Object resource, Class type) { -+ if (type.isAssignableFrom(resource.getClass())) { -+ return type.cast(resource); -+ } -+ return null; -+ } -+ - /** - * Add a resource. - * @param resource to be added -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/ShortcutDesc.java ---- a/netx/net/sourceforge/jnlp/ShortcutDesc.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/ShortcutDesc.java Tue Dec 18 11:22:16 2018 +0100 -@@ -74,7 +74,7 @@ - * For testing purposes. Verify if it have been parsed out correctly. - * @return whether the shortcut requires being online. - */ -- boolean isOnlineValue() { -+ public boolean isOnlineValue() { - return requiresOnline; - } - -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/about/AboutDialog.java ---- a/netx/net/sourceforge/jnlp/about/AboutDialog.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/about/AboutDialog.java Tue Dec 18 11:22:16 2018 +0100 -@@ -53,13 +53,13 @@ - import javax.swing.JButton; - import javax.swing.JDialog; - import javax.swing.JPanel; --import javax.swing.SwingUtilities; - import javax.swing.border.EmptyBorder; - - import net.sourceforge.jnlp.util.ScreenFinder; - import net.sourceforge.jnlp.util.docprovider.TextsProvider; - import net.sourceforge.jnlp.util.docprovider.formatters.formatters.HtmlFormatter; - import net.sourceforge.jnlp.util.logging.OutputController; -+import net.sourceforge.swing.SwingUtils; - - public final class AboutDialog extends JPanel implements Runnable, ActionListener { - -@@ -95,10 +95,11 @@ - super(new GridBagLayout()); - this.app = app; - frame = new JDialog((Frame) null, R("AboutDialogueTabAbout") + " IcedTea-Web", modal); -+ frame.setName("AboutDialog"); -+ SwingUtils.info(frame); - frame.setContentPane(this); - frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); - -- - aboutButton = new JButton( R("AboutDialogueTabAbout")); - aboutButton.addActionListener(this); - -@@ -267,7 +268,7 @@ - } - - public static void display(boolean modal, String app, ShowPage showPage) { -- SwingUtilities.invokeLater(new AboutDialog(modal, app, showPage)); -+ SwingUtils.invokeLater(new AboutDialog(modal, app, showPage)); - } - } - -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java ---- a/netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java Tue Dec 18 11:22:16 2018 +0100 -@@ -26,6 +26,7 @@ - import javax.swing.*; - import javax.swing.Timer; - import javax.jnlp.*; -+import net.sourceforge.swing.SwingUtils; - - import net.sourceforge.jnlp.runtime.*; - import net.sourceforge.jnlp.util.ImageResources; -@@ -106,39 +107,48 @@ - * @return donload service listener attached to this app. instance - */ - @Override -- public DownloadServiceListener getListener(ApplicationInstance app, String downloadName, URL resources[]) { -- DownloadPanel result = new DownloadPanel(downloadName); -+ public DownloadServiceListener getListener(ApplicationInstance app, final String downloadName, final URL resources[]) { -+ final FutureResult result = new FutureResult() { -+ @Override -+ public void run() { -+ DownloadPanel result = new DownloadPanel(downloadName); -+ -+ synchronized (dialogMutex) { -+ if (dialog == null) { -+ dialog = createDownloadIndicatorWindow(true); -+ } - -- synchronized (dialogMutex) { -- if (dialog == null) { -- dialog = createDownloadIndicatorWindow(true); -- } -+ if (resources != null) { -+ for (URL url : resources) { -+ result.addProgressPanel(url, null); -+ } -+ } - -- if (resources != null) { -- for (URL url : resources) { -- result.addProgressPanel(url, null); -- -+ dialog.getContentPane().add(result, vertical); -+ dialog.pack(); -+ placeFrameToLowerRight(); -+ -+ result.addComponentListener(new ComponentAdapter() { -+ @Override -+ public void componentResized(ComponentEvent e) { -+ placeFrameToLowerRight(); -+ } -+ }); -+ -+ dialog.setVisible(true); -+ -+ setRef(result); - } - } -- -- dialog.getContentPane().add(result, vertical); -- dialog.pack(); -- placeFrameToLowerRight(); -- result.addComponentListener(new ComponentAdapter() { -- @Override -- public void componentResized(ComponentEvent e) { -- placeFrameToLowerRight(); -- } -- }); -- -- dialog.setVisible(true); -- -- return result; -- } -+ }; -+ SwingUtils.invokeAndWait(result); -+ return result.getRef(); - } - - public static JDialog createDownloadIndicatorWindow(boolean undecorated) throws HeadlessException { - JDialog f = new JDialog((JFrame)null, downloading + "..."); -+ f.setName("DownloadIndicatorDialog"); -+ SwingUtils.info(f); - f.setUndecorated(undecorated); - f.setIconImages(ImageResources.INSTANCE.getApplicationImages()); - f.getContentPane().setLayout(new GridBagLayout()); -@@ -328,7 +338,7 @@ - - } - }; -- SwingUtilities.invokeLater(r); -+ SwingUtils.invokeLater(r); - } - - /** -@@ -474,4 +484,15 @@ - } - }; - -+ static abstract class FutureResult implements Runnable { -+ private V ref = null; -+ -+ public V getRef() { -+ return ref; -+ } -+ -+ public void setRef(V ref) { -+ this.ref = ref; -+ } -+ } - } -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/cache/ResourceUrlCreator.java ---- a/netx/net/sourceforge/jnlp/cache/ResourceUrlCreator.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/cache/ResourceUrlCreator.java Tue Dec 18 11:22:16 2018 +0100 -@@ -102,7 +102,7 @@ - //preffering https and owerriding case, when applciation was moved to https, but the jnlp stayed intacted - List urlsCopy = new LinkedList<>(urls); - for (URL u : urlsCopy) { -- if (u.getProtocol().equals("http")) { -+ if (u.getProtocol().equals("http") && u.getPort() < 0) { - try { - urls.add(0, copyUrltoHttps(u)); - } catch (Exception ex) { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/config/BasicValueValidators.java ---- a/netx/net/sourceforge/jnlp/config/BasicValueValidators.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/config/BasicValueValidators.java Tue Dec 18 11:22:16 2018 +0100 -@@ -45,6 +45,7 @@ - import java.net.URL; - import java.util.Arrays; - import java.util.Locale; -+import net.sourceforge.jnlp.runtime.Translator; - - /** - * Provides {@link ValueValidator} implementations for some common value types -@@ -327,6 +328,52 @@ - public static ValueValidator getFilePathValidator() { - return new FilePathValidator(); - } -+ -+ public static ValueValidator getBrowserPathValidator() { -+ return new ValueValidator() { -+ @Override -+ public void validate(Object value) throws IllegalArgumentException { -+ if (value == null) { -+ return; -+ } -+ if (!(value instanceof String)) { -+ throw new IllegalArgumentException("Value should be string!"); -+ } -+ if (verifyFileOrCommand((String)value) == null){ -+ //jsut warn? -+ throw new IllegalArgumentException("Value should be file, or on PATH, or known keyword. See possible values."); -+ } -+ } -+ -+ @Override -+ public String getPossibleValues() { -+ return Translator.VVPossibleBrowserValues(); -+ } -+ }; -+ } -+ -+ public static String verifyFileOrCommand(String cmd) { -+ cmd = cmd.split("\\s+")[0]; -+ if (cmd.equals(DeploymentConfiguration.ALWAYS_ASK) || cmd.equals(DeploymentConfiguration.INTERNAL_HTML)) { -+ return "keyword"; -+ } -+ File fileCandidate = new File(cmd); -+ if (fileCandidate.exists() && !fileCandidate.isDirectory()) { -+ return cmd; -+ } -+ String path = System.getenv("PATH"); -+ if (path != null) { -+ String[] pathMembers = path.split(File.pathSeparator); -+ for (String s : pathMembers) { -+ File pathCandidate = new File(s, cmd); -+ if (pathCandidate.exists() && !pathCandidate.isDirectory()) { -+ return pathCandidate.toString(); -+ } -+ } -+ } -+ return null; -+ } -+ - - /** - * Returns a {@link ValueValidator} that checks if an object represents a -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/config/Defaults.java ---- a/netx/net/sourceforge/jnlp/config/Defaults.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/config/Defaults.java Tue Dec 18 11:22:16 2018 +0100 -@@ -226,6 +226,11 @@ - String.valueOf(false) - }, - { -+ DeploymentConfiguration.KEY_SECURITY_ITW_IGNORECERTISSUES, -+ BasicValueValidators.getBooleanValidator(), -+ String.valueOf(false) -+ }, -+ { - DeploymentConfiguration.KEY_SECURITY_PROMPT_USER_FOR_JNLP, - BasicValueValidators.getBooleanValidator(), - String.valueOf(true) -@@ -398,7 +403,7 @@ - /* browser selection */ - { - DeploymentConfiguration.KEY_BROWSER_PATH, -- BasicValueValidators.getFilePathValidator(), -+ BasicValueValidators.getBrowserPathValidator(), - null - }, - /* check for update timeout */ -@@ -407,6 +412,11 @@ - BasicValueValidators.getRangedIntegerValidator(0, 10000), - String.valueOf(500) - }, -+ { -+ DeploymentConfiguration.IGNORE_HEADLESS_CHECK, -+ BasicValueValidators.getBooleanValidator(), -+ String.valueOf(false) -+ }, - //JVM arguments for plugin - { - DeploymentConfiguration.KEY_PLUGIN_JVM_ARGUMENTS, -@@ -430,6 +440,16 @@ - DeploymentConfiguration.KEY_ENABLE_MANIFEST_ATTRIBUTES_CHECK, - BasicValueValidators.getManifestAttributeCheckValidator(), - String.valueOf(ManifestAttributesChecker.MANIFEST_ATTRIBUTES_CHECK.ALL) -+ }, -+ { -+ DeploymentConfiguration.KEY_SYSTEM_CONFIG, -+ BasicValueValidators.getUrlValidator(), -+ null -+ }, -+ { -+ DeploymentConfiguration.KEY_SYSTEM_CONFIG_MANDATORY, -+ BasicValueValidators.getBooleanValidator(), -+ String.valueOf(false) - } - }; - -@@ -445,4 +465,4 @@ - - return result; - } --} -\ No newline at end of file -+} -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java ---- a/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java Tue Dec 18 11:22:16 2018 +0100 -@@ -22,8 +22,9 @@ - import java.io.BufferedReader; - import java.io.File; - import java.io.FileOutputStream; --import java.io.FileReader; - import java.io.IOException; -+import java.io.InputStream; -+import java.io.InputStreamReader; - import java.io.OutputStream; - import java.io.PrintStream; - import java.io.Reader; -@@ -150,6 +151,9 @@ - /** Boolean. Only install the custom authenticator if true */ - public static final String KEY_SECURITY_INSTALL_AUTHENTICATOR = "deployment.security.authenticator"; - -+ /** Boolean. Only install the custom authenticator if true */ -+ public static final String KEY_SECURITY_ITW_IGNORECERTISSUES = "deployment.security.itw.ignorecertissues"; -+ - public static final String KEY_STRICT_JNLP_CLASSLOADER = "deployment.jnlpclassloader.strict"; - - /** Boolean. Do not prefere https over http */ -@@ -218,13 +222,27 @@ - public static final String KEY_AUTO_DOWNLOAD_JRE = "deployment.javaws.autodownload"; - - public static final String KEY_BROWSER_PATH = "deployment.browser.path"; -+ //for legacy reasons, also $BROWSER variable is supported -+ public static final String BROWSER_ENV_VAR = "BROWSER"; -+ // both browser.path and BROWSER can ave those for-fun keys: -+ public static final String ALWAYS_ASK="ALWAYS-ASK"; -+ public static final String INTERNAL_HTML="INTERNAL-HTML"; -+ public static final String LEGACY_WIN32_URL__HANDLER="rundll32 url.dll,FileProtocolHandler "; -+ - public static final String KEY_UPDATE_TIMEOUT = "deployment.javaws.update.timeout"; -+ -+ public static final String IGNORE_HEADLESS_CHECK = "deployment.headless.ignore"; - - /* - * JVM arguments for plugin - */ - public static final String KEY_PLUGIN_JVM_ARGUMENTS= "deployment.plugin.jvm.arguments"; - public static final String KEY_JRE_DIR= "deployment.jre.dir"; -+ /** -+ * remote configuration properties -+ */ -+ public static final String KEY_SYSTEM_CONFIG = "deployment.system.config"; -+ public static final String KEY_SYSTEM_CONFIG_MANDATORY = "deployment.system.config.mandatory"; - - - public static final String TRANSFER_TITLE = "Legacy configuration and cache found. Those will be now transported to new locations"; -@@ -243,6 +261,14 @@ - currentConfiguration = Defaults.getDefaults(); - } - -+ static boolean checkUrl(URL file) { -+ try (InputStream s = file.openStream()) { -+ return true; -+ } catch (Throwable ex) { -+ // this should be logged, however, logging botle neck may not be initialised here -+ return false; -+ } -+ } - - public enum ConfigType { - System, User -@@ -252,7 +278,7 @@ - private boolean systemPropertiesMandatory = false; - - /** The system's subdirResult deployment.config file */ -- private File systemPropertiesFile = null; -+ private URL systemPropertiesFile = null; - /** Source of always right and only path to file (even if underlying path changes) */ - private final InfrastructureFileDescriptor userDeploymentFileDescriptor; - /** The user's subdirResult deployment.config file */ -@@ -272,10 +298,6 @@ - userDeploymentFileDescriptor = configFile; - currentConfiguration = new HashMap<>(); - unchangeableConfiguration = new HashMap<>(); -- if (JNLPRuntime.isWindows()) { -- boolean wh = JNLPRuntime.isHeadless(); -- OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, "On windows, answering headless at startup, to prevent race condition later - " + wh); -- } - try { - IcoSpi spi = new IcoSpi(); - IIORegistry.getDefaultInstance().registerServiceProvider(spi); -@@ -293,7 +315,11 @@ - * @throws ConfigurationException if it encounters a fatal error. - */ - public void load() throws ConfigurationException { -- load(true); -+ try { -+ load(true); -+ } catch (MalformedURLException ex) { -+ throw new ConfigurationException(ex.toString()); -+ } - } - - /** -@@ -304,18 +330,18 @@ - * resorting to the default values - * @throws ConfigurationException if it encounters a fatal error. - */ -- public void load(boolean fixIssues) throws ConfigurationException { -+ public void load(boolean fixIssues) throws ConfigurationException, MalformedURLException { - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - sm.checkRead(userDeploymentFileDescriptor.getFullPath()); - } - -- File systemConfigFile = findSystemConfigFile(); -+ URL systemConfigFile = findSystemConfigFile(); - - load(systemConfigFile, userDeploymentFileDescriptor.getFile(), fixIssues); - } - -- void load(File systemConfigFile, File userFile, boolean fixIssues) throws ConfigurationException { -+ void load(URL systemConfigFile, File userFile, boolean fixIssues) throws ConfigurationException, MalformedURLException { - Map> initialProperties = Defaults.getDefaults(); - - Map> systemProperties = null; -@@ -349,8 +375,8 @@ - * Third, read the user's subdirResult deployment.properties file - */ - userPropertiesFile = userFile; -- Map> userProperties = loadProperties(ConfigType.User, userPropertiesFile, false); -- userComments=loadComments(userPropertiesFile); -+ Map> userProperties = loadProperties(ConfigType.User, userPropertiesFile.toURI().toURL(), false); -+ userComments = loadComments(userPropertiesFile.toURI().toURL()); - if (userProperties != null) { - mergeMaps(initialProperties, userProperties); - } -@@ -491,14 +517,14 @@ - /** - * @return the location of system-level deployment.config file, or null if none can be found - */ -- private File findSystemConfigFile() { -+ private URL findSystemConfigFile() throws MalformedURLException { - if (PathsAndFiles.ETC_DEPLOYMENT_CFG.getFile().isFile()) { -- return PathsAndFiles.ETC_DEPLOYMENT_CFG.getFile(); -+ return PathsAndFiles.ETC_DEPLOYMENT_CFG.getUrl(); - } - - String jrePath = null; - try { -- Map> tmpProperties = parsePropertiesFile(userDeploymentFileDescriptor.getFile()); -+ Map> tmpProperties = parsePropertiesFile(userDeploymentFileDescriptor.getUrl()); - Setting jreSetting = tmpProperties.get(KEY_JRE_DIR); - if (jreSetting != null) { - jrePath = jreSetting.getValue(); -@@ -516,7 +542,7 @@ - jreFile = PathsAndFiles.JAVA_DEPLOYMENT_PROP_FILE.getFile(); - } - if (jreFile.isFile()) { -- return jreFile; -+ return jreFile.toURI().toURL(); - } - - return null; -@@ -526,7 +552,7 @@ - * Reads the system configuration file and sets the relevant - * system-properties related variables - */ -- private boolean loadSystemConfiguration(File configFile) throws ConfigurationException { -+ private boolean loadSystemConfiguration(URL configFile) throws ConfigurationException { - - OutputController.getLogger().log("Loading system configuation from: " + configFile); - -@@ -545,26 +571,21 @@ - */ - String urlString = null; - try { -- Setting urlSettings = systemConfiguration.get("deployment.system.config"); -+ Setting urlSettings = systemConfiguration.get(KEY_SYSTEM_CONFIG); - if (urlSettings == null || urlSettings.getValue() == null) { -- OutputController.getLogger().log("No System level " + DEPLOYMENT_PROPERTIES + " found in "+configFile.getAbsolutePath()); -+ OutputController.getLogger().log("No System level " + DEPLOYMENT_PROPERTIES + " found in "+configFile.toExternalForm()); - return false; - } - urlString = urlSettings.getValue(); -- Setting mandatory = systemConfiguration.get("deployment.system.config.mandatory"); -+ Setting mandatory = systemConfiguration.get(KEY_SYSTEM_CONFIG_MANDATORY); - systemPropertiesMandatory = Boolean.valueOf(mandatory == null ? null : mandatory.getValue()); //never null - OutputController.getLogger().log("System level settings " + DEPLOYMENT_PROPERTIES + " are mandatory:" + systemPropertiesMandatory); - URL url = new URL(urlString); -- if (url.getProtocol().equals("file")) { -- systemPropertiesFile = new File(url.getFile()); -- OutputController.getLogger().log("Using System level" + DEPLOYMENT_PROPERTIES + ": " + systemPropertiesFile); -- return true; -- } else { -- OutputController.getLogger().log("Remote + " + DEPLOYMENT_PROPERTIES + " not supported: " + urlString + "in " + configFile.getAbsolutePath()); -- return false; -- } -+ systemPropertiesFile = url; -+ OutputController.getLogger().log("Using System level" + DEPLOYMENT_PROPERTIES + ": " + systemPropertiesFile); -+ return true; - } catch (MalformedURLException e) { -- OutputController.getLogger().log("Invalid url for " + DEPLOYMENT_PROPERTIES+ ": " + urlString + "in " + configFile.getAbsolutePath()); -+ OutputController.getLogger().log("Invalid url for " + DEPLOYMENT_PROPERTIES+ ": " + urlString + "in " + configFile.toExternalForm()); - OutputController.getLogger().log(e); - if (systemPropertiesMandatory){ - ConfigurationException ce = new ConfigurationException("Invalid url to system properties, which are mandatory"); -@@ -585,9 +606,9 @@ - * - * @throws ConfigurationException if the file is mandatory but cannot be read - */ -- private Map> loadProperties(ConfigType type, File file, boolean mandatory) -+ private Map> loadProperties(ConfigType type, URL file, boolean mandatory) - throws ConfigurationException { -- if (file == null || !file.isFile()) { -+ if (file == null || !checkUrl(file)) { - OutputController.getLogger().log("No " + type.toString() + " level " + DEPLOYMENT_PROPERTIES + " found."); - if (!mandatory) { - return null; -@@ -676,12 +697,12 @@ - * @param propertiesFile the file to read Properties from - * @throws IOException if an IO problem occurs - */ -- private Map> parsePropertiesFile(File propertiesFile) throws IOException { -+ private Map> parsePropertiesFile(URL propertiesFile) throws IOException { - Map> result = new HashMap<>(); - - Properties properties = new Properties(); - -- try (Reader reader = new BufferedReader(new FileReader(propertiesFile))) { -+ try (Reader reader = new BufferedReader(new InputStreamReader(propertiesFile.openStream(), "UTF-8"))) { - properties.load(reader); - } - -@@ -896,9 +917,9 @@ - //standard date.toString format - public static final SimpleDateFormat pattern = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); - -- private static String loadComments(File path) { -+ private static String loadComments(URL path) { - StringBuilder r = new StringBuilder(); -- try (BufferedReader br = new BufferedReader(new FileReader(path))) { -+ try (BufferedReader br = new BufferedReader(new InputStreamReader(path.openStream(), "UTF-8"))) { - while (true) { - String s = br.readLine(); - if (s == null) { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/config/InfrastructureFileDescriptor.java ---- a/netx/net/sourceforge/jnlp/config/InfrastructureFileDescriptor.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/config/InfrastructureFileDescriptor.java Tue Dec 18 11:22:16 2018 +0100 -@@ -38,6 +38,8 @@ - package net.sourceforge.jnlp.config; - - import java.io.File; -+import java.net.MalformedURLException; -+import java.net.URL; - import net.sourceforge.jnlp.runtime.JNLPRuntime; - import net.sourceforge.jnlp.runtime.Translator; - -@@ -75,6 +77,10 @@ - public File getFile() { - return new File(getFullPath()); - } -+ -+ public URL getUrl() throws MalformedURLException { -+ return getFile().toURI().toURL(); -+ } - - public void setValue(String value) { - setValue(value, JNLPRuntime.getConfiguration()); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/config/PathsAndFiles.java ---- a/netx/net/sourceforge/jnlp/config/PathsAndFiles.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/config/PathsAndFiles.java Tue Dec 18 11:22:16 2018 +0100 -@@ -62,6 +62,7 @@ - public static final String XDG_CACHE_HOME_VAR = "XDG_CACHE_HOME"; - public static final String XDG_RUNTIME_DIR_VAR = "XDG_RUNTIME_DIR"; - private static final String XDG_DATA_HOME = "XDG_DATA_HOME"; -+ private static final String WINDIR = "WINDIR"; - private static final String TMP_PROP = "java.io.tmpdir"; - private static final String HOME_PROP = "user.home"; - private static final String JAVA_PROP = "java.home"; -@@ -362,8 +363,25 @@ - - private static class SystemCofigFileDescriptor extends InfrastructureFileDescriptor { - -+ private static final String windowsPathSuffix = File.separator + "Sun" + File.separator + "Java"; -+ private static final String unixPathSuffix = File.separator + "etc" + File.separator + ".java"; -+ -+ private static String getSystemConfigDir() { -+ if (JNLPRuntime.isWindows()) { -+ return System.getenv(WINDIR) + windowsPathSuffix; -+ } else { -+ return unixPathSuffix; -+ } -+ } -+ -+ @Override -+ public String getSystemPathStubAcronym() { -+ //note the hardcoded % instead of VARIABLE (actuall leading to idea, that docs, when generated on windows may not make sense) -+ return "{" + "%" + WINDIR + windowsPathSuffix + " or " + unixPathSuffix + "}"; -+ } -+ - private SystemCofigFileDescriptor(String fileName, String pathSub, String description, Target... target) { -- super(fileName, pathSub, File.separator + "etc" + File.separator + ".java", description, target); -+ super(fileName, pathSub, getSystemConfigDir(), description, target); - } - - } -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java ---- a/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java Tue Dec 18 11:22:16 2018 +0100 -@@ -32,6 +32,7 @@ - import net.sourceforge.jnlp.runtime.Translator; - import net.sourceforge.jnlp.util.ImageResources; - import net.sourceforge.jnlp.util.ScreenFinder; -+import net.sourceforge.swing.SwingUtils; - - /** - * This dialog provides a means for user to edit more of the proxy settings. -@@ -55,6 +56,8 @@ - */ - public AdvancedProxySettingsDialog(DeploymentConfiguration config) { - super((Frame) null, dialogTitle, true); // Don't need a parent. -+ this.setName("AdvancedProxySettingsDialog"); -+ SwingUtils.info(this); - setIconImages(ImageResources.INSTANCE.getApplicationImages()); - - this.config = config; -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/CachePane.java ---- a/netx/net/sourceforge/jnlp/controlpanel/CachePane.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/CachePane.java Tue Dec 18 11:22:16 2018 +0100 -@@ -21,7 +21,6 @@ - import java.awt.Component; - import java.awt.Cursor; - import java.awt.Dimension; --import java.awt.EventQueue; - import java.awt.FlowLayout; - import java.awt.GridBagConstraints; - import java.awt.GridBagLayout; -@@ -67,6 +66,7 @@ - import net.sourceforge.jnlp.util.PropertiesFile; - import net.sourceforge.jnlp.util.logging.OutputController; - import net.sourceforge.jnlp.util.ui.NonEditableTableModel; -+import net.sourceforge.swing.SwingUtils; - - public class CachePane extends JPanel { - final JDialog parent; -@@ -267,7 +267,7 @@ - * @see CachePane#cacheTable - */ - private void invokeLaterDelete() { -- EventQueue.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - try { -@@ -339,8 +339,7 @@ - } - - private void invokeLaterDeleteAll() { -- EventQueue.invokeLater(new Runnable() { -- -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - try { -@@ -362,7 +361,7 @@ - * @see CachePane#populateTable - */ - final void invokeLaterPopulateTable() { -- EventQueue.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - try { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java ---- a/netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java Tue Dec 18 11:22:16 2018 +0100 -@@ -34,6 +34,7 @@ - import net.sourceforge.jnlp.runtime.Translator; - import net.sourceforge.jnlp.util.ImageResources; - import net.sourceforge.jnlp.util.ScreenFinder; -+import net.sourceforge.swing.SwingUtils; - - /** - * This class will provide a visual way of viewing cache. -@@ -55,6 +56,8 @@ - */ - public CacheViewer(DeploymentConfiguration config) { - super((Frame) null, dialogTitle, true); // Don't need a parent. -+ this.setName("CacheViewer"); -+ SwingUtils.info(this); - this.config = config; - if (config == null) { - throw new IllegalArgumentException("config: " + config); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/CommandLine.java ---- a/netx/net/sourceforge/jnlp/controlpanel/CommandLine.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/CommandLine.java Tue Dec 18 11:22:16 2018 +0100 -@@ -21,6 +21,7 @@ - import static net.sourceforge.jnlp.runtime.Translator.R; - - import java.io.IOException; -+import java.net.MalformedURLException; - import java.util.ArrayList; - import java.util.List; - import java.util.Map; -@@ -37,6 +38,7 @@ - import net.sourceforge.jnlp.util.docprovider.formatters.formatters.PlainTextFormatter; - import net.sourceforge.jnlp.util.logging.OutputController; - import net.sourceforge.jnlp.util.optionparser.OptionParser; -+import net.sourceforge.swing.SwingUtils; - - /** - * Encapsulates a command line interface to the deployment configuration. -@@ -85,7 +87,7 @@ - config = new DeploymentConfiguration(); - try { - config.load(false); -- } catch (ConfigurationException e) { -+ } catch (ConfigurationException | MalformedURLException e) { - OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, R("RConfigurationFatal")); - OutputController.getLogger().log(e); - } -@@ -495,6 +497,9 @@ - * @throws java.lang.Exception when it goes wrong - */ - public static void main(String[] args) throws Exception { -+ // setup Swing EDT tracing: -+ SwingUtils.setup(); -+ - try { - OptionParser optionParser = new OptionParser(args, OptionsDefinitions.getItwsettingsCommands()); - if (optionParser.hasOption(OptionsDefinitions.OPTIONS.DETAILS) || optionParser.hasOption(OptionsDefinitions.OPTIONS.VERBOSE)){ -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java ---- a/netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java Tue Dec 18 11:22:16 2018 +0100 -@@ -45,7 +45,6 @@ - import javax.swing.JPanel; - import javax.swing.JScrollPane; - import javax.swing.SwingConstants; --import javax.swing.SwingUtilities; - import javax.swing.UIManager; - import javax.swing.WindowConstants; - import javax.swing.border.EmptyBorder; -@@ -55,10 +54,12 @@ - import net.sourceforge.jnlp.config.DeploymentConfiguration; - import net.sourceforge.jnlp.config.PathsAndFiles; - import net.sourceforge.jnlp.controlpanel.JVMPanel.JvmValidationResult; -+import net.sourceforge.jnlp.runtime.JNLPRuntime; - import net.sourceforge.jnlp.runtime.Translator; - import net.sourceforge.jnlp.security.viewer.CertificatePane; - import net.sourceforge.jnlp.util.ImageResources; - import net.sourceforge.jnlp.util.logging.OutputController; -+import net.sourceforge.swing.SwingUtils; - - /** - * This is the control panel for Java. It provides a GUI for modifying the -@@ -118,7 +119,7 @@ - add(topPanel, BorderLayout.PAGE_START); - add(mainPanel, BorderLayout.CENTER); - add(buttonPanel, BorderLayout.PAGE_END); -- setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); -+ setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - pack(); - } - -@@ -184,7 +185,7 @@ - if (validationResult!= JOptionPane.OK_OPTION){ - return; - } -- ControlPanel.this.dispose(); -+ JNLPRuntime.exit(0); - } - }); - buttons.add(okButton); -@@ -211,7 +212,7 @@ - cancelButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { -- ControlPanel.this.dispose(); -+ JNLPRuntime.exit(0); - } - }); - buttons.add(cancelButton); -@@ -418,8 +419,7 @@ - // ignore; not a big deal - } - -- -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - final ControlPanel editor = new ControlPanel(config); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java ---- a/netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java Tue Dec 18 11:22:16 2018 +0100 -@@ -30,13 +30,13 @@ - import javax.swing.JButton; - import javax.swing.JComboBox; - import javax.swing.JLabel; --import javax.swing.SwingUtilities; - import net.sourceforge.jnlp.ShortcutDesc; - - import net.sourceforge.jnlp.config.DeploymentConfiguration; - import net.sourceforge.jnlp.controlpanel.desktopintegrationeditor.FreeDesktopIntegrationEditorFrame; - import net.sourceforge.jnlp.runtime.JNLPRuntime; - import net.sourceforge.jnlp.runtime.Translator; -+import net.sourceforge.swing.SwingUtils; - - /** - * This class provides the panel that allows the user to set whether they want -@@ -79,7 +79,7 @@ - - @Override - public void actionPerformed(ActionEvent e) { -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - - @Override - public void run() { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java ---- a/netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/JVMPanel.java Tue Dec 18 11:22:16 2018 +0100 -@@ -281,8 +281,13 @@ - } - - boolean findRT = false; -- -- if (processErrorStream.contains("\"9") || processStdOutStream.contains("\"9") || processErrorStream.contains("build 9") || processStdOutStream.contains("build 9")) { -+ boolean jdk9up = false; -+ for (int i = 9; i <= 99; i++) { -+ if (processErrorStream.contains("\"" + i) || processStdOutStream.contains("\"" + i)) { -+ jdk9up = true; -+ } -+ } -+ if (jdk9up) { - validationResult += "" + Translator.R("CPJVMjdk9") + "
"; - findRT = false; - } else if (processErrorStream.contains("1.8.0") || processStdOutStream.contains("1.8.0")) { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/PolicyPanel.java ---- a/netx/net/sourceforge/jnlp/controlpanel/PolicyPanel.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/PolicyPanel.java Tue Dec 18 11:22:16 2018 +0100 -@@ -55,7 +55,6 @@ - import javax.swing.JFrame; - import javax.swing.JLabel; - import javax.swing.JTextField; --import javax.swing.SwingUtilities; - import net.sourceforge.jnlp.config.DeploymentConfiguration; - - import net.sourceforge.jnlp.config.PathsAndFiles; -@@ -64,6 +63,7 @@ - import net.sourceforge.jnlp.util.FileUtils; - import net.sourceforge.jnlp.util.FileUtils.OpenFileResult; - import net.sourceforge.jnlp.util.logging.OutputController; -+import net.sourceforge.swing.SwingUtils; - - /** - * Implements a Policy Settings panel for the itweb-settings control panel. -@@ -264,7 +264,7 @@ - public void actionPerformed(final ActionEvent event) { - try { - final URL fileUrl = new URL(fileUrlString); -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - launchPolicyTool(frame, fileUrl.getPath()); -@@ -290,7 +290,7 @@ - public void actionPerformed(final ActionEvent event) { - try { - final URL fileUrl = new URL(fileUrlString); -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - launchSimplePolicyEditor(fileUrl.getPath()); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java ---- a/netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java Tue Dec 18 11:22:16 2018 +0100 -@@ -44,7 +44,6 @@ - import java.awt.event.KeyListener; - import java.awt.event.MouseAdapter; - import java.awt.event.MouseEvent; --import java.awt.event.WindowEvent; - import java.io.BufferedWriter; - import java.io.File; - import java.io.FileOutputStream; -@@ -101,6 +100,7 @@ - import net.sourceforge.jnlp.security.dialogs.remember.ExecuteAppletAction; - import net.sourceforge.jnlp.util.ScreenFinder; - import net.sourceforge.jnlp.util.logging.OutputController; -+import net.sourceforge.swing.SwingUtils; - - public class UnsignedAppletsTrustingListPanel extends JPanel { - -@@ -146,7 +146,7 @@ - final String defaultFileName2 = "terrorList2"; - final String defaultFile1 = defaultDir + defaultFileName1; - final String defaultFile2 = defaultDir + defaultFileName2; -- java.awt.EventQueue.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - try { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/Blinker.java ---- a/netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/Blinker.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/Blinker.java Tue Dec 18 11:22:16 2018 +0100 -@@ -39,8 +39,8 @@ - import java.awt.event.ActionEvent; - import java.awt.event.ActionListener; - import javax.swing.JComponent; --import javax.swing.SwingUtilities; - import javax.swing.Timer; -+import net.sourceforge.swing.SwingUtils; - - public class Blinker { - -@@ -76,7 +76,7 @@ - } - if (counter == 5) { - ((Timer) e.getSource()).stop(); -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - - @Override - public void run() { -@@ -86,7 +86,7 @@ - }); - return; - } -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - - @Override - public void run() { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/FreeDesktopIntegrationEditorFrame.java ---- a/netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/FreeDesktopIntegrationEditorFrame.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/controlpanel/desktopintegrationeditor/FreeDesktopIntegrationEditorFrame.java Tue Dec 18 11:22:16 2018 +0100 -@@ -63,6 +63,7 @@ - import net.sourceforge.jnlp.util.logging.ConsoleOutputPaneModel; - - import static net.sourceforge.jnlp.runtime.Translator.R; -+import net.sourceforge.swing.SwingUtils; - - public class FreeDesktopIntegrationEditorFrame extends JFrame { - -@@ -213,8 +214,7 @@ - } - - public static void main(String args[]) { -- -- java.awt.EventQueue.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - new FreeDesktopIntegrationEditorFrame().setVisible(true); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/resources/Messages.properties ---- a/netx/net/sourceforge/jnlp/resources/Messages.properties Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Tue Dec 18 11:22:16 2018 +0100 -@@ -13,6 +13,7 @@ - ButCancel=\ Cancel\ - ButClose=Close - ButAdvancedOptions=Advanced Options -+ButLunchFullItwSettings=Launch full settings - ButCopy=Copy to Clipboard - ButMoreInformation=More Information... - ButOk=OK -@@ -253,9 +254,7 @@ - RPRoxyPacNotSupported=Using Proxy Auto Config (PAC) files is not supported. - RProxyFirefoxNotFound=Unable to use Firefox''s proxy settings. Using "DIRECT" as proxy type. - RProxyFirefoxOptionNotImplemented=Browser proxy option "{0}" ({1}) not supported yet. --RBrowserLocationPromptTitle=Browser Location --RBrowserLocationPromptMessage=Specify Browser Location --RBrowserLocationPromptMessageWithReason=Specify Browser Location (the browser command "{0}" is invalid). -+RBrowserLocationPromptTitle=Please select handler (browser) for this url: - HTMLnoneFound=No applet found on this html page (supported are object, embed and applet tags) - HTMLmoreThenOne=More then one ({0}) applets found. Using first. You can specify ''all'' or numbers to specify applets you want to run. - -@@ -337,7 +336,7 @@ - BOVerbose = Enable verbose output. - BOAbout = Shows a sample application. - BOVersion = Print the IcedTea-Web version and exit. --BONosecurity= Disables the secure runtime environment. -+BONosecurity= Disables the secure runtime environment. You need also deployment.security.itw.ignorecertissues to workaround corrupted signatures - BONoupdate = Disables checking for updates. - BOHeadless = Disables download window, other UIs. - BOStrict = Enables strict checking of JNLP file format. -@@ -582,6 +581,15 @@ - VVPossibleFileValues=include an absolute path to a file or directory - VVPossibleRangedIntegerValues=are in range {0} to {1} (inclusive) - VVPossibleUrlValues=include any valid url (eg. http://icedtea.classpath.org/hg/) -+VVPossibleBrowserValues=Set path to browser or any command launching url. If not set, default browser is used. If default browser is not available, you will be be prompted to provide URL consumer. \ -+Eg: firefox, or (windows) {0}, microsoft-edge, (mac) safari, xdg-open (linux) like commands. \ -+In headless mode you can use wget, curl or lynx. It can be also javaws itself to launch other jnlp. \ -+You can set yor custom browser via {4} property. ${1} environment variable is serving same purpose. \ -+You can use keyword {2} to launch internal browser. But be warned, it is terrible. Use {3} to enforce prompt each time instead of using defaults. -+VVBrowserVerificationPass=Verification Ok: {0} -+VVBrowserVerificationFail=Verification failed. See examples! -+VVBrowserSaveNotAllowed=You have set {0} as value for {1}. Can't overwrite. -+VVBrowserSaveAllowed=Will save your selection as {0} - - # Control Panel - Main - CPMainDescriptionShort=Configure IcedTea-Web -@@ -612,7 +620,7 @@ - CPJVMjdk6=JDK6 recognized. JDK7 and older are longer supported. - CPJVMjdk7=JDK7 recognized. JDK7 and older are longer supported. - CPJVMjdk8=JDK8 recognized. Jdk8 and higher are supported --CPJVMjdk9=JDK9 recognized. Jdk8 and higher are supported -+CPJVMjdk9=JDK9 or higher recognized. Jdk8 and higher are supported. Jdk9 and up can have modularity issues. - CPJVMjdk=Unknown version. Hard to judge support. See tooltip or console/standard output (depends on verbosity)for real version. - CPJVMoracleFound=Great, Oracle java detected - CPJVMibmFound=Good, IBM java detected -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/resources/Messages_cs.properties ---- a/netx/net/sourceforge/jnlp/resources/Messages_cs.properties Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/resources/Messages_cs.properties Tue Dec 18 11:22:16 2018 +0100 -@@ -233,8 +233,6 @@ - RProxyFirefoxNotFound=Nelze pou\u017e\u00edt nastaven\u00ed proxy server\u016f prohl\u00ed\u017ee\u010de Firefox. Je pou\u017eito nastaven\u00ed bez proxy serveru (DIRECT). - RProxyFirefoxOptionNotImplemented=Mo\u017enost nastaven\u00ed proxy serveru prohl\u00ed\u017ee\u010de {0} ({1}) je\u0161t\u011b nen\u00ed podporov\u00e1na. - RBrowserLocationPromptTitle=Um\u00edst\u011bn\u00ed prohl\u00ed\u017ee\u010de --RBrowserLocationPromptMessage=Zadejte um\u00edst\u011bn\u00ed prohl\u00ed\u017ee\u010de. --RBrowserLocationPromptMessageWithReason=Zadejte um\u00edst\u011bn\u00ed prohl\u00ed\u017ee\u010de (p\u0159\u00edkaz prohl\u00ed\u017ee\u010de {0} je neplatn\u00fd). - HTMLnoneFound=Na t\u00e9to str\u00e1nce html nebyl nalezen \u017e\u00e1dn\u00fd aplet (podporov\u00e1ny jsou zna\u010dky \u201eobject\u201c, \u201eembed\u201c a \u201eapplet\u201c). - HTMLmoreThenOne=Bylo nalezeno v\u00edce aplet\u016f ({0}). Pou\u017eije se prvn\u00ed. M\u016f\u017eete specifikovat \u010d\u00edsla aplet\u016f nebo pou\u017e\u00edt volbu \u201ev\u0161echny\u201c (all) a vybrat tak, kter\u00e9 aplety chcete spustit. - -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/resources/Messages_de.properties ---- a/netx/net/sourceforge/jnlp/resources/Messages_de.properties Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/resources/Messages_de.properties Tue Dec 18 11:22:16 2018 +0100 -@@ -252,8 +252,6 @@ - RProxyFirefoxNotFound=Es ist nicht m\u00f6glich Firefoxs Proxyeinstellungen zu verwenden. Nutze \u201eDIRECT\u201c als Proxytyp. - RProxyFirefoxOptionNotImplemented=Browserproxyoption \u201e{0}\u201c ({1}) wird noch nicht unterst\u00fctzt. - RBrowserLocationPromptTitle=Browserort --RBrowserLocationPromptMessage=Bitte den Ort des Browsers angeben --RBrowserLocationPromptMessageWithReason=Bitte den Ort des Browsers angeben (der Browserbefehl \u201e{0}\u201c ist ung\u00fcltig). - HTMLnoneFound=Es wurde kein Applet auf dieser HTML-Seite gefunden (unterst\u00fctzt werden die Elemente \u201eOBJECT\u201c, \u201eEMBED\u201c und \u201eAPPLET\u201c). - HTMLmoreThanOne=Mehr als ein ({0}) Applet wurde gefunden. Das erste Applet wird ausgef\u00fchrt. Mit der Angabe von \u201eall\u201c oder Zahlen k\u00f6nnen die gew\u00fcnschten Applets f\u00fcr die Ausf\u00fchrung angegeben werden. - -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/resources/Messages_pl.properties ---- a/netx/net/sourceforge/jnlp/resources/Messages_pl.properties Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/resources/Messages_pl.properties Tue Dec 18 11:22:16 2018 +0100 -@@ -232,8 +232,6 @@ - RProxyFirefoxNotFound=Nie mo\u017cna u\u017cy\u0107 ustawie\u0144 proxy Firefox-a. Zastosowano \u201eDIRECT\u201d jako typ proxy. - RProxyFirefoxOptionNotImplemented=Opcja proxy \u201e{0}\u201d ({1}) przegl\u0105darki jeszcze nie jest obs\u0142ugiwana. - RBrowserLocationPromptTitle=Lokalizacja przegl\u0105darki --RBrowserLocationPromptMessage=Podaj lokalizacj\u0119 przegl\u0105darki --RBrowserLocationPromptMessageWithReason=Podaj lokalizacj\u0119 przegl\u0105darki (polecenie \u201e{0}\u201d jest nieprawid\u0142owe). - BFileInfoAuthors=Nazwiska i adresy poczty elektronicznej zas\u0142u\u017conych dla tego projektu umieszczono w pliku AUTHORS, znajduj\u0105cym si\u0119 w katalogu g\u0142\u00f3wnym IcedTea-Web. - BFileInfoCopying=Kompletny egzemplarz licencji GPLv2 tego projektu umieszczono w pliku COPYING, znajduj\u0105cym si\u0119 w katalogu g\u0142\u00f3wnym IcedTea-Web. - BFileInfoNews=Nowo\u015bci o wydaniach tego projektu umieszczono w pliku NEWS, znajduj\u0105cym si\u0119 w katalogu g\u0142\u00f3wnym IcedTea-Web. -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/resources/Messages_ru.properties ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/netx/net/sourceforge/jnlp/resources/Messages_ru.properties Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,1203 @@ -+# Default (English) UI messages for netx -+# -+# All messages are formatted using Java's MessageFormat class. -+# Apostrophe characters ' need to be escaped by using two: '' -+# Curly brackets need to be escaped by surrounding them with single apostrophes '{' '{hello}' -+# -+# L=Launcher, B=Boot, P=Parser, C=cache S=security -+# -+# General -+NullParameter=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Null -+ButAllow=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c -+ButBrowse=\u041e\u0431\u0437\u043e\u0440... -+ButCancel=\ \u041e\u0442\u043c\u0435\u043d\u0430 -+ButClose=\u0417\u0430\u043a\u0440\u044b\u0442\u044c -+ButAdvancedOptions=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 -+ButLunchFullItwSettings=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 -+ButCopy=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 -+ButMoreInformation=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f... -+ButOk=\u041e\u041a -+ButProceed=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c -+ButRun=\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c -+ButSandbox=\u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 -+ButApply=\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c -+ButDone=\u0413\u043e\u0442\u043e\u0432\u043e -+ButShowDetails=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 -+ButHideDetails=\u0421\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 -+ButYes=\u0414\u0430 -+ButNo=\u041d\u0435\u0442 -+BUTControlledBy=\u041f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c {0} -+BUTmodified=\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e -+BUTback=\u041d\u0430\u0437\u0430\u0434 -+BUTforward=\u0412\u043f\u0435\u0440\u0451\u0434 -+BUTreload=\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c -+ITWdocsMissingAuthors=\u0421\u043c. \u0444\u0430\u0439\u043b \u0430\u0432\u0442\u043e\u0440\u043e\u0432 -+ -+HEADLESS_MISSCONFIGURED=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0431\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u0438. IcedTea-Web \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043d\u043e \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u0431\u0430\u0433 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. -+ -+CertWarnRunTip=\u0414\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 -+CertWarnSandboxTip=\u041d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 -+CertWarnCancelTip=\u041d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f -+CertWarnPolicyTip=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b -+CertWarnPolicyEditorItem=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 -+CertWarnHTTPSAcceptTip=\u041f\u0440\u0438\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c HTTPS-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e -+CertWarnHTTPSRejectTip=\u041d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c HTTPS-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 -+ -+AFileOnTheMachine=\u0444\u0430\u0439\u043b \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 -+AlwaysAllowAction=\u0412\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 -+AlwaysForbidAction=\u0412\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 -+Usage=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435: -+Error=\u041e\u0448\u0438\u0431\u043a\u0430 -+Warning=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 -+ -+Continue=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c? -+Field=\u041f\u043e\u043b\u0435 -+From=\u041e\u0442 -+Name=\u0418\u043c\u044f -+Password=\u041f\u0430\u0440\u043e\u043b\u044c: -+Publisher=\u0418\u0437\u0434\u0430\u0442\u0435\u043b\u044c -+Unknown=<\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e> -+Username=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f: -+Value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 -+Version=\u0412\u0435\u0440\u0441\u0438\u044f -+ -+# about dialogue -+AboutDialogueTabAbout=\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 -+AboutDialogueTabAuthors=\u0410\u0432\u0442\u043e\u0440\u044b -+AboutDialogueTabChangelog=\u0416\u0443\u0440\u043d\u0430\u043b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 -+AboutDialogueTabNews=\u041d\u043e\u0432\u043e\u0441\u0442\u0438 -+AboutDialogueTabGPLv2=GPLv2 -+ -+# version check minidialogue -+JREversionDontMatch=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435: \u0432\u0430\u0448\u0430 \u0441\u0440\u0435\u0434\u0430 JRE - {0} - \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 JRE - {1} -+JREContinueDialogSentence2=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435? -+JREContinueDialogSentenceTitle=\u041d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430\u044f \u0441\u0440\u0435\u0434\u0430 JRE -+ -+# missing permissions dialogue -+MissingPermissionsMainTitle=\u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 {0} \u0438\u0437 {1} \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f? -+MissingPermissionsInfo=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443:
JAR File Manifest Attributes
\u0438
Preventing the repurposing of Applications -+ -+# missing Application-Library-Allowable-Codebase dialogue -+ALACAMissingMainTitle=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 {0} \u0438\u0437 {1} \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439: {2} \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0433\u043e. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? -+ALACAMissingInfo=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443:
JAR File Manifest Attributes
\u0438
Preventing the Repurposing of an Application -+ -+# matching Application-Library-Allowable-Codebase dialogue -+ALACAMatchingMainTitle=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 {0} \u0438\u0437 {1} \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439:
{2}
\u0412\u0441\u0451 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? -+ALACAMatchingInfo=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443:
JAR File Manifest Attributes
\u0438
Preventing the Repurposing of an Application -+ -+MACDisabledMessage=\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b. -+MACCheckSkipped=\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 {0} \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 deployment.manifest.attributes.check \u043d\u0435 \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 ALL \u0438\u043b\u0438 \u043e\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 {1} \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u043e\u043f\u0446\u0438\u0439 -+ -+# LS - Severity -+LSMinor=\u041d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f -+LSFatal=\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f -+ -+# LC - Category -+LCSystem=\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 -+LCExternalLaunch=\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 -+LCFileFormat=\u041e\u0448\u0438\u0431\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0444\u0430\u0439\u043b\u0430 -+LCReadError=\u041e\u0448\u0438\u0431\u043a\u0430 \u0447\u0442\u0435\u043d\u0438\u044f -+LCClient=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f -+LCLaunching=\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 -+LCNotSupported=\u041d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c -+LCInit=\u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 -+ -+LAllThreadGroup=\u0412\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f JNLP -+LNullUpdatePolicy=\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 null. -+ -+LThreadInterrupted=\u041f\u043e\u0442\u043e\u043a \u0431\u044b\u043b \u043f\u0440\u0435\u0440\u0432\u0430\u043d \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u0430. -+LThreadInterruptedInfo=\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0432\u0437\u0430\u0438\u043c\u043e\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0435 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438. \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435/\u0431\u0440\u0430\u0443\u0437\u0435\u0440. -+LCouldNotLaunch=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0439\u043b JNLP. -+LCouldNotLaunchInfo=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 javaws/browser \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043e\u0442\u0447\u0451\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435. -+LCantRead=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b JNLP. -+LCantReadInfo=\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043e\u0442\u0447\u0451\u0442\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 IcedTea-Web. -+LNullLocation=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 .jnlp. -+LNullLocationInfo=\u0411\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 JNLP \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 JVM, \u043d\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u044e\u044e JVM, \u0441\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b .jnlp \u043b\u0438\u0431\u043e \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043b\u0438\u0431\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. -+LNetxJarMissing=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b netx.jar. -+LNetxJarMissingInfo=\u0411\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 JNLP \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 JVM, \u043d\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b netx.jar. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u044e\u044e JVM, \u0441\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b netx.jar. -+LNotToSpec=\u0424\u0430\u0439\u043b JNLP \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u043c. -+LNotToSpecInfo=\u0424\u0430\u0439\u043b JNLP \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 JNLP. \u0421\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0444\u0430\u0439\u043b\u0430. -+LNotApplication=\u041d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. -+LNotApplicationInfo=\u0411\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442 \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. -+LNotApplet=\u041d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u043c \u0430\u043f\u043b\u0435\u0442\u0430. -+LNotAppletInfo=\u0411\u044b\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442 \u0444\u0430\u0439\u043b\u0430 \u0430\u043f\u043b\u0435\u0442\u0430, \u043a\u0430\u043a \u0430\u043f\u043b\u0435\u0442\u0430. -+LNoInstallers=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f. -+LNoInstallersInfo=\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0430 JNLP \u0435\u0449\u0451 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430. -+LInitApplet=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043f\u043b\u0435\u0442. -+LInitAppletInfo=\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 "\u043a\u043d\u043e\u043f\u043a\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439". -+LInitApplication=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. -+LInitApplicationInfo=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 javaws. -+LNotLaunchable=\u041d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u043c JNLP. -+LNotLaunchableInfo=\u0424\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c JNLP, \u0430\u043f\u043b\u0435\u0442\u043e\u043c \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u043e\u043c. -+LCantDetermineMainClass=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 Main-Class. -+LCantDetermineMainClassInfo=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. -+LUnsignedJarWithSecurity=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c JAR. -+LUnsignedJarWithSecurityInfo=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0444\u0430\u0439\u043b\u044b JAR \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b. -+LSignedJNLPAppDifferentCerts=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 JNLP \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e \u043e\u0434\u043d\u0438\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c. -+LSignedJNLPAppDifferentCertsInfo=\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f JNLP \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0434\u0438\u043d\u043e\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0438\u0435. -+LUnsignedApplet=\u0410\u043f\u043b\u0435\u0442 \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d. -+LUnsignedAppletPolicyDenied=\u0410\u043f\u043b\u0435\u0442 \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d. \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u043b\u0430 \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435. -+LUnsignedAppletUserDenied=\u0410\u043f\u043b\u0435\u0442 \u043d\u0435 \u0431\u044b\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u0438 \u043d\u0435 \u0441\u0442\u0430\u043b \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c. -+LPartiallySignedApplet=\u0410\u043f\u043b\u0435\u0442 \u0431\u044b\u043b \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d. -+LPartiallySignedAppletUserDenied=\u0410\u043f\u043b\u0435\u0442 \u0431\u044b\u043b \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0435\u043c\u0443. -+LSignedAppJarUsingUnsignedJar=\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b JAR. -+LSignedAppJarUsingUnsignedJarInfo=\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0430\u0439\u043b JAR \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 JAR, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442, \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b. -+LRunInSandboxError=\u0412\u044b\u0437\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u043e\u0437\u0434\u043d\u043e. -+LRunInSandboxErrorInfo=\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0430\u043f\u043b\u0435\u0442\u0430 \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b. -+LSignedJNLPFileDidNotMatch=\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b JNLP \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 JNLP. -+LNoSecInstance=\u041e\u0448\u0438\u0431\u043a\u0430: \u043d\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f {0}. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f -+LCertFoundIn={0} \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0432 cacerts ({1}) -+LSingleInstanceExists=\u0423\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430. \u041e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440. -+ -+JNotApplet=\u0424\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043f\u043b\u0435\u0442\u043e\u043c. -+JNotApplication=\u0424\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c. -+JNotComponent=\u0424\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c. -+JNotInstaller=\u0424\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u043e\u043c. -+JInvalidExtensionDescriptor=\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0443 (name={1}, location={2}). -+ -+LNotVerified=\u0424\u0430\u0439\u043b\u044b JAR \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b. -+LCancelOnUserRequest=\u041e\u0442\u043c\u0435\u043d\u0435\u043d\u043e \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. -+LFatalVerification=\u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b JAR \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. -+LFatalVerificationInfo=\u0412 \u043a\u043b\u0430\u0441\u0441\u0435 JarCertVerifier \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b cacerts \u0438\u043b\u0438 trusted.certs \u043c\u043e\u0433\u043b\u0430 \u0441\u0442\u0430\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. -+ -+LNotVerifiedDialog=\u0423\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0435 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b JAR. -+LAskToContinue=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f? -+ -+# Parser -+PInvalidRoot=\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c JNLP. -+PNoResources=\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (resources). -+PUntrustedNative=\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a (nativelib) \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b. -+PExtensionHasJ2SE=\u042d\u043b\u0435\u043c\u0435\u043d\u0442 j2se \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u0444\u0430\u0439\u043b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430. -+PInnerJ2SE=\u042d\u043b\u0435\u043c\u0435\u043d\u0442 j2se \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435 j2se. -+PTwoMains=\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (resources) (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d) -+PNativeHasMain=\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a (nativelib). -+PNoInfoElement=\u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (information). -+PMissingTitle=\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 -+PMissingVendor=\u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a -+PMissingElement=\u0420\u0430\u0437\u0434\u0435\u043b {0} \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u0438. \u0412 \u0444\u0430\u0439\u043b\u0435 JNLP \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. -+PTwoDescriptions=\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f (description) c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c kind {0} \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. -+PSharing=\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u043c \u043e\u0431\u0449\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c (sharing-allowed) \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 JNLP -+PTwoSecurity=\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 JNLP \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (security). -+PEmptySecurity=\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (security) \u0443\u043a\u0430\u0437\u0430\u043d, \u043d\u043e \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439. -+PTwoDescriptors=\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 JNLP \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (application-desc). -+PTwoDesktops=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430 (desktop) -+PTwoMenus=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0435\u043d\u044e (menu) -+PTwoTitles=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f (title) -+PTwoIcons=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u043d\u0430\u0447\u043a\u0430 (icon) -+PTwoUpdates=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f (update) -+PUnknownApplet=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442 -+PBadWidth=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430 \u0430\u043f\u043b\u0435\u0442\u0430. -+PBadHeight=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u044b\u0441\u043e\u0442\u0430 \u0430\u043f\u043b\u0435\u0442\u0430. -+PUrlNotInCodebase=\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430. (\u0443\u0437\u0435\u043b={0}, href={1}, \u0431\u0430\u0437\u0430={2}) -+PBadRelativeUrl=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 (\u0443\u0437\u0435\u043b={0}, href={1}, \u0431\u0430\u0437\u0430={2}) -+PBadNonrelativeUrl=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043d\u0435\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 (\u0443\u0437\u0435\u043b={0}, href={1}) -+PNeedsAttribute=\u042d\u043b\u0435\u043c\u0435\u043d\u0442 {0} \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 {1}. -+PBadXML=\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 XML. -+PBadHeapSize=\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u0443\u0447\u0438 ({0}) -+ -+# Runtime -+BLaunchAbout=\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u043a\u043d\u0430 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435... -+BLaunchAboutFailure=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u043a\u043d\u043e \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 -+BNeedsFile=\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b .jnlp -+RNoAboutJnlp=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b about.jnlp -+BFileLoc=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 JNLP -+BBadProp=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 {0} (\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043a\u043b\u044e\u0447=\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435) -+BBadParam=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 {0} (\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0438\u043c\u044f=\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435) -+BNoDir=\u041a\u0430\u0442\u0430\u043b\u043e\u0433 {0} \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. -+BNoCodeOrObjectApplet=\u0422\u0435\u0433 \u0430\u043f\u043b\u0435\u0442\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 ''code'' \u0438\u043b\u0438 ''object'', \u0438\u043b\u0438 ''jnlp_href''. -+RNoResource=\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441: {0} -+RShutdown=\u042d\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f JVM, \u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0431\u044b\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d. -+RExitTaken=\u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0443\u0436\u0435 \u0437\u0430\u0434\u0430\u043d, \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c. -+RCantReplaceSM=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 SecurityManager \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. -+RCantCreateFile=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b {0} -+RCantDeleteFile=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b {0} -+RCantOpenFile=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b {0} -+RCantWriteFile=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0444\u0430\u0439\u043b {0} -+RFileReadOnly=\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f -+RExpectedFile=\u041e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e {0} \u0431\u0443\u0434\u0435\u0442 \u0444\u0430\u0439\u043b\u043e\u043c, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0444\u0430\u0439\u043b -+RRemoveRPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0} -+RRemoveWPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0} -+RRemoveXPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0} -+RGetRPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0} -+RGetWPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0} -+RGetXPermFailed=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 {0} -+RCantCreateDir=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 {0} -+RCantRename=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c {0} \u0432 {1} -+RDenyStopped=\u0423 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439. -+RExitNoApp=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 JVM, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. -+RNoLockDir=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a ({0}) -+RNestedJarExtration=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b JAR. -+RUnexpected=\u041d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e {0} \u0432 {1} -+RConfigurationError=\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c -+RConfigurationFatal=\u041e\u0428\u0418\u0411\u041a\u0410: \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438 \u0435\u0451 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 -+RFailingToDefault=\u041e\u0448\u0438\u0431\u043a\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. -+RPRoxyPacNotSupported=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u043a\u0441\u0438 (Proxy Auto Config, PAC) \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f. -+RProxyFirefoxNotFound=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u043a\u0441\u0438 Firefox. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0438\u043f\u0430 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f "DIRECT". -+RProxyFirefoxOptionNotImplemented=\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u043f\u0446\u0438\u0438 \u043f\u0440\u043e\u043a\u0441\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 "{0}" ({1}) \u0435\u0449\u0451 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430. -+RBrowserLocationPromptTitle=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a (\u0431\u0440\u0430\u0443\u0437\u0435\u0440) \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0430: -+HTMLnoneFound=\u041d\u0430 \u044d\u0442\u043e\u0439 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0430\u043f\u043b\u0435\u0442\u044b (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u0433\u0438 object, embed \u0438 applet) -+HTMLmoreThenOne=\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e ({0}) \u0430\u043f\u043b\u0435\u0442\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439. \u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c ''all'' \u0438\u043b\u0438 \u0446\u0438\u0444\u0440\u044b, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c. -+ -+# icedtea-web man (note, spaces are important due to man pages markup -+ITWintroL1={0}\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0430\u043f\u043b\u0435\u0442\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Java, \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e Java Web Start, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 NetX. -+ITWintroL2=NetX \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u043e \u0441\u0435\u0442\u0438, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0430\u043f\u043b\u0435\u0442\u044b \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Java. \u041f\u0440\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0445 \u0430\u043f\u043b\u0435\u0442\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b itw-settings. -+ITWintroL3={0} \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f {1} \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0435\u0431-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432. -+ITWintroUrlCaption= \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u044b Java -+BFileInfoAuthors=\u0418\u043c\u0435\u043d\u0430 \u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 AUTHORS \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 IcedTea-Web. -+BFileInfoCopying=\u041f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 GPLv2 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 COPYING \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 IcedTea-Web. -+BFileInfoNews=\u041d\u043e\u0432\u043e\u0441\u0442\u0438 \u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 NEWS \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 IcedTea-Web. -+ITWdescO1title=\u041c\u043e\u0434\u0443\u043b\u0438 -+ITWdescO1text=\u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 JNLP. -+ITWdescO2title=\u042d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u044c -+ITWdescO2text=\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u043e\u0431\u0449\u0435\u0439 JVM. -+ITWdescO3title=\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a -+ITWdescO3text=\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u0437 \u043a\u044d\u0448\u0430. -+ITWdescO4title=\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c -+ITWdescO4text=\u0417\u0430\u043f\u0443\u0441\u043a \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. -+ITWdescO5title=\u0410\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 -+ITWdescO5text=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. -+ITWdescO6title=\u0421\u0435\u0442\u0435\u0432\u043e\u0435 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 -+ITWdescO6text=\u0420\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435, \u0430 \u043d\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u043e\u0432. -+ITWdescO7title=\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 -+ITWdescO7text=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f GNU. -+ITWdescL1=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 {0} \u0438 {1}. -+ITWdescWikiUrlTitle=\u0412\u0438\u043a\u0438-\u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 IcedTea -+ITWdescItwWikiUrlTitle=\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 IcedTea-Web -+ITWdescL2=\u041f\u043e\u043c\u043e\u0449\u044c \u043f\u043e \u0442\u0438\u043f\u043e\u0432\u044b\u043c \u043e\u0448\u0438\u0431\u043a\u0430\u043c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 IcedTea-Web \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c {0} . -+ITWdescIssuesUrlTitle=\u0437\u0434\u0435\u0441\u044c -+ITWdescL3=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 NetX: -+ITWoptionsL1=\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e {0} \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443 IcedTea \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0430 \u0412\u0438\u043a\u0438-\u0441\u0430\u0439\u0442\u0435. -+ITWoptionsQuickStartUrlCaption=\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a -+ITWoptionsCodeUrlUrlCaption=\u0421\u0442\u0438\u043b\u044c \u043a\u043e\u0434\u0430 -+ITWoptionsL2=\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e {0} \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 {1} \u043f\u043e IcedTea-Web \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b. \u041f\u0430\u0442\u0447\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u0438 {2} \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 {3} -+ITWoptionsEclipseUrlCaption=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Eclipse -+ITWoptionsReproducersUrlCaption=\u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a -+ITWoptionsDistroUrlCaption=\u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438 -+ITWoptionsL3=\u0423\u0447\u0430\u0441\u0442\u0438\u0435: -+ -+# policyeditor man (note, spaces (especially the one around markup) are important due to man pages markup). Only bold tag is now recognized by ReplacingTextFormatter. -+PEintro= - \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f javaws \u0438 lt;Bgt;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430lt;/Bgt; -+PEsynopseP1=policy_file -+PEsynopseP2=url -+PEdescL1=\u2014 \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 javaws \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 IcedTea-Web. \u041e\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u043a\u0430\u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u0443\u0434\u043e\u0431\u043d\u0430\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 JDK (JDK Policy Tool). \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0438 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 (Policy Tool), \u0430 \u043d\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor). -+PEdescL2=\u0415\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0444\u0430\u0439\u043b \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0412 \u0438\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d \u043a\u0430\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043a\u0430\u043a \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438. -+PEexampleL1=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. -+PEexampleL2=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u0435\u0437 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u0430. -+ -+ -+# javaws man (note, spaces (especially the one around markup) are important due to man pages markup). Only bold tag is now recognized by ReplacingTextFormatter. -+JWSintro= - \u043a\u043b\u0438\u0435\u043d\u0442 Java Web Start -+JWSdescL1=\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 JNLP. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0430\u0439\u043b JNLP (Java Network Launch Protocol, \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Java) \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Java \u0438\u043b\u0438 \u0430\u043f\u043b\u0435\u0442\u0430 Java. \u042d\u0442\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f {0}\u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 IcedTea, \u043e\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 NetX. -+JWSdescL2=\u0424\u0430\u0439\u043b JNLP - \u044d\u0442\u043e \u0444\u0430\u0439\u043b XML, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Java \u0438\u043b\u0438 \u0430\u043f\u043b\u0435\u0442 Java. -+JWSoptionsL1=\u041f\u0440\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0438 \u043e\u043f\u0446\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 .jnlp \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043e\u043f\u0446\u0438\u0438 -jnlp, \u043e\u043f\u0446\u0438\u0438 \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0441 \u043e\u043f\u0446\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442. \u0424\u0430\u0439\u043b .html, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0444\u0430\u0439\u043b .jnlp, \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0446\u0438\u0438 -html. -+JWSoptionsL2=\u0424\u0430\u0439\u043b JNLP \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e URL-\u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u043b\u0438\u0431\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c. -+JWSoptionsL3=\u0424\u0430\u0439\u043b JNLP \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 (\u043a\u0430\u043a \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u043f\u043e\u0441\u043b\u0435 -jnlp \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b .html). -+JWSoptionsTitle1=\u041e\u043f\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430: -+JWSoptionsTitle2=\u041e\u043f\u0446\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f: -+JWSexampleL1=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0440\u0430\u0442\u043a\u0443\u044e \u0441\u043f\u0440\u0430\u0432\u043a\u0443. -+JWSexampleL2=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0440\u0430\u0442\u043a\u0443\u044e \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435. -+JWSexampleL3=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 {0}, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0437 {1}, \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044f \u0435\u0433\u043e, \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438, \u043d\u0430 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0439 \u043e\u0434\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435. -+ -+# Boot options, message should be shorter than this ----------------> -+BOUsage=[-run-options] \u0444\u0430\u0439\u043b JNLP -+BOUsage2=[-control-options] -+BOJnlp= \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 JNLP \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 (URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438 \u0444\u0430\u0439\u043b). -+BOHtml= \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 HTML \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 (URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438 \u0444\u0430\u0439\u043b). \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 ALL \u0438\u043b\u0438 \u0446\u0438\u0444\u0440\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 1 2 5), \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u044b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e. -+BOArg= \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c. -+BOParam= \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0430\u043f\u043b\u0435\u0442\u0430 \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c. -+BOProperty= \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c. -+BOUpdate= \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. -+BOLicense= \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e GPL \u0438 \u0432\u044b\u0439\u0442\u0438. -+BOVerbose= \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434. -+BOAbout= \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. -+BOVersion= \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0432\u0435\u0440\u0441\u0438\u044e IcedTea-Web \u0438 \u0432\u044b\u0439\u0442\u0438. -+BONosecurity= \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439 \u0442\u0430\u043a\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f deployment.security.itw.ignorecertissues -+BONoupdate= \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439. -+BOHeadless= \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u043a\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b. -+BOStrict= \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0444\u0430\u0439\u043b\u0430 JNLP. -+BOViewer= \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432. -+BOXml= \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u0438\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a XML \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 JNLP. -+BOredirect= \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 HTTP. -+BXnofork= \u041d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e JVM. -+BXclearcache= \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f JNLP. -+BXignoreheaders= \u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 JAR. -+BXoffline= \u0417\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 ITW. \u0411\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u044d\u0448. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435. -+BOHelp1= \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438. -+BOHelp2= \u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u043f\u043e \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435. -+BOTrustnone= \u041d\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0434\u0430\u0451\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. -+ -+# Itweb-settings boot commands -+IBOList=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 IcedTea-Web \u0438 \u0438\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. -+IBOGet=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. -+IBOInfo=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430. -+IBOSet=\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. -+IBOResetAll= \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a \u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c. -+IBOReset=\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a \u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c. -+IBOCheck=\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u0441\u0435\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. -+ -+PBOFile=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c. \u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0438\u043c \u0444\u043b\u0430\u0433\u043e\u043c, \u044d\u0442\u043e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f (\u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b \u0443\u043a\u0430\u0437\u0430\u043d \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433). \u042d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 (Policy Tool). -+PBODefaultFile=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u042d\u0442\u043e\u0442 \u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f IcedTea-Web \u0434\u043b\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u0445 \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0438\u043d\u043e\u0435. -+PBOCodebase=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0430\u043f\u043b\u0435\u0442\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430; \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d. -+PBOSignedBy=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430; \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d. -+PBOPrincipals=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u0440\u044b \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430/\u0438\u043c\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 (\u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c) \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430; \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d. -+ -+# Option Parser -+OPUnevenParams=\u0414\u043b\u044f \u043e\u043f\u0446\u0438\u0438 {0} \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c \u0447\u0451\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. -+ -+# NumberOfArguments descriptions. -+NOAnone=\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f -+NOAone=\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 -+NOAonemore=\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 -+NOAevennumber=\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0447\u0451\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0433\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 param=value \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 -+ -+# Allowed man sections -+manNAME=\u0418\u041c\u042f -+manSYNOPSIS=\u041e\u0411\u0417\u041e\u0420 -+manDESCRIPTION=\u041e\u041f\u0418\u0421\u0410\u041d\u0418\u0415 -+manOPTIONS=\u041e\u041f\u0426\u0418\u0418 -+manCOMMANDS=\u041a\u041e\u041c\u0410\u041d\u0414\u042b -+manEXAMPLES=\u041f\u0420\u0418\u041c\u0415\u0420\u042b -+manFILES=\u0424\u0410\u0419\u041b\u042b -+manBUGS=\u041e\u0428\u0418\u0411\u041a\u0418 -+manAUTHOR=\u0410\u0412\u0422\u041e\u0420 -+manSEE_ALSO=\u0421\u041c\u041e\u0422\u0420\u0418\u0422\u0415 \u0422\u0410\u041a\u0416\u0415 -+ -+# Cache -+CAutoGen=\u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 - \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0439\u0442\u0435 -+CNotCacheable={0} \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c -+CDownloading=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 -+CComplete=\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e -+CChooseCache=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u044d\u0448\u0430... -+CChooseCacheInfo=NetX \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u044d\u0448\u0430. -+CChooseCacheDir=\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u044d\u0448\u0430 -+CCannotClearCache=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0437\u0436\u0435. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440(\u044b) \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f JNLP. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Java. \\\n \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e javaws -Xclearcache \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 itw-settings \u041a\u044d\u0448 -> \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b -> \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c -+CFakeCache=\u041a\u044d\u0448 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435. -+CFakedCache=\u041f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043a\u044d\u0448 \u0431\u044b\u043b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d. \u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c ''javaws -Xclearcache'' \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u0440\u0435\u0435. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c itw-settings \u041a\u044d\u0448 -> \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b -> \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c -+ -+# extended access warning pane -+EXAWdesktopWants=\u0417\u043d\u0430\u0447\u043e\u043a \u044f\u0440\u043b\u044b\u043a\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 (\u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438). -+EXAWdesktopDontWants=\u0417\u043d\u0430\u0447\u043e\u043a \u044f\u0440\u043b\u044b\u043a\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 (\u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c). -+EXAWsubmenu=\u0417\u043d\u0430\u0447\u043e\u043a \u044f\u0440\u043b\u044b\u043a\u0430 \u0432 \u043c\u0435\u043d\u044e (\u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e - {0}). -+EXAWmenuWants=\u0417\u043d\u0430\u0447\u043e\u043a \u044f\u0440\u043b\u044b\u043a\u0430 \u0432 \u043c\u0435\u043d\u044e (\u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438). -+EXAWmenuDontWants=\u0417\u043d\u0430\u0447\u043e\u043a \u044f\u0440\u043b\u044b\u043a\u0430 \u0432 \u043c\u0435\u043d\u044e (\u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c). -+EXAWsettingsInfo=\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: {0}. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432 itweb-settings \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 {1}. -+EXAWsettingsManage=\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u043c\u0435\u043d\u044e \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432 itweb-settings \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 {0}. -+EXAWrememberByApp=\u041f\u043e\u043c\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f -+EXAWrememberByPage=\u041f\u043e\u043c\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 -+EXAWdontRemember=\u041d\u0435 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c -+EXAWrememberByAppTooltip=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f -+EXAWrememberByPageTooltip=\u0412\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u043f\u0440\u0438\u043c\u0443\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 -+EXAWdontRememberTooltip=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0445\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 -+EXAWbrowser=\u0431\u0440\u0430\u0443\u0437\u0435\u0440 (\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430) -+EXAWgenjnlp=jnlp \u0441\u043e\u0437\u0434\u0430\u043d -+EXAWjnlphref=jnlp href -+EXAWhtml=javaws html -+EXAWfixhref=\u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 jnlp-href -+EXAWbrowserTolltip=\u042f\u0440\u043b\u044b\u043a \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430
  • \u042d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u044f\u0440\u043b\u044b\u043a \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0441 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439
  • \u0415\u0441\u043b\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u044d\u0442\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043e\u043f\u0446\u0438\u044f
  • -+EXAWbrowsersTolltip=\u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 (\u0437\u0430\u0442\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 IcedTea-Web)
  • \u0411\u044b\u043b \u0437\u0430\u0434\u0430\u043d \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
  • \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440
  • -+EXAWgeneratedTolltip=
  • \u0424\u0430\u0439\u043b JNLP \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b
  • \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0440\u043b\u044b\u043a \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d, javaws \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b JNLP
  • \u0417\u0430\u0442\u0435\u043c \u044d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0431\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430
  • \u042d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e.
  • -+EXAWhrefTolltip=\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u043f\u043b\u0435\u0442\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0444\u0430\u0439\u043b JNLP, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.
  • \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0438 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b JNLP \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432.
  • Javaws \u0431\u0443\u0434\u0435\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u0438 \u044d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u043d\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430
  • \u042d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e, \u043d\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442
  • -+EXAWhtmlTolltip=\u041f\u0443\u0442\u0451\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f -html, javaws \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c html \u0438 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0430\u043f\u043b\u0435\u0442, \u0438 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u043d\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430
  • \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c
  • \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e
  • -+EXAWfixTolltip=\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b JNLP, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0430\u043f\u043b\u0435\u0442, \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 JNLP
  • \u042d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442)
  • -+ -+# Security -+SFileReadAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u043a {0}. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435? -+SFileWriteAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043a {0}. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435? -+SDesktopShortcut=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 \u0438 / \u0438\u043b\u0438 \u0432 \u043c\u0435\u043d\u044e. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435? -+SSigUnverified=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443. -+SSigVerified=\u0426\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443. -+SSignatureError=\u0412 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443. -+SUntrustedSource=\u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0435 \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443. -+SWarnFullPermissionsIgnorePolicy=\u0418\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043b\u044e\u0431\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 Java \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b. -+STrustedSource=\u0426\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c. -+SClipboardReadAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435? -+SClipboardWriteAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435? -+SPrinterAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0443. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435? -+SNetworkAccess=\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 {0}. \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435? -+SNoAssociatedCertificate=<\u043d\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430> -+SUnverified=(\u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e) -+SAlwaysTrustPublisher=\u0412\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044f -+SHttpsUnverified=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c HTTPS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430. -+SRememberOption=\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e? -+SRememberAppletOnly=\u0414\u043b\u044f \u0430\u043f\u043b\u0435\u0442\u0430 -+SRememberCodebase=\u0414\u043b\u044f \u0441\u0430\u0439\u0442\u0430 {0} -+SUnsignedSummary=\u041d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Java \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a -+SUnsignedDetail=\u041d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a:
      {0}
    \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441:
      {1}

    \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0442\u0435\u0445 \u0441\u0430\u0439\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0435. -+SUnsignedAllowedBefore=\u0412\u044b \u0443\u0436\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 - ({0}). -+SUnsignedRejectedBefore=\u0412\u044b \u0443\u0436\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u2014 ({0}). -+SUnsignedQuestion=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u043f\u043b\u0435\u0442\u0430? -+SPartiallySignedSummary=\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. -+SPartiallySignedDetail=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0430\u043a \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435, \u0442\u0430\u043a \u0438 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0443, \u043d\u043e \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u043c. -+SPartiallySignedQuestion=\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? -+SAuthenticationPrompt=\u0421\u0435\u0440\u0432\u0435\u0440 {0} \u043d\u0430 {1} \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e. \u041e\u043d \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 "{2}" -+SJNLPFileIsNotSigned=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0446\u0438\u0444\u0440\u043e\u0432\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0444\u0430\u0439\u043b JNLP. -+STrustedOnlyAttributeFailure=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u043b\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 Trusted-Only \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0432 \u0441\u0432\u043e\u0451\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435. {0} \u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439: {1}. \u042d\u0442\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e. -+STOAsignedMsgFully= \u0410\u043f\u043b\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d -+STOAsignedMsgAndSandbox= \u0410\u043f\u043b\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d -+STOAsignedMsgPartiall= \u0410\u043f\u043b\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e -+STempNetwork=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f -+STempReadFilesAndProperties=\u0414\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c -+STempWriteFilesAndProperties=\u0414\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e \u0432\u0441\u0435\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c -+STempReflectionAndExternal=Java Reflection (\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435) \u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u043a\u043e\u0434\u0443 -+STempAllMedia=\u0412\u0441\u044f \u0441\u0440\u0435\u0434\u0430 (\u043f\u0435\u0447\u0430\u0442\u044c, \u0430\u0443\u0434\u0438\u043e, \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430) -+ -+# Security - used for the More Information dialog -+SBadKeyUsage=\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 KeyUsage \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430. -+SBadExtendedKeyUsage=\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 ExtendedKeyUsage \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430. -+SBadNetscapeCertType=\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 NetscapeCertType \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430. -+SHasExpiredCert=\u0421\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0438\u0441\u0442\u0451\u043a. -+SHasExpiringCert=\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c, \u0441\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432. -+SNotYetValidCert=\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0449\u0451 \u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d. -+SUntrustedCertificate=\u0426\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. -+STrustedCertificate=\u0426\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. -+SCNMisMatch=\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435 \u0438\u043c\u044f \u0445\u043e\u0441\u0442\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430: "{0}"
    \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443: "{1}" -+SRunWithoutRestrictions=\u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0431\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 Java. -+SCertificateDetails=\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0435 -+ -+# Security - certificate information -+SIssuer=\u0418\u0437\u0434\u0430\u0442\u0435\u043b\u044c -+SSerial=\u0421\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 -+SMD5Fingerprint=\u041e\u0442\u043f\u0435\u0447\u0430\u0442\u043e\u043a MD5 -+SSHA1Fingerprint=\u041e\u0442\u043f\u0435\u0447\u0430\u0442\u043e\u043a SHA1 -+SSignature=\u041f\u043e\u0434\u043f\u0438\u0441\u044c -+SSignatureAlgorithm=\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0438 -+SSubject=\u0421\u0443\u0431\u044a\u0435\u043a\u0442 -+SValidity=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c -+ -+# Certificate Viewer -+CVCertificateViewer=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b -+CVCertificateType=\u0422\u0438\u043f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 -+CVDetails=\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 -+CVExport=\u042d\u043a\u0441\u043f\u043e\u0440\u0442 -+CVExportPasswordMessage=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043b\u044e\u0447\u0430: -+CVImport=\u0418\u043c\u043f\u043e\u0440\u0442 -+CVImportPasswordMessage=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u0443: -+CVIssuedBy=\u041a\u0435\u043c \u0432\u044b\u0434\u0430\u043d -+CVIssuedTo=\u041a\u043e\u043c\u0443 \u0432\u044b\u0434\u0430\u043d -+CVPasswordTitle=\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f -+CVRemove=\u0423\u0434\u0430\u043b\u0438\u0442\u044c -+CVRemoveConfirmMessage=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442? -+CVRemoveConfirmTitle=\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 - \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442? -+CVUser=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c -+CVSystem=\u0421\u0438\u0441\u0442\u0435\u043c\u0430 -+ -+# KeyStores: see KeyStores.java -+KS=\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 -+KSCerts=\u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b -+KSJsseCerts=\u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b JSSE -+KSCaCerts=\u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0426\u0421 -+KSJsseCaCerts=\u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b JSSE \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 -+KSClientCerts=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 -+ -+# KeyStores: set password -+KSresultUntilNow=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043e {0} \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0439 {1}. \u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438: {2} -+KSinvalidPassword=\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c? -+KSheadlesWarning=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u041e\u041a. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0438, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u0412\u0412\u041e\u0414 \u0432 \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. -+KSnwPassHelp=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u041e\u041a. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435. -+HeadlessDialogues=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 `exit`, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c ITW, \u0438\u043b\u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u0432\u0435\u0442\u043e\u043c "R " \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 "RC " \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0439 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430. -+AWPstdoutHint1=\u041c\u043e\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 YES/NO \u0438\u043b\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442, \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 AccessWarningPaneComplexReturn.readValue. -+AWPstdoutHint2=\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: YES,D(not_found_browser,false,null,true,)M(firefox,false,null,false,) -+AWPstdoutHint3=\u0433\u0434\u0435: global_answer,desktop_shortcut(browser_bin,fixJnlpHref,type:null_or_one_of{0},really_create)same_for_menu... -+PAPstdinInfo=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0418\u041c\u042f \u043f\u0440\u043e\u0431\u0435\u043b \u041f\u0410\u0420\u041e\u041b\u042c. \u0412 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u0435\u043b\u044b: -+HDwrongValue=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435? -+ -+# HTTP 511 -+Headless511line0=*** \u041d\u0430\u0439\u0434\u0435\u043d\u044b URL-\u0430\u0434\u0440\u0435\u0441\u0430 *** -+Headless511line1=ITW \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 511 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0431\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. -+Headless511line2=\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e. \u0417\u0430\u0442\u0435\u043c \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043e\u0442\u0432\u0435\u0442. -+Headless511line3=\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Xless \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 Lynx \u0438\u043b\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Xfull -browser less \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `javaws {0}` ITW. -+Exit511=\u0412\u044b\u0439\u0442\u0438 \u0438\u0437 IcedTea-Web -+Ignore511=\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0430\u043d\u0441\u0435 -+Header511=

    HTTP 511 \u2014 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f

    \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u043d\u0438\u0436\u0435 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435

    \u0427\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 511 \u2014 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f -+ -+# Browser -+BrowserGoTo=\u041f\u0435\u0440\u0435\u0439\u0442\u0438: -+BrowserSource=\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a -+BrowserSocket=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u043a\u0435\u0442 -+BrowserSocketHelp=\u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043e, \u0434\u043b\u044f URL \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u043a\u0435\u0442. \u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.
    \u041d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c\u0441\u044f -+BrowserOpenExternal=\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 -+BrowserOpeninternal=\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 -+BrowserCopyUrlToClip=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 -+BrowserClearAll=\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 -+BrowserWarningLine1=\u041f\u0420\u0415\u0414\u0423\u041f\u0420\u0415\u0416\u0414\u0415\u041d\u0418\u0415: \u044d\u0442\u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 HTML 3.2, \u043e\u043d \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446! -+BrowserWarningLine2=\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439! -+BrowserArg=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438! -+ -+# Deployment Configuration messages -+DCIncorrectValue=\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e "{0}" \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 "{1}". \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f {2}. -+DCInternal=\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430: {0} -+DCSourceInternal=<\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439> -+DCUnknownSettingWithName=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e "{0}". -+DCmaindircheckNotexists=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 {0}. -+DCmaindircheckNotdir=\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 {0} \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c. -+DCmaindircheckRwproblem=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435/\u0437\u0430\u043f\u0438\u0441\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 {0}. -+ -+# Value Validator messages. Messages should follow "Possible values ..." -+VVPossibleValues=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f {0} -+VVPossibleBooleanValues={0} \u0438\u043b\u0438 {1} -+VVPossibleFileValues=\u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 -+VVPossibleRangedIntegerValues=\u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 {0} \u0434\u043e {1} (\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e) -+VVPossibleUrlValues=\u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, http://icedtea.classpath.org/hg/) -+VVPossibleBrowserValues=\u0417\u0430\u0434\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u0438\u043b\u0438 \u043b\u044e\u0431\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0443\u044e URL. \u0415\u0441\u043b\u0438 \u043f\u0443\u0442\u044c \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u044b, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0415\u0441\u043b\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f URL. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: firefox \u0438\u043b\u0438 (windows) {0}, microsoft-edge, (mac) safari, \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u0430\u043a xdg-open (linux). \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u0431\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c wget, curl \u0438\u043b\u0438 lynx. Javaws \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 JNLP-\u0444\u0430\u0439\u043b. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 {4}. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u044b ${1} \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0436\u0435 \u0446\u0435\u043b\u0438. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e {2}. \u041d\u043e \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 {3}, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441, \u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. -+VVBrowserVerificationPass=\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e: {0} -+VVBrowserVerificationFail=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b! -+VVBrowserSaveNotAllowed=\u0412\u044b \u0437\u0430\u0434\u0430\u043b\u0438 {0} \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f {1}. \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430. -+VVBrowserSaveAllowed=\u0412\u0430\u0448 \u0432\u044b\u0431\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u043a\u0430\u043a {0} -+ -+# Control Panel - Main -+CPMainDescriptionShort=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 IcedTea-Web -+CPMainDescriptionLong=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (IcedTeaNPPlugin) \u0438 javaws (NetX) -+ -+# Control Panel - Tab Descriptions -+CPAboutDescription=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f IcedTea. -+CPNetworkSettingsDescription=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f IcedTea-Web \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u043a\u0441\u0438. -+CPTempInternetFilesDescription=Java \u0445\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435. -+CPJRESettingsDescription=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0441\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Java \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 Java. -+CPCertificatesDescription=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0441\u043b\u0443\u0436\u0430\u0442 \u0434\u043b\u044f \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0446\u0435\u043d\u0442\u0440\u043e\u0432 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. -+CPSecurityDescription=\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. -+CPDebuggingDescription=\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 -+CPDesktopIntegrationDescription=\u0423\u043a\u0430\u0436\u0438\u0442\u0435, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044f\u0440\u043b\u044b\u043a\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435. -+CPDesktopIntegrationShowIntegrations=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u043a\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0441\u0442\u043e\u043b\u043e\u043c \u0438 \u043c\u0435\u043d\u044e -+CPDesktopIntegrationLinuxOnly=\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0441\u0442\u043e\u043b\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Linux. \u041f\u0440\u0438\u043d\u043e\u0441\u0438\u043c \u0438\u0437\u0432\u0438\u043d\u0435\u043d\u0438\u044f -+CPJVMPluginArguments=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b JVM \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. -+CPJVMitwExec=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 JVM \u0434\u043b\u044f IcedTea-Web \u2014 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f OpenJDK -+CPJVMitwExecValidation=\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 JVM \u0434\u043b\u044f IcedTea-Web -+CPJVMPluginSelectExec=\u041f\u043e\u0438\u0441\u043a JVM \u0434\u043b\u044f IcedTea-Web -+CPJVMnone=\u041d\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043b\u044f -+CPJVMvalidated=\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043b\u044f -+CPJVMvalueNotSet=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e. \u0411\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f JVM. -+CPJVMnotLaunched=\u041e\u0448\u0438\u0431\u043a\u0430, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0449\u0435\u043d, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u0438. -+CPJVMnoSuccess=\u041e\u0448\u0438\u0431\u043a\u0430, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0432\u044b\u0432\u043e\u0434\u0435, \u043d\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 Java \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. -+CPJVMopenJdkFound=\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 OpenJDK -+CPJVMjdk5=\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 JDK5. JDK7 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f. -+CPJVMjdk6=\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 JDK6. JDK7 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f. -+CPJVMjdk7=\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 JDK7. JDK7 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f. -+CPJVMjdk8=\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 JDK8. JDK8 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f. -+CPJVMjdk9=\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 JDK9 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f. JDK8 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0412 JDK9 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. -+CPJVMjdk=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u041d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0435\u0451 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0439. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0435 \u0438\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u0432\u044b\u0432\u043e\u0434\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438). -+CPJVMoracleFound=\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 Java Oracle -+CPJVMibmFound=\u0425\u043e\u0440\u043e\u0448\u043e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 Java IBM -+CPJVMgijFound=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d gij -+CPJVMstrangeProcess=\u041f\u0443\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b, \u043d\u043e \u043e\u043d \u043d\u0435 \u0431\u044b\u043b \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e Java \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u0438. -+CPJVMnotDir=\u041e\u0448\u0438\u0431\u043a\u0430. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c. -+CPJVMisDir=\u041e\u041a. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c. -+CPJVMnoJava=\u041e\u0448\u0438\u0431\u043a\u0430, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 bin/java. -+CPJVMjava=\u041e\u041a. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 bin/java. -+CPJVMnoRtJar=\u041e\u0448\u0438\u0431\u043a\u0430. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 lib/rt.jar -+CPJVMrtJar=OK. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 lib/rt.jar. -+CPJVMPluginAllowTTValidation=\u041d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c JRE -+CPJVMNotokMessage1=\u0412\u044b \u0432\u0432\u0435\u043b\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 JDK:
    • {0}
    \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435: -+CPJVMNotokMessage2=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:
    * \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b
    * \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043e\u0442 OpenJDK
    \u0421 \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u043c JDK, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c IcedTea-Web.
    \u0415\u0441\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u0431\u043e\u0439, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e {0} \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:
    • {1}
    \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b OpenJDK \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0412 \u0438\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0432 \u0441\u0432\u043e\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u0445. -+CPJVMconfirmInvalidJdkTitle=\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 JDK -+CPJVMconfirmReset=\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e? -+CPPolicyDetail=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 Java \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b. -+CPPolicyTooltip=\u041e\u0442\u043a\u0440\u044b\u0442\u044c {0} \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 -+CPPolicyEditorNotFound=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e policytool \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 PATH. -+ -+# Control Panel - Buttons -+CPButAbout=\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435... -+CPButNetworkSettings=\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b... -+CPButSettings=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b... -+CPButView=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c... -+CPButCertificates=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b... -+CPButSimpleEditor=\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 -+CPButAdvancedEditor=\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 -+ -+# Control Panel - Headers -+CPHead=\u041f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f IcedTea-Web -+CPHeadAbout=\u00a0\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435\u00a0IcedTea-Web\u00a0 -+CPHeadNetworkSettings=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u0435\u0442\u0438\u00a0 -+CPHeadTempInternetFiles=\u00a0\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u00a0 -+CPHeadJRESettings=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Java\u00a0 -+CPHeadCertificates=\u00a0\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b\u00a0 -+CPHeadDebugging=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043b\u0430\u0434\u043a\u0438\u00a0 -+CPHeadDesktopIntegration=\u00a0\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0441\u0442\u043e\u043b\u043e\u043c\u00a0 -+CPHeadSecurity=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438\u00a0 -+CPHeadJVMSettings=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b JVM\u00a0 -+CPHeadPolicy=\u00a0\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438\u00a0 -+ -+# Control Panel - Tabs -+CPTabAbout=\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 IcedTea-Web -+CPTabCache=\u041a\u044d\u0448 -+CPTabCertificate=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b -+CPTabClassLoader=\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 -+CPTabDebugging=\u041e\u0442\u043b\u0430\u0434\u043a\u0430 -+CPTabDesktopIntegration=\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0441\u0442\u043e\u043b\u043e\u043c -+CPTabMenuShortcuts=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0440\u043b\u044b\u043a\u0430\u043c\u0438, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043c\u0435\u043d\u044e -+CPTabNetwork=\u0421\u0435\u0442\u044c -+CPTabRuntimes=\u0421\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f -+CPTabSecurity=\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c -+CPTabJVMSettings=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b JVM -+CPTabPolicy=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 -+ -+# Control Panel - AboutPanel -+CPAboutInfo=\u042d\u0442\u043e \u043f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f deployments.properties.
    \u0427\u0430\u0441\u0442\u044c \u043e\u043f\u0446\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.
    \u0418\u0437 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f Java \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e OpenJDK.
    -+ -+# Control Panel - AdvancedProxySettings -+APSDialogTitle=\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Settings -+APSServersPanel=\u0421\u0435\u0440\u0432\u0435\u0440\u044b -+APSProxyTypeLabel=\u0422\u0438\u043f -+APSProxyAddressLabel=\u0410\u0434\u0440\u0435\u0441 \u043f\u0440\u043e\u043a\u0441\u0438 -+APSProxyPortLabel=\u041f\u043e\u0440\u0442 \u043f\u0440\u043e\u043a\u0441\u0438 -+APSLabelHTTP=HTTP -+APSLabelSecure=\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e -+APSLabelFTP=FTP -+APSLabelSocks=Socks -+APSSameProxyForAllProtocols=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432. -+APSExceptionsLabel=\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f -+APSExceptionsDescription=\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 -+APSExceptionInstruction=\u041e\u0442\u0434\u0435\u043b\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u043e\u0447\u043a\u043e\u0439 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439. -+ -+# Control Panel - DebugginPanel -+CPDebuggingPossibilites=\u0416\u0443\u0440\u043d\u0430\u043b \u0432\u044b\u0432\u043e\u0434\u043e\u0432 -+DPEnableLogging=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 -+DPEnableLoggingHint=\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u042d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442 -verbose \u0438\u043b\u0438 ICEDTEAPLUGIN_DEBUG=true -+DPEnableHeaders=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 -+DPEnableHeadersHint=\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0436\u0443\u0440\u043d\u0430\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0432 \u043a\u043e\u0434\u0435 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 -+DPEnableFile=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 -+DPEnableLegacyFileLog=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c java.util.logging \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0444\u0430\u0439\u043b -+DPEnableClientAppFileLogging=\u0422\u0430\u043a\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0432\u044b\u0432\u043e\u0434\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 -+DPEnableLegacyFileLogHint=\u0415\u0441\u043b\u0438 java.util.logging \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432 \u0440\u0435\u0434\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 -+DPEnableClientAppFileLoggingHint=\u0416\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 java.util.logging on -+CPFilesLogsDestDir=\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 \u0444\u0430\u0439\u043b\u043e\u0432 -+CPFilesLogsDestDirResert=\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e -+DPEnableFileHint=\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0444\u0430\u0439\u043b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 {0} -+DPEnableStds=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b -+DPEnableStdsHint=\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0432\u044b\u0432\u043e\u0434\u0430\u0445 -+DPEnableSyslog=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u044b -+DPEnableSyslogHint=\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0445 -+DPDisable=\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c -+DPHide=\u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 -+DPShow=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 -+DPShowPluginOnly=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f -+DPShowJavawsOnly=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 javaws -+DPJavaConsole=\u041a\u043e\u043d\u0441\u043e\u043b\u044c Java -+DPJavaConsoleDisabledHint=\u041a\u043e\u043d\u0441\u043e\u043b\u044c Java \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 itweb-settings \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u0438\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u0438. -+ -+# PolicyEditor -+PETitle=\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) -+PETitleWithPath=\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) - {0} -+PETitleWithChangesMade={0} * -+PEReadProps=\u0427\u0442\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 -+PEReadPropsDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 -+PEWriteProps=\u0417\u0430\u043f\u0438\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 -+PEWritePropsDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c (\u043f\u0435\u0440\u0435)\u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 -+PEReadFiles=\u0427\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 -+PEReadFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 -+PEWriteFiles=\u0417\u0430\u043f\u0438\u0441\u044c \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b -+PEWriteFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0444\u0430\u0439\u043b\u044b \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 -+PEDeleteFiles=\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 -+PEDeleteFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 -+PEReadSystemFiles=\u0427\u0442\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 -+PEReadSystemFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 -+PEWriteSystemFiles=\u0417\u0430\u043f\u0438\u0441\u044c \u0432\u0441\u0435\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 -+PEWriteSystemFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e \u0432\u0441\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 -+PEReadTempFiles=\u0427\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 -+PEReadTempFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 -+PEWriteTempFiles=\u0417\u0430\u043f\u0438\u0441\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b -+PEWriteTempFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 -+PEDeleteTempFiles=\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 -+PEDeleteTempFilesDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 -+PEAWTPermission=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u043a\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 -+PEAWTPermissionDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u043a\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 AWT -+PEClipboard=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430 -+PEClipboardDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0435\u043d\u0430 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043d\u0435\u0433\u043e -+PENetwork=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0442\u0438 -+PENetworkDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f -+PEPrint=\u041f\u0435\u0447\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 -+PEPrintDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043f\u0435\u0447\u0430\u0442\u0438 -+PEPlayAudio=\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0437\u0432\u0443\u043a\u043e\u0432 -+PEPlayAudioDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0437\u0432\u0443\u043a\u043e\u0432, \u043d\u043e \u043d\u0435 \u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u044c -+PERecordAudio=\u0417\u0430\u043f\u0438\u0441\u044c \u0430\u0443\u0434\u0438\u043e -+PERecordAudioDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0430\u0443\u0434\u0438\u043e, \u043d\u043e \u043d\u0435 \u0435\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 -+PEReflection=Java Reflection (\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435) -+PEReflectionDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a API Java Reflection (\u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435) -+PEClassLoader=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 -+PEClassLoaderDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0443 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 (\u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441 Reflection) -+PEClassInPackage=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0430\u043a\u0435\u0442\u0430\u043c -+PEClassInPackageDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043b\u0430\u0441\u0441\u0430\u043c \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 (\u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441 Reflection) -+PEDeclaredMembers=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 -+PEDeclaredMembersDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 Java (\u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441 Reflection) -+PEAccessThreads=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 -+PEAccessThreadsDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u043a, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 -+PEAccessThreadGroups=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u0442\u043e\u043a\u043e\u0432 -+PEAccessThreadGroupsDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u043a, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 -+PEExec=\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 -+PEExecDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 -+PEGetEnv=\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b -+PEGetEnvDetail=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0447\u0442\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b -+PECouldNotOpen=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 -+PECouldNotSave=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 -+PEAddEntry=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c... -+PERemoveEntry=\u0423\u0434\u0430\u043b\u0438\u0442\u044c -+PEEntryPrompt=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 -+PEAddPrincipal=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 -+PERemovePrincipal=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 -+PEEditPrincipal=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 -+PEGlobalSettings=\u0412\u0441\u0435 \u0430\u043f\u043b\u0435\u0442\u044b -+PESaveChanges=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c? -+PEChangesSaved=\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b -+PECheckboxLabel=\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f -+PEEntriesLabel=\u0417\u0430\u043f\u0438\u0441\u0438 -+PEFileMenu=\u0424\u0430\u0439\u043b -+PENewMenuItem=\u0421\u043e\u0437\u0434\u0430\u0442\u044c -+PEOpenMenuItem=\u041e\u0442\u043a\u0440\u044b\u0442\u044c... -+PEOpenDefaultMenuItem=\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e -+PESaveMenuItem=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c -+PESaveAsMenuItem=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u043a... -+PEExitMenuItem=\u0412\u044b\u0439\u0442\u0438 -+PEEntryMenu=\u0417\u0430\u043f\u0438\u0441\u044c -+PEAddEntryItem=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c... -+PERemoveEntryItem=\u0423\u0434\u0430\u043b\u0438\u0442\u044c -+PEModifySubmenuItem=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c -+PEModifyCodebaseItem=\u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 -+PEModifySignedByItem=\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e -+PEModifyPrincipalsItem=\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 -+PECopyEntryItem=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c -+PEPasteEntryItem=\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c... -+PEModifyCodebase=\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u0431\u0430\u0437\u0443 \u043a\u043e\u0434\u0430 \u043d\u0430: -+PEModifyPrincipals=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432: -+PEModifySignedBy=\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f SignedBy (\u043a\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e) \u043d\u0430: -+PEPasteEntry=\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u0431\u0430\u0437\u043e\u0439 \u043a\u043e\u0434\u0430: -+PEViewMenu=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 -+PECustomPermissionsItem=\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f... -+PECodebaseInputLabel=URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430: -+PESignedByInputLabel=SignedBy (\u043a\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e): -+PEPrincipalsInputLabel=\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438: -+PEPrincipalClassNameInputLabel=\u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430: -+PEPrincipalPrincipalNameInputLabel=\u0418\u043c\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430: -+PEFileModified=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 -+PEFileModifiedDetail=\u0424\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0432 {0} \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f. \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c? -+PEFileMissing=\u0424\u0430\u0439\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u0411\u044b\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0442\u0435\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u0435\u043c. -+PEGAccessUnownedCode=\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 -+PEGMediaAccess=\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0440\u0435\u0434\u0435 -+PEGRightClick=\u0429\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044c/\u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c -+PEGReadFileSystem=\u0427\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b -+PEGWriteFileSystem=\u0417\u0430\u043f\u0438\u0441\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 -+PEClipboardError=\u041f\u043e\u0445\u043e\u0436\u0435, \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c -+PEInvalidPolicy=\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0441\u0442\u0430\u0432\u043a\u0438: \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0434\u043b\u044f {0} \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0435\u043d\u0430 -+PEInvalidIdentifier=\u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435/\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u043e\u043b\u0435\u0439. -+PEIdentifierMatchesAll=\u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435/\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u043e\u043b\u0435\u0439. -+PEClipboardAccessError=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0435\u043d\u0430 -+PEDefaultFileFilePathSpecifiedError=\u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u0438\u0431\u043e -file (\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442), \u043b\u0438\u0431\u043e -defaultfile -+PEMainArgAndFileSwitchSpecifiedError=\u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u0438\u0431\u043e -file, \u043b\u0438\u0431\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 -+PESignedByEmpty=\u041f\u043e\u043b\u0435 SignedBy (\u043a\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e) \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c -+PEInvalidUrl=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441: {0} -+ -+PEHelpMenu=\u0421\u043f\u0440\u0430\u0432\u043a\u0430 -+PEAboutPolicyEditorItem=\u041e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) -+PEPolicyEditorHelpItem=\u0421\u043f\u0440\u0430\u0432\u043a\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) -+PEHelpDialogTitle=\u0421\u043f\u0440\u0430\u0432\u043a\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) -+PEHelpDialogContent=

    \u0421\u043f\u0440\u0430\u0432\u043a\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor)

    \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u043c \u0430\u043f\u043b\u0435\u0442\u0430\u043c \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c Java \u043f\u0443\u0442\u0451\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439.

    \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438

    • \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435: \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b, \u0438 \u043c\u044b\u0448\u0438
    • \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430: \u043f\u0443\u0442\u0451\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043b\u044e\u0431\u044b\u0445 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439
    • \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c: \u0430\u043f\u043b\u0435\u0442\u044b \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f
    • \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435: \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c
    \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0431\u0430\u0437\u0443 \u043a\u043e\u0434\u0430 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0445\u043e\u0447\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0430\u043f\u043b\u0435\u0442\u0443 \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e Java. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0430\u043f\u043b\u0435\u0442/\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u0438\u043b\u0438 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0440\u0435\u0436\u0438\u043c \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435.

    \u0412 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 (PolicyEditor) \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u0415\u0441\u043b\u0438 \u0449\u0451\u043b\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u0412\u0412\u041e\u0414 (\u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0433\u0440\u0443\u043f\u043f\u044b) \u043d\u0430 \u0433\u0440\u0443\u043f\u043f\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0438\u043b\u0438 \u0448\u0435\u0432\u0440\u043e\u043d \u043c\u0435\u043d\u044e, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u043e. \u0422\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 \u043d\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u043a\u043e\u0434\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0433\u0440\u0443\u043f\u043f\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f-\u0444\u043b\u0430\u0436\u043a\u0438. \u0427\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. -+ -+# Policy Editor CustomPolicyViewer -+PECPTitle=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 -+PECPListLabel=\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0434\u043b\u044f {0} -+PECPAddButton=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c -+PECPRemoveButton=\u0423\u0434\u0430\u043b\u0438\u0442\u044c -+PECPCloseButton=\u0417\u0430\u043a\u0440\u044b\u0442\u044c -+PECPType=\u0432\u0432\u0435\u0434\u0438\u0442\u0435 -+PECPTarget=\u0446\u0435\u043b\u044c -+PECPActions=\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f -+PECPPrompt=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 "\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435" \u0438\u043b\u0438 \u0437\u043d\u0430\u043a\u0438 \u043f\u0440\u0435\u043f\u0438\u043d\u0430\u043d\u0438\u044f. -+ -+# PolicyEditor key mnemonics. See KeyEvent.VK_* -+PEFileMenuMnemonic=\u0424 -+PEEntryMenuMnemonic=\u0417 -+PEViewMenuMnemonic=\u041f -+PEHelpMenuMnemonic=\u0421 -+ -+PEAddEntryMnemonic=\u0414 -+PEAddEntryItemMnemonic=\u0414 -+PERemoveEntryMnemonic=\u0423 -+PERemoveEntryItemMnemonic=\u0423 -+PENewMenuItemMnemonic=\u0414 -+PEOpenMenuItemMnemonic=\u041e -+PEOpenDefaultMenuItemMnemonic=\u0423 -+PESaveMenuItemMnemonic=\u0421 -+PEExitMenuItemMnemonic=\u0412 -+PECustomPermissionsItemMnemonic=\u041d -+PECopyEntryItemMnemonic=\u041a -+PEPasteEntryItemMnemonic=\u0412 -+PESaveAsMenuItemMnemonic=\u041a -+PEModifySubmenuItemMnemonic=\u0418 -+PEModifyEntryCodebaseItemMnemonic=\u0417 -+PEModifyEntryPrincipalsItemMnemonic=\u0423 -+PEModifyEntrySignedByItemMnemonic=\u0415 -+PEAboutPolicyEditorItemMnemonic=\u041a -+PEPolicyEditorHelpItemMnemonic=\u0421 -+ -+# See javax.swing.KeyStroke.getKeyStroke(String) -+PEAddEntryItemAccelerator=Ctrl+Shift+\u0414 -+PERemoveEntryItemAccelerator=Delete -+PENewMenuItemAccelerator=Ctrl+\u0414 -+PEOpenMenuItemAccelerator=Ctrl+\u041e -+PEOpenDefaultMenuItemAccelerator=Ctrl+\u0423 -+PESaveMenuItemAccelerator=Ctrl+\u0421 -+PESaveAsMenuItemAccelerator=Ctrl+Shift+\u041a -+PEExitMenuItemAccelerator=Ctrl+\u0412 -+PECustomPermissionsItemAccelerator=Ctrl+\u041d -+PECopyEntryItemAccelerator=Ctrl+C -+PEPasteEntryItemAccelerator=Ctrl+V -+PEModifyEntryCodebaseItemAccelerator=F2 -+PEModifyEntryPrincipalsItemAccelerator=Shift+F2 -+PEModifyEntrySignedByItemAccelerator=Ctrl+F2 -+PEAboutPolicyEditorCloseAccelerator=Ctrl+\u0412 -+ -+#conole itself labels -+CONSOLErungc= \u0417\u0430\u043f\u0443\u0441\u043a \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430 -+CONSOLErunFinalizers= \u0417\u0430\u043f\u0443\u0441\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f -+CONSOLErunningFinalizers= \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435.... -+CONSOLEmemoryInfo= \u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u0430\u043c\u044f\u0442\u0438 -+CONSOLEsystemProperties= \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b -+CONSOLEclassLoaders= \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 -+CONSOLEthreadList= \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0442\u043e\u043a\u043e\u0432 -+CONSOLEthread= \u041f\u043e\u0442\u043e\u043a -+CONSOLEnoClassLoaders= \u0412 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 -+CONSOLEmemoryMax= \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u043f\u0430\u043c\u044f\u0442\u0438 -+CONSOLEmemoryTotal= \u041e\u0431\u0449\u0438\u0439 \u043e\u0431\u044a\u0451\u043c \u043f\u0430\u043c\u044f\u0442\u0438 -+CONSOLEmemoryFree= \u0421\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u043f\u0430\u043c\u044f\u0442\u0438 -+CONSOLEClean=\u041e\u0447\u0438\u0441\u0442\u043a\u0430 -+ -+# console output pane labels -+COPsortCopyAllDate=\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u0434\u0430\u0442\u0435 \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 -+COPshowHeaders=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438: -+COPuser=\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c -+COPorigin=\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a -+COPlevel=\u0443\u0440\u043e\u0432\u0435\u043d\u044c -+COPdate=\u0434\u0430\u0442\u0430 -+COPthread1=\u043f\u043e\u0442\u043e\u043a 1 -+COPthread2=\u043f\u043e\u0442\u043e\u043a 2 -+COPShowMessages=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f -+COPstdOut=\u0441\u0442\u0430\u043d\u0434. \u043f\u043e\u0442\u043e\u043a \u0432\u044b\u0432\u043e\u0434\u0430 -+COPstdErr=\u0441\u0442\u0430\u043d\u0434. \u043f\u043e\u0442\u043e\u043a \u043e\u0448\u0438\u0431\u043e\u043a -+COPjava=java -+COPplugin=\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c -+COPpreInit=\u043f\u0440\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f -+COPpluginOnly=\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c -+COPSortBy=\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e -+COPregex=\u0424\u0438\u043b\u044c\u0442\u0440 \u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 -+COPAsArrived=\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043e (\u0431\u0435\u0437 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438) -+COPcode=\u043a\u043e\u0434 -+COPmessage=\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 -+COPSearch=\u041f\u043e\u0438\u0441\u043a -+COPautoRefresh=\u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 -+COPrefresh=\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 -+COPApply=\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c -+COPmark=\u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c -+COPCopyAllPlain=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 (\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442) -+COPCopyAllRich=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 (\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442) -+COPnext=\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439>>> -+COPprevious=<<<\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 -+COPcaseSensitive=\u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 -+COPincomplete=\u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 -+COPhighlight=\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 -+COPwordWrap=\u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0441\u043b\u043e\u0432 -+COPdebug=\u043e\u0442\u043b\u0430\u0434\u043a\u0430 -+COPinfo=\u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f -+COPpostInit=\u043f\u043e\u0441\u0442\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f -+COPcomplete=\u043f\u043e\u043b\u043d\u044b\u0439 -+COPmatch=\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 -+COPnot=\u043d\u0435 -+COPrevert=\u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f -+COPitw=IcedTea-Web -+COPclientApp=\u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. -+ -+# Control Panel - DesktopShortcutPanel -+DSPNeverCreate=\u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c -+DSPAlwaysAllow=\u0412\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c -+DSPAskUser=\u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -+DSPAskIfHinted=\u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 -+DSPAlwaysIfHinted=\u0412\u0441\u0435\u0433\u0434\u0430, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 -+ -+# Control Panel - NetworkSettingsPanel -+NSDescription-1=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440. -+NSDescription0=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. -+NSDescription1=\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u043a\u0441\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. -+NSDescription2=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u043a\u0441\u0438 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438. -+NSDescription3=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. -+NSAddress=\u0410\u0434\u0440\u0435\u0441 -+NSPort=\u041f\u043e\u0440\u0442 -+NSAdvanced=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e -+NSBypassLocal=\u041e\u0431\u0445\u043e\u0434 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 -+NSDirectConnection=\u041f\u0440\u044f\u043c\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 -+NSManualProxy=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e -+NSAutoProxy=\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u043a\u0441\u0438 -+NSBrowserProxy=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 -+NSScriptLocation=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f -+ -+# Control Panel - SecurityGeneralPanel -+SGPAllowUserGrantSigned=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 -+SGPAllowUserGrantUntrust=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u0438\u0437 \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 -+SGPUseBrowserKeystore=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u043a\u043b\u044e\u0447\u0438 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+SGPUsePersonalCertOneMatch=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+SGPWarnCertHostMismatch=\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441\u0430\u0439\u0442\u0430 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u0438 \u0445\u043e\u0441\u0442\u0430 -+SGPShowValid=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441\u0430\u0439\u0442\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+SGPShowSandboxWarning=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b -+SGPAllowUserAcceptJNLPSecurityRequests=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 JNLP -+SGPCheckCertRevocationList=\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043d\u0435 \u043e\u0442\u043e\u0437\u0432\u0430\u043d\u044b \u043b\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u043e\u0442\u0437\u044b\u0432\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 (Certificate Revocation List, CRL) (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+SGPEnableOnlineCertValidate=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043e\u043d\u043b\u0430\u0439\u043d (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+SGPEnableTrustedPublisherList=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+SGPEnableBlacklistRevocation=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u0442\u0437\u044b\u0432\u0430 \u0447\u0451\u0440\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+SGPEnableCachingPassword=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+SGPUseSSL2=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 ClientHello \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u0441 SSL 2.0 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+SGPUseSSL3=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SSL 3.0 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+SGPUseTLS1=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c TLS 1.0 (\u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f) -+ -+# Control Panel - TemporaryInternetFilesPanel -+TIFPEnableCache=\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u043c\u043e\u0451\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 -+TIFPLocation=\u00a0\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u00a0 -+TIFPLocationLabel=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 -+TIFPChange=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c -+TIFPDiskSpace=\u00a0\u0414\u0438\u0441\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u00a0 -+TIFPCompressionLevel=\u0412\u044b\u0431\u043e\u0440 \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u0436\u0430\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 JAR -+TIFPNone=\u041d\u0435\u0442 -+TIFPMax=\u041c\u0430\u043a\u0441. -+TIFPCacheSize=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043e\u0431\u044a\u0451\u043c \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 (\u041c\u0411) -+TIFPDeleteFiles=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b -+TIFPViewFiles=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b... -+TIFPFileChooserChooseButton=\u0412\u044b\u0431\u0440\u0430\u0442\u044c -+TIFPLimitCacheSize=\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u044d\u0448\u0430 -+TIFPCacheSizeSpinnerValueTooLargeWarning=\u041f\u0420\u0415\u0414\u0423\u041f\u0420\u0415\u0416\u0414\u0415\u041d\u0418\u0415: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e (\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e: {0} \u041c\u0411) -+TIFPCacheSizeSpinnerLargeValueWarning=\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e: {0} \u041c\u0411 -+TIFPCacheSizeSetToNoCaching=\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b IcedTea-Web. -+TIFPCacheSizeSpinnerTooltip=\u041c\u0438\u043d\u0438\u043c\u0443\u043c: {0} \u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c: {1} -+ -+# Control Panel - Cache Viewer -+CVCPDialogTitle=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a \u043a\u044d\u0448\u0430 -+CVCPButRefresh=\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c -+CVCPButDelete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c -+CVCPCleanCache=\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c -+CVCPCleanCacheTip=\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u044b \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043a\u044d\u0448\u0430. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0442\u0447\u0451\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \\\n \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e javaws -Xclearcache \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 itw-settings \u041a\u044d\u0448 -> \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b -> \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c -+CVCPColLastModified=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 -+CVCPColSize=\u0420\u0430\u0437\u043c\u0435\u0440 (\u0432 \u0431\u0430\u0439\u0442\u0430\u0445) -+CVCPColDomain=\u0414\u043e\u043c\u0435\u043d -+CVCPColType=\u0422\u0438\u043f -+CVCPColPath=\u041f\u0443\u0442\u044c -+CVCPColName=\u0418\u043c\u044f -+ -+# Control Panel - desktop integration manager -+DIMtitle=\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u044f\u0440\u043b\u044b\u043a\u043e\u0432 IcedTea-Web -+DIMremoveSelected=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 -+DIMselectRelativeRecordsFromOtherColumns=\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 -+DIMreloadLists=\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c -+DIMselectAll=\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 -+DIMclearSelection=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440 -+DIMdescription=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0440\u043b\u044b\u043a\u0430\u043c\u0438 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 (\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 IcedTea-Web \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0441\u0442\u043e\u043b\u043e\u043c -+DIMguessedDesktop=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430. -+DIMselectionPreview=\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e -+DIMaskBeforeDelete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b: {0}? -+DIMgeneratedJnlps=\u0421\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b JNLP -+DIMgeneratedJnlpsTooltip=\u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web! -+DIMicons=\u0417\u043d\u0430\u0447\u043a\u0438 -+DIMiconsTooltip=\u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u043a\u0430\u043c\u0438, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 IcedTea-Web! -+DIMorphans=\u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b -+DIMorphansTooltip=\u0411\u0443\u0434\u0443\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u044f\u0440\u043b\u044b\u043a\u043e\u0432. -+DIMmenuItems=\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0435\u043d\u044e -+DIMmenuItemsTooltip=\u0412\u0441\u0435 \u044f\u0440\u043b\u044b\u043a\u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web! -+DIMdesktopItems=\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430 -+DIMdesktopItemsTooltipL1=\u041d\u0435 \u0432\u0441\u0435 \u044f\u0440\u043b\u044b\u043a\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web! -+DIMdesktopItemsTooltipL2=\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f: -+DIMdesktopItemsTooltipL3=\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web -+DIMdesktopItemsTooltipL4=\u0442\u0451\u043c\u043d\u043e-\u0437\u0435\u043b\u0451\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u2014 \u044d\u0442\u043e \u044f\u0440\u043b\u044b\u043a\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web -+DIMdesktopItemsTooltipL5=\u0437\u0435\u043b\u0451\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u2014 \u044d\u0442\u043e \u044f\u0440\u043b\u044b\u043a\u0438 javaws, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b IcedTea-Web -+DIMdesktopItemsTooltipL6=\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0431\u0443\u0434\u044c\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0436\u0438\u043c\u0430 `\u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438` -+DIMgeneratedButton=\u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 -+DIMgeneratedButtonTooltip=\u0411\u0443\u0434\u0443\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b. -+DIMiconsButton=\u0437\u043d\u0430\u0447\u043a\u0438 -+DIMiconsButtonTooltip=\u0411\u0443\u0434\u0443\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u043a\u0438. -+ -+# Control Panel - Misc. -+CPJRESupport=\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 IcedTea-Web \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 JRE. -+CPInvalidPort=\u0423\u043a\u0430\u0437\u0430\u043d \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430.\n[\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043f\u043e\u0440\u0442\u043e\u0432: 1-65535] -+CPInvalidPortTitle=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435. -+ -+# command line control panel -+CLNoInfo=\u041d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (\u044d\u0442\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u043e\u043f\u0446\u0438\u044f?). -+CLValue=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435: {0} -+CLValueSource=\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: {0} -+CLDescription=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435: {0} -+CLUnknownCommand=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 {0} -+CLUnknownProperty=\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 "{0}" -+CLWarningUnknownProperty=\u041f\u0420\u0415\u0414\u0423\u041f\u0420\u0415\u0416\u0414\u0415\u041d\u0418\u0415: \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 "{0}" \u2014 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e -+CLNoIssuesFound=\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b. -+CLIncorrectValue=\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e "{0}" \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 "{1}". \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f {2}. -+CLListDescription=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0438\u043c\u0451\u043d \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f IcedTea-Web -+CLGetDescription=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 -+CLSetDescription=\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u044d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c -+CLResetDescription=\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\n\u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0442\u0441\u044f IcedTea-Web, \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. -+CLInfoDescription=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 -+CLCheckDescription=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b, \u043d\u043e \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u044b IcedTea-Web -+CLUnexpectedNumberOfCommands=Itweb-settings \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443. -+ -+# splash screen related -+SPLASHerror= \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439. \u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. -+SPLASH_ERROR= \u041e\u0428\u0418\u0411\u041a\u0410 -+SPLASHtitle= \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 -+SPLASHvendor= \u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a -+SPLASHhomepage= \u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 -+SPLASHdescription= \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 -+SPLASHClose= \u0417\u0430\u043a\u0440\u044b\u0442\u044c -+SPLASHclosewAndCopyException= \u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u0442\u0435\u043a\u0430 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 -+SPLASHexOccured= \u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435... -+SPLASHHome= \u0414\u043e\u043c\u043e\u0439 -+SPLASHcantCopyEx= \u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 -+SPLASHnoExRecorded= \u041d\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 -+SPLASHmainL1= \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 {0} \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0448\u0430\u0433\u0438 \u043f\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u0430 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 -+SPLASHmainL3= \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434. -+SPLASHcloseAndCopyShorter= \u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 -+SPLASHmainL4= \u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434. -+SPLASHmainL2= \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0438\u043b\u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0445. \u0415\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0430. -+SPLASHexWas= \u0418\u043c\u0435\u043b\u043e\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435: -+SPLASHcfl= \u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 -+SPLASHvendorsInfo= \u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f -+SPLASHanotherInfo= \u0414\u0440\u0443\u0433\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f -+SPLASHdefaultHomepage= \u041d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a -+SPLASHerrorInInformation= \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (information), \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a -+SPLASHmissingInformation= \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (information), \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a -+SPLASHchainWas= \u042d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0430\u043f\u043b\u0435\u0442\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u044d\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0430\u043f\u043b\u0435\u0442\u0430\u043c\u0438. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043e\u0442\u0447\u0451\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0430\u043f\u043b\u0435\u0442. -+ -+CBCheckFile= \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html. -+CBCheckNoEntry= \u0412 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0431\u0430\u0437\u0430 \u043a\u043e\u0434\u0430. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0443 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u0430\u043f\u043b\u0435\u0442\u0430. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html. -+CBCheckUnsignedPass= \u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435, \u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html. -+CBCheckUnsignedFail= \u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u041d\u0415 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0430\u0437\u0435 \u043a\u043e\u0434\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 \u0435\u0433\u043e \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html. -+CBCheckOkSignedOk= \u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0443 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0432 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html. -+CBCheckSignedAppletDontMatchException= \u0417\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u0435\u0441\u043b\u0438 \u0438\u0445 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 \u0438\u0445 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435. \u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: {0}. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: {1}. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html. -+CBCheckSignedFail= \u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u041d\u0415 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0430\u0437\u0435 \u043a\u043e\u0434\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432 \u0435\u0433\u043e \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043e. \u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html. -+ -+# itweb man base (note, spaces (especially the one around markup) are important due to man pages markup). Only bold tag is now recognized by ReplacingTextFormatter. -+ITWTBbugs=\u041a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043e\u0442\u0447\u0451\u0442 \u043e \u043d\u0435\u0439 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 -+ITWTBdebug=\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 (\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c -verbose \u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 itw-settings, \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e ICEDTEAPLUGIN_DEBUG) \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0432\u044b\u0432\u043e\u0434 (\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Java) \u0441 URL-\u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u0444\u0430\u0439\u043b JNLP \u0438\u043b\u0438 HTML (\u0438\u043b\u0438 \u0444\u0430\u0439\u043b JNLP / HTML, \u0438\u043b\u0438 \u0441\u0430\u043c\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435) \u043f\u0440\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043e\u0442\u0447\u0451\u0442\u0430 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435. -+ITWTBwritten=\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b IcedTea. -+ITWTBdirs=\u0413\u0434\u0435 $XDG_CONFIG_DIR, $XDG_CACHE_DIR \u0438 $XDG_RUNTIME_DIR \u0443\u043a\u0430\u0437\u0430\u043d\u044b, \u043a\u0430\u043a ~/.config, ~/.cache (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b: /tmp \u0438\u043b\u0438 /var/tmp). -+ -+# itweb-settings man (note, spaces (especially the one around markup) are important due to man pages markup). Only bold tag is now recognized by ReplacingTextFormatter. -+ITWSintro= \u2014 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 javaws \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 -+ITWSsynops=\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u044b -+IWSdescL1=\u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u0430\u043a \u0438 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 javaws \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 IcedTea-Web. -+IWSdescL2=\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0412 \u0438\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0435. -+IWSdescL3=\u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u0438\u0441\u043a, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0435 \u0442\u0440\u0430\u0442\u044f \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. -+IWSexampleL1=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -+IWSexampleL2=\u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 `{0}`. -+ITWSdefault=\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e -+IWSexampleL3=\u0418\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 -+IWSexampleL31=(\u043a\u043b\u044e\u0447, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u0435\u0441\u043b\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f)): -+IWSexampleL32=(\u043a\u043b\u044e\u0447 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e): -+IWSpossible=\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e: -+ -+# itweb-plugin man (note, spaces (especially the one around markup) are important due to man pages markup). Only bold tag is now recognized by ReplacingTextFormatter. -+ITWPintro= \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 Java \u0432 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 -+ITWPsynopsL1=\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0435\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445. -+ITWPsynopsL2=\u0412 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c {0} (\u0438\u043b\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443). \u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435 {1} -+ITWPsynopsL3= \u0411\u0440\u0430\u0443\u0437\u0435\u0440\u044b, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0441 Mozilla, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Firefox, Midori, Epiphany, Chrome \u0438\u043b\u0438 Chromium \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442: -+ITWPsynopsL4= \u0411\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Opera, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Opera \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442: -+ITWPtrademarks=\u0412\u0441\u0435 \u0442\u043e\u0432\u0430\u0440\u043d\u044b\u0435 \u0437\u043d\u0430\u043a\u0438 \u0442\u0440\u0435\u0442\u044c\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0438\u0445 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\u043c -+ -+# files descriptions -+FILEpipe=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0430\u043d\u0430\u043b \u0432\u0432\u043e\u0434\u0430 \u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 native2java \u0438 (\u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e) \u043a\u0430\u043d\u0430\u043b \u043e\u0442\u043b\u0430\u0434\u043a\u0438. -+FILEmozillauser=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Mozilla. -+FILEmozillaglobal64=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Mozilla, 64-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. -+FILEmozillaglobal32=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Mozilla, 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. -+FILEopera64=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Opera, 64-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. -+FILEopera32=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Opera, 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. -+ -+TAGSOUPtail=\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 tagsoup \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0431\u043e\u0440\u043a\u043e\u0439 ITW. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438/\u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0430\u0432\u0442\u043e\u0440\u0430\u043c \u043f\u0430\u043a\u0435\u0442\u0430. -+TAGSOUPnotUsed=\u0412\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e {0}, \u0443\u0434\u0430\u043b\u0438\u0442\u0435. \u0418\u043b\u0438... -+TAGSOUPbroken=\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d. -+TAGSOUPhtmlNotUsed=\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 HTML \u0432 XML \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 tagsoup \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e. \u0423\u0434\u0430\u043b\u0438\u0442\u0435 {0}. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443. -+TAGSOUPhtmlBroken=\u041d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 HTML \u0432 XML \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 tagsoup. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 tagsoup (\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u0431\u043e\u0440\u043a\u0443 ITW \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438). \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443. -+ -+FILEcache=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0440\u0435\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. -+FILErecentlyUsed=\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445 \u0432 \u043a\u044d\u0448\u0435 -+FILEappdata=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. -+FILElogs=\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0430\u0439\u043b\u044b \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 (\u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e), itw-cplugin-date_time.log \u0434\u043b\u044f \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f, itw-javantx-date_time.log \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e. -+FILEicons=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 javaws \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 \u0438\u043b\u0438 \u0432 \u043c\u0435\u043d\u044e -+FILEjnlps=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b JNLP, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 javaws -+FILEmenus=\u041f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u043c\u0435\u043d\u044e. -+FILEextasuser=\u0424\u0430\u0439\u043b, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u0430\u043f\u043b\u0435\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. -+FILEextasadmin=\u0424\u0430\u0439\u043b, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u0430\u043f\u043b\u0435\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u0445 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. -+FILEglobaldp=\u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. -+FILEtmpappdata=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0439 \u0441\u0440\u0435\u0434\u044b. -+FILElocksdir=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a netx. -+FILEmainlock=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 netx. -+FILEpolicy=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c. -+FILEusercerts=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b. -+FILEjavacerts=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Java. -+FILEjavadp=\u0424\u0430\u0439\u043b \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 Java. \u041d\u0430 \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c {0}. -+FILEuserdp=\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. -+ -+# extended policy editor -+EPEexpert=\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 -+EPEsave=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c -+EPEcancel=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c -+EPEhelp1=\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 -+EPEhelp2=\u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u0438\u043f \u043f\u0440\u0430\u0432\u0438\u043b\u0430 -+EPEhelp3=\u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 -+EPEhelp4=\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e -+EPEhelp5=\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b, \u0434\u0432\u0430\u0436\u0434\u044b \u0449\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0432\u0443\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c. -+EPEexpertHelp=\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u043e \u0435\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u043d\u044b \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0432 \u043d\u0438\u0445! \u041d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u0438 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442... -+EPEexpertHint=\u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: -+ -+APPEXTSECappletSecurityLevelExtraHighId=\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 Java -+APPEXTSECappletSecurityLevelVeryHighId=\u0421\u0430\u043c\u044b\u0439 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 -+APPEXTSECappletSecurityLevelHighId=\u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 -+APPEXTSECappletSecurityLevelLowId=\u041d\u0438\u0437\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 -+APPEXTSECappletSecurityLevelExtraHighExplanation=\u0417\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 -+APPEXTSECappletSecurityLevelVeryHighExplanation=\u0417\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 -+APPEXTSECappletSecurityLevelHighExplanation=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 -+APPEXTSECappletSecurityLevelLowExplanation=\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 -+APPEXTSECunsignedAppletActionAlways=\u0412\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c) \u0430\u043f\u043b\u0435\u0442\u0443 (\u0430\u043f\u043b\u0435\u0442\u0430\u043c) -+APPEXTSECunsignedAppletActionNever=\u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c) \u0430\u043f\u043b\u0435\u0442\u0443 (\u0430\u043f\u043b\u0435\u0442\u0430\u043c) -+APPEXTSECunsignedAppletActionYes=\u042d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0438 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 -+APPEXTSecunsignedAppletActionSandbox=\u042d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0438 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u044f\u043c\u0438 -+APPEXTSECunsignedAppletActionNo=\u042d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0438 \u0431\u044b\u043b \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 -+APPEXTSECControlPanelExtendedAppletSecurityTitle=\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 -+APPEXTSECguiTableModelTableColumnRD=\u0417\u0430\u043f\u043e\u043c\u043d\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f -+APPEXTSECguiTableModelTableColumnDateOfAction=\u0414\u0430\u0442\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f -+APPEXTSECguiTableModelTableColumnDocumentBase=\u0411\u0430\u0437\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 -+APPEXTSECguiTableModelTableColumnCodeBase=\u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 -+APPEXTSECguiTableModelTableColumnArchives=\u0410\u0440\u0445\u0438\u0432\u044b -+APPEXTSECguiPanelAppletInfoHederPart1={0} {1} -+APPEXTSECguiPanelAppletInfoHederPart2={0} \u0438\u0437 {1} -+APPEXTSECguiPanelConfirmDeletionOf=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b {0}? -+APPEXTSECguiPanelHelpButton=\u0421\u043f\u0440\u0430\u0432\u043a\u0430 -+APPEXTSECguiPanelSecurityLevel=\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 -+APPEXTSECguiPanelGlobalBehaviourCaption=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u043f\u043b\u0435\u0442\u043e\u0432 -+APPEXTSECguiPanelDeleteMenuSelected=\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 -+APPEXTSECguiPanelDeleteMenuAllA=\u0432\u0441\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435 (A) -+APPEXTSECguiPanelDeleteMenuAllN=\u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u044b\u0435 (N) -+APPEXTSECguiPanelDeleteMenuAlly=\u0432\u0441\u0435 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u043d\u044b\u0435 (y) -+APPEXTSECguiPanelDeleteMenuAlln=\u0432\u0441\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d\u043d\u044b\u0435 (n) -+APPEXTSECguiPanelDeleteMenuAllAll=\u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0435 -+APPEXTSECguiPanelDeleteButton=\u0423\u0434\u0430\u043b\u0438\u0442\u044c -+APPEXTSECguiPanelDeleteButtonToolTip=\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0443 Delete. \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b -+APPEXTSECguiPanelTestUrlButton=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441 -+APPEXTSECguiPanelAddRowButton=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 -+APPEXTSECguiPanelValidateTableButton=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 -+APPEXTSECguiPanelAskeforeActionBox=\u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f -+APPEXTSECguiPanelShowRegExesBox=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f -+APPEXTSECguiPanelInverSelection=\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 -+APPEXTSECguiPanelMoveRowUp=\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u044b\u0448\u0435 -+APPEXTSECguiPanelMoveRowDown=\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0438\u0436\u0435 -+APPEXTSECguiPanelCustomDefs=\u041f\u043e\u043b\u044c\u0437\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f -+APPEXTSECguiPanelGlobalDefs=\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f -+APPEXTSECguiPanelDocTest=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 -+APPEXTSECguiPanelCodeTest=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 -+APPEXTSECguiPanelNoMatch=\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0439 \u043d\u0435\u0442 -+APPEXTSECguiPanelMatchingNote=\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. -+APPEXTSECguiPanelMatched=\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 -+APPEXTSECguiPanelMatchingError=\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f: {0} -+APPEXTSECguiPanelCanNotValidate=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u2014 {0} -+APPEXTSECguiPanelEmptyDoc=\u0412\u0441\u0435 \u0431\u0430\u0437\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b -+APPEXTSECguiPanelEmptyCode=\u0412\u0441\u0435 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b -+APPEXTSECguiPanelTableValid=\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0440\u043e\u0448\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 -+APPEXTSECguiPanelTableInvalid=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430. \u041e\u0448\u0438\u0431\u043a\u0430: {0} -+APPEXTSECguiPanelShowOnlyPermanent=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 -+APPEXTSECguiPanelShowOnlyTemporal=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 -+APPEXTSECguiPanelShowAll=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 -+APPEXTSECguiPanelShowOnlyPermanentA=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438 -+APPEXTSECguiPanelShowOnlyPermanentN=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435 -+APPEXTSECguiPanelShowOnlyTemporalY=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438 -+APPEXTSECguiPanelShowOnlyTemporalN=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435 -+APPEXTSEChelpHomeDialogue=\u0414\u0438\u0430\u043b\u043e\u0433 -+APPEXTSEChelp=

    \u0421\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u2014 itw-settings, \u0444\u0430\u0439\u043b\u044b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0434\u0438\u0430\u043b\u043e\u0433

    \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u2014 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u042d\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 ''\u043d\u0438\u0437\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438''. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 ''\u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438'' (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 ''\u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438'' \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432. \u041d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438\u043d\u0430\u044f: \u043b\u044e\u0431\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 Java \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a.

    \u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u2014 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438 \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f
    \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 (\u0438 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u043d\u0435\u0441\u0442\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f!) \u044d\u0442\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430
    \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 IcedTea-Web

    \u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438

    \u042d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0434\u043b\u044f "\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432". \u0415\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 users_home/.icedtea/deployment.properties, \u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u0444\u0430\u0439\u043b\u0435 /etc/.java/deployment/deployment.properties \u0438\u043b\u0438 JAVA_HOME/lib/deployment.properties \u0441 \u043a\u043b\u044e\u0447\u043e\u043c deployment.security.level

  • \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 Java \u2014 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a DENY_ALL \u2014 \u0430\u043f\u043b\u0435\u0442\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b
    \u041d\u0438 \u043e\u0434\u0438\u043d \u0430\u043f\u043b\u0435\u0442 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 Java (\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043e\u043a\u043d\u043e \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435). \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c Java, \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 IcedTea-Web \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0451 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 (\u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f). \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f.
  • \u041e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u2014 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a DENY_UNSIGNED \u2014 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0430\u043f\u043b\u0435\u0442\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b
    \u041d\u0438 \u043e\u0434\u0438\u043d \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a (\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0430\u043a\u0438\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043e\u043a\u043d\u043e \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435). \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f.
  • \u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u2014 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a ASK_UNSIGNED \u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0430\u043f\u043b\u0435\u0442\u0443
    \u0412\u0441\u0435 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0430\u043f\u043b\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c \u0434\u0430\u043b\u0435\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c: \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a. \u0415\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u043d\u0438\u0436\u0435. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u043f\u043b\u0435\u0442\u0430, \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438 \u0430\u043f\u043b\u0435\u0442 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u0438\u043b\u0438 \u0446\u0435\u043b\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0430\u043f\u043b\u0435\u0442\u043e\u0432 (\u0441\u043c. \u0430\u0431\u0437\u0430\u0446 \u0414\u0438\u0430\u043b\u043e\u0433 \u0434\u0430\u043b\u0435\u0435).
    \u042d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.
  • \u041d\u0438\u0437\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u2014 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a ALLOW_UNSIGNED \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445, \u0434\u0430\u0436\u0435 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432
    \u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435. \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f.
    \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u041e\u041a \u0438\u043b\u0438 \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c.

    \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c\u0438

    \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f x \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430

    \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435 \u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438\u043b\u0438 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c. \u041e\u0431\u044b\u0447\u043d\u043e \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u2014 home/.icedtea/.appletTrustSettings \u2014 \u043f\u0430\u043d\u0435\u043b\u044c "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f".
    \u041d\u043e \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 /etc/.java/deployment/ .appletTrustSettings \u2014 \u043f\u0430\u043d\u0435\u043b\u044c "\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f".

    "\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441"

  • \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u2014 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0430\u043f\u043b\u0435\u0442\u0430
  • \u0412\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u0430\u043f\u043b\u0435\u0442\u0443 \u2014 \u044d\u0442\u043e\u0442 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a A \u0432 .appletTrustSettings
  • \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u0430\u043f\u043b\u0435\u0442\u0443 \u2014 \u044d\u0442\u043e\u0442 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a N \u0432 .appletTrustSettings
  • \u0412\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u2014 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u043d\u043e\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u0443\u0436\u0435 \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a y \u0432 .appletTrustSettings
  • \u0412\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f \u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u2014 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u043d\u043e\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u0443\u0436\u0435 \u0431\u044b\u043b \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d. \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a n \u0432 .appletTrustSettings
  • \u0414\u0430\u0442\u0430 \u2014 \u0434\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c (\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f)
  • \u0411\u0430\u0437\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u2014 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u043f\u043b\u0435\u0442\u0430. \u042d\u0442\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0430. \u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u0430\u043b\u0435\u0435
  • \u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u2014 \u044d\u0442\u043e URL-\u0430\u0434\u0440\u0435\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043a\u043e\u0434 \u0430\u043f\u043b\u0435\u0442\u043e\u0432. \u042d\u0442\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0430. \u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u0430\u043b\u0435\u0435
  • \u0410\u0440\u0445\u0438\u0432\u044b \u2014 \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0440\u0445\u0438\u0432\u043e\u0432 \u0441 \u043a\u043e\u0434\u043e\u043c \u0430\u043f\u043b\u0435\u0442\u043e\u0432. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c, \u0435\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u044b \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0433\u0440\u0443\u043f\u043f\u044b \u0430\u043f\u043b\u0435\u0442\u043e\u0432

    \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0432 \u0441\u0438\u043b\u0443 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435.

    \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438

  • \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u0443\u043d\u043a\u0442\u043e\u043c, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0432 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u043e\u043b\u0435 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c
  • \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b. \u041a\u043b\u044e\u0447 Del \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435. \u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d. \u0412\u044b\u0431\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0435\u0449\u0451 \u043f\u0440\u0430\u0432\u0435\u0435
  • \u0432\u0441\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435 (A) \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438
  • \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u044b\u0435 (N) \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435
  • \u0432\u0441\u0435 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u043d\u044b\u0435 (y) \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e (\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435) \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438
  • \u0432\u0441\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d\u043d\u044b\u0435 (n) \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e (\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435) \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435
  • \u0432\u0441\u0435 \u2014 \u043e\u0447\u0438\u0441\u0442\u0438\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0443

    \u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u2014 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f (\u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e) \u0438\u043b\u0438 \u0435\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c. \u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u0415\u0441\u043b\u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0435 \u0432\u0438\u0434\u043d\u043e, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 Esc
  • \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u2014 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430/\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u0430\u043b\u0435\u0435

  • \u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435(\u0430\u0445)
  • \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438 (A) \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0435 (N) \u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
  • \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 (y) \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d\u043d\u044b\u0445 (n) \u0430\u043f\u043b\u0435\u0442\u043e\u0432.
  • \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438 (A)
  • \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u0435\u0442\u043e\u0432 \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0435 (N)
  • \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0445 (y) \u0430\u043f\u043b\u0435\u0442\u043e\u0432.
  • \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u0435\u0442\u043e\u0432 \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d\u043d\u044b\u0445 (n) \u0430\u043f\u043b\u0435\u0442\u043e\u0432.
  • \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u2014 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 (\u0432 \u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f) \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u043e\u0439 \u0438 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0430\u0440\u0445\u0438\u0432\u0430\u043c\u0438
  • \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u2014 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437 \u043d\u0435\u0451, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439:
  • \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u2014 \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445: A,N,y,n
  • \u0414\u0430\u0442\u0430 \u2014 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0434\u0430\u0442\u0430
  • \u0411\u0430\u0437\u0430 \u043a\u043e\u0434\u0430 \u0438 \u0431\u0430\u0437\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u2014 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c)
  • \u0410\u0440\u0445\u0438\u0432\u044b \u2014 \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0440\u0445\u0438\u0432\u043e\u0432 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c)
  • \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441 \u2014 \u0432 \u0434\u0432\u0443\u0445 \u0434\u0438\u0430\u043b\u043e\u0433\u0430\u0445 (\u0437\u0430 \u0434\u0432\u0430 \u0448\u0430\u0433\u0430) \u0431\u0443\u0434\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u0431\u0430\u0437\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0438 \u0431\u0430\u0437\u0443 \u043a\u043e\u0434\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u044f\u043c. \u0411\u0443\u0434\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u044b \u0432\u0441\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b! \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442\u0441\u044f>
  • \u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u043d\u0438\u0437/\u0432\u0432\u0435\u0440\u0445
    \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0432\u0430\u0436\u0435\u043d. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0443 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445). \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435.
    \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 Qhttp://blogs.com/E.*, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 http://blogs.com \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u041f\u041e\u0421\u041b\u0415 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f Qhttp://blogs.com/evilJohnE.*, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 \u0445\u0430\u043a\u0435\u0440\u0430 evilJohn.

    \u0414\u0438\u0430\u043b\u043e\u0433

    \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u043e\u0432\u044b\u0439 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433 \u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c (A \u0438\u043b\u0438 N) \u0435\u0433\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0436\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 (y,n).
    \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c (\u0442\u0430\u043a\u0436\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e) \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0438\u0437 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0430. \u042d\u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u043f\u043e\u0441\u0435\u0449\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u043f\u043b\u0435\u0442\u044b \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445.
    \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c. \u041f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u043f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0437\u0435\u043b\u0451\u043d\u0430\u044f \u0438\u043b\u0438 \u043a\u0440\u0430\u0441\u043d\u0430\u044f \u043c\u0435\u0442\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435.
    \u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u044d\u0442\u043e\u0442 \u0434\u0438\u0430\u043b\u043e\u0433 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f. \u041f\u0440\u0438\u043d\u044f\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 itw-settings (\u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435). \u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 IcedTea-Web. \u0415\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 (n,y) \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0434\u0438\u0430\u043b\u043e\u0433 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441\u043d\u043e\u0432\u0430. \u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0412\u0441\u0435\u0433\u0434\u0430 \u043d\u0430 \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442.
    \u0412 \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0430\u043f\u043b\u0435\u0442, \u0438 URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430. \u0422\u0430\u043a\u0436\u0435, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u043f\u043b\u0435\u0442 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0441\u044f, \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0431\u044b\u043b \u043b\u0438 \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d

    \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f

  • \u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e \u2014 \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430 \u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433.
  • \u0414\u043b\u044f \u0430\u043f\u043b\u0435\u0442\u0430 \u2014 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0433\u043e \u0430\u043f\u043b\u0435\u0442\u0430
  • \u0414\u043b\u044f \u0441\u0430\u0439\u0442\u0430 \u2014 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u0441 \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430
  • \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u2014 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u0430\u043f\u043b\u0435\u0442\u043e\u0432
  • \u041e\u0442\u043c\u0435\u043d\u0430 \u2014 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u0430\u043f\u043b\u0435\u0442\u043e\u0432\n
  • \u0421 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c" + "\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e" + "\u0414\u043b\u044f \u0441\u0430\u0439\u0442\u0430" \u043d\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445! \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438!

    \u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f

    \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 IcedTea-Web \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u043e\u0449\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 (\u043d\u0430\u0431\u043e\u0440\u043e\u0432) \u0430\u043f\u043b\u0435\u0442\u043e\u0432. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u043b\u0435\u0436\u0430\u0442 \u0426\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 QE URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a .* \u0438\u043b\u0438 .? \u0438 \u0434\u0440\u0443\u0433\u0438\u0445.
    \u042d\u0442\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u044b:
    N 12.12.2012 .* Qhttp://blogs.com/evilJohnE.*
    N 12.12.2012 Qhttp://blogs.com/goodJohn/evilApplet.htmlE.* Qhttp://blogs.com/goodJohn/E goodJohnsArchive.jar
    A 12.12.2012 Qhttp://blogs.com/E.* Qhttp://blogs.com/E.*
    N 12.12.2012 .* Qhttp://adds.comE.*
    Y 12.12.2012 .* Qhttp://www.walter-fendt.de/ph14_jar/E

    \u042d\u0442\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f 12.12.2012:
  • \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u0430\u043f\u043b\u0435\u0442\u044b, \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 http://blogs.com/evilJohn
  • \u0438 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0430\u043f\u043b\u0435\u0442 \u0441 \u0441\u0430\u0439\u0442\u0430 http://blogs.com/goodJohn/ \u0441 \u0430\u0440\u0445\u0438\u0432\u043e\u043c goodJohnsArchive.jar
  • \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 (\u043f\u0440\u043e\u0447\u0438\u0435) \u0430\u043f\u043b\u0435\u0442\u044b \u0441 \u0441\u0430\u0439\u0442\u0430 http://blogs.com/ , \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 http://blogs.com/
  • \u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u0430\u043f\u043b\u0435\u0442\u044b, \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 http://adds.com (\u043a\u0440\u043e\u043c\u0435 \u0430\u043f\u043b\u0435\u0442\u043e\u0432 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 http://blogs.com/ \u2014 \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c http://adds.com \u0442\u0430\u043a\u0436\u0435 \u0438 \u043d\u0430 http://blogs.com/, \u044d\u0442\u0430 (http://adds.com) \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u0448\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0430\u0439\u0442\u0430 \u0431\u043b\u043e\u0433\u043e\u0432)
  • \u0438 \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u043f\u043b\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044f\u0432\u043b\u0435\u043d\u0438\u044f, \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 walter-fendt

    \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u2014 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 .appletTrustSettings, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0435\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f...

    \u0412\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 \u043f\u043e\u043b\u043d\u044b\u0445 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

    \u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435

    \u0421\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 {0}!
    \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043e\u0442\u0447\u0451\u0442 \u043e \u043d\u0435\u0439 \u0432 \u043d\u0430\u0448\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 bugzilla ... \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439

    \u041a\u043e\u043c\u0430\u043d\u0434\u0430 IcedTea-Web \u0436\u0435\u043b\u0430\u0435\u0442 \u0432\u0430\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446...

    -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java ---- a/netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java Tue Dec 18 11:22:16 2018 +0100 -@@ -25,11 +25,14 @@ - import java.lang.reflect.InvocationTargetException; - import java.net.*; - import java.io.*; -+import javax.jnlp.ServiceManager; - import javax.swing.*; - - import net.sourceforge.jnlp.*; -+import net.sourceforge.jnlp.services.ServiceUtil; - import net.sourceforge.jnlp.splashscreen.SplashController; - import net.sourceforge.jnlp.util.*; -+import net.sourceforge.swing.SwingUtils; - - /** - * The applet environment including stub, context, and frame. The -@@ -188,7 +191,7 @@ - } - - try { -- SwingUtilities.invokeAndWait(new Runnable() { -+ SwingUtils.callOnAppContext(new Runnable() { - @Override - public void run() { - // do first because some applets need to be displayed before -@@ -284,23 +287,23 @@ - } - - /** -- * Not implemented yet. - * @param uRL url of document - */ - @Override - public void showDocument(java.net.URL uRL) { - checkDestroyed(); -- -+ ServiceUtil.getBasicService().showDocument(uRL); - } - - /** - * Not implemented yet. - * @param uRL source of document -- * @param str who know what -+ * @param str _self, _parent, _top, _blank or "name". Have sense only for applets. Not implemented for our javaws world - */ - @Override - public void showDocument(java.net.URL uRL, java.lang.String str) { - checkDestroyed(); -+ ServiceUtil.getBasicService().showDocument(uRL); - - } - -@@ -375,8 +378,12 @@ - @Override - public URL getDocumentBase() { - checkDestroyed(); -- -- return file.getApplet().getDocumentBase(); -+ URL db = file.getApplet().getDocumentBase(); -+ if (db == null) { -+ return getCodeBase(); -+ } else { -+ return db; -+ } - } - - // FIXME: Sun's applet code forces all parameters to lower case. -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/runtime/Boot.java ---- a/netx/net/sourceforge/jnlp/runtime/Boot.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/runtime/Boot.java Tue Dec 18 11:22:16 2018 +0100 -@@ -47,6 +47,7 @@ - - import static net.sourceforge.jnlp.runtime.Translator.R; - import net.sourceforge.jnlp.runtime.html.browser.LinkingBrowser; -+import net.sourceforge.swing.SwingUtils; - - /** - * This is the main entry point for the JNLP client. The main method parses the -@@ -95,6 +96,9 @@ - * @param argsIn launching arguments - */ - public static void main(String[] argsIn) throws UnevenParameterException { -+ // setup Swing EDT tracing: -+ SwingUtils.setup(); -+ - optionParser = new OptionParser(argsIn, OptionsDefinitions.getJavaWsOptions()); - - if (optionParser.hasOption(OptionsDefinitions.OPTIONS.VERBOSE)) { -@@ -113,9 +117,11 @@ - if (optionParser.hasOption(OptionsDefinitions.OPTIONS.VIEWER)) { - try { - CertificateViewer.main(null); -- JNLPRuntime.exit(0); - } catch (Exception e) { - OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e); -+ } finally { -+ //no matter what happens, terminate -+ return; - } - } - -@@ -186,7 +192,7 @@ - if (optionParser.hasOption(OptionsDefinitions.OPTIONS.REDIRECT)) { - JNLPRuntime.setAllowRedirect(true); - } -- -+ - //if it is browser go by ots own, otherwise procedd with normal ITW logic - if (optionParser.hasOption(OptionsDefinitions.OPTIONS.BROWSER)) { - String url = optionParser.getParam(OptionsDefinitions.OPTIONS.BROWSER); -@@ -234,7 +240,7 @@ - - static String fixJnlpProtocol(String param) { - //remove jnlp: for case like jnlp:https://some.app/file.jnlp -- if (param.matches("^jnlp[s]?:.*://.*")){ -+ if (param.matches("^jnlp[s]?:.*://.*")) { - param = param.replaceFirst("^jnlp[s]?:", ""); - } - //transalte jnlp://some.app/file.jnlp to http/https -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/runtime/CachedJarFileCallback.java ---- a/netx/net/sourceforge/jnlp/runtime/CachedJarFileCallback.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/runtime/CachedJarFileCallback.java Tue Dec 18 11:22:16 2018 +0100 -@@ -86,6 +86,12 @@ - @Override - public java.util.jar.JarFile retrieve(URL url) throws IOException { - URL localUrl = mapping.get(url); -+ if (localUrl == null) { -+ if (url.getRef() != null) { -+ url = new URL(url.toString().substring(0, url.toString().lastIndexOf(url.getRef()) - 1)); -+ localUrl = mapping.get(url); -+ } -+ } - - if (localUrl == null) { - /* -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/runtime/HtmlBoot.java ---- a/netx/net/sourceforge/jnlp/runtime/HtmlBoot.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/runtime/HtmlBoot.java Tue Dec 18 11:22:16 2018 +0100 -@@ -45,7 +45,6 @@ - import java.util.List; - import java.util.Map; - import javax.swing.JFrame; --import javax.swing.SwingUtilities; - import net.sourceforge.jnlp.JNLPSplashScreen; - import net.sourceforge.jnlp.OptionsDefinitions; - import net.sourceforge.jnlp.ParserSettings; -@@ -58,6 +57,7 @@ - - import static net.sourceforge.jnlp.runtime.Translator.R; - import net.sourceforge.jnlp.util.optionparser.OptionParser; -+import net.sourceforge.swing.SwingUtils; - - public final class HtmlBoot { - -@@ -111,7 +111,7 @@ - - boolean run(Map> extra) { - if (!optionParser.hasOption(OptionsDefinitions.OPTIONS.HEADLESS)) { -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - - @Override - public void run() { -@@ -157,7 +157,7 @@ - //close all applets in time - f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - //f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - Point movement = changeMovementSigns(move); -@@ -180,7 +180,7 @@ - } catch (final Exception ex) { - OutputController.getLogger().log(ex); - if (splashScreen != null) { -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - - @Override - public void run() { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java ---- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Dec 18 11:22:16 2018 +0100 -@@ -12,7 +12,6 @@ - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, write to the Free Software - // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -- - package net.sourceforge.jnlp.runtime; - - import static net.sourceforge.jnlp.runtime.Translator.R; -@@ -69,6 +68,7 @@ - import net.sourceforge.jnlp.LaunchDesc; - import net.sourceforge.jnlp.LaunchException; - import net.sourceforge.jnlp.NullJnlpFileException; -+import net.sourceforge.jnlp.OptionsDefinitions; - import net.sourceforge.jnlp.ParseException; - import net.sourceforge.jnlp.ParserSettings; - import net.sourceforge.jnlp.PluginBridge; -@@ -90,14 +90,16 @@ - import net.sourceforge.jnlp.util.StreamUtils; - import net.sourceforge.jnlp.util.UrlUtils; - import net.sourceforge.jnlp.util.logging.OutputController; -+import static net.sourceforge.jnlp.runtime.Translator.R; - - /** -- * Classloader that takes it's resources from a JNLP file. If the -- * JNLP file defines extensions, separate classloaders for these -- * will be created automatically. Classes are loaded with the -- * security context when the classloader was created. -+ * Classloader that takes it's resources from a JNLP file. If the JNLP file -+ * defines extensions, separate classloaders for these will be created -+ * automatically. Classes are loaded with the security context when the -+ * classloader was created. - * -- * @author Jon A. Maxwell (JAM) - initial author -+ * @author Jon A. Maxwell -+ * (JAM) - initial author - * @version $Revision: 1.20 $ - */ - public class JNLPClassLoader extends URLClassLoader { -@@ -105,12 +107,15 @@ - // todo: initializePermissions should get the permissions from - // extension classes too so that main file classes can load - // resources in an extension. -- -- /** Signed JNLP File and Template */ -+ /** -+ * Signed JNLP File and Template -+ */ - final public static String TEMPLATE = "JNLP-INF/APPLICATION_TEMPLATE.JNLP"; - final public static String APPLICATION = "JNLP-INF/APPLICATION.JNLP"; - -- /** Actions to specify how cache is to be managed **/ -+ /** -+ * Actions to specify how cache is to be managed * -+ */ - public static enum DownloadAction { - DOWNLOAD_TO_CACHE, REMOVE_FROM_CACHE, CHECK_CACHE - } -@@ -119,101 +124,148 @@ - FULL, PARTIAL, NONE - } - -- /** True if the application has a signed JNLP File */ -+ /** -+ * True if the application has a signed JNLP File -+ */ - private boolean isSignedJNLP = false; -- -- /** map from JNLPFile unique key to shared classloader */ -+ -+ /** -+ * map from JNLPFile unique key to shared classloader -+ */ - private static Map uniqueKeyToLoader = new ConcurrentHashMap<>(); - -- /** map from JNLPFile unique key to lock, the lock is needed to enforce correct -- * initialization of applets that share a unique key*/ -+ /** -+ * map from JNLPFile unique key to lock, the lock is needed to enforce -+ * correct initialization of applets that share a unique key -+ */ - private static Map uniqueKeyToLock = new HashMap<>(); - -- /** Provides a search path & temporary storage for native code */ -+ /** -+ * Provides a search path & temporary storage for native code -+ */ - private NativeLibraryStorage nativeLibraryStorage; - -- /** security context */ -+ /** -+ * security context -+ */ - private final AccessControlContext acc = AccessController.getContext(); - -- /** the permissions for the cached jar files */ -+ /** -+ * the permissions for the cached jar files -+ */ - private List resourcePermissions; - -- /** the app */ -+ /** -+ * the app -+ */ - private ApplicationInstance app = null; // here for faster lookup in security manager - -- /** list of this, local and global loaders this loader uses */ -+ /** -+ * list of this, local and global loaders this loader uses -+ */ - private JNLPClassLoader loaders[] = null; // ..[0]==this - -- /** whether to strictly adhere to the spec or not */ -+ /** -+ * whether to strictly adhere to the spec or not -+ */ - private final boolean strict; - -- /** loads the resources */ -+ /** -+ * loads the resources -+ */ - private final ResourceTracker tracker = new ResourceTracker(true); // prefetch - -- /** the update policy for resources */ -+ /** -+ * the update policy for resources -+ */ - private UpdatePolicy updatePolicy; - -- /** the JNLP file */ -+ /** -+ * the JNLP file -+ */ - private JNLPFile file; - -- /** the resources section */ -+ /** -+ * the resources section -+ */ - private ResourcesDesc resources; - -- /** the security section */ -+ /** -+ * the security section -+ */ - private SecurityDesc security; - -- /** Permissions granted by the user during runtime. */ -+ /** -+ * Permissions granted by the user during runtime. -+ */ - private final ArrayList runtimePermissions = new ArrayList<>(); - -- /** all jars not yet part of classloader or active -- * Synchronized since this field may become shared data between multiple classloading threads. -- * See loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String). -+ /** -+ * all jars not yet part of classloader or active Synchronized since this -+ * field may become shared data between multiple classloading threads. See -+ * loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String). - */ - private final List available = Collections.synchronizedList(new ArrayList()); - -- /** the jar cert verifier tool to verify our jars */ -+ /** -+ * the jar cert verifier tool to verify our jars -+ */ - private final JarCertVerifier jcv; - - private SigningState signing = SigningState.NONE; - -- /** ArrayList containing jar indexes for various jars available to this classloader -- * Synchronized since this field may become shared data between multiple classloading threads/ -- * See loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String). -+ /** -+ * ArrayList containing jar indexes for various jars available to this -+ * classloader Synchronized since this field may become shared data between -+ * multiple classloading threads/ See loadClass(String) and -+ * CodebaseClassLoader.findClassNonRecursive(String). - */ - private final List jarIndexes = Collections.synchronizedList(new ArrayList()); - -- /** Set of classpath strings declared in the manifest.mf files -- * Synchronized since this field may become shared data between multiple classloading threads. -- * See loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String). -+ /** -+ * Set of classpath strings declared in the manifest.mf files Synchronized -+ * since this field may become shared data between multiple classloading -+ * threads. See loadClass(String) and -+ * CodebaseClassLoader.findClassNonRecursive(String). - */ - private final Set classpaths = Collections.synchronizedSet(new HashSet()); - -- /** File entries in the jar files available to this classloader -- * Synchronized sinc this field may become shared data between multiple classloading threads. -- * See loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String). -+ /** -+ * File entries in the jar files available to this classloader Synchronized -+ * sinc this field may become shared data between multiple classloading -+ * threads. See loadClass(String) and -+ * CodebaseClassLoader.findClassNonRecursive(String). - */ - private final Set jarEntries = Collections.synchronizedSet(new TreeSet()); - -- /** Map of specific original (remote) CodeSource Urls to securitydesc -- * Synchronized since this field may become shared data between multiple classloading threads. -- * See loadClass(String) and CodebaseClassLoader.findClassNonRecursive(String). -+ /** -+ * Map of specific original (remote) CodeSource Urls to securitydesc -+ * Synchronized since this field may become shared data between multiple -+ * classloading threads. See loadClass(String) and -+ * CodebaseClassLoader.findClassNonRecursive(String). - */ -- private final Map jarLocationSecurityMap = -- Collections.synchronizedMap(new HashMap()); -+ private final Map jarLocationSecurityMap -+ = Collections.synchronizedMap(new HashMap()); - - /*Set to prevent once tried-to-get resources to be tried again*/ - private final Set alreadyTried = Collections.synchronizedSet(new HashSet()); -- -- /** Loader for codebase (which is a path, rather than a file) */ -+ -+ /** -+ * Loader for codebase (which is a path, rather than a file) -+ */ - private CodeBaseClassLoader codeBaseLoader; -- -- /** True if the jar with the main class has been found -- * */ -- private boolean foundMainJar= false; -- -- /** Name of the application's main class */ -+ -+ /** -+ * True if the jar with the main class has been found -+ * -+ */ -+ private boolean foundMainJar = false; -+ -+ /** -+ * Name of the application's main class -+ */ - private String mainClass = null; -- -+ - /** - * Variable to track how many times this loader is in use - */ -@@ -242,16 +294,18 @@ - * @param file the JNLP file - * @param policy the UpdatePolicy for this class loader - * @param mainName name of the application's main class -- * @param enableCodeBase switch whether this classloader can search in codebase or not -- * @throws net.sourceforge.jnlp.LaunchException when need to kill an app comes. -- * -+ * @param enableCodeBase switch whether this classloader can search in -+ * codebase or not -+ * @throws net.sourceforge.jnlp.LaunchException when need to kill an app -+ * comes. -+ * - */ - protected JNLPClassLoader(JNLPFile file, UpdatePolicy policy, String mainName, boolean enableCodeBase) throws LaunchException { - super(new URL[0], JNLPClassLoader.class.getClassLoader()); - - OutputController.getLogger().log("New classloader: " + file.getFileLocation()); -- strict = Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_STRICT_JNLP_CLASSLOADER)); -- -+ strict = Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_STRICT_JNLP_CLASSLOADER)); -+ - this.file = file; - this.updatePolicy = policy; - this.resources = file.getResources(); -@@ -262,10 +316,9 @@ - - this.enableCodeBase = enableCodeBase; - -- - AppVerifier verifier; - -- if (file instanceof PluginBridge && !((PluginBridge)file).useJNLPHref()) { -+ if (file instanceof PluginBridge && !((PluginBridge) file).useJNLPHref()) { - verifier = new PluginAppVerifier(); - } else { - verifier = new JNLPAppVerifier(); -@@ -288,15 +341,26 @@ - initializeReadJarPermissions(); - - installShutdownHooks(); -- -- -+ -+ } -+ -+ public static boolean isCertUnderestimated() { -+ return Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_SECURITY_ITW_IGNORECERTISSUES)) -+ && !JNLPRuntime.isSecurityEnabled(); -+ } -+ -+ private static void consultCertificateSecurityException(LaunchException ex) throws LaunchException { -+ if (isCertUnderestimated()) { -+ OutputController.getLogger().log(OptionsDefinitions.OPTIONS.NOSEC.option + " and " + DeploymentConfiguration.KEY_SECURITY_ITW_IGNORECERTISSUES + " are declared. Ignoring certificate issue"); -+ OutputController.getLogger().log(ex); -+ } else { -+ throw ex; -+ } - } - - public boolean isStrict() { - return strict; - } -- -- - - /** - * Install JVM shutdown hooks to clean up resources allocated by this -@@ -322,9 +386,9 @@ - } - - /** -- * Gets the lock for a given unique key, creating one if it does not yet exist. -- * This operation is atomic & thread-safe. -- * -+ * Gets the lock for a given unique key, creating one if it does not yet -+ * exist. This operation is atomic & thread-safe. -+ * - * @param uniqueKey the file whose unique key should be used - * @return the lock - */ -@@ -342,10 +406,10 @@ - } - - /** -- * Creates a fully initialized JNLP classloader for the specified JNLPFile, -- * to be used as an applet/application's classloader. -- * In contrast, JNLP classloaders can also be constructed simply to merge -- * its resources into another classloader. -+ * Creates a fully initialized JNLP classloader for the specified JNLPFile, -+ * to be used as an applet/application's classloader. In contrast, JNLP -+ * classloaders can also be constructed simply to merge its resources into -+ * another classloader. - * - * @param file the file to load classes for - * @param policy the update policy to use when downloading resources -@@ -366,7 +430,7 @@ - if (loader.getSigningState() == SigningState.PARTIAL) { - loader.securityDelegate.promptUserOnPartialSigning(); - } else if (!loader.getSigning() && !loader.securityDelegate.userPromptedForSandbox() && file instanceof PluginBridge) { -- UnsignedAppletTrustConfirmation.checkUnsignedWithUserIfRequired((PluginBridge)file); -+ UnsignedAppletTrustConfirmation.checkUnsignedWithUserIfRequired((PluginBridge) file); - } - - // New loader init may have caused extentions to create a -@@ -384,7 +448,7 @@ - // loader is now current + ext. But we also need to think of - // the baseLoader - if (baseLoader != null && baseLoader != loader) { -- loader.merge(baseLoader); -+ loader.merge(baseLoader); - } - - return loader; -@@ -392,12 +456,13 @@ - - /** - * Returns a JNLP classloader for the specified JNLP file. -- * -+ * - * @param file the file to load classes for - * @param policy the update policy to use when downloading resources -- * @param enableCodeBase true if codebase can be searched (ok for applets,false for apps) -- * @return existing classloader. creates new if none reliable exists -- * @throws net.sourceforge.jnlp.LaunchException when launch is doomed -+ * @param enableCodeBase true if codebase can be searched (ok for -+ * applets,false for apps) -+ * @return existing classloader. creates new if none reliable exists -+ * @throws net.sourceforge.jnlp.LaunchException when launch is doomed - */ - public static JNLPClassLoader getInstance(JNLPFile file, UpdatePolicy policy, boolean enableCodeBase) throws LaunchException { - return getInstance(file, policy, null, enableCodeBase); -@@ -409,22 +474,23 @@ - * @param file the file to load classes for - * @param policy the update policy to use when downloading resources - * @param mainName Overrides the main class name of the application -- * @param enableCodeBase ue if codebase can be searched (ok for applets,false for apps) -- * @return existing classloader. creates new if none reliable exists -- * @throws net.sourceforge.jnlp.LaunchException when launch is doomed -+ * @param enableCodeBase ue if codebase can be searched (ok for -+ * applets,false for apps) -+ * @return existing classloader. creates new if none reliable exists -+ * @throws net.sourceforge.jnlp.LaunchException when launch is doomed - */ - public static JNLPClassLoader getInstance(JNLPFile file, UpdatePolicy policy, String mainName, boolean enableCodeBase) throws LaunchException { - JNLPClassLoader loader; - String uniqueKey = file.getUniqueKey(); - -- synchronized ( getUniqueKeyLock(uniqueKey) ) { -+ synchronized (getUniqueKeyLock(uniqueKey)) { - JNLPClassLoader baseLoader = uniqueKeyToLoader.get(uniqueKey); - - // A null baseloader implies that no loader has been created - // for this codebase/jnlp yet. Create one. -- if (baseLoader == null || -- (file.isApplication() && -- !baseLoader.getJNLPFile().getFileLocation().equals(file.getFileLocation()))) { -+ if (baseLoader == null -+ || (file.isApplication() -+ && !baseLoader.getJNLPFile().getFileLocation().equals(file.getFileLocation()))) { - - loader = createInstance(file, policy, mainName, enableCodeBase); - } else { -@@ -433,15 +499,15 @@ - // If this is an applet, we do need to consider its loader - loader = new JNLPClassLoader(file, policy, mainName, enableCodeBase); - -- if (baseLoader != null) -+ if (baseLoader != null) { - baseLoader.merge(loader); -+ } - } - loader = baseLoader; - } - - // loaders are mapped to a unique key. Only extensions and parent - // share a key, so it is safe to always share based on it -- - loader.incrementLoaderUseCount(); - - uniqueKeyToLoader.put(uniqueKey, loader); -@@ -451,8 +517,7 @@ - } - - /** -- * Returns a JNLP classloader for the JNLP file at the specified -- * location. -+ * Returns a JNLP classloader for the JNLP file at the specified location. - * - * @param location the file's location - * @param uniqueKey key to manage applets/applications in shared vm -@@ -463,15 +528,15 @@ - * @param enableCodeBase whether to enable codebase search or not - * @return classlaoder of this appp - * @throws java.io.IOException when IO fails -- * @throws net.sourceforge.jnlp.ParseException when parsing fails -- * @throws net.sourceforge.jnlp.LaunchException when launch is doomed -+ * @throws net.sourceforge.jnlp.ParseException when parsing fails -+ * @throws net.sourceforge.jnlp.LaunchException when launch is doomed - */ - public static JNLPClassLoader getInstance(URL location, String uniqueKey, Version version, ParserSettings settings, UpdatePolicy policy, String mainName, boolean enableCodeBase) - throws IOException, ParseException, LaunchException { - - JNLPClassLoader loader; - -- synchronized ( getUniqueKeyLock(uniqueKey) ) { -+ synchronized (getUniqueKeyLock(uniqueKey)) { - loader = uniqueKeyToLoader.get(uniqueKey); - - if (loader == null || !location.equals(loader.getJNLPFile().getFileLocation())) { -@@ -542,18 +607,20 @@ - - /** - * Check if a described jar file is invalid -+ * - * @param jar the jar to check - * @return true if file exists AND is an invalid jar, false otherwise - */ -- boolean isInvalidJar(JARDesc jar){ -+ boolean isInvalidJar(JARDesc jar) { - File cacheFile = tracker.getCacheFile(jar.getLocation()); -- if (cacheFile == null) -+ if (cacheFile == null) { - return false;//File cannot be retrieved, do not claim it is an invalid jar -+ } - boolean isInvalid = false; - try { - JarFile jarFile = new JarFile(cacheFile.getAbsolutePath()); - jarFile.close(); -- } catch (IOException ioe){ -+ } catch (IOException ioe) { - //Catch a ZipException or any other read failure - isInvalid = true; - } -@@ -562,11 +629,12 @@ - - /** - * Determine how invalid jars should be handled -+ * - * @return whether to filter invalid jars, or error later on - */ -- private boolean shouldFilterInvalidJars(){ -- if (file instanceof PluginBridge){ -- PluginBridge pluginBridge = (PluginBridge)file; -+ private boolean shouldFilterInvalidJars() { -+ if (file instanceof PluginBridge) { -+ PluginBridge pluginBridge = (PluginBridge) file; - /*Ignore on applet, ie !useJNLPHref*/ - return !pluginBridge.useJNLPHref(); - } -@@ -574,14 +642,14 @@ - } - - /** -- * Load all of the JARs used in this JNLP file into the -- * ResourceTracker for downloading. -+ * Load all of the JARs used in this JNLP file into the ResourceTracker for -+ * downloading. - */ - void initializeResources() throws LaunchException { -- if (file instanceof PluginBridge){ -- PluginBridge bridge = (PluginBridge)file; -- -- for (String codeBaseFolder : bridge.getCodeBaseFolders()){ -+ if (file instanceof PluginBridge) { -+ PluginBridge bridge = (PluginBridge) file; -+ -+ for (String codeBaseFolder : bridge.getCodeBaseFolders()) { - try { - addToCodeBaseLoader(new URL(file.getCodeBase(), codeBaseFolder)); - } catch (MalformedURLException mfe) { -@@ -624,16 +692,16 @@ - - available.add(jar); - -- if (jar.isEager()) -+ if (jar.isEager()) { - initialJars.add(jar); // regardless of part -- -+ } - tracker.addResource(jar.getLocation(), - jar.getVersion(), file.getDownloadOptions(), - jar.isCacheable() ? JNLPRuntime.getDefaultUpdatePolicy() : UpdatePolicy.FORCE); - } - - //If there are no eager jars, initialize the first jar -- if(initialJars.isEmpty()) { -+ if (initialJars.isEmpty()) { - initialJars.add(jars[0]); - } - -@@ -644,10 +712,10 @@ - waitForJars(initialJars); //download the jars first. - - //A ZipException will propagate later on if the jar is invalid and not checked here -- if (shouldFilterInvalidJars()){ -+ if (shouldFilterInvalidJars()) { - //We filter any invalid jars - Iterator iterator = initialJars.iterator(); -- while (iterator.hasNext()){ -+ while (iterator.hasNext()) { - JARDesc jar = iterator.next(); - if (isInvalidJar(jar)) { - //Remove this jar as an available jar -@@ -667,8 +735,9 @@ - //Note: one of these exceptions could be from not being able - //to read the cacerts or trusted.certs files. - OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e); -- throw new LaunchException(null, null, R("LSFatal"), -- R("LCInit"), R("LFatalVerification"), R("LFatalVerificationInfo") + ": " +e.getMessage()); -+ LaunchException ex = new LaunchException(null, null, R("LSFatal"), -+ R("LCInit"), R("LFatalVerification"), R("LFatalVerificationInfo") + ": " + e.getMessage()); -+ consultCertificateSecurityException(ex); - } - - //Case when at least one jar has some signing -@@ -679,8 +748,9 @@ - checkForMain(initialJars); - - // If jar with main class was not found, check available resources -- while (!foundMainJar && available != null && !available.isEmpty()) -+ while (!foundMainJar && available != null && !available.isEmpty()) { - addNextResource(); -+ } - - // If the jar with main class was not found, check extension - // jnlp's resources -@@ -712,16 +782,18 @@ - } - - // If main jar was found, but a signed JNLP file was not located -- if (!isSignedJNLP && foundMainJar) -+ if (!isSignedJNLP && foundMainJar) { - file.setSignedJNLPAsMissing(); -+ } - - //user does not trust this publisher - if (!jcv.isTriviallySigned()) { - checkTrustWithUser(); - } else { - /** -- * If the user trusts this publisher (i.e. the publisher's certificate -- * is in the user's trusted.certs file), we do not show any dialogs. -+ * If the user trusts this publisher (i.e. the publisher's -+ * certificate is in the user's trusted.certs file), we do -+ * not show any dialogs. - */ - } - } else { -@@ -803,12 +875,13 @@ - } - return codebase; - } -- -- /*** -- * Checks for the jar that contains the attribute. -- * -+ -+ /** -+ * * -+ * Checks for the jar that contains the attribute. -+ * - * @param jars Jars that are checked to see if they contain the main class -- * @param name attribute to be found -+ * @param name attribute to be found - * @return value of attribute if found - */ - public String checkForAttributeInJars(List jars, Attributes.Name name) { -@@ -816,7 +889,6 @@ - return null; - } - -- - // Check main jar - JARDesc mainJarDesc = ResourcesDesc.getMainJAR(jars); - String result = getManifestAttribute(mainJarDesc.getLocation(), name); -@@ -827,33 +899,36 @@ - - // Check first jar - JARDesc firstJarDesc = jars.get(0); -- result = getManifestAttribute(firstJarDesc.getLocation(),name); -- -+ result = getManifestAttribute(firstJarDesc.getLocation(), name); -+ - if (result != null) { - return result; - } - - // Still not found? Iterate and set if only 1 was found -- for (JARDesc jarDesc: jars) { -+ for (JARDesc jarDesc : jars) { - String attributeInThisJar = getManifestAttribute(jarDesc.getLocation(), name); -- if (attributeInThisJar != null) { -- if (result == null) { // first main class -- result = attributeInThisJar; -- } else { // There is more than one main class. Set to null and break. -- result = null; -- break; -+ if (attributeInThisJar != null) { -+ if (result == null) { // first main class -+ result = attributeInThisJar; -+ } else { // There is more than one main class. Set to null and break. -+ result = null; -+ break; - } - } - } - return result; - } -- /*** -+ -+ /** -+ * * - * Checks for the jar that contains the main class. If the main class was - * found, it checks to see if the jar is signed and whether it contains a - * signed JNLP file -- * -+ * - * @param jars Jars that are checked to see if they contain the main class -- * @throws LaunchException Thrown if the signed JNLP file, within the main jar, fails to be verified or does not match -+ * @throws LaunchException Thrown if the signed JNLP file, within the main -+ * jar, fails to be verified or does not match - */ - void checkForMain(List jars) throws LaunchException { - -@@ -866,7 +941,6 @@ - } - - // The main class may be specified in the manifest -- - if (mainClass == null) { - mainClass = checkForAttributeInJars(jars, Attributes.Name.MAIN_CLASS); - } -@@ -910,31 +984,32 @@ - * Gets the name of the main method if specified in the manifest - * - * @param location The JAR location -- * @return the main class name, null if there isn't one of if there was an error -+ * @return the main class name, null if there isn't one of if there was an -+ * error - */ - String getMainClassName(URL location) { - return getManifestAttribute(location, Attributes.Name.MAIN_CLASS); - } -- -- -+ - /** - * Gets the name of the main method if specified in the manifest - * - * @param location The JAR location - * @param attribute name of the attribute to find -- * @return the attribute value, null if there isn't one of if there was an error -+ * @return the attribute value, null if there isn't one of if there was an -+ * error - */ -- public String getManifestAttribute(URL location, Attributes.Name attribute) { -+ public String getManifestAttribute(URL location, Attributes.Name attribute) { - - String attributeValue = null; - File f = tracker.getCacheFile(location); - -- if( f != null) { -+ if (f != null) { - JarFile mainJar = null; - try { - mainJar = new JarFile(f); - Manifest manifest = mainJar.getManifest(); -- if (manifest == null || manifest.getMainAttributes() == null){ -+ if (manifest == null || manifest.getMainAttributes() == null) { - //yes, jars without manifest exists - return null; - } -@@ -972,10 +1047,11 @@ - /** - * Is called by checkForMain() to check if the jar file is signed and if it - * contains a signed JNLP file. -- * -+ * - * @param jarDesc JARDesc of jar - * @param jarFile the jar file -- * @throws LaunchException thrown if the signed JNLP file, within the main jar, fails to be verified or does not match -+ * @throws LaunchException thrown if the signed JNLP file, within the main -+ * jar, fails to be verified or does not match - */ - private void verifySignedJNLP(JARDesc jarDesc, JarFile jarFile) - throws LaunchException { -@@ -1014,13 +1090,14 @@ - matcher = new JNLPMatcher(inStream, jnlpStream, true, jnlp.getParserSettings()); - } - // If signed JNLP file does not matches launching JNLP file, throw JNLPMatcherException -- if (!matcher.isMatch()) -+ if (!matcher.isMatch()) { - throw new JNLPMatcherException("Signed Application did not match launching JNLP File"); -+ } - - this.isSignedJNLP = true; - OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Signed Application Verification Successful"); - -- break; -+ break; - } - } - } -@@ -1030,17 +1107,16 @@ - * Throws LaunchException if signed JNLP file fails to be verified - * or fails to match the launching JNLP file - */ -- -- throw new LaunchException(file, null, R("LSFatal"), R("LCClient"), -+ LaunchException ex = new LaunchException(file, null, R("LSFatal"), R("LCClient"), - R("LSignedJNLPFileDidNotMatch"), R(e.getMessage())); -- -+ consultCertificateSecurityException(ex); - /* - * Throwing this exception will fail to initialize the application - * resulting in the termination of the application - */ - - } catch (Exception e) { -- -+ - OutputController.getLogger().log(e); - - /* -@@ -1049,21 +1125,21 @@ - * JarCertVerifier.add) it assumes the jar file is unsigned and - * skip the check for a signed JNLP file - */ -- - } - OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Ending check for signed JNLP file..."); - } - - /** - * Prompt the user for trust on all the signers that require approval. -+ * - * @throws LaunchException if the user does not approve every dialog prompt. - */ - private void checkTrustWithUser() throws LaunchException { -- -+ - if (securityDelegate.getRunInSandbox()) { - return; - } -- -+ - if (getSigningState() == SigningState.FULL && jcv.isFullySigned() && !jcv.getAlreadyTrustPublisher()) { - jcv.checkTrustWithUser(securityDelegate, file); - } -@@ -1086,10 +1162,9 @@ - } - - /** -- * Add applet's codebase URL. This allows compatibility with -- * applets that load resources from their codebase instead of -- * through JARs, but can slow down resource loading. Resources -- * loaded from the codebase are not cached. -+ * Add applet's codebase URL. This allows compatibility with applets that -+ * load resources from their codebase instead of through JARs, but can slow -+ * down resource loading. Resources loaded from the codebase are not cached. - */ - public void enableCodeBase() { - addToCodeBaseLoader(file.getCodeBase()); -@@ -1097,11 +1172,12 @@ - - /** - * Sets the JNLP app this group is for; can only be called once. -+ * - * @param app application to be ser to this group - */ - public void setApplication(ApplicationInstance app) { - if (this.app != null) { -- OutputController.getLogger().log(new IllegalStateException("Application can only be set once")); -+ OutputController.getLogger().log(new IllegalStateException("Application can only be set once")); - return; - } - -@@ -1132,7 +1208,6 @@ - - // should check for extensions or boot, automatically give all - // access w/o security dialog once we actually check certificates. -- - // copy security permissions from SecurityDesc element - if (security != null) { - // Security desc. is used only to track security settings for the -@@ -1182,9 +1257,10 @@ - } - - // Class from host X should be allowed to connect to host X -- if (cs.getLocation() != null && cs.getLocation().getHost().length() > 0) -+ if (cs.getLocation() != null && cs.getLocation().getHost().length() > 0) { - result.add(new SocketPermission(UrlUtils.getHostAndPort(cs.getLocation()), - "connect, accept")); -+ } - - return result; - } catch (RuntimeException ex) { -@@ -1198,33 +1274,34 @@ - } - - /** -- * Adds to the specified list of JARS any other JARs that need -- * to be loaded at the same time as the JARs specified (ie, are -- * in the same part). -+ * Adds to the specified list of JARS any other JARs that need to be loaded -+ * at the same time as the JARs specified (ie, are in the same part). -+ * - * @param jars jar archives to be added - */ - protected void fillInPartJars(List jars) { - //can not use iterator, will rise ConcurrentModificationException on jars.add(jar); -- for (int x = 0 ; x< jars.size() ; x++) { -+ for (int x = 0; x < jars.size(); x++) { - String part = jars.get(x).getPart(); - - // "available" field can be affected by two different threads - // working in loadClass(String) - synchronized (available) { - for (JARDesc jar : available) { -- if (part != null && part.equals(jar.getPart())) -- if (!jars.contains(jar)) -+ if (part != null && part.equals(jar.getPart())) { -+ if (!jars.contains(jar)) { - jars.add(jar); -+ } -+ } - } - } - } - } - - /** -- * Ensures that the list of jars have all been transferred, and -- * makes them available to the classloader. If a jar contains -- * native code, the libraries will be extracted and placed in -- * the path. -+ * Ensures that the list of jars have all been transferred, and makes them -+ * available to the classloader. If a jar contains native code, the -+ * libraries will be extracted and placed in the path. - * - * @param jars the list of jars to load - */ -@@ -1256,13 +1333,13 @@ - // particularly when using The FileManager applet from Webmin. - try (JarFile jarFile = new JarFile(localFile)) { - for (JarEntry je : Collections.list(jarFile.entries())) { -- -+ - // another jar in my jar? it is more likely than you think - if (je.getName().endsWith(".jar")) { - // We need to extract that jar so that it can be loaded - // (inline loading with "jar:..!/..." path will not work - // with standard classloader methods) -- -+ - String extractedJarLocation = localFile + ".nested/" + je.getName(); - File parentDir = new File(extractedJarLocation).getParentFile(); - if (!parentDir.isDirectory() && !parentDir.mkdirs()) { -@@ -1270,7 +1347,7 @@ - } - FileOutputStream extractedJar = new FileOutputStream(extractedJarLocation); - InputStream is = jarFile.getInputStream(je); -- -+ - byte[] bytes = new byte[1024]; - int read = is.read(bytes); - int fileSize = read; -@@ -1279,41 +1356,41 @@ - read = is.read(bytes); - fileSize += read; - } -- -+ - is.close(); - extractedJar.close(); -- -+ - // 0 byte file? skip - if (fileSize <= 0) { - continue; - } -- -+ - tracker.addResource(new File(extractedJarLocation).toURL(), null, null, null); -- -+ - URL codebase = file.getCodeBase(); - if (codebase == null) { - //FIXME: codebase should be the codebase of the Main Jar not - //the location. Although, it still works in the current state. - codebase = file.getResources().getMainJAR().getLocation(); - } -- -+ - final SecurityDesc jarSecurity = securityDelegate.getJarPermissions(codebase); -- -+ - try { - URL fileURL = new URL("file://" + extractedJarLocation); - // there is no remote URL for this, so lets fake one - URL fakeRemote = new URL(jar.getLocation().toString() + "!" + je.getName()); - CachedJarFileCallback.getInstance().addMapping(fakeRemote, fileURL); - addURL(fakeRemote); -- -+ - jarLocationSecurityMap.put(fakeRemote, jarSecurity); -- -+ - } catch (MalformedURLException mfue) { - OutputController.getLogger().log(OutputController.Level.WARNING_DEBUG, "Unable to add extracted nested jar to classpath"); - OutputController.getLogger().log(OutputController.Level.ERROR_ALL, mfue); - } - } -- -+ - jarEntries.add(je.getName()); - } - } -@@ -1324,11 +1401,11 @@ - // there is currently no mechanism to cache files per - // instance.. so only index cached files - if (localFile != null) { -- CachedJarFileCallback.getInstance().addMapping(jar.getLocation(), localFile.toURL()); -+ CachedJarFileCallback.getInstance().addMapping(jar.getLocation(), localFile.toURI().toURL()); - - try (JarFile jarFile = new JarFile(localFile.getAbsolutePath())) { - Manifest mf = jarFile.getManifest(); -- -+ - // Only check classpath if this is the plugin and there is no jnlp_href usage. - // Note that this is different from proprietary plugin behaviour. - // If jnlp_href is used, the app should be treated similarly to when -@@ -1336,19 +1413,19 @@ - if (file instanceof PluginBridge && !((PluginBridge) file).useJNLPHref()) { - classpaths.addAll(getClassPathsFromManifest(mf, jar.getLocation().getPath())); - } -- -+ - JarIndexAccess index = JarIndexAccess.getJarIndex(jarFile); -- if (index != null) -+ if (index != null) { - jarIndexes.add(index); -+ } - } - } else { - CachedJarFileCallback.getInstance().addMapping(jar.getLocation(), jar.getLocation()); - } - - OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Activate jar: " + location); -- } -- catch (Exception ex) { -- OutputController.getLogger().log(ex); -+ } catch (Exception ex) { -+ OutputController.getLogger().log(ex); - } - - // some programs place a native library in any jar -@@ -1374,14 +1451,16 @@ - } - - String result = super.findLibrary(lib); -- if (result != null) -+ if (result != null) { - return result; -+ } - - return findLibraryExt(lib); - } - - /** - * Try to find the library path from another peer classloader. -+ * - * @param lib library to be found - * @return location of library - */ -@@ -1389,19 +1468,21 @@ - for (JNLPClassLoader loader : loaders) { - String result = null; - -- if (loader != this) -+ if (loader != this) { - result = loader.findLibrary(lib); -- -- if (result != null) -+ } -+ -+ if (result != null) { - return result; -+ } - } - - return null; - } - - /** -- * Wait for a group of JARs, and send download events if there -- * is a download listener or display a progress window otherwise. -+ * Wait for a group of JARs, and send download events if there is a download -+ * listener or display a progress window otherwise. - * - * @param jars the jars - */ -@@ -1419,6 +1500,7 @@ - - /** - * Find the loaded class in this loader or any of its extension loaders. -+ * - * @param name name of class - * @return the class found by name - */ -@@ -1432,41 +1514,43 @@ - result = loader.findLoadedClassAll(name); - } - -- if (result != null) -+ if (result != null) { - return result; -+ } - } -- -+ - // Result is still null. Return what the codebaseloader - // has (which returns null if it is not loaded there either) -- if (codeBaseLoader != null) -+ if (codeBaseLoader != null) { - return codeBaseLoader.findLoadedClassFromParent(name); -- else -+ } else { - return null; -+ } - } - - /** -- * Find a JAR in the shared 'extension' classloaders, this -- * classloader, or one of the classloaders for the JNLP file's -- * extensions. -- * This method used to be qualified "synchronized." This was done solely for the -- * purpose of ensuring only one thread entered the method at a time. This was not -+ * Find a JAR in the shared 'extension' classloaders, this classloader, or -+ * one of the classloaders for the JNLP file's extensions. This method used -+ * to be qualified "synchronized." This was done solely for the purpose of -+ * ensuring only one thread entered the method at a time. This was not - * strictly necessary - ensuring that all affected fields are thread-safe is -- * sufficient. Locking on the JNLPClassLoader instance when this method is called -- * can result in deadlock if another thread is dealing with the CodebaseClassLoader -- * at the same time. This solution is very heavy-handed as the instance lock is not -- * truly required, and taking the lock on the classloader instance when not needed is -- * not in general a good idea because it can and will lead to deadlock when multithreaded -- * classloading is in effect. The solution is to keep the fields thread safe on their own. -- * This is accomplished by wrapping them in Collections.synchronized* to provide -- * atomic add/remove operations, and synchronizing on them when iterating or performing -- * multiple mutations. -- * See bug report RH976833. On some systems this bug will manifest itself as deadlock on -- * every webpage with more than one Java applet, potentially also causing the browser -- * process to hang. -- * More information in the mailing list archives: -+ * sufficient. Locking on the JNLPClassLoader instance when this method is -+ * called can result in deadlock if another thread is dealing with the -+ * CodebaseClassLoader at the same time. This solution is very heavy-handed -+ * as the instance lock is not truly required, and taking the lock on the -+ * classloader instance when not needed is not in general a good idea -+ * because it can and will lead to deadlock when multithreaded classloading -+ * is in effect. The solution is to keep the fields thread safe on their -+ * own. This is accomplished by wrapping them in Collections.synchronized* -+ * to provide atomic add/remove operations, and synchronizing on them when -+ * iterating or performing multiple mutations. See bug report RH976833. On -+ * some systems this bug will manifest itself as deadlock on every webpage -+ * with more than one Java applet, potentially also causing the browser -+ * process to hang. More information in the mailing list archives: - * http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2013-September/024536.html -- * -- * Affected fields: available, classpaths, jarIndexes, jarEntries, jarLocationSecurityMap -+ * -+ * Affected fields: available, classpaths, jarIndexes, jarEntries, -+ * jarLocationSecurityMap - */ - @Override - public Class loadClass(String name) throws ClassNotFoundException { -@@ -1476,8 +1560,9 @@ - if (result == null) { - try { - ClassLoader parent = getParent(); -- if (parent == null) -+ if (parent == null) { - parent = ClassLoader.getSystemClassLoader(); -+ } - - return parent.loadClass(name); - } catch (ClassNotFoundException ex) { -@@ -1486,7 +1571,6 @@ - - // filter out 'bad' package names like java, javax - // validPackage(name); -- - // search this and the extension loaders - if (result == null) { - try { -@@ -1518,7 +1602,6 @@ - } - - // As a last resort, look in any available indexes -- - // Currently this loads jars directly from the site. We cannot cache it because this - // call is initiated from within the applet, which does not have disk read/write permissions - // This field synchronized before iterating over it since it may -@@ -1563,9 +1646,10 @@ - /** - * Adds a new JARDesc into this classloader. - *

    -- * This will add the JARDesc into the resourceTracker and block until it -- * is downloaded. -+ * This will add the JARDesc into the resourceTracker and block until it is -+ * downloaded. - *

    -+ * - * @param desc the JARDesc for the new jar - */ - private void addNewJar(final JARDesc desc) { -@@ -1574,6 +1658,7 @@ - - /** - * Adds a new JARDesc into this classloader. -+ * - * @param desc the JARDesc for the new jar - * @param updatePolicy the UpdatePolicy for the resource - */ -@@ -1585,7 +1670,7 @@ - desc.getVersion(), - null, - updatePolicy -- ); -+ ); - - // Give read permissions to the cached jar file - AccessController.doPrivileged(new PrivilegedAction() { -@@ -1604,11 +1689,10 @@ - final URL cachedUrl = tracker.getCacheURL(remoteURL); // blocks till download - - available.remove(desc); // Resource downloaded. Remove from available list. -- -+ - try { - - // Verify if needed -- - final List jars = new ArrayList<>(); - jars.add(desc); - -@@ -1617,7 +1701,6 @@ - // having AllPermissions as those actions normally happen - // during initialization. We therefore need to do those - // actions as privileged. -- - AccessController.doPrivileged(new PrivilegedExceptionAction() { - @Override - public Void run() throws Exception { -@@ -1656,11 +1739,11 @@ - final String fName = name; - return AccessController.doPrivileged( - new PrivilegedExceptionAction>() { -- @Override -- public Class run() throws ClassNotFoundException { -- return JNLPClassLoader.super.findClass(fName); -- } -- }, getAccessControlContextForClassLoading()); -+ @Override -+ public Class run() throws ClassNotFoundException { -+ return JNLPClassLoader.super.findClass(fName); -+ } -+ }, getAccessControlContextForClassLoading()); - } else { - return loader.findClass(name); - } -@@ -1673,17 +1756,17 @@ - } - - // Try codebase loader -- if (codeBaseLoader != null) -+ if (codeBaseLoader != null) { - return codeBaseLoader.findClassNonRecursive(name); -+ } - - // All else failed. Throw CNFE - throw new ClassNotFoundException(name); - } - - /** -- * Search for the class by incrementally adding resources to the -- * classloader and its extension classloaders until the resource -- * is found. -+ * Search for the class by incrementally adding resources to the classloader -+ * and its extension classloaders until the resource is found. - */ - private Class loadClassExt(String name) throws ClassNotFoundException { - // make recursive -@@ -1698,7 +1781,7 @@ - // add resources until found - while (true) { - JNLPClassLoader addedTo = null; -- -+ - try { - addedTo = addNextResource(); - } catch (LaunchException e) { -@@ -1708,12 +1791,12 @@ - * [It is handled in initializeResources()]. Therefore, this - * exception will never be thrown here and is escaped - */ -- - throw new IllegalStateException(e); - } - -- if (addedTo == null) -+ if (addedTo == null) { - throw new ClassNotFoundException(name); -+ } - - try { - return addedTo.findClass(name); -@@ -1723,11 +1806,10 @@ - } - - /** -- * Finds the resource in this, the parent, or the extension -- * class loaders. -+ * Finds the resource in this, the parent, or the extension class loaders. - * -- * @return a {@link URL} for the resource, or {@code null} -- * if the resource could not be found. -+ * @return a {@link URL} for the resource, or {@code null} if the resource -+ * could not be found. - */ - @Override - public URL findResource(String name) { -@@ -1741,17 +1823,18 @@ - } catch (IOException e) { - OutputController.getLogger().log(e); - } -- -+ - // If result is still null, look in the codebase loader -- if (result == null && codeBaseLoader != null) -+ if (result == null && codeBaseLoader != null) { - result = codeBaseLoader.findResource(name); -+ } - - return result; - } - - /** -- * Find the resources in this, the parent, or the extension -- * class loaders. Load lazy resources if not found in current resources. -+ * Find the resources in this, the parent, or the extension class loaders. -+ * Load lazy resources if not found in current resources. - */ - @Override - public Enumeration findResources(String name) throws IOException { -@@ -1770,8 +1853,7 @@ - } - - /** -- * Find the resources in this, the parent, or the extension -- * class loaders. -+ * Find the resources in this, the parent, or the extension class loaders. - */ - private Enumeration findResourcesBySearching(String name) throws IOException { - List lresources = new ArrayList<>(); -@@ -1787,11 +1869,11 @@ - try { - e = AccessController.doPrivileged( - new PrivilegedExceptionAction>() { -- @Override -- public Enumeration run() throws IOException { -- return JNLPClassLoader.super.findResources(fName); -- } -- }, getAccessControlContextForClassLoading()); -+ @Override -+ public Enumeration run() throws IOException { -+ return JNLPClassLoader.super.findResources(fName); -+ } -+ }, getAccessControlContextForClassLoading()); - } catch (PrivilegedActionException pae) { - } - } else { -@@ -1801,16 +1883,16 @@ - final Enumeration fURLEnum = e; - try { - lresources.addAll(AccessController.doPrivileged( -- new PrivilegedExceptionAction>() { -- @Override -- public Collection run() { -- List resources = new ArrayList<>(); -- while (fURLEnum != null && fURLEnum.hasMoreElements()) { -- resources.add(fURLEnum.nextElement()); -- } -- return resources; -+ new PrivilegedExceptionAction>() { -+ @Override -+ public Collection run() { -+ List resources = new ArrayList<>(); -+ while (fURLEnum != null && fURLEnum.hasMoreElements()) { -+ resources.add(fURLEnum.nextElement()); - } -- }, getAccessControlContextForClassLoading())); -+ return resources; -+ } -+ }, getAccessControlContextForClassLoading())); - } catch (PrivilegedActionException pae) { - } - } -@@ -1819,8 +1901,9 @@ - // otherwise the server will get hammered) - if (lresources.isEmpty() && codeBaseLoader != null) { - e = codeBaseLoader.findResources(name); -- while (e.hasMoreElements()) -+ while (e.hasMoreElements()) { - lresources.add(e.nextElement()); -+ } - } - - return Collections.enumeration(lresources); -@@ -1837,8 +1920,7 @@ - } - - /** -- * Adds whatever resources have already been downloaded in the -- * background. -+ * Adds whatever resources have already been downloaded in the background. - */ - protected void addAvailable() { - // go through available, check tracker for it and all of its -@@ -1850,21 +1932,23 @@ - } - - /** -- * Adds the next unused resource to the classloader. That -- * resource and all those in the same part will be downloaded -- * and added to the classloader before returning. If there are -- * no more resources to add, the method returns immediately. -+ * Adds the next unused resource to the classloader. That resource and all -+ * those in the same part will be downloaded and added to the classloader -+ * before returning. If there are no more resources to add, the method -+ * returns immediately. - * - * @return the classloader that resources were added to, or null -- * @throws LaunchException Thrown if the signed JNLP file, within the main jar, fails to be verified or does not match -+ * @throws LaunchException Thrown if the signed JNLP file, within the main -+ * jar, fails to be verified or does not match - */ - protected JNLPClassLoader addNextResource() throws LaunchException { - if (available.isEmpty()) { - for (int i = 1; i < loaders.length; i++) { - JNLPClassLoader result = loaders[i].addNextResource(); - -- if (result != null) -+ if (result != null) { - return result; -+ } - } - return null; - } -@@ -1882,25 +1966,28 @@ - - // this part compatibility with previous classloader - /** -- * @return title if available. Substitutions if not. -+ * @return title if available. Substitutions if not. - * @deprecated - */ - @Deprecated - public String getExtensionName() { - String result = file.getInformation().getTitle(); - -- if (result == null) -+ if (result == null) { - result = file.getInformation().getDescription(); -- if (result == null && file.getFileLocation() != null) -+ } -+ if (result == null && file.getFileLocation() != null) { - result = file.getFileLocation().toString(); -- if (result == null && file.getCodeBase() != null) -+ } -+ if (result == null && file.getCodeBase() != null) { - result = file.getCodeBase().toString(); -+ } - - return result; - } - - /** -- * @return location if jnlp -+ * @return location if jnlp - * @deprecated - */ - @Deprecated -@@ -1914,14 +2001,13 @@ - - /** - * Call this when it's suspected that an applet's permission level may have -- * just changed from Full Signing to Partial Signing. -- * This will display a one-time prompt asking the user to confirm running -- * the partially signed applet. -- * Partially Signed applets always start off as appearing to be Fully -- * Signed, and then during the initialization or loading process, we find -- * that we actually need to demote the applet to Partial, either due to -- * finding that not all of its JARs are actually signed, or because it -- * needs to load something unsigned out of the codebase. -+ * just changed from Full Signing to Partial Signing. This will display a -+ * one-time prompt asking the user to confirm running the partially signed -+ * applet. Partially Signed applets always start off as appearing to be -+ * Fully Signed, and then during the initialization or loading process, we -+ * find that we actually need to demote the applet to Partial, either due to -+ * finding that not all of its JARs are actually signed, or because it needs -+ * to load something unsigned out of the codebase. - */ - private void checkPartialSigningWithUser() { - if (signing == SigningState.FULL && JNLPRuntime.isVerifying()) { -@@ -1949,9 +2035,8 @@ - * @param source the origin (remote) url of the code - * @return The SecurityDescriptor for that source - */ -- - protected SecurityDesc getCodeSourceSecurity(URL source) { -- SecurityDesc sec=jarLocationSecurityMap.get(source); -+ SecurityDesc sec = jarLocationSecurityMap.get(source); - synchronized (alreadyTried) { - if (sec == null && !alreadyTried.contains(source)) { - alreadyTried.add(source); -@@ -1967,8 +2052,8 @@ - } - } - } -- if (sec == null){ -- OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.R("LNoSecInstance",source.toString())); -+ if (sec == null) { -+ OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.R("LNoSecInstance", source.toString())); - } - return sec; - } -@@ -1988,9 +2073,10 @@ - } - - // jars -- for (URL u : extLoader.getURLs()) -+ for (URL u : extLoader.getURLs()) { - addURL(u); -- -+ } -+ - // Codebase - addToCodeBaseLoader(extLoader.file.getCodeBase()); - -@@ -2009,7 +2095,7 @@ - - /** - * Adds the given path to the path loader -- * -+ * - * @param u the path to add - * @throws IllegalArgumentException If the given url is not a path - */ -@@ -2026,7 +2112,7 @@ - // If there is no loader yet, create one, else add it to the - // existing one (happens when called from merge()) - if (codeBaseLoader == null) { -- codeBaseLoader = new CodeBaseClassLoader(new URL[] { u }, this); -+ codeBaseLoader = new CodeBaseClassLoader(new URL[]{u}, this); - } else { - codeBaseLoader.addURL(u); - } -@@ -2036,11 +2122,12 @@ - * Returns a set of paths that indicate the Class-Path entries in the - * manifest file. The paths are rooted in the same directory as the - * originalJarPath. -+ * - * @param mf the manifest -- * @param originalJarPath the remote/original path of the jar containing -- * the manifest -- * @return a Set of String where each string is a path to the jar on -- * the original jar's classpath. -+ * @param originalJarPath the remote/original path of the jar containing the -+ * manifest -+ * @return a Set of String where each string is a path to the jar on the -+ * original jar's classpath. - */ - private Set getClassPathsFromManifest(Manifest mf, String originalJarPath) { - Set result = new HashSet<>(); -@@ -2069,20 +2156,21 @@ - } - return result; - } -- -+ - /** - * Increments loader use count by 1 -- * -+ * - * @throws SecurityException if caller is not trusted - */ - private void incrementLoaderUseCount() { - - // For use by trusted code only -- if (System.getSecurityManager() != null) -+ if (System.getSecurityManager() != null) { - System.getSecurityManager().checkPermission(new AllPermission()); -+ } - - // NB: There will only ever be one class-loader per unique-key -- synchronized ( getUniqueKeyLock(file.getUniqueKey()) ){ -+ synchronized (getUniqueKeyLock(file.getUniqueKey())) { - useCount++; - } - } -@@ -2105,8 +2193,8 @@ - try { - tracker.removeResource(eachJar.getLocation()); - } catch (Exception e) { -- OutputController.getLogger().log(e); -- OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Failed to remove resource from tracker, continuing.."); -+ OutputController.getLogger().log(e); -+ OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Failed to remove resource from tracker, continuing.."); - } - - File cachedFile = CacheUtil.getCacheFile(eachJar.getLocation(), null); -@@ -2144,9 +2232,11 @@ - - /** - * Manages DownloadService jars which are not mentioned in the JNLP file -+ * - * @param ref Path to the resource. - * @param version The version of resource. If null, no version is specified. -- * @param action The action to perform with the resource. Either DOWNLOADTOCACHE, REMOVEFROMCACHE, or CHECKCACHE. -+ * @param action The action to perform with the resource. Either -+ * DOWNLOADTOCACHE, REMOVEFROMCACHE, or CHECKCACHE. - * @return true if CHECKCACHE and the resource is cached. - */ - boolean manageExternalJars(URL ref, String version, DownloadAction action) { -@@ -2154,17 +2244,18 @@ - JNLPClassLoader foundLoader = LocateJnlpClassLoader.getLoaderByResourceUrl(this, ref, version); - Version resourceVersion = (version == null) ? null : new Version(version); - -- if (foundLoader != null) -+ if (foundLoader != null) { -+ approved = true; -+ } else if (ref.toString().startsWith(file.getNotNullProbalbeCodeBase().toString())) { - approved = true; -- -- else if (ref.toString().startsWith(file.getNotNullProbalbeCodeBase().toString())) -+ } else if (SecurityDesc.ALL_PERMISSIONS.equals(security.getSecurityType())) { - approved = true; -- else if (SecurityDesc.ALL_PERMISSIONS.equals(security.getSecurityType())) -- approved = true; -+ } - - if (approved) { -- if (foundLoader == null) -+ if (foundLoader == null) { - foundLoader = this; -+ } - - if (action == DownloadAction.DOWNLOAD_TO_CACHE) { - JARDesc jarToCache = new JARDesc(ref, resourceVersion, null, false, true, false, true); -@@ -2173,7 +2264,7 @@ - foundLoader.addNewJar(jarToCache, UpdatePolicy.FORCE); - - } else if (action == DownloadAction.REMOVE_FROM_CACHE) { -- JARDesc[] jarToRemove = { new JARDesc(ref, resourceVersion, null, false, true, false, true) }; -+ JARDesc[] jarToRemove = {new JARDesc(ref, resourceVersion, null, false, true, false, true)}; - foundLoader.removeJars(jarToRemove); - - } else if (action == DownloadAction.CHECK_CACHE) { -@@ -2185,21 +2276,22 @@ - - /** - * Decrements loader use count by 1 -- * -+ * - * If count reaches 0, loader is removed from list of available loaders -- * -+ * - * @throws SecurityException if caller is not trusted - */ - public void decrementLoaderUseCount() { - - // For use by trusted code only -- if (System.getSecurityManager() != null) -+ if (System.getSecurityManager() != null) { - System.getSecurityManager().checkPermission(new AllPermission()); -+ } - - String uniqueKey = file.getUniqueKey(); - - // NB: There will only ever be one class-loader per unique-key -- synchronized ( getUniqueKeyLock(uniqueKey) ) { -+ synchronized (getUniqueKeyLock(uniqueKey)) { - useCount--; - - if (useCount <= 0) { -@@ -2209,17 +2301,18 @@ - } - - /** -- * Returns an appropriate AccessControlContext for loading classes in -- * the running instance. -+ * Returns an appropriate AccessControlContext for loading classes in the -+ * running instance. - * - * The default context during class-loading only allows connection to - * codebase. However applets are allowed to load jars from arbitrary -- * locations and the codebase only access falls short if a class from -- * one location needs a class from another. -+ * locations and the codebase only access falls short if a class from one -+ * location needs a class from another. - * - * Given protected access since CodeBaseClassloader uses this function too. - * -- * @return The appropriate AccessControlContext for loading classes for this instance -+ * @return The appropriate AccessControlContext for loading classes for this -+ * instance - */ - public AccessControlContext getAccessControlContextForClassLoading() { - AccessControlContext context = AccessController.getContext(); -@@ -2244,7 +2337,7 @@ - // Permissions for all remote hosting urls - synchronized (jarLocationSecurityMap) { - for (URL u : jarLocationSecurityMap.keySet()) { -- permissions.add(new SocketPermission(UrlUtils.getHostAndPort(u), -+ permissions.add(new SocketPermission(UrlUtils.getHostAndPort(u), - "connect, accept")); - } - } -@@ -2259,26 +2352,27 @@ - - ProtectionDomain pd = new ProtectionDomain(null, permissions); - -- return new AccessControlContext(new ProtectionDomain[] { pd }); -+ return new AccessControlContext(new ProtectionDomain[]{pd}); - } -- -+ - public String getMainClass() { - return mainClass; - } -- -- -- -- /** -- * SecurityDelegate, in real usage, relies on having a "parent" JNLPClassLoader instance. -- * However, JNLPClassLoaders are very large, heavyweight, difficult-to-mock objects, which -- * means that unit testing on anything that uses a SecurityDelegate can become very difficult. -- * For example, JarCertVerifier is designed separated from the ClassLoader so it can be tested -- * in isolation. However, JCV needs some sort of access back to JNLPClassLoader instances to -- * be able to invoke setRunInSandbox(). The SecurityDelegate handles this, allowing JCV to be -- * tested without instantiating JNLPClassLoaders, by creating a fake SecurityDelegate that does -- * not require one. -+ -+ /** -+ * SecurityDelegate, in real usage, relies on having a "parent" -+ * JNLPClassLoader instance. However, JNLPClassLoaders are very large, -+ * heavyweight, difficult-to-mock objects, which means that unit testing on -+ * anything that uses a SecurityDelegate can become very difficult. For -+ * example, JarCertVerifier is designed separated from the ClassLoader so it -+ * can be tested in isolation. However, JCV needs some sort of access back -+ * to JNLPClassLoader instances to be able to invoke setRunInSandbox(). The -+ * SecurityDelegate handles this, allowing JCV to be tested without -+ * instantiating JNLPClassLoaders, by creating a fake SecurityDelegate that -+ * does not require one. - */ - public static interface SecurityDelegate { -+ - public boolean isPluginApplet(); - - public boolean userPromptedForPartialSigning(); -@@ -2305,10 +2399,11 @@ - } - - /** -- * Handles security decision logic for the JNLPClassLoader, eg which permission level to assign -- * to JARs. -+ * Handles security decision logic for the JNLPClassLoader, eg which -+ * permission level to assign to JARs. - */ - public static class SecurityDelegateImpl implements SecurityDelegate { -+ - private final JNLPClassLoader classLoader; - private boolean runInSandbox; - private boolean promptedForPartialSigning; -@@ -2331,27 +2426,25 @@ - return new SecurityDesc(classLoader.file, - SecurityDesc.SANDBOX_PERMISSIONS, - codebaseHost); -- } else { -- if (isPluginApplet()) { -- try { -- if (JarCertVerifier.isJarSigned(jarDesc, new PluginAppVerifier(), classLoader.tracker)) { -- return new SecurityDesc(classLoader.file, -- SecurityDesc.ALL_PERMISSIONS, -- codebaseHost); -- } else { -- return new SecurityDesc(classLoader.file, -- SecurityDesc.SANDBOX_PERMISSIONS, -- codebaseHost); -- } -- } catch (final Exception e) { -- OutputController.getLogger().log(e); -+ } else if (isPluginApplet()) { -+ try { -+ if (JarCertVerifier.isJarSigned(jarDesc, new PluginAppVerifier(), classLoader.tracker)) { -+ return new SecurityDesc(classLoader.file, -+ SecurityDesc.ALL_PERMISSIONS, -+ codebaseHost); -+ } else { - return new SecurityDesc(classLoader.file, - SecurityDesc.SANDBOX_PERMISSIONS, - codebaseHost); - } -- } else { -- return classLoader.file.getSecurity(); -+ } catch (final Exception e) { -+ OutputController.getLogger().log(e); -+ return new SecurityDesc(classLoader.file, -+ SecurityDesc.SANDBOX_PERMISSIONS, -+ codebaseHost); - } -+ } else { -+ return classLoader.file.getSecurity(); - } - } - -@@ -2367,8 +2460,7 @@ - SecurityDesc.SANDBOX_PERMISSIONS, - codebaseHost); - } -- } else { -- /* -+ } else /* - * Various combinations of the jars being signed and tags being - * present are possible. They are treated as follows - * -@@ -2379,21 +2471,27 @@ - * Unsigned Error - * Unsigned no Sandbox - * -- */ -- if (!runInSandbox && !classLoader.getSigning() -- && !classLoader.file.getSecurity().getSecurityType().equals(SecurityDesc.SANDBOX_PERMISSIONS)) { -- if (classLoader.jcv.allJarsSigned()) { -- throw new LaunchException(classLoader.file, null, R("LSFatal"), R("LCClient"), R("LSignedJNLPAppDifferentCerts"), R("LSignedJNLPAppDifferentCertsInfo")); -- } else { -- throw new LaunchException(classLoader.file, null, R("LSFatal"), R("LCClient"), R("LUnsignedJarWithSecurity"), R("LUnsignedJarWithSecurityInfo")); -- } -- } else if (!runInSandbox && classLoader.getSigning()) { -- return classLoader.file.getSecurity(); -+ */ if (!runInSandbox && !classLoader.getSigning() -+ && !classLoader.file.getSecurity().getSecurityType().equals(SecurityDesc.SANDBOX_PERMISSIONS)) { -+ if (classLoader.jcv.allJarsSigned()) { -+ LaunchException ex = new LaunchException(classLoader.file, null, R("LSFatal"), R("LCClient"), R("LSignedJNLPAppDifferentCerts"), R("LSignedJNLPAppDifferentCertsInfo")); -+ consultCertificateSecurityException(ex); -+ return consultResult(codebaseHost); - } else { -- return new SecurityDesc(classLoader.file, -- SecurityDesc.SANDBOX_PERMISSIONS, -- codebaseHost); -+ LaunchException ex = new LaunchException(classLoader.file, null, R("LSFatal"), R("LCClient"), R("LUnsignedJarWithSecurity"), R("LUnsignedJarWithSecurityInfo"));; -+ consultCertificateSecurityException(ex); -+ return consultResult(codebaseHost); - } -+ } else return consultResult(codebaseHost); -+ } -+ -+ private SecurityDesc consultResult(URL codebaseHost){ -+ if (!runInSandbox && classLoader.getSigning()) { -+ return classLoader.file.getSecurity(); -+ } else { -+ return new SecurityDesc(classLoader.file, -+ SecurityDesc.SANDBOX_PERMISSIONS, -+ codebaseHost); - } - } - -@@ -2470,7 +2568,7 @@ - } - - } -- -+ - - /* - * Helper class to expose protected URLClassLoader methods. -@@ -2487,7 +2585,7 @@ - public static class CodeBaseClassLoader extends URLClassLoader { - - JNLPClassLoader parentJNLPClassLoader; -- -+ - /** - * Classes that are not found, so that findClass can skip them next time - */ -@@ -2499,8 +2597,8 @@ - } - - @Override -- public void addURL(URL url) { -- super.addURL(url); -+ public void addURL(URL url) { -+ super.addURL(url); - } - - /* -@@ -2508,18 +2606,19 @@ - */ - Class findClassNonRecursive(final String name) throws ClassNotFoundException { - // If we have searched this path before, don't try again -- if (Arrays.equals(super.getURLs(), notFoundResources.get(name))) -+ if (Arrays.equals(super.getURLs(), notFoundResources.get(name))) { - throw new ClassNotFoundException(name); -+ } - - try { - return AccessController.doPrivileged( - new PrivilegedExceptionAction>() { -- public Class run() throws ClassNotFoundException { -- Class c = CodeBaseClassLoader.super.findClass(name); -- parentJNLPClassLoader.checkPartialSigningWithUser(); -- return c; -- } -- }, parentJNLPClassLoader.getAccessControlContextForClassLoading()); -+ public Class run() throws ClassNotFoundException { -+ Class c = CodeBaseClassLoader.super.findClass(name); -+ parentJNLPClassLoader.checkPartialSigningWithUser(); -+ return c; -+ } -+ }, parentJNLPClassLoader.getAccessControlContextForClassLoading()); - } catch (PrivilegedActionException pae) { - notFoundResources.put(name, super.getURLs()); - throw new ClassNotFoundException("Could not find class " + name, pae); -@@ -2542,11 +2641,12 @@ - - /** - * Returns the output of super.findLoadedClass(). -- * -+ * - * The method is renamed because ClassLoader.findLoadedClass() is final -- * -+ * - * @param name The name of the class to find -- * @return Output of ClassLoader.findLoadedClass() which is the class if found, null otherwise -+ * @return Output of ClassLoader.findLoadedClass() which is the class if -+ * found, null otherwise - * @see java.lang.ClassLoader#findLoadedClass(String) - */ - public Class findLoadedClassFromParent(String name) { -@@ -2555,7 +2655,7 @@ - - /** - * Returns JNLPClassLoader that encompasses this loader -- * -+ * - * @return parent JNLPClassLoader - */ - public JNLPClassLoader getParentJNLPClassLoader() { -@@ -2566,8 +2666,9 @@ - public Enumeration findResources(String name) throws IOException { - - // If we have searched this path before, don't try again -- if (Arrays.equals(super.getURLs(), notFoundResources.get(name))) -+ if (Arrays.equals(super.getURLs(), notFoundResources.get(name))) { - return (new Vector(0)).elements(); -+ } - - if (!name.startsWith("META-INF")) { - Enumeration urls = super.findResources(name); -@@ -2586,8 +2687,9 @@ - public URL findResource(String name) { - - // If we have searched this path before, don't try again -- if (Arrays.equals(super.getURLs(), notFoundResources.get(name))) -+ if (Arrays.equals(super.getURLs(), notFoundResources.get(name))) { - return null; -+ } - - URL url = null; - if (!name.startsWith("META-INF")) { -@@ -2595,12 +2697,12 @@ - final String fName = name; - url = AccessController.doPrivileged( - new PrivilegedExceptionAction() { -- public URL run() { -- return CodeBaseClassLoader.super.findResource(fName); -- } -- }, parentJNLPClassLoader.getAccessControlContextForClassLoading()); -+ public URL run() { -+ return CodeBaseClassLoader.super.findResource(fName); -+ } -+ }, parentJNLPClassLoader.getAccessControlContextForClassLoading()); - } catch (PrivilegedActionException pae) { -- } -+ } - - if (url == null) { - notFoundResources.put(name, super.getURLs()); -@@ -2612,6 +2714,5 @@ - return null; - } - } -- -- -+ - } -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java ---- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Tue Dec 18 11:22:16 2018 +0100 -@@ -19,6 +19,8 @@ - import static net.sourceforge.jnlp.runtime.Translator.R; - - import java.awt.EventQueue; -+import java.awt.GraphicsEnvironment; -+import java.awt.HeadlessException; - import java.io.File; - import java.io.FileInputStream; - import java.io.FileOutputStream; -@@ -48,7 +50,6 @@ - import javax.net.ssl.SSLSocketFactory; - import javax.net.ssl.TrustManager; - import javax.swing.JOptionPane; --import javax.swing.JWindow; - import javax.swing.UIManager; - import javax.swing.text.html.parser.ParserDelegator; - -@@ -272,7 +273,7 @@ - try { - SSLSocketFactory sslSocketFactory; - SSLContext context = SSLContext.getInstance("SSL"); -- KeyStore ks = KeyStores.getKeyStore(KeyStores.Level.USER, KeyStores.Type.CLIENT_CERTS); -+ KeyStore ks = KeyStores.getKeyStore(KeyStores.Level.USER, KeyStores.Type.CLIENT_CERTS).getKs(); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); - SecurityUtil.initKeyManagerFactory(kmf, ks); - TrustManager[] trust = new TrustManager[] { getSSLSocketTrustManager() }; -@@ -736,16 +737,24 @@ - //if (GraphicsEnvironment.isHeadless()) // jdk1.4+ only - // headless = true; - try { -- if ("true".equalsIgnoreCase(System.getProperty("java.awt.headless"))){ -+ if ("true".equalsIgnoreCase(System.getProperty("java.awt.headless"))) { - headless = true; - } - if (!headless) { -- try { -- new JWindow().getOwner(); -- } catch (Exception ex) { -- headless = true; -- OutputController.getLogger().log(ex); -- OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.R("HEADLESS_MISSCONFIGURED")); -+ boolean noCheck = Boolean.valueOf(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.IGNORE_HEADLESS_CHECK)); -+ if (noCheck) { -+ headless = false; -+ OutputController.getLogger().log(DeploymentConfiguration.IGNORE_HEADLESS_CHECK + " set to " + noCheck + ". Avoding headless check."); -+ } else { -+ try { -+ if (GraphicsEnvironment.isHeadless()) { -+ throw new HeadlessException(); -+ } -+ } catch (HeadlessException ex) { -+ headless = true; -+ OutputController.getLogger().log(ex); -+ OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.R("HEADLESS_MISSCONFIGURED")); -+ } - } - } - } catch (SecurityException ex) { -@@ -766,6 +775,7 @@ - * @return {@code true} if running on a Unix or Unix-like system (including - * Linux and *BSD) - */ -+ @Deprecated - public static boolean isUnix() { - String sep = System.getProperty("file.separator"); - return (sep != null && sep.equals("/")); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java ---- a/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java Tue Dec 18 11:22:16 2018 +0100 -@@ -23,12 +23,12 @@ - import java.security.AccessControlException; - import java.security.Permission; - --import javax.swing.JWindow; - - import net.sourceforge.jnlp.security.SecurityDialogs.AccessType; - import net.sourceforge.jnlp.services.ServiceUtil; - import net.sourceforge.jnlp.util.logging.OutputController; - import net.sourceforge.jnlp.util.WeakList; -+import net.sourceforge.swing.SwingUtils; - import sun.awt.AWTSecurityManager; - import sun.awt.AppContext; - -@@ -114,7 +114,8 @@ - // called for it (and not disposed). - - if (!JNLPRuntime.isHeadless()) { -- new JWindow().getOwner(); -+ /* is it really useful ? */ -+ SwingUtils.getOrCreateWindowOwner(); - } - - mainAppContext = AppContext.getAppContext(); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/runtime/Translator.java ---- a/netx/net/sourceforge/jnlp/runtime/Translator.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/runtime/Translator.java Tue Dec 18 11:22:16 2018 +0100 -@@ -20,6 +20,7 @@ - import java.util.Locale; - import java.util.MissingResourceException; - import java.util.ResourceBundle; -+import net.sourceforge.jnlp.config.DeploymentConfiguration; - - /** - * Utility class to provide simple methods to help localize messages -@@ -80,6 +81,20 @@ - public static String R(String message, Object... params) { - return getInstance().getMessage(message, params); - } -+ -+ /** -+ * convenient method to show VVPossibleBrowserValues with all four params -+ * -+ * @return translation of VVPossibleBrowserValues with all params in -+ */ -+ public static String VVPossibleBrowserValues() { -+ return R("VVPossibleBrowserValues", DeploymentConfiguration.LEGACY_WIN32_URL__HANDLER, -+ DeploymentConfiguration.BROWSER_ENV_VAR, -+ DeploymentConfiguration.INTERNAL_HTML, -+ DeploymentConfiguration.ALWAYS_ASK, -+ DeploymentConfiguration.KEY_BROWSER_PATH -+ ); -+ } - - - /** -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/runtime/html/browser/LinkingBrowser.java ---- a/netx/net/sourceforge/jnlp/runtime/html/browser/LinkingBrowser.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/runtime/html/browser/LinkingBrowser.java Tue Dec 18 11:22:16 2018 +0100 -@@ -46,7 +46,6 @@ - import static net.sourceforge.jnlp.runtime.JNLPRuntime.getConfiguration; - import net.sourceforge.jnlp.security.JNLPAuthenticator; - import net.sourceforge.jnlp.util.logging.JavaConsole; --import net.sourceforge.jnlp.util.logging.OutputController; - - public class LinkingBrowser extends JTabbedPane { - -@@ -92,11 +91,15 @@ - BrowserAwareProxySelector proxySelector = new BrowserAwareProxySelector(getConfiguration()); - proxySelector.initialize(); - ProxySelector.setDefault(proxySelector); -+ createFrame(url, socket, JFrame.EXIT_ON_CLOSE); -+ } -+ -+ public static void createFrame(String url, boolean socket, int action) { - HtmlBrowserPanel.warn(); - JFrame f = new JFrame(); - f.add(new LinkingBrowser(url, socket)); - f.pack(); -- f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); -+ f.setDefaultCloseOperation(action); - f.setVisible(true); - } - -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/KeyStores.java ---- a/netx/net/sourceforge/jnlp/security/KeyStores.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/KeyStores.java Tue Dec 18 11:22:16 2018 +0100 -@@ -33,8 +33,7 @@ - this exception to your version of the library, but you are not - obligated to do so. If you do not wish to do so, delete this - exception statement from your version. --*/ -- -+ */ - package net.sourceforge.jnlp.security; - - import java.io.File; -@@ -64,8 +63,26 @@ - */ - public final class KeyStores { - -+ public static class KeyStoreWithPath { -+ -+ private final KeyStore ks; -+ private final String path; -+ -+ public KeyStoreWithPath(KeyStore ks, String path) { -+ this.ks = ks; -+ this.path = path; -+ } -+ -+ public KeyStore getKs() { -+ return ks; -+ } -+ -+ public String getPath() { -+ return path; -+ } -+ } -+ - /* this gets turned into user-readable strings, see toUserReadableString */ -- - public enum Level { - USER, - SYSTEM, -@@ -79,10 +96,10 @@ - CLIENT_CERTS, - } - -- public static final Map keystoresPaths=new HashMap<>(); -+ public static final Map keystoresPaths = new HashMap<>(); - - private static final String KEYSTORE_TYPE = "JKS"; -- -+ - /** - * Returns a KeyStore corresponding to the appropriate level level (user or - * system) and type. -@@ -92,7 +109,7 @@ - * @param type the type of KeyStore desired - * @return a KeyStore containing certificates from the appropriate - */ -- public static final KeyStore getKeyStore(Level level, Type type) { -+ public static final KeyStoreWithPath getKeyStore(Level level, Type type) { - boolean create; - if (level == Level.USER) { - create = true; -@@ -112,7 +129,7 @@ - * @param create true if keystore can be created - * @return a KeyStore containing certificates from the appropriate - */ -- public static final KeyStore getKeyStore(Level level, Type type, boolean create) { -+ private static final KeyStoreWithPath getKeyStore(Level level, Type type, boolean create) { - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - sm.checkPermission(new AllPermission()); -@@ -124,11 +141,11 @@ - ks = createKeyStoreFromFile(new File(location), create); - //hashcode is used instead of instance so when no references are left - //to keystore, then this will not be blocker for garbage collection -- keystoresPaths.put(ks.hashCode(),location); -+ keystoresPaths.put(ks.hashCode(), location); - } catch (Exception e) { - OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e); - } -- return ks; -+ return new KeyStoreWithPath(ks, location); - } - - public static String getPathToKeystore(int k) { -@@ -148,22 +165,22 @@ - public static final KeyStore[] getCertKeyStores() { - List result = new ArrayList<>(10); - /* System-level JSSE certificates */ -- KeyStore ks = getKeyStore(Level.SYSTEM, Type.JSSE_CERTS); -+ KeyStore ks = getKeyStore(Level.SYSTEM, Type.JSSE_CERTS).getKs(); - if (ks != null) { - result.add(ks); - } - /* System-level certificates */ -- ks = getKeyStore(Level.SYSTEM, Type.CERTS); -+ ks = getKeyStore(Level.SYSTEM, Type.CERTS).getKs(); - if (ks != null) { - result.add(ks); - } - /* User-level JSSE certificates */ -- ks = getKeyStore(Level.USER, Type.JSSE_CERTS); -+ ks = getKeyStore(Level.USER, Type.JSSE_CERTS).getKs(); - if (ks != null) { - result.add(ks); - } - /* User-level certificates */ -- ks = getKeyStore(Level.USER, Type.CERTS); -+ ks = getKeyStore(Level.USER, Type.CERTS).getKs(); - if (ks != null) { - result.add(ks); - } -@@ -179,22 +196,22 @@ - public static final KeyStore[] getCAKeyStores() { - List result = new ArrayList<>(10); - /* System-level JSSE CA certificates */ -- KeyStore ks = getKeyStore(Level.SYSTEM, Type.JSSE_CA_CERTS); -+ KeyStore ks = getKeyStore(Level.SYSTEM, Type.JSSE_CA_CERTS).getKs(); - if (ks != null) { - result.add(ks); - } - /* System-level CA certificates */ -- ks = getKeyStore(Level.SYSTEM, Type.CA_CERTS); -+ ks = getKeyStore(Level.SYSTEM, Type.CA_CERTS).getKs(); - if (ks != null) { - result.add(ks); - } - /* User-level JSSE CA certificates */ -- ks = getKeyStore(Level.USER, Type.JSSE_CA_CERTS); -+ ks = getKeyStore(Level.USER, Type.JSSE_CA_CERTS).getKs(); - if (ks != null) { - result.add(ks); - } - /* User-level CA certificates */ -- ks = getKeyStore(Level.USER, Type.CA_CERTS); -+ ks = getKeyStore(Level.USER, Type.CA_CERTS).getKs(); - if (ks != null) { - result.add(ks); - } -@@ -211,12 +228,12 @@ - public static KeyStore[] getClientKeyStores() { - List result = new ArrayList<>(); - -- KeyStore ks = getKeyStore(Level.SYSTEM, Type.CLIENT_CERTS); -+ KeyStore ks = getKeyStore(Level.SYSTEM, Type.CLIENT_CERTS).getKs(); - if (ks != null) { - result.add(ks); - } - -- ks = getKeyStore(Level.USER, Type.CLIENT_CERTS); -+ ks = getKeyStore(Level.USER, Type.CLIENT_CERTS).getKs(); - if (ks != null) { - result.add(ks); - } -@@ -225,7 +242,8 @@ - } - - /** -- * Returns the location of a KeyStore corresponding to the given level and type. -+ * Returns the location of a KeyStore corresponding to the given level and -+ * type. - * - * @param level the specified level of the key store to be returned. - * @param type the specified type of the key store to be returned. -@@ -242,7 +260,7 @@ - case JSSE_CERTS: - return PathsAndFiles.SYS_JSSECERT; - case CERTS: -- return PathsAndFiles.SYS_CERT; -+ return PathsAndFiles.SYS_CERT; - case CLIENT_CERTS: - return PathsAndFiles.SYS_CLIENTCERT; - } -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/SecurityDialog.java ---- a/netx/net/sourceforge/jnlp/security/SecurityDialog.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/SecurityDialog.java Tue Dec 18 11:22:16 2018 +0100 -@@ -46,6 +46,8 @@ - import java.security.cert.X509Certificate; - - import javax.swing.JDialog; -+import java.awt.Window; -+import net.sourceforge.swing.SwingUtils; - - import net.sourceforge.jnlp.JNLPFile; - import net.sourceforge.jnlp.runtime.JNLPClassLoader.SecurityDelegate; -@@ -65,7 +67,6 @@ - import net.sourceforge.jnlp.security.dialogs.SingleCertInfoPane; - import net.sourceforge.jnlp.security.dialogs.ViwableDialog; - import net.sourceforge.jnlp.security.dialogs.apptrustwarningpanel.AppTrustWarningDialog; --import net.sourceforge.jnlp.util.ScreenFinder; - import net.sourceforge.jnlp.util.logging.OutputController; - - /** -@@ -216,7 +217,7 @@ - * @param parent the parent pane. - */ - public static void showSingleCertInfoDialog(X509Certificate c, -- JDialog parent) { -+ Window parent) { - SecurityDialog dialog = new SecurityDialog(DialogType.SINGLE_CERT_INFO, c); - dialog.getViwableDialog().setLocationRelativeTo(parent); - dialog.getViwableDialog().setModalityType(ModalityType.APPLICATION_MODAL); -@@ -227,12 +228,20 @@ - private void initDialog() { - String dialogTitle = createTitle(); - -+ // Note: ViwableDialog methods are defered until show(): - getViwableDialog().setTitle(dialogTitle); - getViwableDialog().setModalityType(ModalityType.MODELESS); - - getViwableDialog().setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); - -- installPanel(); -+ // Initialize panel now as its constructor may call getViwableDialog() defered methods -+ // to modify dialog state: -+ SwingUtils.invokeAndWait(new Runnable() { -+ @Override -+ public void run() { -+ installPanel(); -+ } -+ }); - - getViwableDialog().pack(); - getViwableDialog().centerDialog(); -@@ -251,11 +260,14 @@ - - @Override - public void windowOpened(WindowEvent e) { -- if (e.getSource() instanceof SecurityDialog) { -- SecurityDialog dialog = (SecurityDialog) e.getSource(); -- dialog.getViwableDialog().setResizable(true); -- dialog.setValue(null); -- } -+ getViwableDialog().setResizable(true); -+ SecurityDialog.this.setValue(null); -+ } -+ @Override -+ public void windowClosed(WindowEvent e) { -+ // called if the user closes the window directly (dispose on close) -+ // always dispose() to unlock message processing -+ getViwableDialog().dispose(); - } - }; - getViwableDialog().addWindowListener(adapter); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/SecurityDialogs.java ---- a/netx/net/sourceforge/jnlp/security/SecurityDialogs.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/SecurityDialogs.java Tue Dec 18 11:22:16 2018 +0100 -@@ -47,7 +47,7 @@ - import java.util.concurrent.Semaphore; - - import javax.swing.JDialog; --import javax.swing.SwingUtilities; -+import net.sourceforge.swing.SwingUtils; - - import net.sourceforge.jnlp.JNLPFile; - import net.sourceforge.jnlp.cache.Resource; -@@ -320,7 +320,7 @@ - /* - * If this is the event dispatch thread the use the hack - */ -- if (SwingUtilities.isEventDispatchThread()) { -+ if (SwingUtils.isEventDispatchThread()) { - /* - * Create a tiny modal dialog (which creates a new EventQueue for - * this AppContext, but blocks the original client EventQueue) and -@@ -329,6 +329,8 @@ - * continue processing - */ - final JDialog fakeDialog = new JDialog(); -+ fakeDialog.setName("FakeDialog"); -+ SwingUtils.info(fakeDialog); - fakeDialog.setSize(0, 0); - fakeDialog.setResizable(false); - fakeDialog.setModalityType(ModalityType.APPLICATION_MODAL); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/appletextendedsecurity/ExtendedAppletSecurityHelp.java ---- a/netx/net/sourceforge/jnlp/security/appletextendedsecurity/ExtendedAppletSecurityHelp.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/appletextendedsecurity/ExtendedAppletSecurityHelp.java Tue Dec 18 11:22:16 2018 +0100 -@@ -47,6 +47,7 @@ - import net.sourceforge.jnlp.runtime.Translator; - import net.sourceforge.jnlp.util.docprovider.TextsProvider; - import net.sourceforge.jnlp.util.logging.OutputController; -+import net.sourceforge.swing.SwingUtils; - - public class ExtendedAppletSecurityHelp extends javax.swing.JDialog implements HyperlinkListener { - -@@ -162,7 +163,7 @@ - } - - public static void main(String args[]) { -- java.awt.EventQueue.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - public void run() { - ExtendedAppletSecurityHelp dialog = new ExtendedAppletSecurityHelp(null, false); - dialog.setVisible(true); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/appletextendedsecurity/UnsignedAppletActionStorage.java ---- a/netx/net/sourceforge/jnlp/security/appletextendedsecurity/UnsignedAppletActionStorage.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/appletextendedsecurity/UnsignedAppletActionStorage.java Tue Dec 18 11:22:16 2018 +0100 -@@ -54,8 +54,8 @@ - - /** - * This methods iterates through records in -- * {@link net.sourceforge.jnlp.config.DeploymentConfiguration#getAppletTrustUserSettingsPath} or -- * {@link net.sourceforge.jnlp.config.DeploymentConfiguration#getAppletTrustGlobalSettingsPath}, and is matching -+ * net.sourceforge.jnlp.config.DeploymentConfiguration#getAppletTrustUserSettingsPath or -+ * net.sourceforge.jnlp.config.DeploymentConfiguration#getAppletTrustGlobalSettingsPath, and is matching - * regexes saved here against params. So parameters here are NOT regexes, - * but are matched against saved regexes. - *

    -@@ -103,12 +103,12 @@ - /** - * Will add new record. Note that regexes are stored for bases matching. - *

    -- * eg {@link UnsignedAppletActionEntry} which will deny some applet no matter of -- * page will be {@code new }{@link UnsignedAppletActionEntry#UnsignedAppletActionEntry UnsignedAppletActionEntry}{@code (}{@link ExecuteUnsignedApplet#NEVER}{@code , new }{@link java.util.Date#Date() Date()}{@code , null, null, someMain, someArchives)} -+ * eg UnsignedAppletActionEntry which will deny some applet no matter of -+ * page will be {@code new }{@link UnsignedAppletActionEntry#UnsignedAppletActionEntry UnsignedAppletActionEntry}{@code (} ExecuteUnsignedApplet#NEVER{@code , new }{@link java.util.Date#Date() Date()}{@code , null, null, someMain, someArchives)} - *

    - *

    - * eg {@link UnsignedAppletActionEntry} which will -- * allow all applets on page with same codebase will be {@code new }{@link UnsignedAppletActionEntry#UnsignedAppletActionEntry UnsignedAppletActionEntry}{@code (}{@link ExecuteUnsignedApplet#NEVER}{@code , new }{@link java.util.Date#Date() Date()}{@code , ".*", ".*", null, null);} -+ * allow all applets on page with same codebase will be {@code new }{@link UnsignedAppletActionEntry#UnsignedAppletActionEntry UnsignedAppletActionEntry}{@code (} ExecuteUnsignedApplet#NEVER {@code , new }{@link java.util.Date#Date() Date()}{@code , ".*", ".*", null, null);} - *

    - * @param item - */ -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/dialogs/AccessWarningPane.java ---- a/netx/net/sourceforge/jnlp/security/dialogs/AccessWarningPane.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/dialogs/AccessWarningPane.java Tue Dec 18 11:22:16 2018 +0100 -@@ -197,7 +197,7 @@ - fromLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - - -- final JButton run = new JButton(R("ButAllow")); -+ final JButton run = new JButton(R("ButOk")); - final JButton cancel = new JButton(R("ButCancel")); - - JPanel infoPanel = new JPanel(new GridBagLayout()); -@@ -241,23 +241,6 @@ - htmlPanelDesktop.setVisible(false); - c.gridy++; - } -- ActionListener al = new ActionListener() { -- -- @Override -- public void actionPerformed(ActionEvent e) { -- if (desktopCheck.isSelected() || menuCheck.isSelected()){ -- run.setEnabled(true); -- cancel.setEnabled(false); -- } else { -- run.setEnabled(false); -- cancel.setEnabled(true); -- } -- -- } -- }; -- desktopCheck.addActionListener(al); -- menuCheck.addActionListener(al); -- al.actionPerformed(null); - infoPanel.add(menuCheck,c); - c.gridy++; - if (!JNLPRuntime.isWebstartApplication()) { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java ---- a/netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/dialogs/CertWarningPane.java Tue Dec 18 11:22:16 2018 +0100 -@@ -343,7 +343,7 @@ - - public void saveCert() { - try { -- KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS); -+ KeyStore ks = KeyStores.getKeyStore(Level.USER, Type.CERTS).getKs(); - X509Certificate c = (X509Certificate) parent.getCertVerifier().getPublisher(null); - CertificateUtils.addToKeyStore(c, ks); - File keyStoreFile = KeyStores.getKeyStoreLocation(Level.USER, Type.CERTS).getFile(); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/dialogs/CertsInfoPane.java ---- a/netx/net/sourceforge/jnlp/security/dialogs/CertsInfoPane.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/dialogs/CertsInfoPane.java Tue Dec 18 11:22:16 2018 +0100 -@@ -185,25 +185,28 @@ - return jdkIndependentHexEncoderImpl(signature); - } catch (Exception ex) { - String s = "Failed to encode signature: " + ex.toString(); -- OutputController.getLogger().log(s); -+ OutputController.getLogger().log(OutputController.Level.WARNING_ALL, s); -+ OutputController.getLogger().log(ex); - return s; - } - } - - private String jdkIndependentHexEncoderImpl(byte[] signature) throws Exception { -- // jdk8 is using sun.misc.HexDumpEncoder, -- // jdk9 is using sun.security.util.HexDumpEncoder -- Class clazz; - try { -- clazz = Class.forName("sun.security.util.HexDumpEncoder"); -- } catch (ClassNotFoundException ex) { -- OutputController.getLogger().log("Using jdk8's HexDumpEncoder"); -- clazz = Class.forName("sun.misc.HexDumpEncoder"); -+ OutputController.getLogger().log("trying jdk9's HexDumpEncoder"); -+ Class clazz = Class.forName("sun.security.util.HexDumpEncoder"); -+ Object encoder = clazz.newInstance(); -+ Method m = clazz.getDeclaredMethod("encodeBuffer", byte[].class); -+ //convert our signature into a nice human-readable form. -+ return (String) m.invoke(encoder, signature); -+ } catch (Exception ex) { -+ OutputController.getLogger().log("trying jdk8's HexDumpEncoder"); -+ Class clazz = Class.forName("sun.misc.HexDumpEncoder"); -+ Object encoder = clazz.newInstance(); -+ Method m = clazz.getMethod("encode", byte[].class); -+ //convert our signature into a nice human-readable form. -+ return (String) m.invoke(encoder, signature); - } -- Object encoder = clazz.newInstance(); -- Method m = clazz.getDeclaredMethod("encodeBuffer", byte[].class); -- //convert our signature into a nice human-readable form. -- return (String) m.invoke(encoder, signature); - } - - /** -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/dialogs/ViwableDialog.java ---- a/netx/net/sourceforge/jnlp/security/dialogs/ViwableDialog.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/dialogs/ViwableDialog.java Tue Dec 18 11:22:16 2018 +0100 -@@ -45,6 +45,7 @@ - import java.util.List; - import java.util.concurrent.CopyOnWriteArrayList; - import javax.swing.JDialog; -+import net.sourceforge.swing.SwingUtils; - import net.sourceforge.jnlp.util.ImageResources; - import net.sourceforge.jnlp.util.ScreenFinder; - -@@ -57,18 +58,23 @@ - */ - public class ViwableDialog { - -- private JDialog jd; -+ private JDialog jd = null; - List operations = new ArrayList(); - - public ViwableDialog() { - } - -- private JDialog crateJDialog() { -+ private JDialog createJDialog() { - jd = new JDialog(); -+ jd.setName("ViwableDialog"); -+ SwingUtils.info(jd); - jd.setIconImages(ImageResources.INSTANCE.getApplicationImages()); -+ - for (Runnable operation : operations) { - operation.run(); - } -+ // prune operations. May throw NPE if operations used after createJDialog() -+ operations = null; - return jd; - } - -@@ -100,10 +106,15 @@ - } - - public void show() { -- if (jd == null) { -- jd = crateJDialog(); -- } -- jd.setVisible(true); -+ SwingUtils.invokeAndWait(new Runnable() { -+ @Override -+ public void run() { -+ if (jd == null) { -+ jd = createJDialog(); -+ } -+ jd.setVisible(true); -+ } -+ }); - } - - /** -@@ -111,9 +122,13 @@ - * choice (Ok, Cancel, etc) or closed the window - */ - public void dispose() { -- notifySelectionMade(); -+ // avoid reentrance: - if (jd != null) { -+ notifySelectionMade(); -+ - jd.dispose(); -+ // recycle: -+ jd = null; - } - } - -@@ -132,7 +147,7 @@ - /** - * Adds an {@link ActionListener} which will be notified if the user makes a - * choice using this SecurityDialog. The listener should use -- * {@link #getValue()} to actually get the user's response. -+ * getValue() to actually get the user's response. - * - * @param listener another action listener to be listen to - */ -@@ -190,12 +205,10 @@ - } - - public void setResizable(final boolean b) { -- operations.add(new Runnable() { -- @Override -- public void run() { -- jd.setResizable(b); -- } -- }); -+ // not defered: called when alive -+ if (jd != null) { -+ jd.setResizable(b); -+ } - } - - public void addWindowListener(final WindowAdapter adapter) { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java ---- a/netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/policyeditor/PolicyEditor.java Tue Dec 18 11:22:16 2018 +0100 -@@ -57,7 +57,6 @@ - import java.io.FileNotFoundException; - import java.io.IOException; - import java.lang.ref.WeakReference; --import java.lang.reflect.InvocationTargetException; - import java.net.MalformedURLException; - import java.net.URI; - import java.net.URISyntaxException; -@@ -96,7 +95,6 @@ - import javax.swing.KeyStroke; - import javax.swing.ListSelectionModel; - import javax.swing.ScrollPaneConstants; --import javax.swing.SwingUtilities; - import javax.swing.SwingWorker; - import javax.swing.UIManager; - import javax.swing.WindowConstants; -@@ -120,6 +118,7 @@ - import net.sourceforge.jnlp.util.docprovider.formatters.formatters.PlainTextFormatter; - import net.sourceforge.jnlp.util.logging.OutputController; - import net.sourceforge.jnlp.util.optionparser.OptionParser; -+import net.sourceforge.swing.SwingUtils; - import sun.security.provider.PolicyParser; - - /** -@@ -460,7 +459,7 @@ - viewCustomButtonAction = new ActionListener() { - @Override - public void actionPerformed(final ActionEvent e) { -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - final PolicyIdentifier policyIdentifier = getSelectedPolicyIdentifier(); -@@ -505,7 +504,7 @@ - closeButtonAction = new ActionListener() { - @Override - public void actionPerformed(final ActionEvent event) { -- final Window parentWindow = SwingUtilities.getWindowAncestor(PolicyEditor.this); -+ final Window parentWindow = SwingUtils.getWindowAncestor(PolicyEditor.this); - if (parentWindow instanceof PolicyEditorWindow) { - ((PolicyEditorWindow) parentWindow).quit(); - } -@@ -587,10 +586,10 @@ - } - - private void setParentWindowTitle(final String title) { -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { -- final Window parent = SwingUtilities.getWindowAncestor(PolicyEditor.this); -+ final Window parent = SwingUtils.getWindowAncestor(PolicyEditor.this); - if (!(parent instanceof PolicyEditorWindow)) { - return; - } -@@ -839,7 +838,7 @@ - return; - } - policyEditorController.addIdentifier(identifier); -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - listModel.clear(); -@@ -880,7 +879,7 @@ - * or when the user presses cancel. - */ - public void addNewIdentifierInteractive() { -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - final PolicyIdentifier identifier = promptForPolicyIdentifier(PolicyIdentifier.ALL_APPLETS_IDENTIFIER); -@@ -936,7 +935,7 @@ - } - policyEditorController.removeIdentifier(identifier); - final int fIndex = previousIndex; -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - listModel.removeElement(identifier); -@@ -1047,37 +1046,17 @@ - policyEditorController.clearCustomIdentifier(identifier); - } - -- private void invokeRunnableOrEnqueueLater(final Runnable runnable) { -- if (SwingUtilities.isEventDispatchThread()) { -- runnable.run(); -- } else { -- SwingUtilities.invokeLater(runnable); -- } -- } -- -- private void invokeRunnableOrEnqueueAndWait(final Runnable runnable) throws InvocationTargetException, InterruptedException { -- if (SwingUtilities.isEventDispatchThread()) { -- runnable.run(); -- } else { -- SwingUtilities.invokeAndWait(runnable); -- } -- } -- - /** - * Update the checkboxes to show the permissions granted to the specified identifier - * @param identifier whose permissions to display - */ - private void updateCheckboxes(final PolicyIdentifier identifier) { -- try { -- invokeRunnableOrEnqueueAndWait(new Runnable() { -- @Override -- public void run() { -- updateCheckboxesImpl(identifier); -- } -- }); -- } catch (final InterruptedException | InvocationTargetException ex) { -- OutputController.getLogger().log(ex); -- } -+ SwingUtils.invokeAndWait(new Runnable() { -+ @Override -+ public void run() { -+ updateCheckboxesImpl(identifier); -+ } -+ }); - } - - private void updateCheckboxesImpl(final PolicyIdentifier identifier) { -@@ -1461,7 +1440,7 @@ - - void setChangesMade(final boolean b) { - policyEditorController.setChangesMade(b); -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - setParentWindowTitle(getWindowTitleForStatus()); -@@ -1529,14 +1508,14 @@ - FileUtils.showReadOnlyDialog(PolicyEditor.this); - } - -- final Window parentWindow = SwingUtilities.getWindowAncestor(this); -+ final Window parentWindow = SwingUtils.getWindowAncestor(this); - final JDialog progressIndicator = new IndeterminateProgressDialog(parentWindow, "Loading..."); - final SwingWorker openPolicyFileWorker = new SwingWorker() { - @Override - protected Void doInBackground() throws Exception { - try { - if (parentWindow != null) { -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - progressIndicator.setLocationRelativeTo(parentWindow); -@@ -1590,14 +1569,14 @@ - break; - } - -- final Window parentWindow = SwingUtilities.getWindowAncestor(this); -+ final Window parentWindow = SwingUtils.getWindowAncestor(this); - final JDialog progressIndicator = new IndeterminateProgressDialog(parentWindow, "Saving..."); - final SwingWorker savePolicyFileWorker = new SwingWorker() { - @Override - public Void doInBackground() throws Exception { - try { - if (parentWindow != null) { -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - progressIndicator.setLocationRelativeTo(parentWindow); -@@ -1631,7 +1610,7 @@ - // This dialog is often displayed when closing the editor, and so PolicyEditor - // may already be disposed when this dialog appears. Give a weak reference so - // that this dialog doesn't prevent the JVM from exiting -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - JOptionPane.showMessageDialog(parentPolicyEditor.get(), R("PEChangesSaved")); -@@ -1646,7 +1625,7 @@ - // This dialog is often displayed when closing the editor, and so PolicyEditor - // may already be disposed when this dialog appears. Give a weak reference so - // that this dialog doesn't prevent the JVM from exiting -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - JOptionPane.showMessageDialog(parentPolicyEditor.get(), R("PECouldNotSave"), R("Error"), JOptionPane.ERROR_MESSAGE); -@@ -1655,7 +1634,7 @@ - } - - private void showClipboardErrorDialog() { -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - JOptionPane.showMessageDialog(parentPolicyEditor.get(), R("PEClipboardError"), R("Error"), JOptionPane.ERROR_MESSAGE); -@@ -1664,7 +1643,7 @@ - } - - private void showInvalidPolicyExceptionDialog(final PolicyIdentifier identifier) { -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - JOptionPane.showMessageDialog(parentPolicyEditor.get(), R("PEInvalidPolicy", identifier.toString()), R("Error"), JOptionPane.ERROR_MESSAGE); -@@ -1673,7 +1652,7 @@ - } - - private void showCouldNotAccessClipboardDialog() { -- invokeRunnableOrEnqueueLater(new Runnable() { -+ SwingUtils.invokeRunnableOrEnqueueLater(new Runnable() { - @Override - public void run() { - JOptionPane.showMessageDialog(parentPolicyEditor.get(), R("PEClipboardAccessError"), R("Error"), JOptionPane.ERROR_MESSAGE); -@@ -1720,7 +1699,7 @@ - private void toggleExpandedCheckboxGroupPanel(final JPanel groupPanel) { - groupPanel.setVisible(!groupPanel.isVisible()); - PolicyEditor.this.validate(); -- final Window w = SwingUtilities.getWindowAncestor(PolicyEditor.this); -+ final Window w = SwingUtils.getWindowAncestor(PolicyEditor.this); - if (w != null) { - w.pack(); - } -@@ -1734,6 +1713,9 @@ - * -help will print a help message and immediately return (no editor instance opens) - */ - public static void main(final String[] args) { -+ // setup Swing EDT tracing: -+ SwingUtils.setup(); -+ - final OptionParser optionParser = new OptionParser(args, OptionsDefinitions.getPolicyEditorOptions()); - - if (optionParser.hasOption(OptionsDefinitions.OPTIONS.VERBOSE)) { -@@ -1767,7 +1749,7 @@ - final String signedBy = getSignedByArgument(optionParser); - final Set principals = getPrincipalsArgument(optionParser); - -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - final PolicyEditorWindow frame = getPolicyEditorFrame(filepath); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java ---- a/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificatePane.java Tue Dec 18 11:22:16 2018 +0100 -@@ -59,7 +59,6 @@ - import javax.swing.JButton; - import javax.swing.JComboBox; - import javax.swing.JComponent; --import javax.swing.JDialog; - import javax.swing.JFileChooser; - import javax.swing.JLabel; - import javax.swing.JOptionPane; -@@ -68,9 +67,12 @@ - import javax.swing.JScrollPane; - import javax.swing.JTabbedPane; - import javax.swing.JTable; -+import javax.swing.JTextField; -+import java.awt.Window; - import javax.swing.event.ChangeEvent; - import javax.swing.event.ChangeListener; - import javax.swing.table.DefaultTableModel; -+import net.sourceforge.jnlp.runtime.JNLPRuntime; - - import net.sourceforge.jnlp.security.CertificateUtils; - import net.sourceforge.jnlp.security.KeyStores; -@@ -104,6 +106,7 @@ - }; - - JTabbedPane tabbedPane; -+ JTextField certPath = new JTextField(); - private final JTable userTable; - private final JTable systemTable; - private JComboBox certificateTypeCombo; -@@ -113,16 +116,16 @@ - /** JComponents that should be disbled for system store */ - private final List disableForSystem; - -- private JDialog parent; -+ private Window parent; - private JComponent defaultFocusComponent = null; - - /** - * The Current KeyStore. Only one table/tab is visible for interaction to - * the user. This KeyStore corresponds to that. - */ -- private KeyStore keyStore = null; -+ private KeyStores.KeyStoreWithPath keyStore = null; - -- public CertificatePane(JDialog parent) { -+ public CertificatePane(Window parent) { - super(); - this.parent = parent; - -@@ -229,8 +232,11 @@ - } - - tablePanel.add(tabbedPane, BorderLayout.CENTER); -- tablePanel.add(buttonPanel, BorderLayout.SOUTH); -- -+ JPanel buttonPanelWrapper = new JPanel(new BorderLayout()); -+ certPath.setEditable(false); -+ buttonPanelWrapper.add(certPath, BorderLayout.CENTER); -+ buttonPanelWrapper.add(buttonPanel, BorderLayout.EAST); -+ tablePanel.add(buttonPanelWrapper, BorderLayout.SOUTH); - main.add(certificateTypePanel, BorderLayout.NORTH); - main.add(tablePanel, BorderLayout.CENTER); - -@@ -241,6 +247,11 @@ - closeButton.addActionListener(new CloseButtonListener()); - defaultFocusComponent = closeButton; - closePanel.add(closeButton, BorderLayout.EAST); -+ -+ JButton openAll = new JButton(R("ButLunchFullItwSettings")); -+ openAll.addActionListener(new FullSettingsButtonListener()); -+ closePanel.add(openAll, BorderLayout.WEST); -+ - main.add(closePanel, BorderLayout.SOUTH); - } - -@@ -259,9 +270,9 @@ - try { - - //Get all of the X509Certificates and put them into an ArrayList -- aliases = keyStore.aliases(); -+ aliases = keyStore.getKs().aliases(); - while (aliases.hasMoreElements()) { -- Certificate c = keyStore.getCertificate(aliases.nextElement()); -+ Certificate c = keyStore.getKs().getCertificate(aliases.nextElement()); - if (c instanceof X509Certificate) { - certs.add((X509Certificate) c); - } -@@ -289,8 +300,20 @@ - private void repopulateTables() { - initializeKeyStore(); - readKeyStore(); -+ try { -+ File src = new File(keyStore.getPath()); -+ File resolved = src.getCanonicalFile(); -+ if (resolved.equals(src)) { -+ certPath.setText(keyStore.getPath()); -+ OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, keyStore.getPath()); -+ } else { -+ certPath.setText(keyStore.getPath() + " -> " + resolved.getCanonicalPath()); -+ OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, keyStore.getPath() + " -> " + resolved.getCanonicalPath()); -+ } -+ } catch (Exception ex) { -+ OutputController.getLogger().log(ex); -+ } - DefaultTableModel tableModel = new DefaultTableModel(issuedToAndBy, columnNames); -- - userTable.setModel(tableModel); - - tableModel = new DefaultTableModel(issuedToAndBy, columnNames); -@@ -380,7 +403,7 @@ - int returnVal = chooser.showOpenDialog(parent); - if (returnVal == JFileChooser.APPROVE_OPTION) { - try { -- KeyStore ks = keyStore; -+ KeyStore ks = keyStore.getKs(); - if (currentKeyStoreType == KeyStores.Type.CLIENT_CERTS) { - char[] password = getPassword(R("CVImportPasswordMessage")); - if (password != null) { -@@ -428,16 +451,16 @@ - JFileChooser chooser = new JFileChooser(); - int returnVal = chooser.showOpenDialog(parent); - if (returnVal == JFileChooser.APPROVE_OPTION) { -- String alias = keyStore.getCertificateAlias(certs -+ String alias = keyStore.getKs().getCertificateAlias(certs - .get(selectedRow)); - if (alias != null) { - if (currentKeyStoreType == KeyStores.Type.CLIENT_CERTS) { - char[] password = getPassword(R("CVExportPasswordMessage")); - if (password != null) { -- CertificateUtils.dumpPKCS12(alias, chooser.getSelectedFile(), keyStore, password); -+ CertificateUtils.dumpPKCS12(alias, chooser.getSelectedFile(), keyStore.getKs(), password); - } - } else { -- Certificate c = keyStore.getCertificate(alias); -+ Certificate c = keyStore.getKs().getCertificate(alias); - PrintStream ps = new PrintStream(chooser.getSelectedFile().getAbsolutePath()); - CertificateUtils.dump(c, ps); - } -@@ -469,7 +492,7 @@ - int selectedRow = table.getSelectedRow(); - - if (selectedRow != -1) { -- String alias = keyStore.getCertificateAlias(certs.get(selectedRow)); -+ String alias = keyStore.getKs().getCertificateAlias(certs.get(selectedRow)); - if (alias != null) { - - int i = JOptionPane.showConfirmDialog(parent, -@@ -477,12 +500,12 @@ - R("CVRemoveConfirmTitle"), - JOptionPane.YES_NO_OPTION); - if (i == 0) { -- keyStore.deleteEntry(alias); -+ keyStore.getKs().deleteEntry(alias); - File keyStoreFile = KeyStores.getKeyStoreLocation(currentKeyStoreLevel, currentKeyStoreType).getFile(); - if (!keyStoreFile.isFile()) { - FileUtils.createRestrictedFile(keyStoreFile, true); - } -- SecurityUtil.storeKeyStore(keyStore, keyStoreFile); -+ SecurityUtil.storeKeyStore(keyStore.getKs(), keyStoreFile); - } - } - repopulateTables(); -@@ -520,7 +543,22 @@ - private class CloseButtonListener implements ActionListener { - @Override - public void actionPerformed(ActionEvent e) { -- parent.dispose(); -+ JNLPRuntime.exit(0); -+ } -+ } -+ -+ private class FullSettingsButtonListener implements ActionListener { -+ -+ @Override -+ public void actionPerformed(ActionEvent e) { -+ try { -+ net.sourceforge.jnlp.controlpanel.ControlPanel.main(new String[0]); -+ parent.dispose(); -+ } catch (Exception ex) { -+ OutputController.getLogger().log(ex); -+ JOptionPane.showMessageDialog(parent, ex); -+ -+ } - } - } - -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java ---- a/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Tue Dec 18 11:22:16 2018 +0100 -@@ -41,20 +41,17 @@ - - import java.awt.BorderLayout; - import java.awt.Container; --import java.awt.Dimension; --import java.awt.Frame; --import java.awt.Toolkit; - import java.awt.event.WindowAdapter; - import java.awt.event.WindowEvent; - --import javax.swing.JDialog; --import javax.swing.UIManager; -+import javax.swing.JFrame; - - import net.sourceforge.jnlp.runtime.JNLPRuntime; - import net.sourceforge.jnlp.util.ImageResources; - import net.sourceforge.jnlp.util.ScreenFinder; -+import net.sourceforge.swing.SwingUtils; - --public class CertificateViewer extends JDialog { -+public class CertificateViewer extends JFrame { - - private boolean initialized = false; - private static final String dialogTitle = R("CVCertificateViewer"); -@@ -62,7 +59,10 @@ - CertificatePane panel; - - public CertificateViewer() { -- super((Frame) null, dialogTitle, true); -+ super(dialogTitle); -+ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); -+ this.setName("CertificateViewer"); -+ SwingUtils.info(this); - setIconImages(ImageResources.INSTANCE.getApplicationImages()); - - Container contentPane = getContentPane(); -@@ -98,17 +98,21 @@ - ScreenFinder.centerWindowsToCurrentScreen(this); - } - -- public static void showCertificateViewer() throws Exception { -+ private static void showCertificateViewer() { - JNLPRuntime.initialize(true); - - CertificateViewer cv = new CertificateViewer(); - cv.setResizable(true); - cv.centerDialog(); - cv.setVisible(true); -- cv.dispose(); - } - - public static void main(String[] args) throws Exception { -- CertificateViewer.showCertificateViewer(); -+ SwingUtils.invokeAndWait(new Runnable() { -+ @Override -+ public void run() { -+ CertificateViewer.showCertificateViewer(); -+ } -+ }); - } - } -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/services/XBasicService.java ---- a/netx/net/sourceforge/jnlp/services/XBasicService.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/services/XBasicService.java Tue Dec 18 11:22:16 2018 +0100 -@@ -13,54 +13,68 @@ - // You should have received a copy of the GNU Lesser General Public - // License along with this library; if not, write to the Free Software - // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -- - package net.sourceforge.jnlp.services; - -+import java.awt.BorderLayout; -+import java.awt.Color; -+import java.awt.Desktop; -+import java.awt.GridLayout; -+import java.awt.event.ActionEvent; -+import java.awt.event.ActionListener; -+import java.awt.event.WindowAdapter; -+import java.awt.event.WindowEvent; -+import java.awt.event.WindowListener; - import static net.sourceforge.jnlp.runtime.Translator.R; - - import java.io.IOException; --import java.net.HttpURLConnection; - import java.net.MalformedURLException; - import java.net.URL; --import java.net.URLConnection; -+import java.util.StringTokenizer; - - import javax.jnlp.BasicService; --import javax.swing.JOptionPane; -+import javax.swing.JButton; -+import javax.swing.JCheckBox; -+import javax.swing.JDialog; -+import javax.swing.JFrame; -+import javax.swing.JLabel; - import javax.swing.JPanel; -+import javax.swing.JScrollPane; -+import javax.swing.JTextArea; -+import javax.swing.JTextField; -+import javax.swing.event.DocumentEvent; -+import javax.swing.event.DocumentListener; - - import net.sourceforge.jnlp.InformationDesc; - import net.sourceforge.jnlp.JARDesc; - import net.sourceforge.jnlp.JNLPFile; --import net.sourceforge.jnlp.Launcher; -+import net.sourceforge.jnlp.config.BasicValueValidators; -+import static net.sourceforge.jnlp.config.BasicValueValidators.verifyFileOrCommand; - import net.sourceforge.jnlp.config.DeploymentConfiguration; - import net.sourceforge.jnlp.runtime.ApplicationInstance; - import net.sourceforge.jnlp.runtime.JNLPRuntime; -+import net.sourceforge.jnlp.runtime.Translator; -+import net.sourceforge.jnlp.runtime.html.browser.LinkingBrowser; - import net.sourceforge.jnlp.util.StreamUtils; - import net.sourceforge.jnlp.util.logging.OutputController; -+import net.sourceforge.swing.SwingUtils; - - /** - * The BasicService JNLP service. - * -- * @author Jon A. Maxwell (JAM) - initial author -+ * @author Jon A. Maxwell -+ * (JAM) - initial author - * @version $Revision: 1.10 $ - */ - class XBasicService implements BasicService { - -- /** command used to exec the native browser */ -- private String command = null; -- -- /** whether the command was loaded / prompted for */ -- private boolean initialized = false; -- - protected XBasicService() { - } - - /** -- * Returns the codebase of the application, applet, or -- * installer. If the codebase was not specified in the JNLP -- * element then the main JAR's location is returned. If no main -- * JAR was specified then the location of the JAR containing the -- * main class is returned. -+ * Returns the codebase of the application, applet, or installer. If the -+ * codebase was not specified in the JNLP element then the main JAR's -+ * location is returned. If no main JAR was specified then the location of -+ * the JAR containing the main class is returned. - */ - @Override - public URL getCodeBase() { -@@ -70,13 +84,15 @@ - JNLPFile file = app.getJNLPFile(); - - // return the codebase. -- if (file.getCodeBase() != null) -+ if (file.getCodeBase() != null) { - return file.getCodeBase(); -+ } - - // else return the main JAR's URL. - JARDesc mainJar = file.getResources().getMainJAR(); -- if (mainJar != null) -+ if (mainJar != null) { - return mainJar.getLocation(); -+ } - - // else find JAR where main class was defined. - // -@@ -101,8 +117,8 @@ - } - - /** -- * Return the first URL from the jnlp file -- * Or a default URL if no url found in JNLP file -+ * Return the first URL from the jnlp file Or a default URL if no url found -+ * in JNLP file - */ - private URL findFirstURLFromJNLPFile() { - -@@ -150,9 +166,8 @@ - */ - @Override - public boolean isWebBrowserSupported() { -- initialize(); -- -- return command != null; -+ //there is hardly anything our impl can not handle -+ return true; - } - - /** -@@ -162,133 +177,238 @@ - */ - @Override - public boolean showDocument(URL url) { -- initialize(); -- -- if (url.toString().endsWith(".jnlp")) { -- try { -- new Launcher(false).launchExternal(url); -- return true; -- } catch (Exception ex) { -- return false; -- } -- } -+ try { -+// if (url.toString().endsWith(".jnlp")) { -+// try { -+// new Launcher(false).launchExternal(url); -+// return true; -+// } catch (Exception ex) { -+// return false; -+// } -+// } -+// Ignorance of this code is the only regression against original code (if you asume msot of the jnlps havejnlp suffix...) we had -+// anyway, also jnlp protocol should be handled via this, so while this can be set via -+// ALWAYS-ASK, or directly via BROWSER of deployment.browser.path , it still should be better then it was -+// in all cases, the mime recognition is much harder then .jnlp suffix - -- if (command != null) { -- try { -- // this is bogus because the command may require options; -- // should use a StreamTokenizer or similar to get tokens -- // outside of quotes. -- Runtime.getRuntime().exec(command + " " + url.toString()); -- //Runtime.getRuntime().exec(new String[]{command,url.toString()}); -- -- return true; -- } catch (IOException ex) { -- OutputController.getLogger().log(ex); -- } -- } -- -- return false; -- } -+ String urls = url.toExternalForm(); -+ OutputController.getLogger().log("showDocument for: " + urls); - -- private void initialize() { -- if (initialized) -- return; -- initialized = true; -- initializeBrowserCommand(); -- OutputController.getLogger().log("browser is " + command); -- } -- -- /** -- * Initializes {@link #command} to launch a browser -- */ -- private void initializeBrowserCommand() { -- if (JNLPRuntime.isWindows()) { -- command = "rundll32 url.dll,FileProtocolHandler "; -- } else if (JNLPRuntime.isUnix()) { - DeploymentConfiguration config = JNLPRuntime.getConfiguration(); -- command = config.getProperty(DeploymentConfiguration.KEY_BROWSER_PATH); -+ String command = config.getProperty(DeploymentConfiguration.KEY_BROWSER_PATH); -+ //for various debugging -+ //command=DeploymentConfiguration.ALWAYS_ASK; - if (command != null) { -- return; -+ OutputController.getLogger().log(DeploymentConfiguration.KEY_BROWSER_PATH + " located. Using: " + command); -+ return exec(command, urls); - } -- -- if (posixCommandExists("xdg-open")) { -- command = "xdg-open"; -- return; -- } -- -- if (posixCommandExists(System.getenv("BROWSER"))) { -- command = System.getenv("BROWSER"); -- return; -+ if (System.getenv(DeploymentConfiguration.BROWSER_ENV_VAR) != null) { -+ command = System.getenv(DeploymentConfiguration.BROWSER_ENV_VAR); -+ OutputController.getLogger().log("variable " + DeploymentConfiguration.BROWSER_ENV_VAR + " located. Using: " + command); -+ return exec(command, urls); - } -- -- while (true) { -- command = promptForCommand(command); -- if (command != null && posixCommandExists(command)) { -- config.setProperty(DeploymentConfiguration.KEY_BROWSER_PATH, command); -- try { -- config.save(); -- } catch (IOException e) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e); -- } -- break; -+ if (JNLPRuntime.isHeadless() || !Desktop.isDesktopSupported()) { -+ command = promptForCommand(urls, false); -+ return exec(command, urls); -+ } else { -+ if (Desktop.isDesktopSupported()) { -+ OutputController.getLogger().log("using default browser"); -+ Desktop.getDesktop().browse(url.toURI()); -+ return true; -+ } else { -+ OutputController.getLogger().log("dont know what to do"); -+ return false; - } - } -- } else { -- DeploymentConfiguration config = JNLPRuntime.getConfiguration(); -- command = config.getProperty(DeploymentConfiguration.KEY_BROWSER_PATH); -- -- if (command == null) { // prompt & store -- command = promptForCommand(null); -- -- if (command != null) { -- config.setProperty(DeploymentConfiguration.KEY_BROWSER_PATH, command); -- try { -- config.save(); -- } catch (IOException e) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e); -- } -- } -- } -+ } catch (Exception e) { -+ OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, e.toString()); -+ OutputController.getLogger().log(e); -+ return false; - } - } - -- /** -- * Check that a command exists on a posix-like system -- * @param command the command to check -- * @return true if the command exists -- */ -- private boolean posixCommandExists(String command) { -- if (command == null || command.trim().length() == 0) { -- return false; -- } -- -- command = command.trim(); -- if (command.contains("\n") || command.contains("\r")) { -- return false; -- } -- -+ //cmd form user can contains spaces, wuotes and so... now we are relying on default dummy impl -+ private boolean exec(String cmd, String url) { - try { -- Process p = Runtime.getRuntime().exec(new String[] { "bash", "-c", "type " + command }); -+ if (cmd == null || cmd.length() == 0) { -+ return false; -+ } -+ if (url == null || url.length() == 0) { -+ return false; -+ } -+ if (cmd.equals(DeploymentConfiguration.ALWAYS_ASK)) { -+ cmd = promptForCommand(url, true); -+ } -+ if (cmd.equals(DeploymentConfiguration.INTERNAL_HTML)) { -+ LinkingBrowser.createFrame(url, false, JFrame.DISPOSE_ON_CLOSE); -+ return true; -+ } -+ //copypasted from exec -+ StringTokenizer st = new StringTokenizer(cmd + " " + url); -+ String[] cmdarray = new String[st.countTokens()]; -+ for (int i = 0; st.hasMoreTokens(); i++) { -+ cmdarray[i] = st.nextToken(); -+ } -+ final ProcessBuilder pb = new ProcessBuilder(cmdarray); -+ pb.inheritIO(); -+ final Process p = pb.start(); - StreamUtils.waitForSafely(p); - return (p.exitValue() == 0); -- } catch (IOException e) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, e); -+ } catch (Exception e) { -+ OutputController.getLogger().log(e); -+ try { -+ //time for stderr to deal with it in verbose mode -+ Thread.sleep(50); -+ } catch (Exception ex) { -+ //ss -+ } -+ OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, e.toString()); -+ OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.VVPossibleBrowserValues()); - return false; - } - } - -- private String promptForCommand(String previousCommand) { -- String message = null; -- if (previousCommand == null) { -- message = R("RBrowserLocationPromptMessage"); -+ private String promptForCommand(final String targetUrl, boolean aa) throws IOException { -+ String message = Translator.VVPossibleBrowserValues(); -+ String title = R("RBrowserLocationPromptTitle"); -+ if (JNLPRuntime.isHeadless()) { -+ OutputController.getLogger().printOutLn(message); -+ OutputController.getLogger().printOutLn("*** " + targetUrl + " ***"); -+ OutputController.getLogger().printOutLn(title); -+ String entered = OutputController.getLogger().readLine(); -+ String verification = verifyFileOrCommand(entered); -+ if (verification == null) { -+ OutputController.getLogger().printOutLn(R("VVBrowserVerificationFail")); -+ } else { -+ OutputController.getLogger().printOutLn(R("VVBrowserVerificationPass", verification)); -+ } -+ return entered; - } else { -- message = R("RBrowserLocationPromptMessageWithReason", previousCommand); -+ final PromptUrl pu = new PromptUrl(); -+ pu.arrange(targetUrl, aa); -+ pu.setVisible(true); -+ return pu.getValue(); -+ } -+ } -+ -+ private static class PromptUrl extends JDialog { -+ -+ JTextField value = new JTextField("firefox"); -+ JLabel verification = new JLabel("?"); -+ private WindowListener cl = new WindowAdapter() { -+ @Override -+ public void windowClosing(WindowEvent e) { -+ value.setText(""); -+ } -+ }; -+ JCheckBox save = new JCheckBox(R("PESaveChanges")); -+ private boolean ask; -+ -+ public PromptUrl() { -+ super((JDialog) null, R("RBrowserLocationPromptTitle"), true); - } -- return JOptionPane.showInputDialog(new JPanel(), -- R("RBrowserLocationPromptTitle"), -- message, -- JOptionPane.PLAIN_MESSAGE -- ); -+ -+ public void arrange(String url, boolean ask) { -+ this.ask = ask; -+ JPanel top = new JPanel(new GridLayout(2, 1)); -+ JPanel bottom = new JPanel(new GridLayout(5, 1)); -+ this.setLayout(new BorderLayout()); -+ this.add(top, BorderLayout.NORTH); -+ this.add(bottom, BorderLayout.SOUTH); -+ top.add(new JLabel("" + R("RBrowserLocationPromptTitle"))); -+ JTextField urlField = new JTextField(url); -+ urlField.setEditable(false); -+ top.add(urlField); -+ JTextArea ta = new JTextArea(Translator.VVPossibleBrowserValues()); -+ ta.setEditable(false); -+ ta.setLineWrap(true); -+ ta.setWrapStyleWord(false); -+ JScrollPane scrollableTa=new JScrollPane(ta); -+ scrollableTa.setHorizontalScrollBar(null); -+ this.add(scrollableTa); -+ bottom.add(value); -+ bottom.add(verification); -+ JButton ok = new JButton(R("ButOk")); -+ ok.addActionListener(new ActionListener() { -+ @Override -+ public void actionPerformed(ActionEvent e) { -+ if (save.isSelected()) { -+ JNLPRuntime.getConfiguration().setProperty(DeploymentConfiguration.KEY_BROWSER_PATH, value.getText()); -+ try { -+ JNLPRuntime.getConfiguration().save(); -+ } catch (IOException ex) { -+ OutputController.getLogger().log(ex); -+ } -+ } -+ PromptUrl.this.dispose(); -+ } -+ }); -+ JButton cancel = new JButton(R("ButCancel")); -+ cancel.addActionListener(new ActionListener() { -+ @Override -+ public void actionPerformed(ActionEvent e) { -+ cl.windowClosing(null); -+ PromptUrl.this.dispose(); -+ } -+ }); -+ bottom.add(save); -+ bottom.add(ok); -+ bottom.add(cancel); -+ if (this.ask) { -+ save.setSelected(false); -+ save.setEnabled(false); -+ save.setToolTipText(R("VVBrowserSaveNotAllowed", DeploymentConfiguration.ALWAYS_ASK, DeploymentConfiguration.KEY_BROWSER_PATH)); -+ } else { -+ save.setEnabled(true); -+ save.setToolTipText(R("VVBrowserSaveAllowed", DeploymentConfiguration.KEY_BROWSER_PATH)); -+ } -+ this.addWindowListener(cl); -+ -+ value.getDocument().addDocumentListener(new DocumentListener() { -+ -+ @Override -+ public void insertUpdate(DocumentEvent e) { -+ check(); -+ } -+ -+ @Override -+ public void removeUpdate(DocumentEvent e) { -+ check(); -+ } -+ -+ @Override -+ public void changedUpdate(DocumentEvent e) { -+ check(); -+ } -+ -+ private void check() { -+ String result = BasicValueValidators.verifyFileOrCommand(value.getText()); -+ if (result == null) { -+ verification.setForeground(Color.red); -+ verification.setText(R("VVBrowserVerificationFail")); -+ if (!PromptUrl.this.ask) { -+ save.setSelected(false); -+ } -+ } else { -+ verification.setForeground(Color.green); -+ verification.setText(R("VVBrowserVerificationPass", result)); -+ if (!PromptUrl.this.ask) { -+ save.setSelected(true); -+ } -+ } -+ } -+ }); -+ this.pack(); -+ this.setSize(500, 400); -+ } -+ -+ private String getValue() { -+ if (value.getText().trim().isEmpty()) { -+ return null; -+ } -+ return value.getText(); -+ } -+ - } - - } -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java ---- a/netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java Tue Dec 18 11:22:16 2018 +0100 -@@ -55,7 +55,7 @@ - import java.util.Observable; - import java.util.Observer; - --import javax.swing.SwingUtilities; -+import net.sourceforge.swing.SwingUtils; - import net.sourceforge.jnlp.runtime.Translator; - import net.sourceforge.jnlp.splashscreen.SplashUtils.SplashReason; - import net.sourceforge.jnlp.splashscreen.parts.BasicComponentSplashScreen; -@@ -558,18 +558,16 @@ - - @Override - public void update(Observable o, Object arg) { -- try { -- SwingUtilities.invokeAndWait(new Runnable() { -+ SwingUtils.invokeAndWait(new Runnable() { - -- @Override -- public void run() { -+ @Override -+ public void run() { -+ if (master.isAnimationRunning()) { - ExtensionManager.getExtension().animate(); - master.repaint(); - } -- }); -- } catch (Exception ex) { -- OutputController.getLogger().log(ex); -- } -+ } -+ }); - } - - public BasicComponentSplashScreen getMaster() { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/splashscreen/parts/BasicComponentErrorSplashScreen.java ---- a/netx/net/sourceforge/jnlp/splashscreen/parts/BasicComponentErrorSplashScreen.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/splashscreen/parts/BasicComponentErrorSplashScreen.java Tue Dec 18 11:22:16 2018 +0100 -@@ -37,6 +37,7 @@ - package net.sourceforge.jnlp.splashscreen.parts; - - import net.sourceforge.jnlp.splashscreen.SplashErrorPanel; -+import net.sourceforge.swing.SwingUtils; - - public abstract class BasicComponentErrorSplashScreen extends BasicComponentSplashScreen implements SplashErrorPanel { - -@@ -70,8 +71,7 @@ - } - - protected void raiseExceptionDialogQUEUED() { -- java.awt.EventQueue.invokeLater(new Runnable() { -- -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - raiseExceptionDialogNOW(); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/splashscreen/parts/InformationElement.java ---- a/netx/net/sourceforge/jnlp/splashscreen/parts/InformationElement.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/splashscreen/parts/InformationElement.java Tue Dec 18 11:22:16 2018 +0100 -@@ -48,7 +48,7 @@ - import net.sourceforge.jnlp.util.logging.OutputController; - - /** -- * This class is wrapper arround tag which should -+ * This class is wrapper arround the *information* tag element which should - * javaws provide from source jnlp file - */ - public class InformationElement { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/splashscreen/parts/JEditorPaneBasedExceptionDialog.java ---- a/netx/net/sourceforge/jnlp/splashscreen/parts/JEditorPaneBasedExceptionDialog.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/splashscreen/parts/JEditorPaneBasedExceptionDialog.java Tue Dec 18 11:22:16 2018 +0100 -@@ -66,6 +66,7 @@ - import net.sourceforge.jnlp.util.BasicExceptionDialog; - import net.sourceforge.jnlp.util.docprovider.TextsProvider; - import net.sourceforge.jnlp.util.logging.OutputController; -+import net.sourceforge.swing.SwingUtils; - - public class JEditorPaneBasedExceptionDialog extends JDialog implements HyperlinkListener { - -@@ -276,8 +277,7 @@ - * @param args the command line arguments - */ - public static void main(String args[]) { -- java.awt.EventQueue.invokeLater(new Runnable() { -- -+ SwingUtils.invokeLater(new Runnable() { - public void run() { - Exception ex = new RuntimeException("dsgsfdg"); - JEditorPaneBasedExceptionDialog dialog = new JEditorPaneBasedExceptionDialog(new JFrame(), true, ex, null, "uaaa: aaa\nwqdeweq:sdsds"); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java ---- a/netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java Tue Dec 18 11:22:16 2018 +0100 -@@ -57,7 +57,7 @@ - import javax.swing.JPanel; - import javax.swing.JScrollPane; - import javax.swing.JTextArea; --import javax.swing.SwingUtilities; -+import net.sourceforge.swing.SwingUtils; - import net.sourceforge.jnlp.controlpanel.CachePane; - import net.sourceforge.jnlp.util.logging.JavaConsole; - -@@ -81,6 +81,8 @@ - - JOptionPane optionPane = new JOptionPane(mainPanel, JOptionPane.ERROR_MESSAGE); - final JDialog errorDialog = optionPane.createDialog(R("Error")); -+ errorDialog.setName("BasicExceptionDialog"); -+ SwingUtils.info(errorDialog); - errorDialog.setIconImages(ImageResources.INSTANCE.getApplicationImages()); - - final JPanel quickInfoPanelAll = new JPanel(); -@@ -179,7 +181,7 @@ - - @Override - public void actionPerformed(java.awt.event.ActionEvent evt) { -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - - @Override - public void run() { -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/util/FileUtils.java ---- a/netx/net/sourceforge/jnlp/util/FileUtils.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/util/FileUtils.java Tue Dec 18 11:22:16 2018 +0100 -@@ -33,16 +33,20 @@ - import java.io.Writer; - import java.nio.channels.FileChannel; - import java.nio.channels.FileLock; -+import java.nio.file.Files; -+import java.nio.file.attribute.AclEntry; -+import java.nio.file.attribute.AclEntryFlag; -+import java.nio.file.attribute.AclEntryPermission; -+import java.nio.file.attribute.AclEntryType; -+import java.nio.file.attribute.AclFileAttributeView; - import java.security.DigestInputStream; - import java.security.MessageDigest; - import java.security.NoSuchAlgorithmException; --import java.util.ArrayList; --import java.util.Arrays; --import java.util.List; -+import java.util.*; - - import javax.swing.JFrame; - import javax.swing.JOptionPane; --import javax.swing.SwingUtilities; -+import net.sourceforge.swing.SwingUtils; - - import net.sourceforge.jnlp.config.DirectoryValidator; - import net.sourceforge.jnlp.config.DirectoryValidator.DirectoryCheckResults; -@@ -60,6 +64,8 @@ - - private static final String WIN_DRIVE_LETTER_COLON_WILDCHAR = "WINDOWS_VERY_SPECIFIC_DOUBLEDOT"; - -+ private static final List WIN_ROOT_PRINCIPALS = Arrays.asList("NT AUTHORITY\\SYSTEM", "BUILTIN\\Administrators"); -+ - /** - * Indicates whether a file was successfully opened. If not, provides specific reasons - * along with a general failure case -@@ -242,37 +248,52 @@ - } - - if (JNLPRuntime.isWindows()) { -- // remove all permissions -- if (!tempFile.setExecutable(false, false)) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RRemoveXPermFailed", tempFile)); -- } -- if (!tempFile.setReadable(false, false)) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RRemoveRPermFailed", tempFile)); -- } -- if (!tempFile.setWritable(false, false)) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RRemoveWPermFailed", tempFile)); -- } -- -- // allow owner to read -- if (!tempFile.setReadable(true, true)) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RGetRPermFailed", tempFile)); -+ // prepare ACL flags -+ Set flags = new LinkedHashSet<>(); -+ if (tempFile.isDirectory()) { -+ flags.add(AclEntryFlag.DIRECTORY_INHERIT); -+ flags.add(AclEntryFlag.FILE_INHERIT); - } - -- // allow owner to write -- if (writableByOwner && !tempFile.setWritable(true, true)) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RGetWPermFailed", tempFile)); -+ // prepare ACL permissions -+ Set permissions = new LinkedHashSet<>(); -+ permissions.addAll(Arrays.asList( -+ AclEntryPermission.READ_DATA, -+ AclEntryPermission.READ_NAMED_ATTRS, -+ AclEntryPermission.EXECUTE, -+ AclEntryPermission.READ_ATTRIBUTES, -+ AclEntryPermission.READ_ACL, -+ AclEntryPermission.SYNCHRONIZE)); -+ if (writableByOwner) { -+ permissions.addAll(Arrays.asList( -+ AclEntryPermission.WRITE_DATA, -+ AclEntryPermission.APPEND_DATA, -+ AclEntryPermission.WRITE_NAMED_ATTRS, -+ AclEntryPermission.DELETE_CHILD, -+ AclEntryPermission.WRITE_ATTRIBUTES, -+ AclEntryPermission.DELETE, -+ AclEntryPermission.WRITE_ACL, -+ AclEntryPermission.WRITE_OWNER)); - } - -- // allow owner to enter directories -- if (isDir && !tempFile.setExecutable(true, true)) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RGetXPermFailed", tempFile)); -+ // filter ACL's leaving only root and owner -+ AclFileAttributeView view = Files.getFileAttributeView(tempFile.toPath(), AclFileAttributeView.class); -+ List list = new ArrayList<>(); -+ String owner = view.getOwner().getName(); -+ for (AclEntry ae : view.getAcl()) { -+ String principalName = ae.principal().getName(); -+ if (WIN_ROOT_PRINCIPALS.contains(principalName) || owner.equals(principalName)) { -+ list.add(AclEntry.newBuilder() -+ .setType(AclEntryType.ALLOW) -+ .setPrincipal(ae.principal()) -+ .setPermissions(permissions) -+ .setFlags(flags) -+ .build()); -+ } - } -- // rename this file. Unless the file is moved/renamed, any program that -- // opened the file right after it was created might still be able to -- // read the data. -- if (!tempFile.renameTo(file)) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, R("RCantRename", tempFile, file)); -- } -+ -+ // apply ACL -+ view.setAcl(list); - } else { - // remove all permissions - if (!tempFile.setExecutable(false, false)) { -@@ -299,15 +320,14 @@ - if (isDir && !tempFile.setExecutable(true, true)) { - throw new IOException(R("RGetXPermFailed", tempFile)); - } -- -+ } -+ - // rename this file. Unless the file is moved/renamed, any program that - // opened the file right after it was created might still be able to - // read the data. - if (!tempFile.renameTo(file)) { - throw new IOException(R("RCantRename", tempFile, file)); - } -- } -- - } - - /** -@@ -375,7 +395,7 @@ - * @param frame a {@link JFrame} to act as parent to this dialog - */ - public static void showReadOnlyDialog(final Component frame) { -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - JOptionPane.showMessageDialog(frame, R("RFileReadOnly"), R("Warning"), JOptionPane.WARNING_MESSAGE); -@@ -423,7 +443,7 @@ - * @param message a {@link String} giving the specific reason the file could not be opened - */ - public static void showCouldNotOpenDialog(final Component frame, final String message) { -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - @Override - public void run() { - JOptionPane.showMessageDialog(frame, message, R("Error"), JOptionPane.ERROR_MESSAGE); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/util/ImageResources.java ---- a/netx/net/sourceforge/jnlp/util/ImageResources.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/util/ImageResources.java Tue Dec 18 11:22:16 2018 +0100 -@@ -77,14 +77,16 @@ - } - - InputStream in = cl.getResourceAsStream(APPLICATION_ICON_PATH); -- try { -- Image image = ImageIO.read(in); -- cache.put(APPLICATION_ICON_PATH, image); -- return image; -- } catch (IOException ioe) { -- OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ioe); -- return null; -+ if (in != null) { -+ try { -+ Image image = ImageIO.read(in); -+ cache.put(APPLICATION_ICON_PATH, image); -+ return image; -+ } catch (IOException ioe) { -+ OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ioe); -+ } - } -+ return null; - } - - /** -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/util/lockingfile/LockedFile.java ---- a/netx/net/sourceforge/jnlp/util/lockingfile/LockedFile.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/util/lockingfile/LockedFile.java Tue Dec 18 11:22:16 2018 +0100 -@@ -94,7 +94,13 @@ - */ - synchronized public static LockedFile getInstance(File file) { - if (!instanceCache.containsKey(file)) { -- instanceCache.put(file, new LockedFile(file)); -+ LockedFile l; -+ if (JNLPRuntime.isWindows()) { -+ l = new WindowsLockedFile(file); -+ } else { -+ l = new LockedFile(file); -+ } -+ instanceCache.put(file, l); - } - - return instanceCache.get(file); -@@ -110,12 +116,10 @@ - } - - /** -- * Lock access to the file. Lock is reentrant. -+ * Lock access to the file.Lock is reentrant. -+ * @throws java.io.IOException - */ - public void lock() throws IOException { -- if (JNLPRuntime.isWindows()) { -- return; -- } - // Create if does not already exist, cannot lock non-existing file - if (!isReadOnly()) { - this.file.createNewFile(); -@@ -150,13 +154,18 @@ - } - - /** -- * Unlock access to the file. Lock is reentrant. Does not do anything if not holding the lock. -+ * Unlock access to the file.Lock is reentrant. Does not do anything if not holding the lock. -+ * @throws java.io.IOException - */ - public void unlock() throws IOException { -- if (JNLPRuntime.isWindows() || !this.threadLock.isHeldByCurrentThread()) { -+ if (!this.threadLock.isHeldByCurrentThread()) { - return; - } - boolean releaseProcessLock = (this.threadLock.getHoldCount() == 1); -+ unlockImpl(releaseProcessLock); -+ } -+ -+ protected void unlockImpl(boolean releaseProcessLock) throws IOException { - try { - if (releaseProcessLock) { - if (this.processLock != null){ -@@ -180,4 +189,29 @@ - public boolean isHeldByCurrentThread() { - return this.threadLock.isHeldByCurrentThread(); - } --} -\ No newline at end of file -+ -+ private static class WindowsLockedFile extends LockedFile { -+ -+ public WindowsLockedFile(File file) { -+ super(file); -+ } -+ -+ /*Comment why itis different*/ -+ @Override -+ public void lock() throws IOException { -+ if (!isReadOnly()) { -+ super.file.createNewFile(); -+ } -+ super.threadLock.lock(); -+ } -+ -+ /*Comment why itis different*/ -+ @Override -+ public void unlock() throws IOException { -+ if (!super.threadLock.isHeldByCurrentThread()) { -+ return; -+ } -+ unlockImpl(false); -+ } -+ } -+} -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/util/lockingfile/LockingReaderWriter.java ---- a/netx/net/sourceforge/jnlp/util/lockingfile/LockingReaderWriter.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/util/lockingfile/LockingReaderWriter.java Tue Dec 18 11:22:16 2018 +0100 -@@ -64,7 +64,7 @@ - - /** - * Get the underlying file. -- * Any access to this file should use lock() & unlock(). -+ * Any access to this file should use lock() and unlock(). - * - * @return the file - */ -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java ---- a/netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/util/logging/ConsoleOutputPane.java Tue Dec 18 11:22:16 2018 +0100 -@@ -46,6 +46,7 @@ - import net.sourceforge.jnlp.runtime.JNLPRuntime; - import net.sourceforge.jnlp.runtime.Translator; - import net.sourceforge.jnlp.util.logging.headers.ObservableMessagesProvider; -+import net.sourceforge.swing.SwingUtils; - - public class ConsoleOutputPane extends JPanel implements Observer { - -@@ -188,8 +189,7 @@ - - @Override - public final void mouseClicked(final MouseEvent e) { -- EventQueue.invokeLater(new Runnable() { -- -+ SwingUtils.invokeLater(new Runnable() { - @Override - public final void run() { - try { -@@ -213,8 +213,7 @@ - if (e.getKeyCode() != KeyEvent.VK_CONTEXT_MENU) { - return; - } -- EventQueue.invokeLater(new Runnable() { -- -+ SwingUtils.invokeLater(new Runnable() { - @Override - public final void run() { - try { -@@ -283,8 +282,7 @@ - return; - } - done.set(false); -- EventQueue.invokeLater(new Runnable() { -- -+ SwingUtils.invokeLater(new Runnable() { - @Override - public final void run() { - try { -@@ -683,8 +681,7 @@ - - @Override - public final void actionPerformed(final ActionEvent e) { -- EventQueue.invokeLater(new Runnable() { -- -+ SwingUtils.invokeLater(new Runnable() { - @Override - public final void run() { - try { -@@ -706,8 +703,7 @@ - - @Override - public final void actionPerformed(final ActionEvent e) { -- EventQueue.invokeLater(new Runnable() { -- -+ SwingUtils.invokeLater(new Runnable() { - @Override - public final void run() { - try { -@@ -730,8 +726,7 @@ - - @Override - public final void actionPerformed(final ActionEvent e) { -- EventQueue.invokeLater(new Runnable() { -- -+ SwingUtils.invokeLater(new Runnable() { - @Override - public final void run() { - try { -@@ -903,8 +898,7 @@ - } - - public static final void main(final String args[]) { -- EventQueue.invokeLater(new Runnable() { -- -+ SwingUtils.invokeLater(new Runnable() { - @Override - public final void run() { - final JFrame dialog = new JFrame(); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/util/logging/JavaConsole.java ---- a/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/util/logging/JavaConsole.java Tue Dec 18 11:22:16 2018 +0100 -@@ -69,10 +69,10 @@ - import javax.swing.JSpinner; - import javax.swing.JSplitPane; - import javax.swing.SpinnerNumberModel; --import javax.swing.SwingUtilities; - import javax.swing.event.ChangeEvent; - import javax.swing.event.ChangeListener; - import javax.swing.text.DefaultFormatter; -+import net.sourceforge.swing.SwingUtils; - import net.sourceforge.jnlp.config.DeploymentConfiguration; - import net.sourceforge.jnlp.runtime.JNLPRuntime; - import net.sourceforge.jnlp.util.ImageResources; -@@ -204,6 +204,9 @@ - - private void initializeWindow(Dimension size, JPanel content) { - consoleWindow = new JDialog((JFrame) null, R("DPJavaConsole")); -+ consoleWindow.setName("JavaConsole"); -+ SwingUtils.info(consoleWindow); -+ - consoleWindow.addWindowListener(new WindowAdapter() { - - @Override -@@ -353,7 +356,7 @@ - - @Override - public void actionPerformed(ActionEvent e) { -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - - @Override - public void run() { -@@ -407,7 +410,7 @@ - } - - public void showConsoleLater(final boolean modal) { -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - - @Override - public void run() { -@@ -417,7 +420,7 @@ - } - - public void hideConsoleLater() { -- SwingUtilities.invokeLater(new Runnable() { -+ SwingUtils.invokeLater(new Runnable() { - - @Override - public void run() { -@@ -512,9 +515,21 @@ - updateModel(null); - } - -- private synchronized void updateModel(Boolean force) { -+ private synchronized void updateModel(final Boolean force) { - observable.setChanged(); -- observable.notifyObservers(force); -+ -+ SwingUtils.invokeLater(new Runnable() { -+ -+ @Override -+ public void run() { -+ // avoid too much processing if already processed: -+ synchronized(observable) { -+ if (observable.hasChanged() || (Boolean.TRUE.equals(force))) { -+ observable.notifyObservers(force); -+ } -+ } -+ } -+ }); - } - - /** -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/util/replacements/CharacterDecoder.java ---- a/netx/net/sourceforge/jnlp/util/replacements/CharacterDecoder.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/util/replacements/CharacterDecoder.java Tue Dec 18 11:22:16 2018 +0100 -@@ -38,7 +38,6 @@ - * A character decoder is an algorithim for transforming 8 bit - * binary data that has been encoded into text by a character - * encoder, back into original binary form. -- *

    - * The character encoders, in general, have been structured - * around a central theme that binary data can be encoded into - * text that has the form: -@@ -47,7 +46,6 @@ - * [Line Prefix][encoded data atoms][Line Suffix] - * [Buffer Suffix] - * -- *

    - *

    - * Of course in the simplest encoding schemes, the buffer has no - * distinct prefix of suffix, however all have some fixed relationship -@@ -64,11 +62,11 @@ - * abstract methods in this class. - *

    - *
    -- *
    bytesPerAtom which tells the decoder how many bytes to -- * expect from decodeAtom -- *
    decodeAtom which decodes the bytes sent to it as text. -- *
    bytesPerLine which tells the encoder the maximum number of -- * bytes per line. -+ *
    bytesPerAtom which tells the decoder how many bytes to -+ * expect from decodeAtom
    -+ *
    decodeAtom which decodes the bytes sent to it as text.
    -+ *
    bytesPerLine which tells the encoder the maximum number of -+ * bytes per line.
    - *
    - *

    - * In general, the character decoders return error in the form of a -@@ -123,7 +121,7 @@ - /** - * This method does an actual decode. It takes the decoded bytes and - * writes them to the OutputStream. The integer l tells the -- * method how many bytes are required. This is always <= bytesPerAtom(). -+ * method how many bytes are required. This is always less or equal to bytesPerAtom(). - */ - protected void decodeAtom(PushbackInputStream aStream, OutputStream bStream, int l) throws IOException { - throw new CEStreamExhausted(); -@@ -149,8 +147,7 @@ - * Decode the text from the InputStream and write the decoded - * octets to the OutputStream. This method runs until the stream - * is exhausted. -- * @exception CEFormatException An error has occured while decoding -- * @exception CEStreamExhausted The input stream is unexpectedly out of data -+ * @exception IOException The input stream is unexpectedly out of data, An error has occured while decoding - */ - public void decodeBuffer(InputStream aStream, OutputStream bStream) throws IOException { - int i; -@@ -185,7 +182,7 @@ - /** - * Alternate decode interface that takes a String containing the encoded - * buffer and returns a byte array containing the data. -- * @exception CEFormatException An error has occured while decoding -+ * @exception IOException An error has occured while decoding - */ - public byte decodeBuffer(String inputString)[] throws IOException { - byte inputBuffer[] = new byte[inputString.length()]; -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/util/replacements/CharacterEncoder.java ---- a/netx/net/sourceforge/jnlp/util/replacements/CharacterEncoder.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/util/replacements/CharacterEncoder.java Tue Dec 18 11:22:16 2018 +0100 -@@ -39,7 +39,7 @@ - * A character encoder is an algorithim for transforming 8 bit binary - * data into text (generally 7 bit ASCII or 8 bit ISO-Latin-1 text) - * for transmition over text channels such as e-mail and network news. -- *

    -+ - * The character encoders have been structured around a central theme - * that, in general, the encoded text has the form: - *

    
    -@@ -47,25 +47,22 @@
    -  *      [Line Prefix][encoded data atoms][Line Suffix]
    -  *      [Buffer Suffix]
    -  * 
    -- *

    -- *

    -+ *

    - * In the {@code CharacterEncoder} and {@link CharacterDecoder} - * classes, one complete chunk of data is referred to as a - * buffer. Encoded buffers are all text, and decoded buffers - * (sometimes just referred to as buffers) are binary octets. - *

    -- *

    -- * To create a custom encoder, you must, at a minimum, overide three -+ * To create a custom encoder, you must, at a minimum, overide three - * abstract methods in this class. - *

    -- *
    bytesPerAtom which tells the encoder how many bytes to -- * send to encodeAtom -- *
    encodeAtom which encodes the bytes sent to it as text. -- *
    bytesPerLine which tells the encoder the maximum number of -- * bytes per line. -+ *
    bytesPerAtom which tells the encoder how many bytes to -+ * send to encodeAtom
    -+ *
    encodeAtom which encodes the bytes sent to it as text.
    -+ *
    bytesPerLine which tells the encoder the maximum number of -+ * bytes per line.
    - *
    -- *

    -- *

    -+ *

    - * Several useful encoders have already been written and are - * referenced in the See Also list below. - *

    -@@ -107,7 +104,7 @@ - - /** - * Encode the suffix that ends every output line. By default -- * this method just prints a into the output stream. -+ * this method just prints a newline into the output stream. - */ - protected void encodeLineSuffix(OutputStream aStream) throws IOException { - pStream.println(); -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/jnlp/util/ui/package-info.java ---- a/netx/net/sourceforge/jnlp/util/ui/package-info.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/jnlp/util/ui/package-info.java Tue Dec 18 11:22:16 2018 +0100 -@@ -34,7 +34,7 @@ - * Contains classes that deal with common and recurring UI tasks. - *

    - * NOTE: Before adding new self-sufficient {@code public static} methods -- * to this package please evaluate thier suitability for {@link UI} first.

    -+ * to this package please evaluate thier suitability for @link UI first.

    - * @since IcedTea-Web 1.5 - */ - package net.sourceforge.jnlp.util.ui; -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/nanoxml/XMLElement.java ---- a/netx/net/sourceforge/nanoxml/XMLElement.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/netx/net/sourceforge/nanoxml/XMLElement.java Tue Dec 18 11:22:16 2018 +0100 -@@ -628,8 +628,8 @@ - throws IOException { - while(true) { - char ch = this.readChar(); -- //this is BOM , not space -- if (ch == '') { -+ //this is BOM , when used without \\u, appear like space, but causes issues on windows development -+ if (ch == '\uFEFF') { - BOM = true; - } else if (!isRegularWhiteSpace(ch)) { - return ch; -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/swing/SwingUtils.java ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/netx/net/sourceforge/swing/SwingUtils.java Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,187 @@ -+/* SwingUtils.java -+ Copyright (C) 2018 Red Hat, Inc. -+ -+This file is part of IcedTea. -+ -+IcedTea is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2, or (at your option) -+any later version. -+ -+IcedTea is distributed in the hope that it will be useful, but -+WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with IcedTea; see the file COPYING. If not, write to the -+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -+02110-1301 USA. -+ -+Linking this library statically or dynamically with other modules is -+making a combined work based on this library. Thus, the terms and -+conditions of the GNU General Public License cover the whole -+combination. -+ -+As a special exception, the copyright holders of this library give you -+permission to link this library with independent modules to produce an -+executable, regardless of the license terms of these independent -+modules, and to copy and distribute the resulting executable under -+terms of your choice, provided that you also meet, for each linked -+independent module, the terms and conditions of the license of that -+module. An independent module is a module which is not derived from -+or based on this library. If you modify this library, you may extend -+this exception to your version of the library, but you are not -+obligated to do so. If you do not wish to do so, delete this -+exception statement from your version. */ -+package net.sourceforge.swing; -+ -+import java.awt.Component; -+import java.awt.EventQueue; -+import java.awt.Window; -+import java.lang.reflect.InvocationTargetException; -+import javax.swing.JWindow; -+import javax.swing.RepaintManager; -+import javax.swing.SwingUtilities; -+import net.sourceforge.jnlp.runtime.Translator; -+import net.sourceforge.jnlp.util.logging.OutputController; -+ -+/** -+ * Swing / AWT utility class -+ */ -+public final class SwingUtils { -+ -+ private static final boolean DEBUG_EDT = System.getProperty("icedtea-web.edt.debug", "false").equalsIgnoreCase("true"); -+ -+ // debugging flags: -+ private static final boolean INFO_DIALOG = false; -+ private static final boolean TRACE_INVOKE_EDT = false; -+ private static final boolean TRACE_TG = false; -+ -+ // internals: -+ private static boolean DO_SETUP = true; -+ -+ /** main thread group (initialized at startup) */ -+ private static final ThreadGroup MAIN_GROUP = Thread.currentThread().getThreadGroup(); -+ -+ /* shared Window owner */ -+ private static Window window = null; -+ -+ private SwingUtils() { -+ // forbidden -+ } -+ -+ public static void setup() { -+ if (DO_SETUP) { -+ DO_SETUP = false; // avoid reentrance -+ -+ if (DEBUG_EDT) { -+ trace("Using ThreadCheckingRepaintManager"); -+ RepaintManager.setCurrentManager(new ThreadCheckingRepaintManager()); -+ } -+ } -+ } -+ -+ static void trace(final String msg) { -+ // Use System.err directly for debuging EDT without any conflict with console / logging system -+ System.err.println(msg); -+ } -+ -+ static void traceWithStack(final String msg) { -+ trace(msg); -+ new Throwable().printStackTrace(); -+ } -+ -+ public static void info(final Window dialog) { -+ if (INFO_DIALOG) { -+ trace("Dialog[" + dialog.getName() + "]" -+ + " in TG [" + Thread.currentThread().getThreadGroup() + "]"); -+ checkEDT(); -+ } -+ } -+ -+ public static void checkEDT() { -+ if (!isEventDispatchThread()) { -+ OutputController.getLogger().log(OutputController.Level.ERROR_ALL, new Exception("EDT violation")); -+ } -+ } -+ -+ private static boolean isMainThreadGroup() { -+ final Thread t = Thread.currentThread(); -+ final ThreadGroup g = t.getThreadGroup(); -+ -+ if (g != MAIN_GROUP) { -+ if (TRACE_TG) { -+ traceWithStack("----------\ncheckThreadGroup: " + t); -+ } -+ return false; -+ } -+ return true; -+ } -+ -+ // --- SwingUtilities wrapper --- -+ public static Window getWindowAncestor(Component c) { -+ return SwingUtilities.getWindowAncestor(c); -+ } -+ -+ public static boolean isEventDispatchThread() { -+ return EventQueue.isDispatchThread(); -+ } -+ -+ public static void invokeLater(final Runnable doRun) { -+ if (isMainThreadGroup()) { -+ if (TRACE_INVOKE_EDT && isEventDispatchThread()) { -+ traceWithStack("invokeLater() from EDT: MAY be fixed (useless) ?"); -+ } -+ } -+ EventQueue.invokeLater(doRun); -+ } -+ -+ public static void invokeRunnableOrEnqueueLater(final Runnable runnable) { -+ if (isEventDispatchThread()) { -+ runnable.run(); -+ } else { -+ invokeLater(runnable); -+ } -+ } -+ -+ public static void callOnAppContext(final Runnable doRun) throws InterruptedException, InvocationTargetException { -+ EventQueue.invokeAndWait(doRun); -+ } -+ -+ public static void invokeAndWait(final Runnable doRun) { -+ if (isEventDispatchThread()) { -+ if (TRACE_INVOKE_EDT) { -+ traceWithStack("invokeAndWait() from EDT: to be fixed (illegal) ?"); -+ } -+ // Direct invocation: -+ doRun.run(); -+ } else { -+ try { -+ callOnAppContext(doRun); -+ } catch (InterruptedException ie) { -+ OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ie); -+ } catch (InvocationTargetException ite) { -+ OutputController.getLogger().log(OutputController.Level.ERROR_ALL, ite); -+ } -+ } -+ } -+ -+ public static synchronized Window getOrCreateWindowOwner() { -+ if (window == null) { -+ invokeAndWait(new Runnable() { -+ @Override -+ public void run() { -+ try { -+ window = new JWindow().getOwner(); -+ window.setName("getOrCreateWindowOwner"); -+ } catch (Exception ex) { -+ OutputController.getLogger().log(ex); -+ OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, Translator.R("HEADLESS_MISSCONFIGURED")); -+ } -+ } -+ }); -+ } -+ return window; -+ } -+} -diff -r dbb8dc397d15 -r fcb841380712 netx/net/sourceforge/swing/ThreadCheckingRepaintManager.java ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/netx/net/sourceforge/swing/ThreadCheckingRepaintManager.java Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,120 @@ -+/** -+ * License unknown. -+ * based on Alexander Potochkin's "Debugging Swing, the final summary" -+ * when oracle acquired sun, this blog post was removed, and lives only in copies. -+ * most complex was found: -+http://web.archive.org/web/20150523152453/https://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html -+ */ -+package net.sourceforge.swing; -+ -+import java.io.ByteArrayOutputStream; -+import java.io.PrintStream; -+import javax.swing.JComponent; -+import javax.swing.RepaintManager; -+import static net.sourceforge.swing.SwingUtils.trace; -+ -+/** -+ * For usage of this class, please refer to http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html -+ *

    To use it, call RepaintManager.setCurrentManager(new ThreadCheckingRepaintManager()) then watch the print out -+ * from the console of all threading violations.

    -+ */ -+public final class ThreadCheckingRepaintManager extends RepaintManager { -+ -+ // it is recommended to pass the complete check -+ private boolean completeCheck = true; -+ private boolean checkIsShowing = false; -+ -+ /** -+ * Creates ThreadCheckingRepaintManager. You can create one and set it using RepaintManager.setCurrentManager(new -+ * ThreadCheckingRepaintManager()). -+ */ -+ public ThreadCheckingRepaintManager() { -+ super(); -+ } -+ -+ /** -+ * Creates ThreadCheckingRepaintManager. You can create one and set it using RepaintManager.setCurrentManager(new -+ * ThreadCheckingRepaintManager()). -+ * -+ * @param checkIsShowing true to only check showing components. -+ */ -+ public ThreadCheckingRepaintManager(boolean checkIsShowing) { -+ super(); -+ this.checkIsShowing = checkIsShowing; -+ } -+ -+ /** -+ * Initially there was a rule that it is safe to create and use Swing components until they are realized but this -+ * rule is not valid any more, and now it is recommended to interact with Swing from EDT only. -+ * -+ * That's why completeCheck flag is used - if you test the old program switch it to false, but new applications -+ * should be tested with completeCheck set to true* -+ * -+ * @return true or false. By default, it is false. -+ */ -+ public boolean isCompleteCheck() { -+ return completeCheck; -+ } -+ -+ /** -+ * @param completeCheck true or false. -+ * -+ * @see #isCompleteCheck() -+ */ -+ public void setCompleteCheck(boolean completeCheck) { -+ this.completeCheck = completeCheck; -+ } -+ -+ @Override -+ public synchronized void addInvalidComponent(JComponent jComponent) { -+ checkThreadViolations(jComponent); -+ super.addInvalidComponent(jComponent); -+ } -+ -+ @Override -+ public synchronized void addDirtyRegion(JComponent jComponent, int i, int i1, int i2, int i3) { -+ checkThreadViolations(jComponent); -+ super.addDirtyRegion(jComponent, i, i1, i2, i3); -+ } -+ -+ private void checkThreadViolations(JComponent c) { -+ if (!SwingUtils.isEventDispatchThread() && (completeCheck || checkIsShowing(c))) { -+ Exception exception = new Exception(); -+ boolean repaint = false; -+ boolean fromSwing = false; -+ StackTraceElement[] stackTrace = exception.getStackTrace(); -+ for (StackTraceElement st : stackTrace) { -+ if (repaint && st.getClassName().startsWith("javax.swing.")) { -+ fromSwing = true; -+ } -+ if ("repaint".equals(st.getMethodName())) { -+ repaint = true; -+ } -+ } -+ if (repaint && !fromSwing) { -+ //no problems here, since repaint() is thread safe -+ return; -+ } -+ trace("----------Wrong Thread START"); -+ trace(getStrackTraceAsString(exception)); -+ trace("----------Wrong Thread END"); -+ } -+ } -+ -+ @SuppressWarnings({"SimplifiableIfStatement"}) -+ private boolean checkIsShowing(JComponent c) { -+ if (this.checkIsShowing) { -+ return c.isShowing(); -+ } else { -+ return true; -+ } -+ } -+ -+ private String getStrackTraceAsString(Exception e) { -+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); -+ PrintStream printStream = new PrintStream(byteArrayOutputStream); -+ e.printStackTrace(printStream); -+ printStream.flush(); -+ return byteArrayOutputStream.toString(); -+ } -+} -diff -r dbb8dc397d15 -r fcb841380712 plugin/icedteanp/IcedTeaNPPlugin.cc ---- a/plugin/icedteanp/IcedTeaNPPlugin.cc Mon Dec 18 13:22:51 2017 +0100 -+++ b/plugin/icedteanp/IcedTeaNPPlugin.cc Tue Dec 18 11:22:16 2018 +0100 -@@ -1562,11 +1562,15 @@ - command_line[2] = NULL; - - if ( standard_error != NULL ){ -- if(strstr(standard_error, "\"9") != NULL) { -- PLUGIN_DEBUG ("detected 9\n"); -- PLUGIN_DEBUG ("plugin_get_java_version return\n"); -- return 9; -- } -+ int major = 0; -+ int minor = 0; -+ sscanf(standard_error, "%*s %*s \"%d.%d", &major, &minor); -+ if (major == 1) -+ major = minor; -+ -+ PLUGIN_DEBUG ("detected version %d\n", major); -+ PLUGIN_DEBUG ("plugin_get_java_version return\n"); -+ return major; - } - PLUGIN_DEBUG ("detected 8 (or generally non nine)\n"); - PLUGIN_DEBUG ("plugin_get_java_version return\n"); -diff -r dbb8dc397d15 -r fcb841380712 tests/junit-runner/JunitLikeXmlOutputListener.java ---- a/tests/junit-runner/JunitLikeXmlOutputListener.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/tests/junit-runner/JunitLikeXmlOutputListener.java Tue Dec 18 11:22:16 2018 +0100 -@@ -389,7 +389,7 @@ - * - * You just put eg @Bug(id="RH12345",id="http:/my.bukpage.com/terribleNew") - * and RH12345 will be transalated as -- * 123456 or -+ * 123456 or - * similar, the url will be inclueded as is. Both added to proper tests or suites - * - * @return Strng[2]{nameToBeShown, hrefValue} -diff -r dbb8dc397d15 -r fcb841380712 tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java ---- a/tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/tests/netx/unit/net/sourceforge/jnlp/ParserBasic.java Tue Dec 18 11:22:16 2018 +0100 -@@ -33,8 +33,7 @@ - this exception to your version of the library, but you are not - obligated to do so. If you do not wish to do so, delete this - exception statement from your version. --*/ -- -+ */ - package net.sourceforge.jnlp; - - import java.io.InputStream; -@@ -46,8 +45,10 @@ - import org.junit.BeforeClass; - import org.junit.Test; - --/** Test that the parser works with basic jnlp files */ --public class ParserBasic extends NoStdOutErrTest{ -+/** -+ * Test that the parser works with basic jnlp files -+ */ -+public class ParserBasic extends NoStdOutErrTest { - - private static Node root; - private static Parser parser; -@@ -214,6 +215,22 @@ - } - - @Test -+ public void testResourcesInsideJava() throws ParseException { -+ ClassLoader cl = ParserBasic.class.getClassLoader(); -+ if (cl == null) { -+ cl = ClassLoader.getSystemClassLoader(); -+ } -+ ParserSettings defaultParser = new ParserSettings(); -+ InputStream jnlpStream = cl.getResourceAsStream("net/sourceforge/jnlp/jarsInJreDesc.jnlp"); -+ Node omega = Parser.getRootNode(jnlpStream, defaultParser); -+ Parser omegaParser = new Parser(new DummyJNLPFile(), null, omega, defaultParser); -+ ResourcesDesc resources = omegaParser.getResources(omega, false).get(0); -+ JARDesc[] r = resources.getJARs(); -+ // we ensures that also in j2se hars ar eloaded.it is 7 withutt them. -+ Assert.assertTrue(r.length>30); -+ } -+ -+ @Test - public void testResourcesJar() throws ParseException { - ResourcesDesc resources = parser.getResources(root, false).get(0); - -@@ -276,7 +293,7 @@ - ApplicationDesc app = (ApplicationDesc) parser.getLauncher(root); - Assert.assertNotNull(app); - Assert.assertEquals("MainClass", app.getMainClass()); -- Assert.assertArrayEquals(new String[] { "arg1", "arg2" }, app.getArguments()); -+ Assert.assertArrayEquals(new String[]{"arg1", "arg2"}, app.getArguments()); - } - - } -diff -r dbb8dc397d15 -r fcb841380712 tests/netx/unit/net/sourceforge/jnlp/ParserCornerCases.java ---- a/tests/netx/unit/net/sourceforge/jnlp/ParserCornerCases.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/tests/netx/unit/net/sourceforge/jnlp/ParserCornerCases.java Tue Dec 18 11:22:16 2018 +0100 -@@ -66,7 +66,7 @@ - Assert.assertTrue(target.getContent().contains("value")); - - Node node = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("argument", node.getNodeName()); -+ Assert.assertEquals("argument", node.getNodeName().getName()); - String contents = node.getNodeValue(); - Assert.assertTrue(contents.contains("xml")); - Assert.assertTrue(contents.contains("DOCTYPE")); -@@ -94,7 +94,7 @@ - - Node node = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); - node = node.getFirstChild().getFirstChild(); -- Assert.assertEquals("argument", node.getNodeName()); -+ Assert.assertEquals("argument", node.getNodeName().getName()); - String contents = node.getNodeValue(); - Assert.assertTrue(contents.contains("xml")); - Assert.assertTrue(contents.contains("DOCTYPE")); -diff -r dbb8dc397d15 -r fcb841380712 tests/netx/unit/net/sourceforge/jnlp/ParserTest.java ---- a/tests/netx/unit/net/sourceforge/jnlp/ParserTest.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/tests/netx/unit/net/sourceforge/jnlp/ParserTest.java Tue Dec 18 11:22:16 2018 +0100 -@@ -67,7 +67,7 @@ - String data = "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -82,7 +82,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -105,7 +105,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -135,7 +135,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -162,7 +162,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -185,7 +185,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -216,7 +216,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -247,7 +247,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -277,7 +277,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -306,7 +306,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -334,7 +334,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -361,7 +361,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -385,7 +385,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -409,7 +409,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -431,7 +431,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -454,7 +454,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -493,7 +493,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(ALL_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -516,7 +516,7 @@ - String data = "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -531,7 +531,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -554,7 +554,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -580,7 +580,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -607,7 +607,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -630,7 +630,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -661,7 +661,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -692,7 +692,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -722,7 +722,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -751,7 +751,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -779,7 +779,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -806,7 +806,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -830,7 +830,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -854,7 +854,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -876,7 +876,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -899,7 +899,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -938,7 +938,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_COUNTRY_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -961,7 +961,7 @@ - String data = "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -976,7 +976,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -999,7 +999,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -1021,7 +1021,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -1045,7 +1045,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -1068,7 +1068,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -1099,7 +1099,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -1130,7 +1130,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -1156,7 +1156,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = parser.getInfo(root); -@@ -1184,7 +1184,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -1211,7 +1211,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -1235,7 +1235,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -1259,7 +1259,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); - List infoDescs = new ArrayList(); -@@ -1281,7 +1281,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -1304,7 +1304,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -1343,7 +1343,7 @@ - + "\n"; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser); -@@ -1371,7 +1371,7 @@ - ""; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - URL overwrittenCodebase = new URL("http://icedtea.classpath.org"); - - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); -@@ -1390,7 +1390,7 @@ - ""; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - URL overwrittenCodebase = new URL("http://icedtea.classpath.org"); - - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); -@@ -1408,7 +1408,7 @@ - ""; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - URL overwrittenCodebase = new URL("http://icedtea.classpath.org"); - - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); -@@ -1427,7 +1427,7 @@ - + ""; - - Node root = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root.getNodeName().getName()); - MockJNLPFile file = new MockJNLPFile(LANG_LOCALE); - Parser parser = new Parser(file, null, root, defaultParser, null); - ParseException eex = null; -@@ -1453,7 +1453,7 @@ - + ""; - - Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName()); - MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE); - Parser parser1 = new Parser(file1, null, root1, defaultParser, null); - String main1 = parser1.getLauncher(root1).getMainClass(); -@@ -1461,7 +1461,7 @@ - - //strict also ok - Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName()); - MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE); - Parser parser2 = new Parser(file2, null, root2, defaultParser, null); - String main2 = parser2.getLauncher(root2).getMainClass(); -@@ -1478,7 +1478,7 @@ - + ""; - - Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName()); - MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE); - Parser parser1 = new Parser(file1, null, root1, defaultParser, null); - String main1 = parser1.getLauncher(root1).getMainClass(); -@@ -1486,7 +1486,7 @@ - - //strict also ok - Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName()); - MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE); - Parser parser2 = new Parser(file2, null, root2, strictParser, null); - String main2 = parser2.getLauncher(root2).getMainClass(); -@@ -1503,7 +1503,7 @@ - + ""; - - Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName()); - MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE); - Parser parser1 = new Parser(file1, null, root1, defaultParser, null); - parser1.getLauncher(root1).getMainClass(); -@@ -1520,7 +1520,7 @@ - + ""; - - Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName()); - MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE); - Parser parser1 = new Parser(file1, null, root1, defaultParser, null); - String main1 = parser1.getLauncher(root1).getMainClass(); -@@ -1528,7 +1528,7 @@ - - //strict also ok - Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName()); - MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE); - Parser parser2 = new Parser(file2, null, root2, strictParser, null); - String main2 = parser2.getLauncher(root2).getMainClass(); -@@ -1546,7 +1546,7 @@ - + ""; - - Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName()); - MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE); - Parser parser1 = new Parser(file1, null, root1, defaultParser, null); - String main1 = parser1.getLauncher(root1).getMainClass(); -@@ -1554,7 +1554,7 @@ - - //strict throws - Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName()); - MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE); - Parser parser2 = new Parser(file2, null, root2, strictParser, null); - parser2.getLauncher(root2).getMainClass(); -@@ -1570,7 +1570,7 @@ - + ""; - - Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName()); - MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE); - Parser parser1 = new Parser(file1, null, root1, defaultParser, null); - String main1 = parser1.getLauncher(root1).getMainClass(); -@@ -1578,7 +1578,7 @@ - - //strict throws - Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName()); - MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE); - Parser parser2 = new Parser(file2, null, root2, strictParser, null); - parser2.getLauncher(root2).getMainClass(); -@@ -1594,7 +1594,7 @@ - + ""; - - Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName()); - MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE); - Parser parser1 = new Parser(file1, null, root1, defaultParser, null); - String main1 = parser1.getLauncher(root1).getMainClass(); -@@ -1602,7 +1602,7 @@ - - //strict throws - Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName()); - MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE); - Parser parser2 = new Parser(file2, null, root2, strictParser, null); - parser2.getLauncher(root2).getMainClass(); -@@ -1617,7 +1617,7 @@ - + ""; - - Node root1 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), defaultParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root1.getNodeName().getName()); - MockJNLPFile file1 = new MockJNLPFile(LANG_LOCALE); - Parser parser1 = new Parser(file1, null, root1, defaultParser, null); - String main1 = parser1.getLauncher(root1).getMainClass(); -@@ -1625,7 +1625,7 @@ - - //strict throws - Node root2 = Parser.getRootNode(new ByteArrayInputStream(data.getBytes()), strictParser); -- Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName()); -+ Assert.assertEquals("Root name is not jnlp", "jnlp", root2.getNodeName().getName()); - MockJNLPFile file2 = new MockJNLPFile(LANG_LOCALE); - Parser parser2 = new Parser(file2, null, root2, strictParser, null); - parser2.getLauncher(root2).getMainClass(); -diff -r dbb8dc397d15 -r fcb841380712 tests/netx/unit/net/sourceforge/jnlp/config/DeploymentConfigurationTest.java ---- a/tests/netx/unit/net/sourceforge/jnlp/config/DeploymentConfigurationTest.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/tests/netx/unit/net/sourceforge/jnlp/config/DeploymentConfigurationTest.java Tue Dec 18 11:22:16 2018 +0100 -@@ -33,12 +33,12 @@ - this exception to your version of the library, but you are not - obligated to do so. If you do not wish to do so, delete this - exception statement from your version. --*/ -- -+ */ - package net.sourceforge.jnlp.config; - - import java.io.File; - import java.io.IOException; -+import java.net.URL; - import java.util.Date; - import static org.junit.Assert.assertTrue; - -@@ -46,13 +46,16 @@ - - import javax.naming.ConfigurationException; - import net.sourceforge.jnlp.PluginBridgeTest; -+import net.sourceforge.jnlp.ServerAccess; -+import net.sourceforge.jnlp.ServerLauncher; -+import net.sourceforge.jnlp.annotations.Remote; - import net.sourceforge.jnlp.util.FileUtils; - import net.sourceforge.jnlp.util.logging.NoStdOutErrTest; - import org.junit.Assert; - - import org.junit.Test; - --public class DeploymentConfigurationTest extends NoStdOutErrTest{ -+public class DeploymentConfigurationTest extends NoStdOutErrTest { - - @Test - public void testLoad() throws ConfigurationException { -@@ -73,34 +76,34 @@ - Properties target = new Properties(); - config.copyTo(target); - -- assertTrue(target.size() != 0); -+ assertTrue(!target.isEmpty()); - } -- -+ - @Test - public void testPersistedComments() throws ConfigurationException, IOException { - final File f = File.createTempFile("proeprties", "withComments"); - f.deleteOnExit(); - FileUtils.saveFile("#commented1=val1\nproeprty2=val2\n#commented3=val3\nproeprty4=val4", f); -- DeploymentConfiguration dc = new DeploymentConfiguration(new InfrastructureFileDescriptor(){ -- -+ DeploymentConfiguration dc = new DeploymentConfiguration(new InfrastructureFileDescriptor() { -+ - @Override - public String getFullPath() { - return f.getAbsolutePath(); - } -- -+ - }); - dc.load(); - Assert.assertEquals("val2", dc.getProperty("proeprty2")); - Assert.assertEquals("val4", dc.getProperty("proeprty4")); - Assert.assertEquals(null, dc.getProperty("commented1")); - Assert.assertEquals(null, dc.getProperty("commented3")); -- -+ - dc.save(); -- -+ - String s = FileUtils.loadFileAsString(f); -- Assert.assertTrue(s.contains("#"+DeploymentConfiguration.DEPLOYMENT_COMMENT)); -+ Assert.assertTrue(s.contains("#" + DeploymentConfiguration.DEPLOYMENT_COMMENT)); - String date = new Date().toString().substring(0, 10); //every propertiews file have header and date by default -- Assert.assertTrue(s.contains("#"+date)); //check day part of date... -+ Assert.assertTrue(s.contains("#" + date)); //check day part of date... - Assert.assertTrue(s.contains("#commented1")); - Assert.assertTrue(s.contains("proeprty2")); - Assert.assertTrue(s.contains("#commented3")); -@@ -109,11 +112,9 @@ - Assert.assertTrue(s.contains("val2")); - Assert.assertTrue(s.contains("val3")); - Assert.assertTrue(s.contains("val4")); -- -- } -- -- -- -+ -+ } -+ - @Test - public void testEnsurePersistedCommentsDoNotMultiplyHeaderAndDate() throws ConfigurationException, IOException { - final File f = File.createTempFile("proeprties", "withComments"); -@@ -159,4 +160,89 @@ - //System.out.println(s); - } - -+ @Test -+ public void testCheckUrlFileOk() throws ConfigurationException, IOException { -+ File f = File.createTempFile("itw", "checkUrlTest"); -+ f.deleteOnExit(); -+ boolean is = DeploymentConfiguration.checkUrl(f.toURI().toURL()); -+ Assert.assertTrue("File was supposed to exists", is); -+ boolean is2 = DeploymentConfiguration.checkUrl(f.toURI().toURL()); -+ Assert.assertTrue("File was supposed to exists", is2); -+ } -+ -+ @Test -+ public void testCheckUrlFileNotOk() throws ConfigurationException, IOException { -+ File f = new File("/some/not/existing/file"); -+ boolean is = DeploymentConfiguration.checkUrl(f.toURI().toURL()); -+ Assert.assertFalse("File was NOT supposed to exists", is); -+ boolean is2 = DeploymentConfiguration.checkUrl(f.toURI().toURL()); -+ Assert.assertFalse("File was NOT supposed to exists", is2); -+ } -+ -+ @Test -+ public void testCheckUrlFileOkNotOk() throws ConfigurationException, IOException { -+ File f = File.createTempFile("itw", "checkUrlTest"); -+ f.deleteOnExit(); -+ boolean is = DeploymentConfiguration.checkUrl(f.toURI().toURL()); -+ Assert.assertTrue("File was supposed to exists", is); -+ f.delete(); -+ boolean is2 = DeploymentConfiguration.checkUrl(f.toURI().toURL()); -+ Assert.assertFalse("File was NOT supposed to exists", is2); -+ f.createNewFile(); -+ f.deleteOnExit(); -+ boolean is3 = DeploymentConfiguration.checkUrl(f.toURI().toURL()); -+ Assert.assertTrue("File was supposed to exists", is3); -+ } -+ -+ @Test -+ public void testCheckUrlRemoteNotOk() throws ConfigurationException, IOException { -+ boolean is = DeploymentConfiguration.checkUrl(new URL("http://some.not/surely/existing.file")); -+ Assert.assertFalse("File was supposed to not exists", is); -+ } -+ -+ @Test -+ public void testCheckUrlRemoteNotOk404_1() throws ConfigurationException, IOException { -+ ServerLauncher server = ServerAccess.getIndependentInstance(System.getProperty("java.io.tmpdir"), ServerAccess.findFreePort()); -+ File f = File.createTempFile("itw", "checkUrlTest"); -+ f.delete(); -+ f.mkdir(); -+ f.deleteOnExit(); -+ try { -+ URL u = new URL("http://localhost:" + server.getPort() + "/" + f.getName() + "/notexisting.file"); -+ boolean is = DeploymentConfiguration.checkUrl(u); -+ Assert.assertFalse("File was not supposed to exists", is); -+ } finally { -+ server.stop(); -+ } -+ } -+ -+ @Test -+ @Remote -+ public void testCheckUrlRemoteNotOk404_2() throws ConfigurationException, IOException { -+ URL u = new URL("https://google.com/some/not/existingitw.file"); -+ boolean is = DeploymentConfiguration.checkUrl(u); -+ Assert.assertFalse("File was not supposed to exists", is); -+ } -+ -+ @Test -+ public void testCheckUrlRemoteOk() throws ConfigurationException, IOException { -+ ServerLauncher server = ServerAccess.getIndependentInstance(System.getProperty("java.io.tmpdir"), ServerAccess.findFreePort()); -+ try { -+ File f = File.createTempFile("itw", "checkUrlTest"); -+ f.deleteOnExit(); -+ URL u = new URL("http://localhost:" + server.getPort() + "/" + f.getName()); -+ boolean is = DeploymentConfiguration.checkUrl(u); -+ Assert.assertTrue("File was supposed to exists", is); -+ f.delete(); -+ //404_3 -+ boolean is2 = DeploymentConfiguration.checkUrl(u); -+ Assert.assertFalse("File was NOT supposed to exists", is2); -+ f.createNewFile(); -+ f.deleteOnExit(); -+ boolean is3 = DeploymentConfiguration.checkUrl(u); -+ Assert.assertTrue("File was supposed to exists", is3); -+ } finally { -+ server.stop(); -+ } -+ } - } -diff -r dbb8dc397d15 -r fcb841380712 tests/netx/unit/net/sourceforge/jnlp/jarsInJreDesc.jnlp ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/netx/unit/net/sourceforge/jnlp/jarsInJreDesc.jnlp Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,100 @@ -+ -+ -+ -+ -+ -+ OmegaT -+ OmegaT development team -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -\ No newline at end of file -diff -r dbb8dc397d15 -r fcb841380712 tests/netx/unit/net/sourceforge/jnlp/resources/MessagesPropertiesTest.java ---- a/tests/netx/unit/net/sourceforge/jnlp/resources/MessagesPropertiesTest.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/tests/netx/unit/net/sourceforge/jnlp/resources/MessagesPropertiesTest.java Tue Dec 18 11:22:16 2018 +0100 -@@ -58,6 +58,7 @@ - public static final LocalesIdentifier DE = new LocalesIdentifier("de"); - public static final LocalesIdentifier PL = new LocalesIdentifier("pl"); - //public static final LocalesIdentifier DE_DE = new LocalesIdentifier("DE","de"); -+ public static final LocalesIdentifier RU = new LocalesIdentifier("ru"); - - public static final String mainFileName = "Messages"; - public static final String pckg = "net.sourceforge.jnlp.resources"; -@@ -146,7 +147,7 @@ - //get default by non existing language and country - main = LocalesIdentifier.DEFAULT; - assertNotNull(main); -- secondary= new LocalesIdentifier[] {LocalesIdentifier.CZ, LocalesIdentifier.DE, LocalesIdentifier.PL}; -+ secondary= new LocalesIdentifier[] {LocalesIdentifier.CZ, LocalesIdentifier.DE, LocalesIdentifier.PL, LocalesIdentifier.RU}; - assertNotNull(secondary); - for (LocalesIdentifier secondary1 : secondary) { - assertNotNull(secondary1); -diff -r dbb8dc397d15 -r fcb841380712 tests/netx/unit/net/sourceforge/jnlp/runtime/JNLPProxySelectorTest.java ---- a/tests/netx/unit/net/sourceforge/jnlp/runtime/JNLPProxySelectorTest.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/tests/netx/unit/net/sourceforge/jnlp/runtime/JNLPProxySelectorTest.java Tue Dec 18 11:22:16 2018 +0100 -@@ -312,7 +312,7 @@ - - result = JNLPProxySelector.getProxiesFromPacResult("PROXY foo:42"); - assertEquals(1, result.size()); -- assertEquals(new Proxy(Type.HTTP, InetSocketAddress.createUnresolved("foo", 42)), result.get(0)); -+ assertEquals(new Proxy(Type.HTTP, new InetSocketAddress("foo", 42)), result.get(0)); - - result = JNLPProxySelector.getProxiesFromPacResult("PROXY foo:bar"); - assertEquals(0, result.size()); -@@ -322,7 +322,7 @@ - - result = JNLPProxySelector.getProxiesFromPacResult("SOCKS foo:42"); - assertEquals(1, result.size()); -- assertEquals(new Proxy(Type.SOCKS, InetSocketAddress.createUnresolved("foo", 42)), result.get(0)); -+ assertEquals(new Proxy(Type.SOCKS, new InetSocketAddress("foo", 42)), result.get(0)); - - result = JNLPProxySelector.getProxiesFromPacResult("SOCKS foo:bar"); - assertEquals(0, result.size()); -diff -r dbb8dc397d15 -r fcb841380712 tests/netx/unit/net/sourceforge/jnlp/util/FileUtilsTest.java ---- a/tests/netx/unit/net/sourceforge/jnlp/util/FileUtilsTest.java Mon Dec 18 13:22:51 2017 +0100 -+++ b/tests/netx/unit/net/sourceforge/jnlp/util/FileUtilsTest.java Tue Dec 18 11:22:16 2018 +0100 -@@ -37,6 +37,9 @@ - package net.sourceforge.jnlp.util; - - import java.io.File; -+import java.nio.file.Files; -+import java.nio.file.attribute.AclEntry; -+import java.nio.file.attribute.AclFileAttributeView; - import java.util.ArrayList; - import java.util.Arrays; - import java.util.List; -@@ -130,4 +133,27 @@ - assertFalse(testChild.exists()); - } - -+ @Test -+ public void testCreateRestrictedFile() throws Exception { -+ if (!JNLPRuntime.isWindows()) { -+ return; -+ } -+ final File tmpdir = new File(System.getProperty("java.io.tmpdir")), testfile = new File(tmpdir, "itw_test_create_restricted_file"); -+ if (testfile.exists()) { -+ assertTrue(testfile.delete()); -+ } -+ testfile.deleteOnExit(); -+ FileUtils.createRestrictedFile(testfile, true); -+ boolean hasOwner = false; -+ AclFileAttributeView view = Files.getFileAttributeView(testfile.toPath(), AclFileAttributeView.class); -+ for (AclEntry ae : view.getAcl()) { -+ if (view.getOwner().getName().equals(ae.principal().getName())) { -+ assertFalse("Duplicate owner entry", hasOwner); -+ hasOwner = true; -+ assertEquals("Owner must have all perimissions",14, ae.permissions().size()); -+ } -+ } -+ assertTrue("No owner entry", hasOwner); -+ } -+ - } -diff -r dbb8dc397d15 -r fcb841380712 tests/netx/unit/net/sourceforge/jnlp/util/lockingfile/NonWindowsLockedFile.java ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/netx/unit/net/sourceforge/jnlp/util/lockingfile/NonWindowsLockedFile.java Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,30 @@ -+/* -+ * To change this license header, choose License Headers in Project Properties. -+ * To change this template file, choose Tools | Templates -+ * and open the template in the editor. -+ */ -+package net.sourceforge.jnlp.util.lockingfile; -+ -+import org.junit.AfterClass; -+import org.junit.BeforeClass; -+ -+/** -+ * -+ * @author jvanek -+ */ -+public class NonWindowsLockedFile extends WindowsLockedFileTest { -+ -+ private static String os; -+ -+ @BeforeClass -+ public static void smuggleOs() { -+ os = System.getProperty("os.name"); -+ System.setProperty("os.name", "No Windows for itw"); -+ } -+ -+ @AfterClass -+ public static void restoreOs() { -+ System.setProperty("os.name", os); -+ } -+ -+} -diff -r dbb8dc397d15 -r fcb841380712 tests/netx/unit/net/sourceforge/jnlp/util/lockingfile/WindowsLockedFileTest.java ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/netx/unit/net/sourceforge/jnlp/util/lockingfile/WindowsLockedFileTest.java Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,71 @@ -+/* -+ * To change this license header, choose License Headers in Project Properties. -+ * To change this template file, choose Tools | Templates -+ * and open the template in the editor. -+ */ -+package net.sourceforge.jnlp.util.lockingfile; -+ -+import java.io.File; -+import java.io.IOException; -+import org.junit.AfterClass; -+import org.junit.BeforeClass; -+import org.junit.Test; -+ -+/** -+ * -+ * @author jvanek -+ */ -+public class WindowsLockedFileTest { -+ -+ private static String os; -+ -+ @BeforeClass -+ public static void smuggleOs() { -+ os = System.getProperty("os.name"); -+ System.setProperty("os.name", "Windows for itw"); -+ } -+ -+ @AfterClass -+ public static void restoreOs() { -+ System.setProperty("os.name", os); -+ } -+ -+ @Test -+ public void testLockUnlockOkExists() throws IOException { -+ File f = File.createTempFile("itw", "lockingFile"); -+ f.deleteOnExit(); -+ LockedFile lf = LockedFile.getInstance(f); -+ lf.lock(); -+ lf.unlock(); -+ } -+ -+ @Test -+ public void testLockUnlockOkNotExists() throws IOException { -+ File f = File.createTempFile("itw", "lockingFile"); -+ f.delete(); -+ LockedFile lf = LockedFile.getInstance(f); -+ lf.lock(); -+ lf.unlock(); -+ } -+ -+ @Test -+ public void testLockUnlockNoOkNotExists() throws IOException { -+ File parent = File.createTempFile("itw", "lockingFile"); -+ parent.deleteOnExit(); -+ File f = new File(parent, "itwLcokingRelict"); -+ f.delete(); -+ parent.setReadOnly(); -+ LockedFile lf = LockedFile.getInstance(f); -+ lf.lock(); -+ lf.unlock();; -+ } -+ -+ @Test -+ public void testLockUnlockNotOkExists() throws IOException { -+ File f = new File("/some/deffinitley/not/exisitng/file.itw"); -+ LockedFile lf = LockedFile.getInstance(f); -+ lf.lock(); -+ lf.unlock(); -+ } -+ -+} -diff -r dbb8dc397d15 -r fcb841380712 tests/reproducers/custom/JavaFx/resources/JavaFx.jar -Binary file tests/reproducers/custom/JavaFx/resources/JavaFx.jar has changed -diff -r dbb8dc397d15 -r fcb841380712 tests/reproducers/custom/JavaFx/resources/JavaFx.jnlp ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/reproducers/custom/JavaFx/resources/JavaFx.jnlp Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,15 @@ -+ -+ -+ -+ JavaFx -+ ITW -+ JavaFx -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff -r dbb8dc397d15 -r fcb841380712 tests/reproducers/custom/JavaFx/srcs/Controller.java ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/reproducers/custom/JavaFx/srcs/Controller.java Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,11 @@ -+import javafx.fxml.FXML; -+import javafx.scene.text.Text; -+ -+public class Controller { -+ @FXML private Text text; -+ -+ @FXML -+ public void onPressButton() { -+ text.setVisible(true); -+ } -+} -diff -r dbb8dc397d15 -r fcb841380712 tests/reproducers/custom/JavaFx/srcs/Main.java ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/reproducers/custom/JavaFx/srcs/Main.java Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,23 @@ -+import javafx.application.Application; -+import javafx.fxml.FXMLLoader; -+import javafx.scene.Parent; -+import javafx.scene.Scene; -+import javafx.stage.Stage; -+ -+public class Main extends Application { -+ -+ @Override -+ public void start(Stage primaryStage) throws Exception { -+ Parent root = FXMLLoader.load(getClass().getResource("helloworld.fxml")); -+ primaryStage.setTitle("Hello World"); -+ primaryStage.setScene(new Scene(root, 500, 200)); -+ primaryStage.show(); -+ System.out.println("jnlp-javafx started"); -+ System.out.println("jnlp-javafx can be terminated"); -+ } -+ -+ -+ public static void main(String[] args) { -+ launch(args); -+ } -+} -diff -r dbb8dc397d15 -r fcb841380712 tests/reproducers/custom/JavaFx/srcs/Makefile ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/reproducers/custom/JavaFx/srcs/Makefile Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,25 @@ -+TESTNAME=JavaFx -+ -+JAVAC_CLASSPATH=$(TEST_EXTENSIONS_DIR):$(NETX_DIR)/lib/classes.jar -+JAVAC=$(EXPORTED_JAVAC) -+JAR=$(EXPORTED_JAR) -+JARSIGNER=$(EXPORTED_JARSIGNER) -+ -+TMPDIR:=$(shell mktemp -d) -+ -+prepare-reproducer: -+ echo PREPARING REPRODUCER $(TESTNAME) -+ #this test contains prebuild binary, as javafx, when installed on computer, preven ITW from building -+ #due to JSObject differennt implementation -+ #$(JAVAC) -d $(TMPDIR) -classpath $(JAVAC_CLASSPATH) Controller.java Main.java; \ -+ #cp helloworld.fxml $(TMPDIR) ; \ -+ #pushd $(TMPDIR); \ -+ #$(JAR) cf $(TESTNAME).jar *.class *.fxml; \ -+ #popd -+ #cp $(TMPDIR)/$(TESTNAME).jar $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR); \ -+ cp ../resources/* $(REPRODUCERS_TESTS_SERVER_DEPLOYDIR); \ -+ rm -rf $(TMPDIR); \ -+ echo PREPARED REPRODUCER $(TESTNAME); \ -+ -+clean-reproducer: -+ echo NOTHING TO CLEAN FOR $(TESTNAME) -diff -r dbb8dc397d15 -r fcb841380712 tests/reproducers/custom/JavaFx/srcs/helloworld.fxml ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/tests/reproducers/custom/JavaFx/srcs/helloworld.fxml Tue Dec 18 11:22:16 2018 +0100 -@@ -0,0 +1,17 @@ -+ -+ -+ -+ -+ -+ -+ -+