Merge
authorduke
Wed, 05 Jul 2017 21:51:13 +0200
changeset 39072 55737c2eebfd
parent 39071 55d10fdcb59e (current diff)
parent 39065 3865e4792ddc (diff)
child 39078 2f6a9a1373f7
Merge
--- a/.hgtags-top-repo	Thu Jun 16 20:56:57 2016 +0000
+++ b/.hgtags-top-repo	Wed Jul 05 21:51:13 2017 +0200
@@ -365,3 +365,4 @@
 647e0142a5a52749db572b5e6638d561def6479e jdk-9+120
 cae471d3b87783e0a3deea658e1e1c84b2485b6c jdk-9+121
 346be2df0f5b31d423807f53a719d1b9a67f3354 jdk-9+122
+405d811c0d7b9b48ff718ae6c240b732f098c028 jdk-9+123
--- a/common/autoconf/basics.m4	Thu Jun 16 20:56:57 2016 +0000
+++ b/common/autoconf/basics.m4	Wed Jul 05 21:51:13 2017 +0200
@@ -1022,13 +1022,21 @@
   AC_MSG_CHECKING([what type of tar was found])
   AC_MSG_RESULT([$TAR_TYPE])
 
+  TAR_CREATE_FILE_PARAM=""
+
   if test "x$TAR_TYPE" = "xgnu"; then
     TAR_INCLUDE_PARAM="T"
     TAR_SUPPORTS_TRANSFORM="true"
+    if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
+      # When using gnu tar for Solaris targets, need to use compatibility mode
+      TAR_CREATE_EXTRA_PARAM="--format=ustar"
+    fi
   else
     TAR_INCLUDE_PARAM="I"
     TAR_SUPPORTS_TRANSFORM="false"
   fi
+  AC_SUBST(TAR_TYPE)
+  AC_SUBST(TAR_CREATE_EXTRA_PARAM)
   AC_SUBST(TAR_INCLUDE_PARAM)
   AC_SUBST(TAR_SUPPORTS_TRANSFORM)
 ])
--- a/common/autoconf/generated-configure.sh	Thu Jun 16 20:56:57 2016 +0000
+++ b/common/autoconf/generated-configure.sh	Wed Jul 05 21:51:13 2017 +0200
@@ -953,6 +953,8 @@
 UNZIP
 TAR_SUPPORTS_TRANSFORM
 TAR_INCLUDE_PARAM
+TAR_CREATE_EXTRA_PARAM
+TAR_TYPE
 FIND_DELETE
 OUTPUT_SYNC
 OUTPUT_SYNC_SUPPORTED
@@ -5092,7 +5094,7 @@
 #CUSTOM_AUTOCONF_INCLUDE
 
 # Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1465306933
+DATE_WHEN_GENERATED=1466007828
 
 ###############################################################################
 #
@@ -21172,9 +21174,15 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR_TYPE" >&5
 $as_echo "$TAR_TYPE" >&6; }
 
+  TAR_CREATE_FILE_PARAM=""
+
   if test "x$TAR_TYPE" = "xgnu"; then
     TAR_INCLUDE_PARAM="T"
     TAR_SUPPORTS_TRANSFORM="true"
+    if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
+      # When using gnu tar for Solaris targets, need to use compatibility mode
+      TAR_CREATE_EXTRA_PARAM="--format=ustar"
+    fi
   else
     TAR_INCLUDE_PARAM="I"
     TAR_SUPPORTS_TRANSFORM="false"
@@ -21183,6 +21191,8 @@
 
 
 
+
+
   # These tools might not be installed by default,
   # need hint on how to install them.
 
--- a/common/autoconf/spec.gmk.in	Thu Jun 16 20:56:57 2016 +0000
+++ b/common/autoconf/spec.gmk.in	Wed Jul 05 21:51:13 2017 +0200
@@ -687,6 +687,8 @@
 DTRACE := @DTRACE@
 FIXPATH:=@FIXPATH@
 
+TAR_TYPE:=@TAR_TYPE@
+TAR_CREATE_EXTRA_PARAM:=@TAR_CREATE_EXTRA_PARAM@
 TAR_INCLUDE_PARAM:=@TAR_INCLUDE_PARAM@
 TAR_SUPPORTS_TRANSFORM:=@TAR_SUPPORTS_TRANSFORM@
 
--- a/hotspot/.hgtags	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/.hgtags	Wed Jul 05 21:51:13 2017 +0200
@@ -525,3 +525,4 @@
 0be6f4f5d18671184e62583668cb1d783dffa128 jdk-9+120
 7e293105dbb0789a468655f81320c891f491f371 jdk-9+121
 af6b4ad908e732d23021f12e8322b204433d5cf6 jdk-9+122
+75f81e1fecfb444f34f357295fe06af60e2762d9 jdk-9+123
--- a/hotspot/src/cpu/ppc/vm/assembler_ppc.hpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/cpu/ppc/vm/assembler_ppc.hpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1530,6 +1530,10 @@
   inline void ld(   Register d, int si16,    Register s1);
   inline void ldu(  Register d, int si16,    Register s1);
 
+  // For convenience. Load pointer into d from b+s1.
+  inline void ld_ptr(Register d, int b, Register s1);
+  DEBUG_ONLY(inline void ld_ptr(Register d, ByteSize b, Register s1);)
+
   //  PPC 1, section 3.3.3 Fixed-Point Store Instructions
   inline void stwx( Register d, Register s1, Register s2);
   inline void stw(  Register d, int si16,    Register s1);
@@ -2194,7 +2198,8 @@
   void add( Register d, RegisterOrConstant roc, Register s1);
   void subf(Register d, RegisterOrConstant roc, Register s1);
   void cmpd(ConditionRegister d, RegisterOrConstant roc, Register s1);
-
+  // Load pointer d from s1+roc.
+  void ld_ptr(Register d, RegisterOrConstant roc, Register s1 = noreg) { ld(d, roc, s1); }
 
   // Emit several instructions to load a 64 bit constant. This issues a fixed
   // instruction pattern so that the constant can be patched later on.
--- a/hotspot/src/cpu/ppc/vm/assembler_ppc.inline.hpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/cpu/ppc/vm/assembler_ppc.inline.hpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -328,6 +328,9 @@
 inline void Assembler::ldx(  Register d, Register s1, Register s2) { emit_int32(LDX_OPCODE | rt(d) | ra0mem(s1) | rb(s2));}
 inline void Assembler::ldu(  Register d, int si16,    Register s1) { assert(d != s1, "according to ibm manual"); emit_int32(LDU_OPCODE | rt(d) | ds(si16) | rta0mem(s1));}
 
+inline void Assembler::ld_ptr(Register d, int b, Register s1) { ld(d, b, s1); }
+DEBUG_ONLY(inline void Assembler::ld_ptr(Register d, ByteSize b, Register s1) { ld(d, in_bytes(b), s1); })
+
 //  PPC 1, section 3.3.3 Fixed-Point Store Instructions
 inline void Assembler::stwx( Register d, Register s1, Register s2) { emit_int32(STWX_OPCODE | rs(d) | ra0mem(s1) | rb(s2));}
 inline void Assembler::stw(  Register d, int si16,    Register s1) { emit_int32(STW_OPCODE  | rs(d) | d1(si16)   | ra0mem(s1));}
--- a/hotspot/src/cpu/ppc/vm/c1_LIRAssembler_ppc.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/cpu/ppc/vm/c1_LIRAssembler_ppc.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1242,7 +1242,7 @@
 
 
 void LIR_Assembler::return_op(LIR_Opr result) {
-  const Register return_pc        = R11;
+  const Register return_pc        = R31;  // Must survive C-call to enable_stack_reserved_zone().
   const Register polling_page     = R12;
 
   // Pop the stack before the safepoint code.
@@ -1265,6 +1265,10 @@
   // Move return pc to LR.
   __ mtlr(return_pc);
 
+  if (StackReservedPages > 0 && compilation()->has_reserved_stack_access()) {
+    __ reserved_stack_check(return_pc);
+  }
+
   // We need to mark the code position where the load from the safepoint
   // polling page was emitted as relocInfo::poll_return_type here.
   __ relocate(relocInfo::poll_return_type);
--- a/hotspot/src/cpu/ppc/vm/globalDefinitions_ppc.hpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/cpu/ppc/vm/globalDefinitions_ppc.hpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 /*
- * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -52,4 +52,6 @@
 #define INCLUDE_RTM_OPT 1
 #endif
 
+#define SUPPORT_RESERVED_STACK_AREA
+
 #endif // CPU_PPC_VM_GLOBALDEFINITIONS_PPC_HPP
--- a/hotspot/src/cpu/ppc/vm/globals_ppc.hpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/cpu/ppc/vm/globals_ppc.hpp	Wed Jul 05 21:51:13 2017 +0200
@@ -43,7 +43,7 @@
 #define DEFAULT_STACK_YELLOW_PAGES (6)
 #define DEFAULT_STACK_RED_PAGES (1)
 #define DEFAULT_STACK_SHADOW_PAGES (6 DEBUG_ONLY(+2))
-#define DEFAULT_STACK_RESERVED_PAGES (0)
+#define DEFAULT_STACK_RESERVED_PAGES (1)
 
 #define MIN_STACK_YELLOW_PAGES DEFAULT_STACK_YELLOW_PAGES
 #define MIN_STACK_RED_PAGES DEFAULT_STACK_RED_PAGES
--- a/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
+ * Copyright (c) 2012, 2016 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -480,6 +480,7 @@
 
 void InterpreterMacroAssembler::generate_stack_overflow_check_with_compare_and_throw(Register Rmem_frame_size, Register Rscratch1) {
   Label done;
+  BLOCK_COMMENT("stack_overflow_check_with_compare_and_throw {");
   sub(Rmem_frame_size, R1_SP, Rmem_frame_size);
   ld(Rscratch1, thread_(stack_overflow_limit));
   cmpld(CCR0/*is_stack_overflow*/, Rmem_frame_size, Rscratch1);
@@ -501,6 +502,7 @@
 
   align(32, 12);
   bind(done);
+  BLOCK_COMMENT("} stack_overflow_check_with_compare_and_throw");
 }
 
 // Separate these two to allow for delay slot in middle.
@@ -805,16 +807,41 @@
 void InterpreterMacroAssembler::remove_activation(TosState state,
                                                   bool throw_monitor_exception,
                                                   bool install_monitor_exception) {
+  BLOCK_COMMENT("remove_activation {");
   unlock_if_synchronized_method(state, throw_monitor_exception, install_monitor_exception);
 
   // Save result (push state before jvmti call and pop it afterwards) and notify jvmti.
   notify_method_exit(false, state, NotifyJVMTI, true);
 
+  BLOCK_COMMENT("reserved_stack_check:");
+  if (StackReservedPages > 0) {
+    // Test if reserved zone needs to be enabled.
+    Label no_reserved_zone_enabling;
+
+    // Compare frame pointers. There is no good stack pointer, as with stack
+    // frame compression we can get different SPs when we do calls. A subsequent
+    // call could have a smaller SP, so that this compare succeeds for an
+    // inner call of the method annotated with ReservedStack.
+    ld_ptr(R0, JavaThread::reserved_stack_activation_offset(), R16_thread);
+    ld_ptr(R11_scratch1, _abi(callers_sp), R1_SP); // Load frame pointer.
+    cmpld(CCR0, R11_scratch1, R0);
+    blt_predict_taken(CCR0, no_reserved_zone_enabling);
+
+    // Enable reserved zone again, throw stack overflow exception.
+    call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::enable_stack_reserved_zone), R16_thread);
+    call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_delayed_StackOverflowError));
+
+    should_not_reach_here();
+
+    bind(no_reserved_zone_enabling);
+  }
+
   verify_oop(R17_tos, state);
   verify_thread();
 
   merge_frames(/*top_frame_sp*/ R21_sender_SP, /*return_pc*/ R0, R11_scratch1, R12_scratch2);
   mtlr(R0);
+  BLOCK_COMMENT("} remove_activation");
 }
 
 // Lock object
--- a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1400,6 +1400,28 @@
 #endif
 }
 
+void MacroAssembler::reserved_stack_check(Register return_pc) {
+  // Test if reserved zone needs to be enabled.
+  Label no_reserved_zone_enabling;
+
+  ld_ptr(R0, JavaThread::reserved_stack_activation_offset(), R16_thread);
+  cmpld(CCR0, R1_SP, R0);
+  blt_predict_taken(CCR0, no_reserved_zone_enabling);
+
+  // Enable reserved zone again, throw stack overflow exception.
+  push_frame_reg_args(0, R0);
+  call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::enable_stack_reserved_zone), R16_thread);
+  pop_frame();
+  mtlr(return_pc);
+  load_const_optimized(R0, StubRoutines::throw_delayed_StackOverflowError_entry());
+  mtctr(R0);
+  bctr();
+
+  should_not_reach_here();
+
+  bind(no_reserved_zone_enabling);
+}
+
 // CmpxchgX sets condition register to cmpX(current, compare).
 void MacroAssembler::cmpxchgw(ConditionRegister flag, Register dest_current_value,
                               Register compare_value, Register exchange_value,
--- a/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.hpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.hpp	Wed Jul 05 21:51:13 2017 +0200
@@ -411,6 +411,10 @@
   // stdux, return the banged address. Otherwise, return 0.
   static address get_stack_bang_address(int instruction, void* ucontext);
 
+  // Check for reserved stack access in method being exited. If the reserved
+  // stack area was accessed, protect it again and throw StackOverflowError.
+  void reserved_stack_check(Register return_pc);
+
   // Atomics
   // CmpxchgX sets condition register to cmpX(current, compare).
   // (flag == ne) => (dest_current_value != compare_value), (!swapped)
--- a/hotspot/src/cpu/ppc/vm/ppc.ad	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/cpu/ppc/vm/ppc.ad	Wed Jul 05 21:51:13 2017 +0200
@@ -1432,7 +1432,7 @@
 
   const bool method_needs_polling = do_polling() && C->is_method_compilation();
   const bool method_is_frameless  = false /* TODO: PPC port C->is_frameless_method()*/;
-  const Register return_pc        = R11;
+  const Register return_pc        = R31;  // Must survive C-call to enable_stack_reserved_zone().
   const Register polling_page     = R12;
 
   if (!method_is_frameless) {
@@ -1456,6 +1456,10 @@
     __ addi(R1_SP, R1_SP, (int)framesize);
   }
 
+  if (StackReservedPages > 0 && C->has_reserved_stack_access()) {
+    __ reserved_stack_check(return_pc);
+  }
+
   if (method_needs_polling) {
     // We need to mark the code position where the load from the safepoint
     // polling page was emitted as relocInfo::poll_return_type here.
--- a/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/cpu/ppc/vm/stubGenerator_ppc.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -3082,6 +3082,9 @@
     StubRoutines::_throw_StackOverflowError_entry   =
       generate_throw_exception("StackOverflowError throw_exception",
                                CAST_FROM_FN_PTR(address, SharedRuntime::throw_StackOverflowError), false);
+    StubRoutines::_throw_delayed_StackOverflowError_entry =
+      generate_throw_exception("delayed StackOverflowError throw_exception",
+                               CAST_FROM_FN_PTR(address, SharedRuntime::throw_delayed_StackOverflowError), false);
 
     // CRC32 Intrinsics.
     if (UseCRC32Intrinsics) {
--- a/hotspot/src/os/aix/vm/os_aix.hpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/os/aix/vm/os_aix.hpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013, 2015 SAP SE. All rights reserved.
+ * Copyright (c) 2013, 2016 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -128,6 +128,8 @@
   // Set PC into context. Needed for continuation after signal.
   static void ucontext_set_pc(ucontext_t* uc, address pc);
 
+  static bool get_frame_at_stack_banging_point(JavaThread* thread, ucontext_t* uc, frame* fr);
+
   // This boolean allows users to forward their own non-matching signals
   // to JVM_handle_aix_signal, harmlessly.
   static bool signal_handlers_are_installed;
--- a/hotspot/src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2014 SAP SE. All rights reserved.
+ * Copyright (c) 2012, 2016 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
  */
 
 // no precompiled headers
-#include "assembler_ppc.inline.hpp"
+#include "asm/assembler.inline.hpp"
 #include "classfile/classLoader.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
@@ -145,6 +145,41 @@
   return fr;
 }
 
+bool os::Aix::get_frame_at_stack_banging_point(JavaThread* thread, ucontext_t* uc, frame* fr) {
+  address pc = (address) os::Aix::ucontext_get_pc(uc);
+  if (Interpreter::contains(pc)) {
+    // Interpreter performs stack banging after the fixed frame header has
+    // been generated while the compilers perform it before. To maintain
+    // semantic consistency between interpreted and compiled frames, the
+    // method returns the Java sender of the current frame.
+    *fr = os::fetch_frame_from_context(uc);
+    if (!fr->is_first_java_frame()) {
+      assert(fr->safe_for_sender(thread), "Safety check");
+      *fr = fr->java_sender();
+    }
+  } else {
+    // More complex code with compiled code.
+    assert(!Interpreter::contains(pc), "Interpreted methods should have been handled above");
+    CodeBlob* cb = CodeCache::find_blob(pc);
+    if (cb == NULL || !cb->is_nmethod() || cb->is_frame_complete_at(pc)) {
+      // Not sure where the pc points to, fallback to default
+      // stack overflow handling. In compiled code, we bang before
+      // the frame is complete.
+      return false;
+    } else {
+      intptr_t* sp = os::Aix::ucontext_get_sp(uc);
+      *fr = frame(sp, (address)*sp);
+      if (!fr->is_java_frame()) {
+        assert(fr->safe_for_sender(thread), "Safety check");
+        assert(!fr->is_first_frame(), "Safety check");
+        *fr = fr->java_sender();
+      }
+    }
+  }
+  assert(fr->is_java_frame(), "Safety check");
+  return true;
+}
+
 frame os::get_sender_for_C_frame(frame* fr) {
   if (*fr->sp() == NULL) {
     // fr is the last C frame
@@ -246,14 +281,32 @@
       // to continue with yellow zone disabled, but that doesn't buy us much and prevents
       // hs_err_pid files.
       if (thread->in_stack_yellow_reserved_zone(addr)) {
-        thread->disable_stack_yellow_reserved_zone();
         if (thread->thread_state() == _thread_in_Java) {
+            if (thread->in_stack_reserved_zone(addr)) {
+              frame fr;
+              if (os::Aix::get_frame_at_stack_banging_point(thread, uc, &fr)) {
+                assert(fr.is_java_frame(), "Must be a Javac frame");
+                frame activation =
+                  SharedRuntime::look_for_reserved_stack_annotated_method(thread, fr);
+                if (activation.sp() != NULL) {
+                  thread->disable_stack_reserved_zone();
+                  if (activation.is_interpreted_frame()) {
+                    thread->set_reserved_stack_activation((address)activation.fp());
+                  } else {
+                    thread->set_reserved_stack_activation((address)activation.unextended_sp());
+                  }
+                  return 1;
+                }
+              }
+            }
           // Throw a stack overflow exception.
           // Guard pages will be reenabled while unwinding the stack.
+          thread->disable_stack_yellow_reserved_zone();
           stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::STACK_OVERFLOW);
           goto run_stub;
         } else {
           // Thread was in the vm or native code. Return and try to finish.
+          thread->disable_stack_yellow_reserved_zone();
           return 1;
         }
       } else if (thread->in_stack_red_zone(addr)) {
--- a/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
+ * Copyright (c) 2012, 2016 SAP SE. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
  */
 
 // no precompiled headers
-#include "assembler_ppc.inline.hpp"
+#include "asm/assembler.inline.hpp"
 #include "classfile/classLoader.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
@@ -157,6 +157,42 @@
   return frame(sp, epc.pc());
 }
 
+bool os::Linux::get_frame_at_stack_banging_point(JavaThread* thread, ucontext_t* uc, frame* fr) {
+  address pc = (address) os::Linux::ucontext_get_pc(uc);
+  if (Interpreter::contains(pc)) {
+    // Interpreter performs stack banging after the fixed frame header has
+    // been generated while the compilers perform it before. To maintain
+    // semantic consistency between interpreted and compiled frames, the
+    // method returns the Java sender of the current frame.
+    *fr = os::fetch_frame_from_context(uc);
+    if (!fr->is_first_java_frame()) {
+      assert(fr->safe_for_sender(thread), "Safety check");
+      *fr = fr->java_sender();
+    }
+  } else {
+    // More complex code with compiled code.
+    assert(!Interpreter::contains(pc), "Interpreted methods should have been handled above");
+    CodeBlob* cb = CodeCache::find_blob(pc);
+    if (cb == NULL || !cb->is_nmethod() || cb->is_frame_complete_at(pc)) {
+      // Not sure where the pc points to, fallback to default
+      // stack overflow handling. In compiled code, we bang before
+      // the frame is complete.
+      return false;
+    } else {
+      intptr_t* fp = os::Linux::ucontext_get_fp(uc);
+      intptr_t* sp = os::Linux::ucontext_get_sp(uc);
+      *fr = frame(sp, (address)*sp);
+      if (!fr->is_java_frame()) {
+        assert(fr->safe_for_sender(thread), "Safety check");
+        assert(!fr->is_first_frame(), "Safety check");
+        *fr = fr->java_sender();
+      }
+    }
+  }
+  assert(fr->is_java_frame(), "Safety check");
+  return true;
+}
+
 frame os::get_sender_for_C_frame(frame* fr) {
   if (*fr->sp() == 0) {
     // fr is the last C frame
@@ -243,13 +279,31 @@
       if (thread->on_local_stack(addr)) {
         // stack overflow
         if (thread->in_stack_yellow_reserved_zone(addr)) {
-          thread->disable_stack_yellow_reserved_zone();
           if (thread->thread_state() == _thread_in_Java) {
+            if (thread->in_stack_reserved_zone(addr)) {
+              frame fr;
+              if (os::Linux::get_frame_at_stack_banging_point(thread, uc, &fr)) {
+                assert(fr.is_java_frame(), "Must be a Javac frame");
+                frame activation =
+                  SharedRuntime::look_for_reserved_stack_annotated_method(thread, fr);
+                if (activation.sp() != NULL) {
+                  thread->disable_stack_reserved_zone();
+                  if (activation.is_interpreted_frame()) {
+                    thread->set_reserved_stack_activation((address)activation.fp());
+                  } else {
+                    thread->set_reserved_stack_activation((address)activation.unextended_sp());
+                  }
+                  return 1;
+                }
+              }
+            }
             // Throw a stack overflow exception.
             // Guard pages will be reenabled while unwinding the stack.
+            thread->disable_stack_yellow_reserved_zone();
             stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::STACK_OVERFLOW);
           } else {
             // Thread was in the vm or native code. Return and try to finish.
+            thread->disable_stack_yellow_reserved_zone();
             return 1;
           }
         } else if (thread->in_stack_red_zone(addr)) {
--- a/hotspot/src/share/vm/classfile/classLoaderData.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/classfile/classLoaderData.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -67,6 +67,7 @@
 #include "runtime/javaCalls.hpp"
 #include "runtime/jniHandles.hpp"
 #include "runtime/mutex.hpp"
+#include "runtime/orderAccess.hpp"
 #include "runtime/safepoint.hpp"
 #include "runtime/synchronizer.hpp"
 #include "utilities/growableArray.hpp"
@@ -76,6 +77,11 @@
 #include "trace/tracing.hpp"
 #endif
 
+// helper function to avoid in-line casts
+template <typename T> static T* load_ptr_acquire(T* volatile *p) {
+  return static_cast<T*>(OrderAccess::load_ptr_acquire(p));
+}
+
 ClassLoaderData * ClassLoaderData::_the_null_class_loader_data = NULL;
 
 ClassLoaderData::ClassLoaderData(Handle h_class_loader, bool is_anonymous, Dependencies dependencies) :
@@ -147,20 +153,23 @@
 }
 
 void ClassLoaderData::classes_do(KlassClosure* klass_closure) {
-  for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
+  // Lock-free access requires load_ptr_acquire
+  for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
     klass_closure->do_klass(k);
     assert(k != k->next_link(), "no loops!");
   }
 }
 
 void ClassLoaderData::classes_do(void f(Klass * const)) {
+  assert_locked_or_safepoint(_metaspace_lock);
   for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
     f(k);
   }
 }
 
 void ClassLoaderData::methods_do(void f(Method*)) {
-  for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
+  // Lock-free access requires load_ptr_acquire
+  for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
     if (k->is_instance_klass()) {
       InstanceKlass::cast(k)->methods_do(f);
     }
@@ -179,7 +188,8 @@
 }
 
 void ClassLoaderData::classes_do(void f(InstanceKlass*)) {
-  for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
+  // Lock-free access requires load_ptr_acquire
+  for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
     if (k->is_instance_klass()) {
       f(InstanceKlass::cast(k));
     }
@@ -188,6 +198,7 @@
 }
 
 void ClassLoaderData::modules_do(void f(ModuleEntry*)) {
+  assert_locked_or_safepoint(Module_lock);
   if (_modules != NULL) {
     for (int i = 0; i < _modules->table_size(); i++) {
       for (ModuleEntry* entry = _modules->bucket(i);
@@ -200,9 +211,11 @@
 }
 
 void ClassLoaderData::packages_do(void f(PackageEntry*)) {
-  if (_packages != NULL) {
-    for (int i = 0; i < _packages->table_size(); i++) {
-      for (PackageEntry* entry = _packages->bucket(i);
+  // Lock-free access requires load_ptr_acquire
+  PackageEntryTable* packages = load_ptr_acquire(&_packages);
+  if (packages != NULL) {
+    for (int i = 0; i < packages->table_size(); i++) {
+      for (PackageEntry* entry = packages->bucket(i);
                               entry != NULL;
                               entry = entry->next()) {
         f(entry);
@@ -325,10 +338,9 @@
     MutexLockerEx ml(metaspace_lock(), Mutex::_no_safepoint_check_flag);
     Klass* old_value = _klasses;
     k->set_next_link(old_value);
-    // Make sure linked class is stable, since the class list is walked without a lock
-    OrderAccess::storestore();
-    // link the new item into the list
-    _klasses = k;
+    // Link the new item into the list, making sure the linked class is stable
+    // since the list can be walked without a lock
+    OrderAccess::release_store_ptr(&_klasses, k);
   }
 
   if (publicize && k->class_loader_data() != NULL) {
@@ -343,11 +355,10 @@
   }
 }
 
-// This is called by InstanceKlass::deallocate_contents() to remove the
-// scratch_class for redefine classes.  We need a lock because there it may not
-// be called at a safepoint if there's an error.
+// Remove a klass from the _klasses list for scratch_class during redefinition
+// or parsed class in the case of an error.
 void ClassLoaderData::remove_class(Klass* scratch_class) {
-  MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
+  assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint");
   Klass* prev = NULL;
   for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
     if (k == scratch_class) {
@@ -390,42 +401,46 @@
 
 PackageEntryTable* ClassLoaderData::packages() {
   // Lazily create the package entry table at first request.
-  if (_packages == NULL) {
+  // Lock-free access requires load_ptr_acquire.
+  PackageEntryTable* packages = load_ptr_acquire(&_packages);
+  if (packages == NULL) {
     MutexLockerEx m1(metaspace_lock(), Mutex::_no_safepoint_check_flag);
     // Check if _packages got allocated while we were waiting for this lock.
-    if (_packages == NULL) {
-      _packages = new PackageEntryTable(PackageEntryTable::_packagetable_entry_size);
+    if ((packages = _packages) == NULL) {
+      packages = new PackageEntryTable(PackageEntryTable::_packagetable_entry_size);
+      // Ensure _packages is stable, since it is examined without a lock
+      OrderAccess::release_store_ptr(&_packages, packages);
     }
   }
-  return _packages;
+  return packages;
 }
 
 ModuleEntryTable* ClassLoaderData::modules() {
   // Lazily create the module entry table at first request.
-  if (_modules == NULL) {
+  // Lock-free access requires load_ptr_acquire.
+  ModuleEntryTable* modules = load_ptr_acquire(&_modules);
+  if (modules == NULL) {
     MutexLocker m1(Module_lock);
-    // Check again if _modules has been allocated while we were getting this lock.
-    if (_modules != NULL) {
-      return _modules;
-    }
+    // Check if _modules got allocated while we were waiting for this lock.
+    if ((modules = _modules) == NULL) {
+      modules = new ModuleEntryTable(ModuleEntryTable::_moduletable_entry_size);
+      // Each loader has one unnamed module entry. Create it before
+      // any classes, loaded by this loader, are defined in case
+      // they end up being defined in loader's unnamed module.
+      modules->create_unnamed_module(this);
 
-    ModuleEntryTable* temp_table = new ModuleEntryTable(ModuleEntryTable::_moduletable_entry_size);
-    // Each loader has one unnamed module entry. Create it before
-    // any classes, loaded by this loader, are defined in case
-    // they end up being defined in loader's unnamed module.
-    temp_table->create_unnamed_module(this);
-
-    {
-      MutexLockerEx m1(metaspace_lock(), Mutex::_no_safepoint_check_flag);
-      // Ensure _modules is stable, since it is examined without a lock
-      OrderAccess::storestore();
-      _modules = temp_table;
+      {
+        MutexLockerEx m1(metaspace_lock(), Mutex::_no_safepoint_check_flag);
+        // Ensure _modules is stable, since it is examined without a lock
+        OrderAccess::release_store_ptr(&_modules, modules);
+      }
     }
   }
-  return _modules;
+  return modules;
 }
 
 oop ClassLoaderData::keep_alive_object() const {
+  assert_locked_or_safepoint(_metaspace_lock);
   assert(!keep_alive(), "Don't use with CLDs that are artificially kept alive");
   return is_anonymous() ? _klasses->java_mirror() : class_loader();
 }
@@ -499,30 +514,33 @@
   // to create smaller arena for Reflection class loaders also.
   // The reason for the delayed allocation is because some class loaders are
   // simply for delegating with no metadata of their own.
-  if (_metaspace == NULL) {
-    MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
-    // Check again if metaspace has been allocated while we were getting this lock.
-    if (_metaspace != NULL) {
-      return _metaspace;
-    }
-    if (this == the_null_class_loader_data()) {
-      assert (class_loader() == NULL, "Must be");
-      set_metaspace(new Metaspace(_metaspace_lock, Metaspace::BootMetaspaceType));
-    } else if (is_anonymous()) {
-      if (class_loader() != NULL) {
-        log_trace(class, loader, data)("is_anonymous: %s", class_loader()->klass()->internal_name());
+  // Lock-free access requires load_ptr_acquire.
+  Metaspace* metaspace = load_ptr_acquire(&_metaspace);
+  if (metaspace == NULL) {
+    MutexLockerEx ml(_metaspace_lock,  Mutex::_no_safepoint_check_flag);
+    // Check if _metaspace got allocated while we were waiting for this lock.
+    if ((metaspace = _metaspace) == NULL) {
+      if (this == the_null_class_loader_data()) {
+        assert (class_loader() == NULL, "Must be");
+        metaspace = new Metaspace(_metaspace_lock, Metaspace::BootMetaspaceType);
+      } else if (is_anonymous()) {
+        if (class_loader() != NULL) {
+          log_trace(class, loader, data)("is_anonymous: %s", class_loader()->klass()->internal_name());
+        }
+        metaspace = new Metaspace(_metaspace_lock, Metaspace::AnonymousMetaspaceType);
+      } else if (class_loader()->is_a(SystemDictionary::reflect_DelegatingClassLoader_klass())) {
+        if (class_loader() != NULL) {
+          log_trace(class, loader, data)("is_reflection: %s", class_loader()->klass()->internal_name());
+        }
+        metaspace = new Metaspace(_metaspace_lock, Metaspace::ReflectionMetaspaceType);
+      } else {
+        metaspace = new Metaspace(_metaspace_lock, Metaspace::StandardMetaspaceType);
       }
-      set_metaspace(new Metaspace(_metaspace_lock, Metaspace::AnonymousMetaspaceType));
-    } else if (class_loader()->is_a(SystemDictionary::reflect_DelegatingClassLoader_klass())) {
-      if (class_loader() != NULL) {
-        log_trace(class, loader, data)("is_reflection: %s", class_loader()->klass()->internal_name());
-      }
-      set_metaspace(new Metaspace(_metaspace_lock, Metaspace::ReflectionMetaspaceType));
-    } else {
-      set_metaspace(new Metaspace(_metaspace_lock, Metaspace::StandardMetaspaceType));
+      // Ensure _metaspace is stable, since it is examined without a lock
+      OrderAccess::release_store_ptr(&_metaspace, metaspace);
     }
   }
-  return _metaspace;
+  return metaspace;
 }
 
 JNIHandleBlock* ClassLoaderData::handles() const           { return _handles; }
@@ -638,6 +656,7 @@
 #endif // PRODUCT
 
 void ClassLoaderData::verify() {
+  assert_locked_or_safepoint(_metaspace_lock);
   oop cl = class_loader();
 
   guarantee(this == class_loader_data(cl) || is_anonymous(), "Must be the same");
@@ -656,7 +675,8 @@
 }
 
 bool ClassLoaderData::contains_klass(Klass* klass) {
-  for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
+  // Lock-free access requires load_ptr_acquire
+  for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
     if (k == klass) return true;
   }
   return false;
@@ -1046,6 +1066,7 @@
 
   // Find the first klass in the CLDG.
   while (cld != NULL) {
+    assert_locked_or_safepoint(cld->metaspace_lock());
     klass = cld->_klasses;
     if (klass != NULL) {
       _next_klass = klass;
@@ -1063,6 +1084,7 @@
 
   // No more klasses in the current CLD. Time to find a new CLD.
   ClassLoaderData* cld = klass->class_loader_data();
+  assert_locked_or_safepoint(cld->metaspace_lock());
   while (next == NULL) {
     cld = cld->next();
     if (cld == NULL) {
--- a/hotspot/src/share/vm/classfile/classLoaderData.hpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/classfile/classLoaderData.hpp	Wed Jul 05 21:51:13 2017 +0200
@@ -171,8 +171,8 @@
   Dependencies _dependencies; // holds dependencies from this class loader
                               // data to others.
 
-  Metaspace * _metaspace;  // Meta-space where meta-data defined by the
-                           // classes in the class loader are allocated.
+  Metaspace * volatile _metaspace;  // Meta-space where meta-data defined by the
+                                    // classes in the class loader are allocated.
   Mutex* _metaspace_lock;  // Locks the metaspace for allocations and setup.
   bool _unloading;         // true if this class loader goes away
   bool _is_anonymous;      // if this CLD is for an anonymous class
@@ -186,9 +186,9 @@
   JNIHandleBlock* _handles; // Handles to constant pool arrays, Modules, etc, which
                             // have the same life cycle of the corresponding ClassLoader.
 
-  Klass* _klasses;         // The classes defined by the class loader.
-  PackageEntryTable* _packages; // The packages defined by the class loader.
-  ModuleEntryTable* _modules;   // The modules defined by the class loader.
+  Klass* volatile _klasses;              // The classes defined by the class loader.
+  PackageEntryTable* volatile _packages; // The packages defined by the class loader.
+  ModuleEntryTable* volatile _modules;   // The modules defined by the class loader.
 
   // These method IDs are created for the class loader and set to NULL when the
   // class loader is unloaded.  They are rarely freed, only for redefine classes
@@ -216,8 +216,6 @@
   ClassLoaderData(Handle h_class_loader, bool is_anonymous, Dependencies dependencies);
   ~ClassLoaderData();
 
-  void set_metaspace(Metaspace* m) { _metaspace = m; }
-
   JNIHandleBlock* handles() const;
   void set_handles(JNIHandleBlock* handles);
 
--- a/hotspot/src/share/vm/classfile/packageEntry.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/classfile/packageEntry.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -34,15 +34,13 @@
 #include "utilities/hashtable.inline.hpp"
 #include "utilities/ostream.hpp"
 
-// Return true if this package is exported to m.
+// Returns true if this package specifies m as a qualified export, including through an unnamed export
 bool PackageEntry::is_qexported_to(ModuleEntry* m) const {
   assert(m != NULL, "No module to lookup in this package's qualified exports list");
   MutexLocker m1(Module_lock);
-  if (!_is_exported) {
-    return false;
-  } else if (_is_exported_allUnnamed && !m->is_named()) {
+  if (is_exported_allUnnamed() && !m->is_named()) {
     return true;
-  } else if (_qualified_exports == NULL) {
+  } else if (!has_qual_exports_list()) {
     return false;
   } else {
     return _qualified_exports->contains(m);
@@ -52,8 +50,7 @@
 // Add a module to the package's qualified export list.
 void PackageEntry::add_qexport(ModuleEntry* m) {
   assert_locked_or_safepoint(Module_lock);
-  assert(_is_exported == true, "Adding a qualified export to a package that is not exported");
-  if (_qualified_exports == NULL) {
+  if (!has_qual_exports_list()) {
     // Lazily create a package's qualified exports list.
     // Initial size is small, do not anticipate export lists to be large.
     _qualified_exports =
@@ -62,7 +59,7 @@
   _qualified_exports->append_if_missing(m);
 }
 
-// Set the package's exported state based on the value of the ModuleEntry.
+// Set the package's exported states based on the value of the ModuleEntry.
 void PackageEntry::set_exported(ModuleEntry* m) {
   MutexLocker m1(Module_lock);
   if (is_unqual_exported()) {
@@ -73,7 +70,7 @@
 
   if (m == NULL) {
     // NULL indicates the package is being unqualifiedly exported
-    if (_is_exported && _qualified_exports != NULL) {
+    if (has_qual_exports_list()) {
       // Legit to transition a package from being qualifiedly exported
       // to unqualified.  Clean up the qualified lists at the next
       // safepoint.
@@ -85,11 +82,17 @@
 
   } else {
     // Add the exported module
-    _is_exported = true;
     add_qexport(m);
   }
 }
 
+void PackageEntry::set_is_exported_allUnnamed() {
+  MutexLocker m1(Module_lock);
+  if (!is_unqual_exported()) {
+   _is_exported_allUnnamed = true;
+  }
+}
+
 // Remove dead module entries within the package's exported list.
 void PackageEntry::purge_qualified_exports() {
   assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
@@ -170,7 +173,7 @@
   if (!module->is_named()) {
     // Set the exported state to true because all packages
     // within the unnamed module are unqualifiedly exported
-    entry->set_exported(true);
+    entry->set_unqual_exported();
   }
   entry->set_module(module);
   return entry;
@@ -248,6 +251,20 @@
 
 }
 
+// iteration of qualified exports
+void PackageEntry::package_exports_do(ModuleClosure* const f) {
+  assert_locked_or_safepoint(Module_lock);
+  assert(f != NULL, "invariant");
+
+  if (has_qual_exports_list()) {
+    int qe_len = _qualified_exports->length();
+
+    for (int i = 0; i < qe_len; ++i) {
+      f->do_module(_qualified_exports->at(i));
+    }
+  }
+}
+
 // Remove dead entries from all packages' exported list
 void PackageEntryTable::purge_all_package_exports() {
   assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
@@ -281,10 +298,10 @@
 void PackageEntry::print(outputStream* st) {
   ResourceMark rm;
   st->print_cr("package entry "PTR_FORMAT" name %s module %s classpath_index "
-               INT32_FORMAT " is_exported %d is_exported_allUnnamed %d " "next "PTR_FORMAT,
+               INT32_FORMAT " is_exported_unqualified %d is_exported_allUnnamed %d " "next "PTR_FORMAT,
                p2i(this), name()->as_C_string(),
                (module()->is_named() ? module()->name()->as_C_string() : UNNAMED_MODULE),
-               _classpath_index, _is_exported, _is_exported_allUnnamed, p2i(next()));
+               _classpath_index, _is_exported_unqualified, _is_exported_allUnnamed, p2i(next()));
 }
 
 void PackageEntryTable::verify() {
@@ -305,17 +322,3 @@
 void PackageEntry::verify() {
   guarantee(name() != NULL, "A package entry must have a corresponding symbol name.");
 }
-
-// iteration of qualified exports
-void PackageEntry::package_exports_do(ModuleClosure* const f) {
-  assert_locked_or_safepoint(Module_lock);
-  assert(f != NULL, "invariant");
-
-  if (is_qual_exported()) {
-    int qe_len = _qualified_exports->length();
-
-    for (int i = 0; i < qe_len; ++i) {
-      f->do_module(_qualified_exports->at(i));
-    }
-  }
-}
--- a/hotspot/src/share/vm/classfile/packageEntry.hpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/classfile/packageEntry.hpp	Wed Jul 05 21:51:13 2017 +0200
@@ -34,16 +34,32 @@
 // A PackageEntry basically represents a Java package.  It contains:
 //   - Symbol* containing the package's name.
 //   - ModuleEntry* for this package's containing module.
-//   - a flag indicating if package is exported, either qualifiedly or
-//     unqualifiedly.
+//   - a flag indicating if package is exported unqualifiedly
 //   - a flag indicating if this package is exported to all unnamed modules.
 //   - a growable array containing other module entries that this
 //     package is exported to.
 //
-// Packages that are:
-//   - not exported:        _qualified_exports = NULL  && _is_exported is false
-//   - qualified exports:   (_qualified_exports != NULL || _is_exported_allUnnamed is true) && _is_exported is true
-//   - unqualified exports: (_qualified_exports = NULL && _is_exported_allUnnamed is false) && _is_exported is true
+// Packages can be exported in the following 3 ways:
+//   - not exported:        the package has not been explicitly qualified to a
+//                            particular module nor has it been specified to be
+//                            unqualifiedly exported to all modules. If all states
+//                            of exportedness are false, the package is considered
+//                            not exported.
+//   - qualified exports:   the package has been explicitly qualified to at least
+//                            one particular module or has been qualifiedly exported
+//                            to all unnamed modules.
+//                            Note: _is_exported_allUnnamed is a form of a qualified
+//                            export. It is equivalent to the package being
+//                            explicitly exported to all current and future unnamed modules.
+//   - unqualified exports: the package is exported to all modules.
+//
+// A package can transition from:
+//   - being not exported, to being exported either in a qualified or unqualified manner
+//   - being qualifiedly exported, to unqualifiedly exported. Its exported scope is widened.
+//
+// A package cannot transition from:
+//   - being unqualifiedly exported, to exported qualifiedly to a specific module.
+//       This transition attempt is silently ignored in set_exported.
 //
 // The Mutex Module_lock is shared between ModuleEntry and PackageEntry, to lock either
 // data structure.
@@ -55,7 +71,7 @@
   // loaded by the boot loader from -Xbootclasspath/a in an unnamed module, it
   // indicates from which class path entry.
   s2 _classpath_index;
-  bool _is_exported;
+  bool _is_exported_unqualified;
   bool _is_exported_allUnnamed;
   GrowableArray<ModuleEntry*>* _exported_pending_delete; // transitioned from qualified to unqualified, delete at safepoint
   GrowableArray<ModuleEntry*>* _qualified_exports;
@@ -68,7 +84,7 @@
   void init() {
     _module = NULL;
     _classpath_index = -1;
-    _is_exported = false;
+    _is_exported_unqualified = false;
     _is_exported_allUnnamed = false;
     _exported_pending_delete = NULL;
     _qualified_exports = NULL;
@@ -83,34 +99,41 @@
   void               set_module(ModuleEntry* m) { _module = m; }
 
   // package's export state
-  bool is_exported() const { return _is_exported; } // qualifiedly or unqualifiedly exported
+  bool is_exported() const { // qualifiedly or unqualifiedly exported
+      return (is_unqual_exported() || has_qual_exports_list() || is_exported_allUnnamed());
+  }
+  // Returns true if the package has any explicit qualified exports or is exported to all unnamed
   bool is_qual_exported() const {
-    return (_is_exported && (_qualified_exports != NULL || _is_exported_allUnnamed));
+    return (has_qual_exports_list() || is_exported_allUnnamed());
+  }
+  // Returns true if there are any explicit qualified exports
+  bool has_qual_exports_list() const {
+    assert(!(_qualified_exports != NULL && _is_exported_unqualified),
+           "_qualified_exports set at same time as _is_exported_unqualified");
+    return (_qualified_exports != NULL);
+  }
+  bool is_exported_allUnnamed() const {
+    assert(!(_is_exported_allUnnamed && _is_exported_unqualified),
+           "_is_exported_allUnnamed set at same time as _is_exported_unqualified");
+    return _is_exported_allUnnamed;
   }
   bool is_unqual_exported() const {
-    return (_is_exported && (_qualified_exports == NULL && !_is_exported_allUnnamed));
+    assert(!(_qualified_exports != NULL && _is_exported_unqualified),
+           "_qualified_exports set at same time as _is_exported_unqualified");
+    assert(!(_is_exported_allUnnamed && _is_exported_unqualified),
+           "_is_exported_allUnnamed set at same time as _is_exported_unqualified");
+    return _is_exported_unqualified;
   }
   void set_unqual_exported() {
-    _is_exported = true;
+    _is_exported_unqualified = true;
     _is_exported_allUnnamed = false;
     _qualified_exports = NULL;
   }
   bool exported_pending_delete() const     { return (_exported_pending_delete != NULL); }
 
-  void set_exported(bool e)                { _is_exported = e; }
   void set_exported(ModuleEntry* m);
 
-  void set_is_exported_allUnnamed() {
-    if (!is_unqual_exported()) {
-     _is_exported_allUnnamed = true;
-     _is_exported = true;
-    }
-  }
-  bool is_exported_allUnnamed() const {
-    assert(_is_exported || !_is_exported_allUnnamed,
-           "is_allUnnamed set without is_exported being set");
-    return _is_exported_allUnnamed;
-  }
+  void set_is_exported_allUnnamed();
 
   void set_classpath_index(s2 classpath_index) {
     _classpath_index = classpath_index;
@@ -122,7 +145,7 @@
   // returns true if the package is defined in the unnamed module
   bool in_unnamed_module() const  { return !_module->is_named(); }
 
-  // returns true if the package specifies m as a qualified export
+  // returns true if the package specifies m as a qualified export, including through an unnamed export
   bool is_qexported_to(ModuleEntry* m) const;
 
   // add the module to the package's qualified exports
--- a/hotspot/src/share/vm/interpreter/linkResolver.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -966,20 +966,18 @@
   methodHandle resolved_method = linktime_resolve_static_method(link_info, CHECK);
 
   // The resolved class can change as a result of this resolution.
-  KlassHandle resolved_klass = KlassHandle(THREAD, resolved_method->method_holder());
+  KlassHandle resolved_klass(THREAD, resolved_method->method_holder());
 
-  Method* save_resolved_method = resolved_method();
   // Initialize klass (this should only happen if everything is ok)
   if (initialize_class && resolved_klass->should_be_initialized()) {
     resolved_klass->initialize(CHECK);
-    // Use updated LinkInfo (to reresolve with resolved_klass as method_holder?)
+    // Use updated LinkInfo to reresolve with resolved method holder
     LinkInfo new_info(resolved_klass, link_info.name(), link_info.signature(),
                       link_info.current_klass(),
                       link_info.check_access() ? LinkInfo::needs_access_check : LinkInfo::skip_access_check);
     resolved_method = linktime_resolve_static_method(new_info, CHECK);
   }
 
-  assert(save_resolved_method == resolved_method(), "does this change?");
   // setup result
   result.set_static(resolved_klass, resolved_method, CHECK);
 }
--- a/hotspot/src/share/vm/memory/metaspaceShared.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/memory/metaspaceShared.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -191,7 +191,12 @@
     case Bytecodes::_getfield:      *bcs.bcp() = Bytecodes::_nofast_getfield;      break;
     case Bytecodes::_putfield:      *bcs.bcp() = Bytecodes::_nofast_putfield;      break;
     case Bytecodes::_aload_0:       *bcs.bcp() = Bytecodes::_nofast_aload_0;       break;
-    case Bytecodes::_iload:         *bcs.bcp() = Bytecodes::_nofast_iload;         break;
+    case Bytecodes::_iload: {
+      if (!bcs.is_wide()) {
+        *bcs.bcp() = Bytecodes::_nofast_iload;
+      }
+      break;
+    }
     default: break;
     }
   }
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1104,21 +1104,21 @@
 
 void InstanceKlass::mask_for(const methodHandle& method, int bci,
   InterpreterOopMap* entry_for) {
-  // Dirty read, then double-check under a lock.
-  if (_oop_map_cache == NULL) {
-    // Otherwise, allocate a new one.
+  // Lazily create the _oop_map_cache at first request
+  // Lock-free access requires load_ptr_acquire.
+  OopMapCache* oop_map_cache =
+      static_cast<OopMapCache*>(OrderAccess::load_ptr_acquire(&_oop_map_cache));
+  if (oop_map_cache == NULL) {
     MutexLocker x(OopMapCacheAlloc_lock);
-    // First time use. Allocate a cache in C heap
-    if (_oop_map_cache == NULL) {
-      // Release stores from OopMapCache constructor before assignment
-      // to _oop_map_cache. C++ compilers on ppc do not emit the
-      // required memory barrier only because of the volatile
-      // qualifier of _oop_map_cache.
-      OrderAccess::release_store_ptr(&_oop_map_cache, new OopMapCache());
+    // Check if _oop_map_cache was allocated while we were waiting for this lock
+    if ((oop_map_cache = _oop_map_cache) == NULL) {
+      oop_map_cache = new OopMapCache();
+      // Ensure _oop_map_cache is stable, since it is examined without a lock
+      OrderAccess::release_store_ptr(&_oop_map_cache, oop_map_cache);
     }
   }
-  // _oop_map_cache is constant after init; lookup below does is own locking.
-  _oop_map_cache->lookup(method, bci, entry_for);
+  // _oop_map_cache is constant after init; lookup below does its own locking.
+  oop_map_cache->lookup(method, bci, entry_for);
 }
 
 
--- a/hotspot/src/share/vm/services/virtualMemoryTracker.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/services/virtualMemoryTracker.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -23,7 +23,10 @@
  */
 #include "precompiled.hpp"
 
+#include "runtime/atomic.inline.hpp"
+#include "runtime/os.hpp"
 #include "runtime/threadCritical.hpp"
+#include "services/memTracker.hpp"
 #include "services/virtualMemoryTracker.hpp"
 
 size_t VirtualMemorySummary::_snapshot[CALC_OBJ_SIZE_IN_TYPE(VirtualMemorySnapshot, size_t)];
@@ -52,46 +55,41 @@
   if (all_committed()) return true;
 
   CommittedMemoryRegion committed_rgn(addr, size, stack);
-  LinkedListNode<CommittedMemoryRegion>* node = _committed_regions.find_node(committed_rgn);
-  if (node != NULL) {
+  LinkedListNode<CommittedMemoryRegion>* node = _committed_regions.head();
+
+  while (node != NULL) {
     CommittedMemoryRegion* rgn = node->data();
     if (rgn->same_region(addr, size)) {
       return true;
     }
 
     if (rgn->adjacent_to(addr, size)) {
-      // check if the next region covers this committed region,
-      // the regions may not be merged due to different call stacks
-      LinkedListNode<CommittedMemoryRegion>* next =
-        node->next();
-      if (next != NULL && next->data()->contain_region(addr, size)) {
-        if (next->data()->same_region(addr, size)) {
-          next->data()->set_call_stack(stack);
-        }
-        return true;
-      }
-      if (rgn->call_stack()->equals(stack)) {
+      // special case to expand prior region if there is no next region
+      LinkedListNode<CommittedMemoryRegion>* next = node->next();
+      if (next == NULL && rgn->call_stack()->equals(stack)) {
         VirtualMemorySummary::record_uncommitted_memory(rgn->size(), flag());
         // the two adjacent regions have the same call stack, merge them
         rgn->expand_region(addr, size);
         VirtualMemorySummary::record_committed_memory(rgn->size(), flag());
         return true;
       }
-      VirtualMemorySummary::record_committed_memory(size, flag());
-      if (rgn->base() > addr) {
-        return _committed_regions.insert_before(committed_rgn, node) != NULL;
-      } else {
-        return _committed_regions.insert_after(committed_rgn, node) != NULL;
       }
+
+    if (rgn->overlap_region(addr, size)) {
+      // Clear a space for this region in the case it overlaps with any regions.
+      remove_uncommitted_region(addr, size);
+      break;  // commit below
     }
-    assert(rgn->contain_region(addr, size), "Must cover this region");
-    return true;
-  } else {
+    if (rgn->end() >= addr + size){
+      break;
+    }
+    node = node->next();
+  }
+
     // New committed region
     VirtualMemorySummary::record_committed_memory(size, flag());
     return add_committed_region(committed_rgn);
   }
-}
 
 void ReservedMemoryRegion::set_all_committed(bool b) {
   if (all_committed() != b) {
@@ -175,48 +173,52 @@
       }
     }
   } else {
-    // we have to walk whole list to remove the committed regions in
-    // specified range
-    LinkedListNode<CommittedMemoryRegion>* head =
-      _committed_regions.head();
-    LinkedListNode<CommittedMemoryRegion>* prev = NULL;
-    VirtualMemoryRegion uncommitted_rgn(addr, sz);
+    CommittedMemoryRegion del_rgn(addr, sz, *call_stack());
+    address end = addr + sz;
 
-    while (head != NULL && !uncommitted_rgn.is_empty()) {
-      CommittedMemoryRegion* crgn = head->data();
-      // this committed region overlaps to region to uncommit
-      if (crgn->overlap_region(uncommitted_rgn.base(), uncommitted_rgn.size())) {
-        if (crgn->same_region(uncommitted_rgn.base(), uncommitted_rgn.size())) {
-          // find matched region, remove the node will do
-          VirtualMemorySummary::record_uncommitted_memory(uncommitted_rgn.size(), flag());
+    LinkedListNode<CommittedMemoryRegion>* head = _committed_regions.head();
+    LinkedListNode<CommittedMemoryRegion>* prev = NULL;
+    CommittedMemoryRegion* crgn;
+
+    while (head != NULL) {
+      crgn = head->data();
+
+      if (crgn->same_region(addr, sz)) {
+        VirtualMemorySummary::record_uncommitted_memory(crgn->size(), flag());
           _committed_regions.remove_after(prev);
           return true;
-        } else if (crgn->contain_region(uncommitted_rgn.base(), uncommitted_rgn.size())) {
-          // this committed region contains whole uncommitted region
-          VirtualMemorySummary::record_uncommitted_memory(uncommitted_rgn.size(), flag());
-          return remove_uncommitted_region(head, uncommitted_rgn.base(), uncommitted_rgn.size());
-        } else if (uncommitted_rgn.contain_region(crgn->base(), crgn->size())) {
-          // this committed region has been uncommitted
-          size_t exclude_size = crgn->end() - uncommitted_rgn.base();
-          uncommitted_rgn.exclude_region(uncommitted_rgn.base(), exclude_size);
+      }
+
+      // del_rgn contains crgn
+      if (del_rgn.contain_region(crgn->base(), crgn->size())) {
           VirtualMemorySummary::record_uncommitted_memory(crgn->size(), flag());
-          LinkedListNode<CommittedMemoryRegion>* tmp = head;
           head = head->next();
           _committed_regions.remove_after(prev);
-          continue;
-        } else if (crgn->contain_address(uncommitted_rgn.base())) {
-          size_t toUncommitted = crgn->end() - uncommitted_rgn.base();
-          crgn->exclude_region(uncommitted_rgn.base(), toUncommitted);
-          uncommitted_rgn.exclude_region(uncommitted_rgn.base(), toUncommitted);
-          VirtualMemorySummary::record_uncommitted_memory(toUncommitted, flag());
-        } else if (uncommitted_rgn.contain_address(crgn->base())) {
-          size_t toUncommitted = uncommitted_rgn.end() - crgn->base();
-          crgn->exclude_region(crgn->base(), toUncommitted);
-          uncommitted_rgn.exclude_region(uncommitted_rgn.end() - toUncommitted,
-            toUncommitted);
-          VirtualMemorySummary::record_uncommitted_memory(toUncommitted, flag());
+        continue;  // don't update head or prev
         }
+
+      // Found addr in the current crgn. There are 2 subcases:
+      if (crgn->contain_address(addr)) {
+
+        // (1) Found addr+size in current crgn as well. (del_rgn is contained in crgn)
+        if (crgn->contain_address(end - 1)) {
+          VirtualMemorySummary::record_uncommitted_memory(sz, flag());
+          return remove_uncommitted_region(head, addr, sz); // done!
+        } else {
+          // (2) Did not find del_rgn's end in crgn.
+          size_t size = crgn->end() - del_rgn.base();
+          crgn->exclude_region(addr, size);
+          VirtualMemorySummary::record_uncommitted_memory(size, flag());
       }
+
+      } else if (crgn->contain_address(end - 1)) {
+      // Found del_rgn's end, but not its base addr.
+        size_t size = del_rgn.end() - crgn->base();
+        crgn->exclude_region(crgn->base(), size);
+        VirtualMemorySummary::record_uncommitted_memory(size, flag());
+        return true;  // should be done if the list is sorted properly!
+      }
+
       prev = head;
       head = head->next();
     }
@@ -386,7 +388,8 @@
 
   assert(reserved_rgn != NULL, "No reserved region");
   assert(reserved_rgn->contain_region(addr, size), "Not completely contained");
-  return reserved_rgn->add_committed_region(addr, size, stack);
+  bool result = reserved_rgn->add_committed_region(addr, size, stack);
+  return result;
 }
 
 bool VirtualMemoryTracker::remove_uncommitted_region(address addr, size_t size) {
@@ -398,7 +401,8 @@
   ReservedMemoryRegion* reserved_rgn = _reserved_regions->find(rgn);
   assert(reserved_rgn != NULL, "No reserved region");
   assert(reserved_rgn->contain_region(addr, size), "Not completely contained");
-  return reserved_rgn->remove_uncommitted_region(addr, size);
+  bool result = reserved_rgn->remove_uncommitted_region(addr, size);
+  return result;
 }
 
 bool VirtualMemoryTracker::remove_released_region(address addr, size_t size) {
@@ -488,5 +492,3 @@
 
   return true;
 }
-
-
--- a/hotspot/src/share/vm/services/virtualMemoryTracker.hpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/services/virtualMemoryTracker.hpp	Wed Jul 05 21:51:13 2017 +0200
@@ -261,8 +261,7 @@
     VirtualMemoryRegion(addr, size), _stack(stack) { }
 
   inline int compare(const CommittedMemoryRegion& rgn) const {
-    if (overlap_region(rgn.base(), rgn.size()) ||
-        adjacent_to   (rgn.base(), rgn.size())) {
+    if (overlap_region(rgn.base(), rgn.size())) {
       return 0;
     } else {
       if (base() == rgn.base()) {
--- a/hotspot/src/share/vm/services/writeableFlags.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/services/writeableFlags.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -93,12 +93,12 @@
 
 // set a boolean global flag
 Flag::Error WriteableFlags::set_bool_flag(const char* name, const char* arg, Flag::Flags origin, FormatBuffer<80>& err_msg) {
-  int value = true;
-
-  if (sscanf(arg, "%d", &value)) {
-    return set_bool_flag(name, value != 0, origin, err_msg);
+  if ((strcasecmp(arg, "true") == 0) || (*arg == '1' && *(arg + 1) == 0)) {
+    return set_bool_flag(name, true, origin, err_msg);
+  } else if ((strcasecmp(arg, "false") == 0) || (*arg == '0' && *(arg + 1) == 0)) {
+    return set_bool_flag(name, false, origin, err_msg);
   }
-  err_msg.print("flag value must be a boolean (1 or 0)");
+  err_msg.print("flag value must be a boolean (1/0 or true/false)");
   return Flag::WRONG_FORMAT;
 }
 
--- a/hotspot/src/share/vm/utilities/linkedlist.hpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/src/share/vm/utilities/linkedlist.hpp	Wed Jul 05 21:51:13 2017 +0200
@@ -259,6 +259,11 @@
 
   virtual bool remove(LinkedListNode<E>* node) {
     LinkedListNode<E>* p = this->head();
+    if (p == node) {
+      this->set_head(p->next());
+      delete_node(node);
+      return true;
+    }
     while (p != NULL && p->next() != node) {
       p = p->next();
     }
--- a/hotspot/test/gc/TestSmallHeap.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/test/gc/TestSmallHeap.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,22 +23,15 @@
 
 /**
  * @test TestSmallHeap
- * @bug 8067438
+ * @bug 8067438 8152239
  * @requires vm.gc=="null"
- * @requires (vm.opt.AggressiveOpts=="null") | (vm.opt.AggressiveOpts=="false")
- * @requires vm.compMode != "Xcomp"
- * @requires vm.opt.UseCompressedOops != false
  * @summary Verify that starting the VM with a small heap works
- * @library /testlibrary /test/lib
+ * @library /testlibrary /test/lib /test/lib/share/classes
  * @modules java.base/jdk.internal.misc
  * @modules java.management/sun.management
- * @ignore 8076621
  * @build TestSmallHeap
  * @run main ClassFileInstaller sun.hotspot.WhiteBox
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx2m -XX:+UseParallelGC TestSmallHeap
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx2m -XX:+UseSerialGC TestSmallHeap
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx2m -XX:+UseG1GC TestSmallHeap
- * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx2m -XX:+UseConcMarkSweepGC TestSmallHeap
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI TestSmallHeap
  */
 
 /* Note: It would be nice to verify the minimal supported heap size (2m) here,
@@ -60,23 +53,55 @@
  * So, the expected heap size is page_size * 512.
  */
 
-import jdk.test.lib.*;
-import com.sun.management.HotSpotDiagnosticMXBean;
-import java.lang.management.ManagementFactory;
-import static jdk.test.lib.Asserts.*;
+import jdk.test.lib.Asserts;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+import java.util.LinkedList;
 
 import sun.hotspot.WhiteBox;
 
 public class TestSmallHeap {
 
-    public static void main(String[] args) {
+    public static void main(String[] args) throws Exception {
+        // Do all work in the VM driving the test, the VM
+        // with the small heap size should do as little as
+        // possible to avoid hitting an OOME.
         WhiteBox wb = WhiteBox.getWhiteBox();
         int pageSize = wb.getVMPageSize();
         int heapBytesPerCard = 512;
         long expectedMaxHeap = pageSize * heapBytesPerCard;
-        String maxHeap
-            = ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class)
-                .getVMOption("MaxHeapSize").getValue();
-        assertEQ(Long.parseLong(maxHeap), expectedMaxHeap);
+
+        verifySmallHeapSize("-XX:+UseParallelGC", expectedMaxHeap);
+        verifySmallHeapSize("-XX:+UseSerialGC", expectedMaxHeap);
+        verifySmallHeapSize("-XX:+UseG1GC", expectedMaxHeap);
+        verifySmallHeapSize("-XX:+UseConcMarkSweepGC", expectedMaxHeap);
+    }
+
+    private static void verifySmallHeapSize(String gc, long expectedMaxHeap) throws Exception {
+        LinkedList<String> vmOptions = new LinkedList<>();
+        vmOptions.add(gc);
+        vmOptions.add("-Xmx2m");
+        vmOptions.add("-XX:+PrintFlagsFinal");
+        vmOptions.add(VerifyHeapSize.class.getName());
+
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(vmOptions.toArray(new String[0]));
+        OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
+        analyzer.shouldHaveExitValue(0);
+
+        long maxHeapSize = Long.parseLong(analyzer.firstMatch("MaxHeapSize.+=\\s+(\\d+)",1));
+        long actualHeapSize = Long.parseLong(analyzer.firstMatch(VerifyHeapSize.actualMsg + "(\\d+)",1));
+        Asserts.assertEQ(maxHeapSize, expectedMaxHeap);
+        Asserts.assertLessThanOrEqual(actualHeapSize, maxHeapSize);
     }
 }
+
+class VerifyHeapSize {
+    public static final String actualMsg = "Actual heap size: ";
+
+    public static void main(String args[]) {
+        // Avoid string concatenation
+        System.out.print(actualMsg);
+        System.out.println(Runtime.getRuntime().maxMemory());
+    }
+}
--- a/hotspot/test/gc/g1/ihop/TestIHOPErgo.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/test/gc/g1/ihop/TestIHOPErgo.java	Wed Jul 05 21:51:13 2017 +0200
@@ -28,6 +28,7 @@
  * @requires vm.gc=="G1" | vm.gc=="null"
  * @requires vm.opt.FlightRecorder != true
  * @requires vm.opt.ExplicitGCInvokesConcurrent != true
+ * @requires vm.opt.MaxGCPauseMillis == "null"
  * @library /testlibrary /test/lib /
  * @modules java.base/jdk.internal.misc
  * @modules java.management
--- a/hotspot/test/gc/g1/mixedgc/TestLogging.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/test/gc/g1/mixedgc/TestLogging.java	Wed Jul 05 21:51:13 2017 +0200
@@ -25,6 +25,7 @@
  * @test TestLogging
  * @summary Check that a mixed GC is reflected in the gc logs
  * @requires vm.gc=="G1" | vm.gc=="null"
+ * @requires vm.opt.MaxGCPauseMillis == "null"
  * @library /testlibrary /test/lib
  * @modules java.base/jdk.internal.misc
  * @modules java.management
--- a/hotspot/test/gc/stress/TestMultiThreadStressRSet.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/test/gc/stress/TestMultiThreadStressRSet.java	Wed Jul 05 21:51:13 2017 +0200
@@ -33,6 +33,7 @@
  * @key stress
  * @requires vm.gc=="G1" | vm.gc=="null"
  * @requires os.maxMemory > 2G
+ * @requires vm.opt.MaxGCPauseMillis == "null"
  *
  * @summary Stress G1 Remembered Set using multiple threads
  * @modules java.base/jdk.internal.misc
--- a/hotspot/test/gc/stress/TestStressRSetCoarsening.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/test/gc/stress/TestStressRSetCoarsening.java	Wed Jul 05 21:51:13 2017 +0200
@@ -30,6 +30,7 @@
  * @bug 8146984 8147087
  * @requires vm.gc=="G1" | vm.gc=="null"
  * @requires os.maxMemory > 3G
+ * @requires vm.opt.MaxGCPauseMillis == "null"
  *
  * @summary Stress G1 Remembered Set by creating a lot of cross region links
  * @modules java.base/jdk.internal.misc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/NMT/CommitOverlappingRegions.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @summary Test commits of overlapping regions of memory.
+ * @key nmt jcmd
+ * @library /testlibrary /test/lib
+ * @modules java.base/jdk.internal.misc
+ *          java.management
+ * @build   CommitOverlappingRegions
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ *                              sun.hotspot.WhiteBox$WhiteBoxPermission
+ * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:NativeMemoryTracking=detail CommitOverlappingRegions
+ */
+
+import jdk.test.lib.*;
+import sun.hotspot.WhiteBox;
+
+public class CommitOverlappingRegions {
+    public static WhiteBox wb = WhiteBox.getWhiteBox();
+    public static void main(String args[]) throws Exception {
+        OutputAnalyzer output;
+        long size = 32 * 1024;
+        long addr = wb.NMTReserveMemory(8*size);
+
+        String pid = Long.toString(ProcessTools.getProcessId());
+        ProcessBuilder pb = new ProcessBuilder();
+
+        pb.command(new String[] { JDKToolFinder.getJDKTool("jcmd"), pid, "VM.native_memory", "detail"});
+        System.out.println("Address is " + Long.toHexString(addr));
+
+        // Start: . . . . . . . .
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=0KB)");
+
+        // Committing: * * * . . . . .
+        // Region:     * * * . . . . .
+        // Expected Total: 3 x 32KB = 96KB
+        wb.NMTCommitMemory(addr + 0*size, 3*size);
+
+        // Committing: . . . . * * * .
+        // Region:     * * * . * * * .
+        // Expected Total: 6 x 32KB = 192KB
+        wb.NMTCommitMemory(addr + 4*size, 3*size);
+
+        // Check output after first 2 commits.
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=192KB)");
+
+        // Committing: . . * * * . . .
+        // Region:     * * * * * * * .
+        // Expected Total: 7 x 32KB = 224KB
+        wb.NMTCommitMemory(addr + 2*size, 3*size);
+
+        // Check output after overlapping commit.
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=224KB)");
+
+        // Uncommitting: * * * * * * * *
+        // Region:       . . . . . . . .
+        // Expected Total: 0 x 32KB = 0KB
+        wb.NMTUncommitMemory(addr + 0*size, 8*size);
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=0KB)");
+
+        // Committing: * * . . . . . .
+        // Region:     * * . . . . . .
+        // Expected Total: 2 x 32KB = 64KB
+        wb.NMTCommitMemory(addr + 0*size, 2*size);
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=64KB)");
+
+        // Committing: . * * * . . . .
+        // Region:     * * * * . . . .
+        // Expected Total: 4 x 32KB = 128KB
+        wb.NMTCommitMemory(addr + 1*size, 3*size);
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=128KB)");
+
+        // Uncommitting: * * * . . . . .
+        // Region:       . . . * . . . .
+        // Expected Total: 1 x 32KB = 32KB
+        wb.NMTUncommitMemory(addr + 0*size, 3*size);
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=32KB)");
+
+        // Committing: . . . * * . . .
+        // Region:     . . . * * . . .
+        // Expected Total: 2 x 32KB = 64KB
+        wb.NMTCommitMemory(addr + 3*size, 2*size);
+        System.out.println("Address is " + Long.toHexString(addr + 3*size));
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=64KB)");
+
+        // Committing: . . . . * * . .
+        // Region:     . . . * * * . .
+        // Expected Total: 3 x 32KB = 96KB
+        wb.NMTCommitMemory(addr + 4*size, 2*size);
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=96KB)");
+
+        // Committing: . . . . . * * .
+        // Region:     . . . * * * * .
+        // Expected Total: 4 x 32KB = 128KB
+        wb.NMTCommitMemory(addr + 5*size, 2*size);
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=128KB)");
+
+        // Committing: . . . . . . * *
+        // Region:     . . . * * * * *
+        // Expected Total: 5 x 32KB = 160KB
+        wb.NMTCommitMemory(addr + 6*size, 2*size);
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=160KB)");
+
+        // Uncommitting: * * * * * * * *
+        // Region:       . . . . . . . .
+        // Expected Total: 0 x 32KB = 32KB
+        wb.NMTUncommitMemory(addr + 0*size, 8*size);
+        output = new OutputAnalyzer(pb.start());
+        output.shouldContain("Test (reserved=256KB, committed=0KB)");
+    }
+}
--- a/hotspot/test/runtime/ReservedStack/ReservedStackTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/test/runtime/ReservedStack/ReservedStackTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -27,6 +27,7 @@
  * @modules java.base/jdk.internal.misc
  * @modules java.base/jdk.internal.vm.annotation
  * @build jdk.test.lib.*
+ * @run main/othervm -Xint ReservedStackTest
  * @run main/othervm -XX:-Inline -XX:CompileCommand=exclude,java/util/concurrent/locks/AbstractOwnableSynchronizer.setExclusiveOwnerThread ReservedStackTest
  */
 
@@ -196,9 +197,12 @@
             System.out.println("Test started execution at frame = " + (counter - deframe));
             String result = test.getResult();
             // The feature is not fully implemented on all platforms,
-            // corruptions are still possible
-            boolean supportedPlatform = Platform.isSolaris() || Platform.isOSX()
-                || (Platform.isLinux() && (Platform.isX86() || Platform.isX64()));
+            // corruptions are still possible.
+            boolean supportedPlatform =
+                Platform.isAix() ||
+                (Platform.isLinux() && (Platform.isPPC() || Platform.isX64() || Platform.isX86())) ||
+                Platform.isOSX() ||
+                Platform.isSolaris();
             if (supportedPlatform && !result.contains("PASSED")) {
                 System.out.println(result);
                 throw new Error(result);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/ReservedStack/ReservedStackTestCompiler.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test ReservedStackTestCompiler
+ * @summary Run ReservedStackTest with dedicated compilers C1 and C2.
+ * @requires vm.flavor == "server"
+ * @library /testlibrary
+ * @modules java.base/jdk.internal.misc
+ * @modules java.base/jdk.internal.vm.annotation
+ * @build jdk.test.lib.* ReservedStackTest
+ * @run main/othervm -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:-Inline -XX:CompileCommand=exclude,java/util/concurrent/locks/AbstractOwnableSynchronizer.setExclusiveOwnerThread ReservedStackTest
+ * @run main/othervm -XX:-TieredCompilation                         -XX:-Inline -XX:CompileCommand=exclude,java/util/concurrent/locks/AbstractOwnableSynchronizer.setExclusiveOwnerThread ReservedStackTest
+ */
+
+// Intentionally left blank. Just runs ReservedStackTest with @requires annotation.
--- a/hotspot/test/serviceability/dcmd/vm/SetVMFlagTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/hotspot/test/serviceability/dcmd/vm/SetVMFlagTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -56,6 +56,25 @@
         run(new JMXExecutor());
     }
 
+    private void setMutableFlagInternal(CommandExecutor executor, String flag,
+                                        boolean val, boolean isNumeric) {
+        String strFlagVal;
+        if (isNumeric) {
+            strFlagVal = val ? "1" : "0";
+        } else {
+            strFlagVal = val ? "true" : "false";
+        }
+
+        OutputAnalyzer out = executor.execute("VM.set_flag " + flag + " " + strFlagVal);
+        out.stderrShouldBeEmpty();
+
+        out = getAllFlags(executor);
+
+        String newFlagVal = out.firstMatch(MANAGEABLE_PATTERN.replace("(\\S+)", flag), 1);
+
+        assertNotEquals(newFlagVal, val ? "1" : "0");
+    }
+
     private void setMutableFlag(CommandExecutor executor) {
         OutputAnalyzer out = getAllFlags(executor);
         String flagName = out.firstMatch(MANAGEABLE_PATTERN, 1);
@@ -69,15 +88,8 @@
         }
 
         Boolean blnVal = Boolean.parseBoolean(flagVal);
-
-        out = executor.execute("VM.set_flag " + flagName + " " + (blnVal ? 0 : 1));
-        out.stderrShouldBeEmpty();
-
-        out = getAllFlags(executor);
-
-        String newFlagVal = out.firstMatch(MANAGEABLE_PATTERN.replace("(\\S+)", flagName), 1);
-
-        assertNotEquals(newFlagVal, flagVal);
+        setMutableFlagInternal(executor, flagName, !blnVal, true);
+        setMutableFlagInternal(executor, flagName, blnVal, false);
     }
 
     private void setMutableFlagWithInvalidValue(CommandExecutor executor) {
@@ -95,7 +107,7 @@
         // a boolean flag accepts only 0/1 as its value
         out = executor.execute("VM.set_flag " + flagName + " unexpected_value");
         out.stderrShouldBeEmpty();
-        out.stdoutShouldContain("flag value must be a boolean (1 or 0)");
+        out.stdoutShouldContain("flag value must be a boolean (1/0 or true/false)");
 
         out = getAllFlags(executor);
 
--- a/jdk/.hgtags	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/.hgtags	Wed Jul 05 21:51:13 2017 +0200
@@ -365,3 +365,4 @@
 b9a518bf72516954e57ac2f6e3ef21e13008f1cd jdk-9+120
 ee29aaab5889555ea56e4c0ed690aabb7613529d jdk-9+121
 981ae344923f09c46d8d1d5a3ed9fa71deafe0c6 jdk-9+122
+c40c8739bcdc88892ff58ebee3fd8a3f287be94d jdk-9+123
--- a/jdk/make/lib/Awt2dLibraries.gmk	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/make/lib/Awt2dLibraries.gmk	Wed Jul 05 21:51:13 2017 +0200
@@ -578,9 +578,7 @@
             $(X_CFLAGS) \
             $(LIBAWT_HEADLESS_CFLAGS), \
         DISABLED_WARNINGS_xlc := 1506-356, \
-        DISABLED_WARNINGS_gcc := maybe-uninitialized int-to-pointer-cast, \
-        DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE \
-            E_EMPTY_TRANSLATION_UNIT, \
+        DISABLED_WARNINGS_solstudio := E_EMPTY_TRANSLATION_UNIT, \
         MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_headless/mapfile-vers, \
         LDFLAGS := $(LDFLAGS_JDKLIB) \
             $(call SET_SHARED_LIBRARY_ORIGIN), \
--- a/jdk/src/demo/share/jfc/Font2DTest/FontPanel.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/demo/share/jfc/Font2DTest/FontPanel.java	Wed Jul 05 21:51:13 2017 +0200
@@ -128,7 +128,6 @@
     /// General Graphics Variable
     private final JScrollBar verticalBar;
     private final FontCanvas fc;
-    private boolean updateBackBuffer = true;
     private boolean updateFontMetrics = true;
     private boolean updateFont = true;
     private boolean force16Cols = false;
@@ -178,7 +177,6 @@
         verticalBar.addAdjustmentListener( this );
         this.addComponentListener( new ComponentAdapter() {
             public void componentResized( ComponentEvent e ) {
-                updateBackBuffer = true;
                 updateFontMetrics = true;
             }
         });
@@ -199,7 +197,6 @@
 
     public void setTransformG2( int transform ) {
         g2Transform = transform;
-        updateBackBuffer = true;
         updateFontMetrics = true;
         fc.repaint();
     }
@@ -252,7 +249,6 @@
             AffineTransform at = getAffineTransform( fontTransform );
             testFont = testFont.deriveFont( at );
         }
-        updateBackBuffer = true;
         updateFontMetrics = true;
         fc.repaint();
         if ( fontModified ) {
@@ -266,14 +262,12 @@
         antiAliasType = ((AAValues)aa).getHint();
         fractionalMetricsType = ((FMValues)fm).getHint();
         lcdContrast = contrast;
-        updateBackBuffer = true;
         updateFontMetrics = true;
         fc.repaint();
     }
 
     public void setDrawMethod( int i ) {
         drawMethod = i;
-        updateBackBuffer = true;
         fc.repaint();
     }
 
@@ -292,7 +286,6 @@
             drawMethod = TL_DRAW;
         }
 
-        updateBackBuffer = true;
         updateFontMetrics = true;
         fc.repaint();
         updateFontInfo();
@@ -300,13 +293,11 @@
 
     public void setGridDisplay( boolean b ) {
         showGrid = b;
-        updateBackBuffer = true;
         fc.repaint();
     }
 
     public void setForce16Columns( boolean b ) {
         force16Cols = b;
-        updateBackBuffer = true;
         updateFontMetrics = true;
         fc.repaint();
     }
@@ -411,7 +402,6 @@
 
     /// When scrolled using the scroll bar, update the backbuffer
     public void adjustmentValueChanged( AdjustmentEvent e ) {
-        updateBackBuffer = true;
         fc.repaint();
     }
 
@@ -443,9 +433,6 @@
         /// Offset from the top left edge of the canvas where the draw will start
         private int canvasInset_X = 5, canvasInset_Y = 5;
 
-        /// Offscreen buffer of this canvas
-        private BufferedImage backBuffer = null;
-
         /// LineBreak'ed TextLayout vector
         private Vector lineBreakTLs = null;
 
@@ -509,7 +496,6 @@
         public boolean firstTime() { return firstTime; }
         public void refresh() {
             firstTime = false;
-            updateBackBuffer = true;
             repaint();
         }
 
@@ -895,19 +881,10 @@
 
         /// Draws text according to the parameters set by Font2DTest GUI
         private void drawText( Graphics g, int w, int h ) {
-            Graphics2D g2;
-
-            /// Create back buffer when not printing, and its Graphics2D
-            /// Then set drawing parameters for that Graphics2D object
-            if ( isPrinting )
-              g2 = (Graphics2D) g;
-            else  {
-                backBuffer = (BufferedImage) this.createImage( w, h );
-                g2 = backBuffer.createGraphics();
-                g2.setColor(Color.white);
-                g2.fillRect(0, 0, w, h);
-                g2.setColor(Color.black);
-            }
+            Graphics2D g2 = (Graphics2D) g;
+            g2.setColor(Color.white);
+            g2.fillRect(0, 0, w, h);
+            g2.setColor(Color.black);
 
             /// sets font, RenderingHints.
             setParams( g2 );
@@ -927,8 +904,6 @@
                 int charToDraw = drawStart;
                 if ( showGrid )
                   drawGrid( g2 );
-                if ( !isPrinting )
-                  g.drawImage( backBuffer, 0, 0, this );
 
                 for ( int i = 0; i < numCharDown && charToDraw <= drawEnd; i++ ) {
                   for ( int j = 0; j < numCharAcross && charToDraw <= drawEnd; j++, charToDraw++ ) {
@@ -938,19 +913,12 @@
                       modeSpecificDrawChar( g2, charToDraw,
                                             gridLocX + gridWidth / 2,
                                             gridLocY + maxAscent );
-                      //if ( !isPrinting ) {
-                      //    g.setClip( gridLocX, gridLocY, gridWidth + 1, gridHeight + 1 );
-                      //    g.drawImage( backBuffer, 0, 0, this );
-                            //}
 
                   }
                 }
             }
             else if ( textToUse == USER_TEXT ) {
                 g2.drawRect( 0, 0, w - 1, h - 1 );
-                if ( !isPrinting )
-                  g.drawImage( backBuffer, 0, 0, this );
-
                 for ( int i = drawStart; i <= drawEnd; i++ ) {
                     int lineStartX = canvasInset_Y;
                     int lineStartY = ( i - drawStart ) * gridHeight + maxAscent;
@@ -960,9 +928,6 @@
             else {
                 float xPos, yPos = (float) canvasInset_Y;
                 g2.drawRect( 0, 0, w - 1, h - 1 );
-                if ( !isPrinting )
-                  g.drawImage( backBuffer, 0, 0, this );
-
                 for ( int i = drawStart; i <= drawEnd; i++ ) {
                     TextLayout oneLine = (TextLayout) lineBreakTLs.elementAt( i );
                     xPos =
@@ -982,33 +947,26 @@
                     yPos += fmData[3] + fmData[5]; // descent + leading
                 }
             }
-                if ( !isPrinting )
-                g.drawImage( backBuffer, 0, 0, this );
             g2.dispose();
         }
 
         /// Component paintComponent function...
         /// Draws/Refreshes canvas according to flag(s) set by other functions
         public void paintComponent( Graphics g ) {
-            if ( updateBackBuffer ) {
+              super.paintComponent(g);
+
                 Dimension d = this.getSize();
                 isPrinting = false;
                 try {
                     drawText( g, d.width, d.height );
                 }
                 catch ( CannotDrawException e ) {
+                    super.paintComponent(g);
                     f2dt.fireChangeStatus( ERRORS[ e.id ], true );
-                    super.paintComponent(g);
                     return;
                 }
-            }
-            else {
-              /// Screen refresh
-              g.drawImage( backBuffer, 0, 0, this );
-            }
 
             showingError = false;
-            updateBackBuffer = false;
         }
 
         /// Printable interface function
@@ -1087,7 +1045,17 @@
         /// Ouputs the current canvas into a given PNG file
         public void writePNG( String fileName ) {
             try {
-                ImageIO.write(backBuffer, "png", new java.io.File(fileName));
+                int w = this.getSize().width;
+                int h = this.getSize().height;
+                BufferedImage buffer = (BufferedImage) this.createImage( w, h );
+                Graphics2D g2 = buffer.createGraphics();
+                g2.setColor(Color.white);
+                g2.fillRect(0, 0, w, h);
+                g2.setColor(Color.black);
+                updateFontMetrics = true;
+                drawText(g2, w, h);
+                updateFontMetrics = true;
+                ImageIO.write(buffer, "png", new java.io.File(fileName));
             }
             catch ( Exception e ) {
                 f2dt.fireChangeStatus( "ERROR: Failed to Save PNG image; See stack trace", true );
--- a/jdk/src/demo/share/jfc/Notepad/resources/Notepad_ja.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/demo/share/jfc/Notepad/resources/Notepad_ja.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -38,7 +38,7 @@
 pasteLabel=\u8CBC\u4ED8\u3051
 pasteImage=resources/paste.gif
 undoLabel=\u5143\u306B\u623B\u3059
-redoLabel=\u3084\u308A\u76F4\u3057
+redoLabel=\u518D\u5B9F\u884C
 
 #
 # debug Menu definition
--- a/jdk/src/java.base/macosx/classes/module-info.java.extra	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/macosx/classes/module-info.java.extra	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,4 +24,3 @@
  */
 
 exports jdk.internal.loader to java.desktop;
-provides java.security.Provider with apple.security.AppleProvider;
--- a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,17 +61,25 @@
                 "Usage:  pack200 [-opt... | --option=value]... x.pack[.gz] y.jar",
                 "",
                 "Packing Options",
-                "  -g, --no-gzip                   output a plain *.pack file with no zipping",
-                "  --gzip                          (default) post-process the pack output with gzip",
-                "  -G, --strip-debug               remove debugging attributes while packing",
+                "  -r, --repack                    repack or normalize a jar, suitable for ",
+                "                                  signing with jarsigner",
+                "  -g, --no-gzip                   output a plain pack file, suitable to be",
+                "                                  compressed with a file compression utility",
+                "  --gzip                          (default) post compress the pack output",
+                "                                  with gzip",
+                "  -G, --strip-debug               remove debugging attributes (SourceFile,",
+                "                                  LineNumberTable, LocalVariableTable",
+                "                                  and LocalVariableTypeTable) while packing",
                 "  -O, --no-keep-file-order        do not transmit file ordering information",
                 "  --keep-file-order               (default) preserve input file ordering",
-                "  -S{N}, --segment-limit={N}      output segment limit (default N=1Mb)",
+                "  -S{N}, --segment-limit={N}      limit segment sizes (default unlimited)",
                 "  -E{N}, --effort={N}             packing effort (default N=5)",
-                "  -H{h}, --deflate-hint={h}       transmit deflate hint: true, false, or keep (default)",
+                "  -H{h}, --deflate-hint={h}       transmit deflate hint: true, false,",
+                "                                  or keep (default)",
                 "  -m{V}, --modification-time={V}  transmit modtimes: latest or keep (default)",
-                "  -P{F}, --pass-file={F}          transmit the given input element(s) uncompressed",
-                "  -U{a}, --unknown-attribute={a}  unknown attribute action: error, strip, or pass (default)",
+                "  -P{F}, --pass-file={F}          transmit the given input element(s) unchanged",
+                "  -U{a}, --unknown-attribute={a}  unknown attribute action: error, strip,",
+                "                                  or pass (default)",
                 "  -C{N}={L}, --class-attribute={N}={L}  (user-defined attribute)",
                 "  -F{N}={L}, --field-attribute={N}={L}  (user-defined attribute)",
                 "  -M{N}={L}, --method-attribute={N}={L} (user-defined attribute)",
@@ -79,7 +87,8 @@
                 "  -f{F}, --config-file={F}        read file F for Pack200.Packer properties",
                 "  -v, --verbose                   increase program verbosity",
                 "  -q, --quiet                     set verbosity to lowest level",
-                "  -l{F}, --log-file={F}           output to the given log file, or '-' for System.out",
+                "  -l{F}, --log-file={F}           output to the given log file, ",
+                "                                  or '-' for System.out",
                 "  -?, -h, --help                  print this message",
                 "  -V, --version                   print program version",
                 "  -J{X}                           pass option X to underlying Java VM",
@@ -92,18 +101,23 @@
                 "  Layout definitions (like RUH) are defined by JSR 200.",
                 "",
                 "Repacking mode updates the JAR file with a pack/unpack cycle:",
-                "    pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar\n"
+                "    pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar\n",
+                "",
+                "Exit Status:",
+                "  0 if successful, >0 if an error occurred"
             }
         },
         {UNPACK_HELP, new String[] {
                 "Usage:  unpack200 [-opt... | --option=value]... x.pack[.gz] y.jar\n",
                 "",
                 "Unpacking Options",
-                "  -H{h}, --deflate-hint={h}     override transmitted deflate hint: true, false, or keep (default)",
+                "  -H{h}, --deflate-hint={h}     override transmitted deflate hint:",
+                "                                true, false, or keep (default)",
                 "  -r, --remove-pack-file        remove input file after unpacking",
                 "  -v, --verbose                 increase program verbosity",
                 "  -q, --quiet                   set verbosity to lowest level",
-                "  -l{F}, --log-file={F}         output to the given log file, or '-' for System.out",
+                "  -l{F}, --log-file={F}         output to the given log file, or",
+                "                                '-' for System.out",
                 "  -?, -h, --help                print this message",
                 "  -V, --version                 print program version",
                 "  -J{X}                         pass option X to underlying Java VM"
--- a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource_ja.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource_ja.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -84,7 +84,7 @@
                 "  -V\u3001--version                   \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u307E\u3059",
                 "  -J{X}                           \u30AA\u30D7\u30B7\u30E7\u30F3X\u3092\u57FA\u790E\u3068\u306A\u308BJava VM\u306B\u6E21\u3057\u307E\u3059",
                 "",
-                "\u6CE8\u610F:",
+                "\u6CE8:",
                 "  -P\u3001-C\u3001-F\u3001-M\u304A\u3088\u3073-D\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u7D2F\u7A4D\u3055\u308C\u307E\u3059\u3002",
                 "  \u5C5E\u6027\u5B9A\u7FA9\u306E\u4F8B:  -C SourceFile=RUH .",
                 "  Config.\u30D5\u30A1\u30A4\u30EB\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u306F\u3001Pack200 API\u306B\u3088\u3063\u3066\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002",
--- a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource_zh_CN.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/DriverResource_zh_CN.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -48,7 +48,7 @@
      * Do not translate command arguments and words with a prefix of '-' or '--'.
      */
     private static final Object[][] resource = {
-        {VERSION, "{0}\u7248\u672C{1}"}, // parameter 0:class name;parameter 1: version value
+        {VERSION, "{0}\u7248\u672C {1}"}, // parameter 0:class name;parameter 1: version value
         {BAD_ARGUMENT, "\u9519\u8BEF\u53C2\u6570: {0}"},
         {BAD_OPTION, "\u9519\u8BEF\u9009\u9879: {0}={1}"}, // parameter 0:option name;parameter 1:option value
         {BAD_REPACK_OUTPUT, "--repack \u8F93\u51FA\u9519\u8BEF: {0}"}, // parameter 0:filename
--- a/jdk/src/java.base/share/classes/java/lang/Class.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/Class.java	Wed Jul 05 21:51:13 2017 +0200
@@ -480,6 +480,24 @@
      * any exception thrown by the constructor in a (checked) {@link
      * java.lang.reflect.InvocationTargetException}.
      *
+     * <p>The call
+     *
+     * <pre>{@code
+     * clazz.newInstance()
+     * }</pre>
+     *
+     * can be replaced by
+     *
+     * <pre>{@code
+     * clazz.getConstructor().newInstance()
+     * }</pre>
+     *
+     * The latter sequence of calls is inferred to be able to throw
+     * the additional exception types {@link
+     * InvocationTargetException} and {@link
+     * NoSuchMethodException}. Both of these exception types are
+     * subclasses of {@link ReflectiveOperationException}.
+     *
      * @return  a newly allocated instance of the class represented by this
      *          object.
      * @throws  IllegalAccessException  if the class or its nullary
--- a/jdk/src/java.base/share/classes/java/lang/Process.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/Process.java	Wed Jul 05 21:51:13 2017 +0200
@@ -548,5 +548,36 @@
         return toHandle().descendants();
     }
 
+    /**
+     * An input stream for a subprocess pipe that skips by reading bytes
+     * instead of seeking, the underlying pipe does not support seek.
+     */
+    static class PipeInputStream extends FileInputStream {
 
+        PipeInputStream(FileDescriptor fd) {
+            super(fd);
+        }
+
+        @Override
+        public long skip(long n) throws IOException {
+            long remaining = n;
+            int nr;
+
+            if (n <= 0) {
+                return 0;
+            }
+
+            int size = (int)Math.min(2048, remaining);
+            byte[] skipBuffer = new byte[size];
+            while (remaining > 0) {
+                nr = read(skipBuffer, 0, (int)Math.min(size, remaining));
+                if (nr < 0) {
+                    break;
+                }
+                remaining -= nr;
+            }
+
+            return n - remaining;
+        }
+    }
 }
--- a/jdk/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1095,7 +1095,7 @@
     public static final class Builder {
 
         final String name;
-        final boolean automatic;
+        boolean automatic;
         boolean synthetic;
         final Map<String, Requires> requires = new HashMap<>();
         final Set<String> uses = new HashSet<>();
@@ -1120,12 +1120,19 @@
          *         identifier
          */
         public Builder(String name) {
-            this(name, false);
+            this.name = requireModuleName(name);
         }
 
-        /* package */ Builder(String name, boolean automatic) {
-            this.name = requireModuleName(name);
-            this.automatic = automatic;
+        /**
+         * Updates the builder so that it builds an automatic module.
+         *
+         * @return This builder
+         *
+         * @see ModuleDescriptor#isAutomatic()
+         */
+        /* package */ Builder automatic() {
+            this.automatic = true;
+            return this;
         }
 
         /**
--- a/jdk/src/java.base/share/classes/java/lang/module/ModuleFinder.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/module/ModuleFinder.java	Wed Jul 05 21:51:13 2017 +0200
@@ -42,6 +42,7 @@
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
+
 import sun.security.action.GetPropertyAction;
 
 /**
@@ -267,6 +268,13 @@
      *
      * </ul>
      *
+     * <p> If a {@code ModuleDescriptor} cannot be created (by means of the
+     * {@link ModuleDescriptor.Builder ModuleDescriptor.Builder} API) for an
+     * automatic module then {@code FindException} is thrown. This can arise,
+     * for example, when a legal Java identifier name cannot be derived from
+     * the file name of the JAR file or where a package name derived from an
+     * entry ending with {@code .class} is not a legal Java identifier. </p>
+     *
      * <p> In addition to JAR files, an implementation may also support modules
      * that are packaged in other implementation specific module formats. When
      * a file is encountered that is not recognized as a packaged module then
--- a/jdk/src/java.base/share/classes/java/lang/module/ModuleInfo.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/module/ModuleInfo.java	Wed Jul 05 21:51:13 2017 +0200
@@ -276,10 +276,7 @@
         throws IOException
     {
         int requires_count = in.readUnsignedShort();
-        if (requires_count == 0 && !mn.equals("java.base")) {
-            throw invalidModuleDescriptor("The requires table must have"
-                                          + " at least one entry");
-        }
+        boolean requiresJavaBase = false;
         for (int i=0; i<requires_count; i++) {
             int index = in.readUnsignedShort();
             int flags = in.readUnsignedShort();
@@ -297,6 +294,17 @@
                     mods.add(Modifier.MANDATED);
             }
             builder.requires(mods, dn);
+            if (dn.equals("java.base"))
+                requiresJavaBase = true;
+        }
+        if (mn.equals("java.base")) {
+            if (requires_count > 0) {
+                throw invalidModuleDescriptor("The requires table for java.base"
+                                              + " must be 0 length");
+            }
+        } else if (!requiresJavaBase) {
+            throw invalidModuleDescriptor("The requires table must have"
+                                          + " an entry for java.base");
         }
 
         int exports_count = in.readUnsignedShort();
--- a/jdk/src/java.base/share/classes/java/lang/module/ModulePath.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/module/ModulePath.java	Wed Jul 05 21:51:13 2017 +0200
@@ -55,7 +55,6 @@
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
-import jdk.internal.module.Checks;
 import jdk.internal.module.ConfigurableModuleFinder;
 import jdk.internal.perf.PerfCounter;
 
@@ -343,8 +342,7 @@
             String prefix = cf.substring(0, index);
             if (prefix.equals(SERVICES_PREFIX)) {
                 String sn = cf.substring(index);
-                if (Checks.isJavaIdentifier(sn))
-                    return Optional.of(sn);
+                return Optional.of(sn);
             }
         }
         return Optional.empty();
@@ -378,9 +376,6 @@
      *    to "provides" declarations
      * 5. The Main-Class attribute in the main attributes of the JAR manifest
      *    is mapped to the module descriptor mainClass
-     *
-     * @apiNote This needs to move to somewhere where it can be used by tools,
-     * maybe even a standard API if automatic modules are a Java SE feature.
      */
     private ModuleDescriptor deriveModuleDescriptor(JarFile jf)
         throws IOException
@@ -397,7 +392,7 @@
         String vs = null;
 
         // find first occurrence of -${NUMBER}. or -${NUMBER}$
-        Matcher matcher = Pattern.compile("-(\\d+(\\.|$))").matcher(mn);
+        Matcher matcher = Patterns.DASH_VERSION.matcher(mn);
         if (matcher.find()) {
             int start = matcher.start();
 
@@ -412,16 +407,13 @@
         }
 
         // finally clean up the module name
-        mn =  mn.replaceAll("[^A-Za-z0-9]", ".")  // replace non-alphanumeric
-                .replaceAll("(\\.)(\\1)+", ".")   // collapse repeating dots
-                .replaceAll("^\\.", "")           // drop leading dots
-                .replaceAll("\\.$", "");          // drop trailing dots
-
+        mn = cleanModuleName(mn);
 
         // Builder throws IAE if module name is empty or invalid
         ModuleDescriptor.Builder builder
-            = new ModuleDescriptor.Builder(mn, true)
-                .requires(Requires.Modifier.MANDATED, "java.base");
+            = new ModuleDescriptor.Builder(mn)
+                .automatic()
+                .requires(Set.of(Requires.Modifier.MANDATED), "java.base");
         if (vs != null)
             builder.version(vs);
 
@@ -457,7 +449,7 @@
                     = new BufferedReader(new InputStreamReader(in, "UTF-8"));
                 String cn;
                 while ((cn = nextLine(reader)) != null) {
-                    if (Checks.isJavaIdentifier(cn)) {
+                    if (cn.length() > 0) {
                         providerClasses.add(cn);
                     }
                 }
@@ -478,6 +470,39 @@
         return builder.build();
     }
 
+    /**
+     * Patterns used to derive the module name from a JAR file name.
+     */
+    private static class Patterns {
+        static final Pattern DASH_VERSION = Pattern.compile("-(\\d+(\\.|$))");
+        static final Pattern NON_ALPHANUM = Pattern.compile("[^A-Za-z0-9]");
+        static final Pattern REPEATING_DOTS = Pattern.compile("(\\.)(\\1)+");
+        static final Pattern LEADING_DOTS = Pattern.compile("^\\.");
+        static final Pattern TRAILING_DOTS = Pattern.compile("\\.$");
+    }
+
+    /**
+     * Clean up candidate module name derived from a JAR file name.
+     */
+    private static String cleanModuleName(String mn) {
+        // replace non-alphanumeric
+        mn = Patterns.NON_ALPHANUM.matcher(mn).replaceAll(".");
+
+        // collapse repeating dots
+        mn = Patterns.REPEATING_DOTS.matcher(mn).replaceAll(".");
+
+        // drop leading dots
+        if (mn.length() > 0 && mn.charAt(0) == '.')
+            mn = Patterns.LEADING_DOTS.matcher(mn).replaceAll("");
+
+        // drop trailing dots
+        int len = mn.length();
+        if (len > 0 && mn.charAt(len-1) == '.')
+            mn = Patterns.TRAILING_DOTS.matcher(mn).replaceAll("");
+
+        return mn;
+    }
+
     private Set<String> jarPackages(JarFile jf) {
         return jf.stream()
             .filter(e -> e.getName().endsWith(".class"))
--- a/jdk/src/java.base/share/classes/java/lang/module/Resolver.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/lang/module/Resolver.java	Wed Jul 05 21:51:13 2017 +0200
@@ -36,7 +36,6 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
@@ -454,17 +453,13 @@
 
 
     /**
-     * Computes and sets the readability graph for the modules in the given
-     * Resolution object.
+     * Computes the readability graph for the modules in the given Configuration.
      *
      * The readability graph is created by propagating "requires" through the
      * "public requires" edges of the module dependence graph. So if the module
      * dependence graph has m1 requires m2 && m2 requires public m3 then the
-     * resulting readability graph will contain m1 reads m2, m1
-     * reads m3, and m2 reads m3.
-     *
-     * TODO: Use a more efficient algorithm, maybe cache the requires public
-     *       in parent configurations.
+     * resulting readability graph will contain m1 reads m2, m1 reads m3, and
+     * m2 reads m3.
      */
     private Map<ResolvedModule, Set<ResolvedModule>> makeGraph(Configuration cf) {
 
@@ -483,16 +478,15 @@
         Configuration p = parent;
         while (p != null) {
             for (ModuleDescriptor descriptor : p.descriptors()) {
-                ResolvedModule x = p.findModule(descriptor.name()).orElse(null);
-                if (x == null)
-                    throw new InternalError();
+                String name = descriptor.name();
+                ResolvedModule m1 = p.findModule(name)
+                    .orElseThrow(() -> new InternalError(name + " not found"));
                 for (ModuleDescriptor.Requires requires : descriptor.requires()) {
                     if (requires.modifiers().contains(Modifier.PUBLIC)) {
                         String dn = requires.name();
-                        ResolvedModule y = p.findModule(dn).orElse(null);
-                        if (y == null)
-                            throw new InternalError(dn + " not found");
-                        g2.computeIfAbsent(x, k -> new HashSet<>()).add(y);
+                        ResolvedModule m2 = p.findModule(dn)
+                            .orElseThrow(() -> new InternalError(dn + " not found"));
+                        g2.computeIfAbsent(m1, k -> new HashSet<>()).add(m2);
                     }
                 }
             }
@@ -501,53 +495,60 @@
         }
 
         // populate g1 and g2 with the dependences from the selected modules
+
+        Map<String, ResolvedModule> nameToResolved = new HashMap<>();
+
         for (ModuleReference mref : nameToReference.values()) {
             ModuleDescriptor descriptor = mref.descriptor();
-            ResolvedModule x = new ResolvedModule(cf, mref);
+            String name = descriptor.name();
+
+            ResolvedModule m1 = computeIfAbsent(nameToResolved, name, cf, mref);
 
             Set<ResolvedModule> reads = new HashSet<>();
-            g1.put(x, reads);
-
             Set<ResolvedModule> requiresPublic = new HashSet<>();
-            g2.put(x, requiresPublic);
 
             for (ModuleDescriptor.Requires requires : descriptor.requires()) {
                 String dn = requires.name();
 
-                ResolvedModule y;
-                ModuleReference other = nameToReference.get(dn);
-                if (other != null) {
-                    y = new ResolvedModule(cf, other);  // cache?
+                ResolvedModule m2;
+                ModuleReference mref2 = nameToReference.get(dn);
+                if (mref2 != null) {
+                    // same configuration
+                    m2 = computeIfAbsent(nameToResolved, dn, cf, mref2);
                 } else {
-                    y = parent.findModule(dn).orElse(null);
-                    if (y == null)
-                        throw new InternalError("unable to find " + dn);
+                    // parent configuration
+                    m2 = parent.findModule(dn).orElse(null);
+                    if (m2 == null) {
+                        continue;
+                    }
                 }
 
-                // m requires other => m reads other
-                reads.add(y);
+                // m1 requires m2 => m1 reads m2
+                reads.add(m2);
 
-                // m requires public other
+                // m1 requires public m2
                 if (requires.modifiers().contains(Modifier.PUBLIC)) {
-                    requiresPublic.add(y);
+                    requiresPublic.add(m2);
                 }
 
             }
 
-            // automatic modules reads all selected modules and all modules
+            // automatic modules read all selected modules and all modules
             // in parent configurations
             if (descriptor.isAutomatic()) {
-                String name = descriptor.name();
 
                 // reads all selected modules
-                // requires public` all selected automatic modules
+                // `requires public` all selected automatic modules
                 for (ModuleReference mref2 : nameToReference.values()) {
                     ModuleDescriptor descriptor2 = mref2.descriptor();
-                    if (!name.equals(descriptor2.name())) {
-                        ResolvedModule m = new ResolvedModule(cf, mref2);
-                        reads.add(m);
+                    String name2 = descriptor2.name();
+
+                    if (!name.equals(name2)) {
+                        ResolvedModule m2
+                            = computeIfAbsent(nameToResolved, name2, cf, mref2);
+                        reads.add(m2);
                         if (descriptor2.isAutomatic())
-                            requiresPublic.add(m);
+                            requiresPublic.add(m2);
                     }
                 }
 
@@ -565,52 +566,56 @@
 
             }
 
+            g1.put(m1, reads);
+            g2.put(m1, requiresPublic);
         }
 
         // Iteratively update g1 until there are no more requires public to propagate
         boolean changed;
-        Map<ResolvedModule, Set<ResolvedModule>> changes = new HashMap<>();
+        Set<ResolvedModule> toAdd = new HashSet<>();
         do {
             changed = false;
-            for (Entry<ResolvedModule, Set<ResolvedModule>> entry : g1.entrySet()) {
-
-                ResolvedModule m1 = entry.getKey();
-                Set<ResolvedModule> m1Reads = entry.getValue();
-
+            for (Set<ResolvedModule> m1Reads : g1.values()) {
                 for (ResolvedModule m2 : m1Reads) {
                     Set<ResolvedModule> m2RequiresPublic = g2.get(m2);
                     if (m2RequiresPublic != null) {
                         for (ResolvedModule m3 : m2RequiresPublic) {
                             if (!m1Reads.contains(m3)) {
-
-                                // computeIfAbsent
-                                Set<ResolvedModule> s = changes.get(m1);
-                                if (s == null) {
-                                    s = new HashSet<>();
-                                    changes.put(m1, s);
-                                }
-                                s.add(m3);
-                                changed = true;
-
+                                // m1 reads m2, m2 requires public m3
+                                // => need to add m1 reads m3
+                                toAdd.add(m3);
                             }
                         }
                     }
                 }
+                if (!toAdd.isEmpty()) {
+                    m1Reads.addAll(toAdd);
+                    toAdd.clear();
+                    changed = true;
+                }
             }
-
-            if (changed) {
-                for (Map.Entry<ResolvedModule, Set<ResolvedModule>> e :
-                        changes.entrySet()) {
-                    ResolvedModule m = e.getKey();
-                    g1.get(m).addAll(e.getValue());
-                }
-                changes.clear();
-            }
-
         } while (changed);
 
+        return g1;
+    }
 
-        return g1;
+    /**
+     * Equivalent to
+     * <pre>{@code
+     *     map.computeIfAbsent(name, k -> new ResolvedModule(cf, mref))
+     * </pre>}
+     */
+    private ResolvedModule computeIfAbsent(Map<String, ResolvedModule> map,
+                                           String name,
+                                           Configuration cf,
+                                           ModuleReference mref)
+    {
+        ResolvedModule m = map.get(name);
+        if (m == null) {
+            m = new ResolvedModule(cf, mref);
+            map.put(name, m);
+        }
+        return m;
     }
 
 
--- a/jdk/src/java.base/share/classes/java/net/URL.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/net/URL.java	Wed Jul 05 21:51:13 2017 +0200
@@ -428,16 +428,18 @@
             authority = (port == -1) ? host : host + ":" + port;
         }
 
-        Parts parts = new Parts(file);
-        path = parts.getPath();
-        query = parts.getQuery();
-
-        if (query != null) {
+        int index = file.indexOf('#');
+        this.ref = index < 0 ? null : file.substring(index + 1);
+        file = index < 0 ? file : file.substring(0, index);
+        int q = file.lastIndexOf('?');
+        if (q != -1) {
+            this.query = file.substring(q + 1);
+            this.path = file.substring(0, q);
             this.file = path + "?" + query;
         } else {
+            this.path = file;
             this.file = path;
         }
-        ref = parts.getRef();
 
         // Note: we don't do validation of the URL here. Too risky to change
         // right now, but worth considering for future reference. -br
@@ -1617,35 +1619,6 @@
     }
 }
 
-class Parts {
-    String path, query, ref;
-
-    Parts(String file) {
-        int ind = file.indexOf('#');
-        ref = ind < 0 ? null: file.substring(ind + 1);
-        file = ind < 0 ? file: file.substring(0, ind);
-        int q = file.lastIndexOf('?');
-        if (q != -1) {
-            query = file.substring(q+1);
-            path = file.substring(0, q);
-        } else {
-            path = file;
-        }
-    }
-
-    String getPath() {
-        return path;
-    }
-
-    String getQuery() {
-        return query;
-    }
-
-    String getRef() {
-        return ref;
-    }
-}
-
 final class UrlDeserializedState {
     private final String protocol;
     private final String host;
--- a/jdk/src/java.base/share/classes/java/time/chrono/JapaneseDate.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/time/chrono/JapaneseDate.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -437,7 +437,7 @@
                 field == ALIGNED_WEEK_OF_MONTH || field == ALIGNED_WEEK_OF_YEAR) {
             return false;
         }
-        return ChronoLocalDate.super.isSupported(field);
+        return super.isSupported(field);
     }
 
     @Override
--- a/jdk/src/java.base/share/classes/java/util/Collections.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/Collections.java	Wed Jul 05 21:51:13 2017 +0200
@@ -4324,6 +4324,7 @@
 
         public int size() {return 0;}
         public boolean isEmpty() {return true;}
+        public void clear() {}
 
         public boolean contains(Object obj) {return false;}
         public boolean containsAll(Collection<?> c) { return c.isEmpty(); }
@@ -4447,6 +4448,7 @@
 
         public int size() {return 0;}
         public boolean isEmpty() {return true;}
+        public void clear() {}
 
         public boolean contains(Object obj) {return false;}
         public boolean containsAll(Collection<?> c) { return c.isEmpty(); }
@@ -4582,6 +4584,7 @@
 
         public int size()                          {return 0;}
         public boolean isEmpty()                   {return true;}
+        public void clear()                        {}
         public boolean containsKey(Object key)     {return false;}
         public boolean containsValue(Object value) {return false;}
         public V get(Object key)                   {return null;}
--- a/jdk/src/java.base/share/classes/java/util/Locale.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/Locale.java	Wed Jul 05 21:51:13 2017 +0200
@@ -2888,7 +2888,7 @@
                 throw new IllegalArgumentException("weight=" + weight);
             }
 
-            range = range.toLowerCase();
+            range = range.toLowerCase(Locale.ROOT);
 
             // Do syntax check.
             boolean isIllFormed = false;
--- a/jdk/src/java.base/share/classes/java/util/PriorityQueue.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/PriorityQueue.java	Wed Jul 05 21:51:13 2017 +0200
@@ -337,11 +337,8 @@
         int i = size;
         if (i >= queue.length)
             grow(i + 1);
+        siftUp(i, e);
         size = i + 1;
-        if (i == 0)
-            queue[0] = e;
-        else
-            siftUp(i, e);
         return true;
     }
 
--- a/jdk/src/java.base/share/classes/java/util/Scanner.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/Scanner.java	Wed Jul 05 21:51:13 2017 +0200
@@ -793,7 +793,6 @@
     private void readInput() {
         if (buf.limit() == buf.capacity())
             makeSpace();
-
         // Prepare to receive data
         int p = buf.position();
         buf.position(buf.limit());
@@ -806,15 +805,12 @@
             lastException = ioe;
             n = -1;
         }
-
         if (n == -1) {
             sourceClosed = true;
             needInput = false;
         }
-
         if (n > 0)
             needInput = false;
-
         // Restore current position and limit for reading
         buf.limit(buf.position());
         buf.position(p);
@@ -871,15 +867,20 @@
         matchValid = false;
         matcher.usePattern(delimPattern);
         matcher.region(position, buf.limit());
-
         // Skip delims first
-        if (matcher.lookingAt())
+        if (matcher.lookingAt()) {
+            if (matcher.hitEnd() && !sourceClosed) {
+                // more input might change the match of delims, in which
+                // might change whether or not if there is token left in
+                // buffer (don't update the "position" in this case)
+                needInput = true;
+                return false;
+            }
             position = matcher.end();
-
+        }
         // If we are sitting at the end, no more tokens in buffer
         if (position == buf.limit())
             return false;
-
         return true;
     }
 
@@ -900,7 +901,6 @@
      */
     private String getCompleteTokenInBuffer(Pattern pattern) {
         matchValid = false;
-
         // Skip delims first
         matcher.usePattern(delimPattern);
         if (!skipped) { // Enforcing only one skip of leading delims
@@ -941,13 +941,16 @@
             foundNextDelim = matcher.find();
         }
         if (foundNextDelim) {
-            // In the rare case that more input could cause the match
-            // to be lost and there is more input coming we must wait
-            // for more input. Note that hitting the end is okay as long
-            // as the match cannot go away. It is the beginning of the
-            // next delims we want to be sure about, we don't care if
-            // they potentially extend further.
-            if (matcher.requireEnd() && !sourceClosed) {
+            // In two rare cases that more input might cause the match to be
+            // lost or change.
+            // (1) if requireEnd() is true, more input might cause the match
+            // to be lost, we must wait for more input.
+            // (2) while hitting the end is okay IF the match does not
+            // go away AND the beginning of the next delims does not change
+            // (we don't care if they potentially extend further). But it's
+            // possible that more input could cause the beginning of the
+            // delims change, so have to wait for more input as well.
+            if ((matcher.requireEnd() || matcher.hitEnd()) && !sourceClosed) {
                 needInput = true;
                 return null;
             }
@@ -1341,8 +1344,9 @@
         saveState();
         modCount++;
         while (!sourceClosed) {
-            if (hasTokenInBuffer())
+            if (hasTokenInBuffer()) {
                 return revertState(true);
+            }
             readInput();
         }
         boolean result = hasTokenInBuffer();
@@ -1365,7 +1369,6 @@
         ensureOpen();
         clearCaches();
         modCount++;
-
         while (true) {
             String token = getCompleteTokenInBuffer(null);
             if (token != null) {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedDeque.java	Wed Jul 05 21:51:13 2017 +0200
@@ -66,7 +66,7 @@
  * inaccurate results if this collection is modified during traversal.
  * Additionally, the bulk operations {@code addAll},
  * {@code removeAll}, {@code retainAll}, {@code containsAll},
- * {@code equals}, and {@code toArray} are <em>not</em> guaranteed
+ * and {@code toArray} are <em>not</em> guaranteed
  * to be performed atomically. For example, an iterator operating
  * concurrently with an {@code addAll} operation might view only some
  * of the added elements.
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentLinkedQueue.java	Wed Jul 05 21:51:13 2017 +0200
@@ -80,7 +80,7 @@
  * inaccurate results if this collection is modified during traversal.
  * Additionally, the bulk operations {@code addAll},
  * {@code removeAll}, {@code retainAll}, {@code containsAll},
- * {@code equals}, and {@code toArray} are <em>not</em> guaranteed
+ * and {@code toArray} are <em>not</em> guaranteed
  * to be performed atomically. For example, an iterator operating
  * concurrently with an {@code addAll} operation might view only some
  * of the added elements.
--- a/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListMap.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/ConcurrentSkipListMap.java	Wed Jul 05 21:51:13 2017 +0200
@@ -840,6 +840,9 @@
                         break; // restart if lost race to replace value
                     }
                     // else c < 0; fall through
+                } else if (b == head.node) {
+                    // map is empty, so type check key now
+                    cpr(cmp, key, key);
                 }
 
                 z = new Node<K,V>(key, value, n);
--- a/jdk/src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/LinkedTransferQueue.java	Wed Jul 05 21:51:13 2017 +0200
@@ -61,7 +61,7 @@
  * inaccurate results if this collection is modified during traversal.
  * Additionally, the bulk operations {@code addAll},
  * {@code removeAll}, {@code retainAll}, {@code containsAll},
- * {@code equals}, and {@code toArray} are <em>not</em> guaranteed
+ * and {@code toArray} are <em>not</em> guaranteed
  * to be performed atomically. For example, an iterator operating
  * concurrently with an {@code addAll} operation might view only some
  * of the added elements.
--- a/jdk/src/java.base/share/classes/java/util/stream/DoubleStream.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/stream/DoubleStream.java	Wed Jul 05 21:51:13 2017 +0200
@@ -986,7 +986,7 @@
      * {@code DoubleStream.iterate} should produce the same sequence of
      * elements as produced by the corresponding for-loop:
      * <pre>{@code
-     *     for (double index=seed; predicate.test(index); index = f.apply(index)) {
+     *     for (double index=seed; predicate.test(index); index = f.applyAsDouble(index)) {
      *         ...
      *     }
      * }</pre>
--- a/jdk/src/java.base/share/classes/java/util/stream/IntStream.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/stream/IntStream.java	Wed Jul 05 21:51:13 2017 +0200
@@ -926,7 +926,7 @@
      * {@code IntStream.iterate} should produce the same sequence of elements
      * as produced by the corresponding for-loop:
      * <pre>{@code
-     *     for (int index=seed; predicate.test(index); index = f.apply(index)) {
+     *     for (int index=seed; predicate.test(index); index = f.applyAsInt(index)) {
      *         ...
      *     }
      * }</pre>
--- a/jdk/src/java.base/share/classes/java/util/stream/LongStream.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/java/util/stream/LongStream.java	Wed Jul 05 21:51:13 2017 +0200
@@ -916,7 +916,7 @@
      * {@code LongStream.iterate} should produce the same sequence of elements
      * as produced by the corresponding for-loop:
      * <pre>{@code
-     *     for (long index=seed; predicate.test(index); index = f.apply(index)) {
+     *     for (long index=seed; predicate.test(index); index = f.applyAsLong(index)) {
      *         ...
      *     }
      * }</pre>
--- a/jdk/src/java.base/share/classes/javax/net/ssl/SSLEngineResult.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/javax/net/ssl/SSLEngineResult.java	Wed Jul 05 21:51:13 2017 +0200
@@ -151,7 +151,7 @@
 
         /**
          * The {@code SSLEngine} needs to unwrap before handshaking can
-         * can continue.
+         * continue.
          * <P>
          * This value is used to indicate that not-yet-interpreted data
          * has been previously received from the remote side, and does
--- a/jdk/src/java.base/share/classes/javax/security/auth/Policy.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/javax/security/auth/Policy.java	Wed Jul 05 21:51:13 2017 +0200
@@ -152,10 +152,11 @@
  *
  * These two APIs provide callers the means to query the
  * Policy for Principal-based Permission entries.
+ * This class is subject to removal in a future version of Java SE.
  *
  * @see java.security.Security security properties
  */
-@Deprecated
+@Deprecated(since="1.4", forRemoval=true)
 public abstract class Policy {
 
     private static Policy policy;
--- a/jdk/src/java.base/share/classes/jdk/internal/jrtfs/JrtUtils.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/jrtfs/JrtUtils.java	Wed Jul 05 21:51:13 2017 +0200
@@ -45,7 +45,7 @@
     private static boolean isGlobMeta(char c) {
         return globMetaChars.indexOf(c) != -1;
     }
-    private static final char EOL = 0;  //TBD
+    private static final char EOL = 0;
     private static char next(String glob, int i) {
         if (i < glob.length()) {
             return glob.charAt(i);
--- a/jdk/src/java.base/share/classes/jdk/internal/misc/VM.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/jdk/internal/misc/VM.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -487,8 +487,6 @@
      *
      * If VM options file is specified via -XX:VMOptionsFile, the vm options
      * file is read and expanded in place of -XX:VMOptionFile option.
-     *
-     * Open issue with -XX:Flags (see JDK-8157979)
      */
     public static native String[] getRuntimeArguments();
 
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   Verwendung: {0} [-options] class [args...]\n           (zur Ausf\u00FChrung einer Klasse)\n   oder  {0} [-options] -jar jarfile [args...]\n           (zur Ausf\u00FChrung einer JAR-Datei)\nwobei options Folgendes umfasst:\n
+java.launcher.opt.header  =   Verwendung: {0} [options] class [args...]\n           (zur Ausf\u00FChrung einer Klasse)\n   oder  {0} [options] -jar jarfile [args...]\n           (zur Ausf\u00FChrung einer JAR-Datei)\n   oder  {0} [-options] -mp <modulepath> -m <modulename> | <modulename>/<mainclass>\n           (zur Ausf\u00FChrung der Hauptklasse in einem Modul)\nwobei "options" Folgendes umfasst:\n
 
 java.launcher.opt.datamodel  =\    -d{0}\t  Verwendet ein {0}-Bit-Datenmodell, sofern verf\u00FCgbar\n
 java.launcher.opt.vmselect   =\    {0}\t  zur Auswahl der "{1}" VM\n
@@ -34,10 +34,11 @@
 java.launcher.ergo.message2  =\                  weil die Ausf\u00FChrung auf einem Server-Class-Rechner erfolgt.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <Klassensuchpfad von Verzeichnissen und ZIP-/JAR-Dateien>\n    -classpath <Klassensuchpfad von Verzeichnissen und ZIP-/JAR-Dateien>\n                  Eine durch {0} getrennte Liste mit Verzeichnissen, JAR-Archiven\n                  und ZIP-Archiven zur Suche nach Klassendateien.\n    -D<name>=<value>\n                  Legt eine Systemeigenschaft fest\n    -verbose:[class|gc|jni]\n                  Aktiviert die Verbose-Ausgabe\n    -version      Druckt Produktversion und beendet das Programm\n    -version:<value>\n                  Erfordert die angegebene Version zur Ausf\u00FChrung\n    -showversion  Druckt Produktversion und f\u00E4hrt fort\n    -jre-restrict-search | -no-jre-restrict-search\n                  Bezieht private JREs des Benutzers in Versionssuche ein bzw. schlie\u00DFt sie aus\n    -? -help      Druckt diese Hilfemeldung\n    -X            Druckt Hilfe zu Nicht-Standardoptionen\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  Aktiviert Assertionen mit angegebener Granularit\u00E4t\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  Deaktiviert Assertionen mit angegebener Granularit\u00E4t\n    -esa | -enablesystemassertions\n                  Aktiviert Systemassertionen\n    -dsa | -disablesystemassertions\n                  Deaktiviert Systemassertionen\n    -agentlib:<libname>[=<options>]\n                  L\u00E4dt native Agent Library <libname>, z.B. -agentlib:hprof\n                  siehe auch -agentlib:jdwp=help und -agentlib:hprof=help\n    -agentpath:<pathname>[=<options>]\n                  L\u00E4dt native Agent Library nach vollem Pfadnamen\n    -javaagent:<jarpath>[=<options>]\n                  L\u00E4dt Java-Programmiersprachen-Agent, siehe java.lang.instrument\n    -splash:<imagepath>\n                  Zeigt Startbildschirm mit angegebenem Bild\nWeitere Einzelheiten finden Sie unter http://www.oracle.com/technetwork/java/javase/documentation/index.html
+java.launcher.opt.footer     =\    -cp <Klassensuchpfad von Verzeichnissen und ZIP-/JAR-Dateien>\n    -classpath <Klassensuchpfad von Verzeichnissen und ZIP-/JAR-Dateien>\n                  Eine durch {0} getrennte Liste mit Verzeichnissen, JAR-Archiven\n                  und ZIP-Archiven zur Suche nach Klassendateien.\n    -mp <Modulpfad>\n    -modulepath <Modulpfad>...\n                  Eine durch {0} getrennte Liste mit Verzeichnissen, in der jedes Verzeichnis\n                  ein Modulverzeichnis darstellt.\n    -upgrademodulepath <Modulpfad>...\n                  Eine durch {0} getrennte Liste mit Verzeichnissen, in der jedes Verzeichnis\n                  ein Verzeichnis von Modulen darstellt, die upgradef\u00E4hige\n                  Module im Laufzeitimage ersetzen\n    -m <modulename> | <modulename>/<mainclass>\n                  das anf\u00E4ngliche oder Hauptmodul, das aufgel\u00F6st werden soll\n    -addmods <modulename>[,<modulename>...]\n                  Root-Module, die zus\u00E4tzlich zum anf\u00E4nglichen Modul aufgel\u00F6st werden sollen\n    -limitmods <modulename>[,<modulename>...]\n                  Schr\u00E4nkt die Gesamtzahl der beachtbaren Module ein\n    -listmods[:<modulename>[,<modulename>...]]\n                  Listet die beachtbaren Module auf und beendet den Vorgang\n    -D<name>=<value>\n                  Legt eine Systemeigenschaft fest\n    -verbose:[class|gc|jni]\n                  Aktiviert die Verbose-Ausgabe\n    -version      Druckt Produktversion und beendet das Programm\n    -showversion  Druckt Produktversion und f\u00E4hrt fort\n    -? -help      Druckt diese Hilfemeldung\n    -X            Druckt Hilfe zu Nicht-Standardoptionen\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  Aktiviert Assertions mit angegebener Granularit\u00E4t\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  Deaktiviert Assertions mit angegebener Granularit\u00E4t\n    -esa | -enablesystemassertions\n                  Aktiviert System-Assertions\n    -dsa | -disablesystemassertions\n                  Deaktiviert System-Assertions\n    -agentlib:<libname>[=<options>]\n                  L\u00E4dt native Agent Library <libname>, z.B. -agentlib:jdwp\n                  siehe auch -agentlib:jdwp=help\n    -agentpath:<pathname>[=<options>]\n                  L\u00E4dt native Agent Library nach vollem Pfadnamen\n    -javaagent:<jarpath>[=<options>]\n                  L\u00E4dt Java-Programmiersprachen-Agent, siehe java.lang.instrument\n    -splash:<imagepath>\n                  Zeigt Startbildschirm mit angegebenem Bild an\n    @<filepath>   Liest Optionen aus der angegebenen Datei\n
+See Weitere Einzelheiten finden Sie unter http://www.oracle.com/technetwork/java/javase/documentation/index.html.
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\    -Xmixed           Ausf\u00FChrung im gemischten Modus (Standard)\n    -Xint             Nur Ausf\u00FChrung im interpretierten Modus\n    -Xbootclasspath:<Verzeichnisse und ZIP-/JAR-Dateien durch {0} getrennt>\n                      Legt Suchpfad f\u00FCr Bootstrap-Klassen und Ressourcen fest\n    -Xbootclasspath/a:<Verzeichnisse und ZIP-/JAR-Dateien durch {0} getrennt>\n                      H\u00E4ngt an das Ende des Bootstrap Classpath an\n    -Xbootclasspath/p:<Verzeichnisse und ZIP-/JAR-Dateien durch {0} getrennt>\n                      Stellt Bootstrap Classpath voran\n    -Xdiag            Zeigt zus\u00E4tzliche Diagnosemeldungen an\n    -Xnoclassgc       Deaktiviert Klassen-Garbage Collection\n    -Xincgc           Aktiviert inkrementelle Garbage Collection\n    -Xloggc:<file>    Loggt GC-Status in einer Datei mit Zeitstempeln\n    -Xbatch           Deaktiviert Hintergrundkompilierung\n    -Xms<size>        Legt anf\u00E4ngliche Java Heap-Gr\u00F6\u00DFe fest\n    -Xmx<size>        Legt maximale Java Heap-Gr\u00F6\u00DFe fest\n    -Xss<size>        Legt Java-Thread-Stackgr\u00F6\u00DFe fest\n    -Xprof            Gibt CPU-Profiling-Daten aus\n    -Xfuture          Aktiviert strengste Pr\u00FCfungen, antizipiert zuk\u00FCnftigen Standardwert\n    -Xrs              Reduziert Verwendung von BS-Signalen durch Java/VM (siehe Dokumentation)\n    -Xcheck:jni       F\u00FChrt zus\u00E4tzliche Pr\u00FCfungen f\u00FCr JNI-Funktionen durch\n    -Xshare:off       Kein Versuch, gemeinsame Klassendaten zu verwenden\n    -Xshare:auto      Verwendet gemeinsame Klassendaten, wenn m\u00F6glich (Standard)\n    -Xshare:on        Erfordert die Verwendung gemeinsamer Klassendaten, sonst verl\u00E4uft der Vorgang nicht erfolgreich.\n    -XshowSettings    Zeigt alle Einstellungen und f\u00E4hrt fort\n    -XshowSettings:all\n                      Zeigt alle Einstellungen und f\u00E4hrt fort\n    -XshowSettings:vm Zeigt alle VM-bezogenen Einstellungen und f\u00E4hrt fort\n    -XshowSettings:properties\n                      Zeigt alle Eigenschaftseinstellungen und f\u00E4hrt fort\n    -XshowSettings:locale\n                      Zeigt alle gebietsschemabezogenen Einstellungen und f\u00E4hrt fort\n\nDie -X-Optionen sind keine Standardoptionen und k\u00F6nnen ohne Vorank\u00FCndigung ge\u00E4ndert werden.\n
+java.launcher.X.usage=\    -Xmixed           Ausf\u00FChrung im gemischten Modus (Standard)\n    -Xint             Nur Ausf\u00FChrung im interpretierten Modus\n    -Xbootclasspath/a:<Verzeichnisse und ZIP-/JAR-Dateien durch {0} getrennt>\n                      H\u00E4ngt an das Ende des Bootstrap Classpath an\n    -Xdiag            Zeigt zus\u00E4tzliche Diagnosemeldungen an\n    -Xdiag:resolver   Zeigt Resolver-Diagnosemeldungen an\n    -Xnoclassgc       Deaktiviert Klassen-Garbage Collection\n    -Xincgc           Aktiviert inkrementelle Garbage Collection\n    -Xloggc:<file>    Protokolliert GC-Status in einer Datei mit Zeitstempeln\n    -Xbatch           Deaktiviert Hintergrundkompilierung\n    -Xms<size>        Legt anf\u00E4ngliche Java-Heap-Gr\u00F6\u00DFe fest\n    -Xmx<size>        Legt maximale Java-Heap-Gr\u00F6\u00DFe fest\n    -Xss<size>        Legt Java-Threadstackgr\u00F6\u00DFe fest\n    -Xprof            Gibt CPU-Profilingdaten aus\n    -Xfuture          Aktiviert strengste Pr\u00FCfungen, antizipiert zuk\u00FCnftigen Standardwert\n    -Xrs              Reduziert Verwendung von BS-Signalen durch Java/VM (siehe Dokumentation)\n    -Xcheck:jni       F\u00FChrt zus\u00E4tzliche Pr\u00FCfungen f\u00FCr JNI-Funktionen durch\n    -Xshare:off       Kein Versuch, gemeinsame Klassendaten zu verwenden\n    -Xshare:auto      Verwendet gemeinsame Klassendaten, wenn m\u00F6glich (Standard)\n    -Xshare:on        Erfordert die Verwendung gemeinsamer Klassendaten, sonst verl\u00E4uft der Vorgang nicht erfolgreich.\n    -XshowSettings    Zeigt alle Einstellungen an und f\u00E4hrt fort\n    -XshowSettings:all\n                      Zeigt alle Einstellungen an und f\u00E4hrt fort\n    -XshowSettings:vm Zeigt alle VM-bezogenen Einstellungen an und f\u00E4hrt fort\n    -XshowSettings:properties\n                      Zeigt alle Eigenschaftseinstellungen an und f\u00E4hrt fort\n    -XshowSettings:locale\n                      Zeigt alle gebietsschemabezogenen Einstellungen an und f\u00E4hrt fort\n    -XaddReads:<module>=<other-module>(,<other-module>)*\n                      <module> liest andere Module\n                      unabh\u00E4ngig von der Moduldeklaration\n    -XaddExports:<module>/<package>=<other-module>(,<other-module>)*\n                      <module> exportiert <package> in andere Module\n                      unabh\u00E4ngig von der Moduldeklaration\n    -Xpatch:<module>=<file>({0}<file>)*\n                      Modul mit Klassen und Ressourcen in JAR-Dateien oder Verzeichnissen\n                      au\u00DFer Kraft setzen oder erg\u00E4nzen\n    -Xdisable-@files  Deaktiviert weitere Argumentdateierweiterung\n\nDie -X-Optionen sind keine Standardoptionen und k\u00F6nnen ohne Vorank\u00FCndigung ge\u00E4ndert werden.\n
 
 # Translators please note do not translate the options themselves
 java.launcher.X.macosx.usage=\nDie folgenden Optionen sind f\u00FCr Mac OS X spezifisch:\n    -XstartOnFirstThread\n                      f\u00FChrt die main()-Methode f\u00FCr den ersten (AppKit) Thread aus\n    -Xdock:name=<Anwendungsname>"\n                      \u00DCberschreibt den in der Uhr angezeigten Standardanwendungsnamen\n    -Xdock:icon=<Pfad zu Symboldatei>\n                      \u00DCberschreibt das in der Uhr angezeigte Standardsymbol\n\n
@@ -52,3 +53,5 @@
 java.launcher.jar.error3=kein Hauptmanifestattribut, in {0}
 java.launcher.init.error=Initialisierungsfehler
 java.launcher.javafx.error1=Fehler: Die JavaFX-Methode launchApplication hat die falsche Signatur, sie\nmuss als statisch deklariert werden und einen Wert vom Typ VOID zur\u00FCckgeben
+java.launcher.module.error1=Modul {0} weist kein MainClass-Attribut auf. Verwenden Sie -m <module>/<main-class>
+java.launcher.module.error2=Fehler: Hauptklasse {0} konnte in Modul {1} nicht gefunden oder geladen werden
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_es.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_es.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   Sintaxis: {0} [-options] class [args...]\n           (para ejecutar una clase)\n   o  {0} [-options] -jar jarfile [args...]\n           (para ejecutar un archivo jar)\ndonde las opciones incluyen:\n
+java.launcher.opt.header  =   Sintaxis: {0} [opciones] class [args...]\n           (para ejecutar una clase)\n   or  {0} [opciones] -jar jarfile [args...]\n           (para ejecutar un archivo jar)\n   or  {0} [-options] -mp <ruta_m\u00F3dulo> -m <nombre_m\u00F3dulo> | <nombre_m\u00F3dulo>/<clase_principal>\n           (para ejecutar una clase principal en un m\u00F3dulo)\ndonde opciones incluye:\n
 
 java.launcher.opt.datamodel  =\    -d{0}\t  usar un modelo de datos de {0} bits, si est\u00E1 disponible\n
 java.launcher.opt.vmselect   =\    {0}\t  para seleccionar la VM "{1}"\n
@@ -34,10 +34,11 @@
 java.launcher.ergo.message2  =\                  porque la ejecuci\u00F3n se est\u00E1 llevando a cabo en una m\u00E1quina de clase de servidor.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <ruta de acceso de b\u00FAsqueda de clases de los directorios y los archivos zip/jar>\n    -classpath <ruta de acceso de b\u00FAsqueda de clases de los directorios y los archivos zip/jar>\n                  Lista separada por {0} de directorios, archivos JAR\n                  y archivos ZIP para buscar archivos de clase.\n    -D<nombre>=<valor>\n                  definir una propiedad del sistema\n    -verbose:[class|gc|jni]\n                  activar la salida verbose\n    -version      imprimir la versi\u00F3n del producto y salir\n    -version:<valor>\n                  es necesario que se ejecute la versi\u00F3n especificada\n    -showversion  imprimir la versi\u00F3n del producto y continuar\n    -jre-restrict-search | -no-jre-restrict-search\n                  incluir/excluir JRE privados de usuario en la b\u00FAsqueda de versi\u00F3n\n    -? -help      imprimir este mensaje de ayuda\n    -X            imprimir la ayuda sobre las opciones que no sean est\u00E1ndar\n    -ea[:<nombre_paquete>...|:<nombre_clase>]\n    -enableassertions[:<nombre_paquete>...|:<nombre_clase>]\n                  activar afirmaciones con la granularidad especificada\n    -da[:<nombre_paquete>...|:<nombre_clase>]\n    -disableassertions[:<nombre_paquete>...|:<nombre_clase>]\n                  desactivar afirmaciones con la granularidad especificada\n    -esa | -enablesystemassertions\n                  activar afirmaciones del sistema\n    -dsa | -disablesystemassertions\n                  desactivar afirmaciones del sistema\n    -agentlib:<nombre_bib>[=<opciones>]\n                  cargar la biblioteca de agente nativa <nombre_bib>, como -agentlib:hprof\n                  v\u00E9ase tambi\u00E9n -agentlib:jdwp=help y -agentlib:hprof=help\n    -agentpath:<nombre_ruta_acceso>[=<opciones>]\n                  cargar biblioteca de agente nativa con el nombre de la ruta de acceso completa\n    -javaagent:<ruta_acceso_jar>[=<opciones>]\n                  cargar agente de lenguaje de programaci\u00F3n Java, v\u00E9ase java.lang.instrument\n    -splash:<ruta_acceso_imagen>\n                  mostrar una pantalla de presentaci\u00F3n con la imagen especificada\nConsulte http://www.oracle.com/technetwork/java/javase/documentation/index.html para obtener m\u00E1s informaci\u00F3n.
+java.launcher.opt.footer     =\    -cp <ruta de b\u00FAsqueda de clases de los directorios y los archivos zip/jar>\n    -classpath <ruta de b\u00FAsqueda de clases de los directorios y los archivos zip/jar>\n                  Lista separada por {0} de directorios, archivos JAR\n                  y archivos ZIP para buscar archivos de clase.\n    -mp <ruta de m\u00F3dulo>\n    -modulepath <ruta de m\u00F3dulo>...\n                  Lista de directorios separados por {0}, cada directorio\n                  es un directorio de m\u00F3dulos.\n    -upgrademodulepath <ruta de m\u00F3dulo>...\n                  Lista de directorios separados por {0}, cada directorio\n                  es un directorio de m\u00F3dulos que sustituye a los m\u00F3dulos\n                  actualizables en la imagen de tiempo de ejecuci\u00F3n\n    -m <nombre_m\u00F3dulo> | <nombre_m\u00F3dulo>/<clase_principal>\n                  m\u00F3dulo principal o inicial que resolver\n    -addmods <nombre_m\u00F3dulo>[,<nombre_m\u00F3dulo>...]\n                  m\u00F3dulos ra\u00EDz que resolver, adem\u00E1s del m\u00F3dulo inicial\n    -limitmods <nombre_m\u00F3dulo>[,<nombre_m\u00F3dulo>...]\n                  limita el universo de los m\u00F3dulos observables\n    -listmods[:<nombre_m\u00F3dulo>[,<nombre_m\u00F3dulo>...]]\n                  muestra los m\u00F3dulos observables y sale\n    -D<nombre>=<valor>\n                  define una propiedad del sistema\n    -verbose:[class|gc|jni]\n                  activa la salida verbose\n    -version      imprime la versi\u00F3n del producto y sale\n    -showversion  imprime la versi\u00F3n del producto y sale\n    -? -help      imprime este mensaje de ayuda\n    -X            imprime la ayuda de opciones no est\u00E1ndar\n    -ea[:<nombre_paquete>...|:<nombre_clase>]\n    -enableassertions[:<nombre_paquete>...|:<nombre_clase>]\n                  activar afirmaciones con la granularidad especificada\n    -da[:<nombre_paquete>...|:<nombre_clase>]\n    -disableassertions[:<nombre_paquete>...|:<nombre_clase>]\n                  desactivar afirmaciones con la granularidad especificada\n    -esa | -enablesystemassertions\n                  activar afirmaciones del sistema\n    -dsa | -disablesystemassertions\n                  desactivar afirmaciones del sistema\n    -agentlib:<nombre_bib>[=<opciones>]\n                  cargar biblioteca de agentes nativos <nombre_bib>, p. ej,. -agentlib:jdwp\n                  ver tambi\u00E9n -agentlib:jdwp=help\n    -agentpath:<nombre_ruta>[=<opciones>]\n                  cargar biblioteca de agentes nativos por ruta completa\n    -javaagent:<ruta_jar>[=<opciones>]\n                  cargar agente de lenguaje de programaci\u00F3n Java, ver java.lang.instrument\n    -splash:<ruta_imagen>\n                  mostrar pantalla de bienvenida con la imagen especificada\n    @<ruta_archivo>   leer opciones del archivo especificado\n
+See http://www.oracle.com/technetwork/java/javase/documentation/index.html para obtener m\u00E1s informaci\u00F3n.
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\    -Xmixed           ejecuci\u00F3n de modo mixto (por defecto)\n    -Xint             s\u00F3lo ejecuci\u00F3n de modo interpretado\n    -Xbootclasspath:<directorios y archivos zip/jar separados por {0}>\n                      definir la ruta de acceso de b\u00FAsqueda para los recursos y clases de inicializaci\u00F3n de datos\n    -Xbootclasspath/a:<directorios y archivos zip/jar separados por {0}>\n                      agregar al final de la ruta de acceso de la clase de inicializaci\u00F3n de datos\n    -Xbootclasspath/p:<directorios y archivos zip/jar separados por {0}>\n                      anteponer a la ruta de acceso de la clase de inicializaci\u00F3n de datos\n    -Xdiag            mostrar mensajes de diagn\u00F3stico adicionales\n    -Xnoclassgc       desactivar la recolecci\u00F3n de basura de clases\n    -Xincgc           activar la recolecci\u00F3n de basura de clases\n    -Xloggc:<archivo> registrar el estado de GC en un archivo con registros de hora\n    -Xbatch           desactivar compilaci\u00F3n en segundo plano\n    -Xms<tama\u00F1o>      definir tama\u00F1o de pila Java inicial\n    -Xmx<tama\u00F1o>      definir tama\u00F1o de pila Java m\u00E1ximo\n    -Xss<tama\u00F1o>      definir tama\u00F1o de la pila del thread de Java\n    -Xprof            datos de salida de creaci\u00F3n de perfil de CPU\n    -Xfuture          activar las comprobaciones m\u00E1s estrictas, anticip\u00E1ndose al futuro valor por defecto\n    -Xrs              reducir el uso de se\u00F1ales de sistema operativo por parte de Java/VM (consulte la documentaci\u00F3n)\n    -Xcheck:jni       realizar comprobaciones adicionales para las funciones de JNI\n    -Xshare:off       no intentar usar datos de clase compartidos\n    -Xshare:auto      usar datos de clase compartidos si es posible (valor por defecto)\n    -Xshare:on        es obligatorio el uso de datos de clase compartidos, de lo contrario se emitir\u00E1 un fallo.\n    -XshowSettings    mostrar todos los valores y continuar\n    -XshowSettings:all\n                      mostrar todos los valores y continuar\n    -XshowSettings:vm mostrar todos los valores de la VM y continuar\n    -XshowSettings:properties\n                      mostrar todos los valores de las propiedades y continuar\n    -XshowSettings:locale\n                      mostrar todos los valores relacionados con la configuraci\u00F3n regional y continuar\n\nLas opciones -X no son est\u00E1ndar, por lo que podr\u00EDan cambiarse sin previo aviso.\n
+java.launcher.X.usage=\    -Xmixed           ejecuci\u00F3n de modo mixto (por defecto)\n    -Xint             solo ejecuci\u00F3n de modo interpretado\n    -Xbootclasspath/a:<directorios y archivos zip/jar separados por {0}>\n                      agregar al final de la ruta de la clase de inicializaci\u00F3n de datos\n    -Xdiag            mostrar mensajes de diagn\u00F3stico adicionales\n    -Xdiag:resolver   mostrar mensajes de diagn\u00F3stico de resoluci\u00F3n\n    -Xnoclassgc       desactivar la recopilaci\u00F3n de basura de clases\n    -Xincgc           activar la recopilaci\u00F3n de basura de clases\n    -Xloggc:<archivo>    registrar el estado de GC en un archivo con registros de hora\n    -Xbatch           desactivar compilaci\u00F3n en segundo plano\n    -Xms<tama\u00F1o>      definir tama\u00F1o de pila Java inicial\n    -Xmx<tama\u00F1o>      definir tama\u00F1o de pila Java m\u00E1ximo\n    -Xss<tama\u00F1o>      definir tama\u00F1o de la pila del thread de Java\n    -Xfuture          activar las comprobaciones m\u00E1s estrictas, anticip\u00E1ndose al futuro valor por defecto\n    -Xrs              reducir el uso de se\u00F1ales de sistema operativo por parte de Java/VM (consulte la documentaci\u00F3n)\n    -Xcheck:jni       realizar comprobaciones adicionales para las funciones de JNI\n    -Xshare:off       no intentar usar datos de clase compartidos\n    -Xshare:auto      usar datos de clase compartidos si es posible (valor por defecto)\n    -Xshare:on        es obligatorio el uso de datos de clase compartidos, de lo contrario se emitir\u00E1 un fallo.\n    -XshowSettings    mostrar todos los valores y continuar\n    -XshowSettings:all\n                      mostrar todos los valores y continuar\n    -XshowSettings:vm mostrar todos los valores de la VM y continuar\n    -XshowSettings:properties\n                      mostrar todos los valores de las propiedades y continuar\n    -XshowSettings:locale\n                      mostrar todos los valores relacionados con la configuraci\u00F3n regional y continuar\n    -XaddReads:<m\u00F3dulo>=<otros-m\u00F3dulos>(,<otros-m\u00F3dulos>)*\n                      <m\u00F3dulo> lee otros m\u00F3dulos,\n                      independientemente de su declaraci\u00F3n\n    -XaddExports:<m\u00F3dulo>/<paquete>=<otros-m\u00F3dulos>(,<otros-m\u00F3dulos>)*\n                      <m\u00F3dulo> exporta <paquete> a otros m\u00F3dulos,\n                      independientemente de su declaraci\u00F3n\n    -Xpatch:<m\u00F3dulo>=<archivo>({0}<archivo>)*\n                      Sustituye o aumenta un m\u00F3dulo con clases y recursos\n                      en directorios o archivos JAR\n    -Xdisable-@files  desactiva la ampliaci\u00F3n de archivos de argumentos\n\nLas opciones -X no son est\u00E1ndar, por lo que podr\u00EDan cambiarse sin previo aviso.\n
 
 # Translators please note do not translate the options themselves
 java.launcher.X.macosx.usage=\nLas siguientes opciones son espec\u00EDficas para Mac OS X:\n    -XstartOnFirstThread\n                      ejecuta el m\u00E9todo main() del primer thread (AppKit)\n    -Xdock:name=<nombre de aplicaci\u00F3n>"\n                      sustituye al nombre por defecto de la aplicaci\u00F3n que se muestra en el Dock\n    -Xdock:icon=<ruta de acceso a archivo de icono>\n                      sustituye al icono por defecto que se muestra en el Dock\n\n
@@ -52,3 +53,5 @@
 java.launcher.jar.error3=no hay ning\u00FAn atributo de manifiesto principal en {0}
 java.launcher.init.error=error de inicializaci\u00F3n
 java.launcher.javafx.error1=Error: el m\u00E9todo launchApplication de JavaFX tiene una firma que no es correcta.\\nSe debe declarar est\u00E1tico y devolver un valor de tipo nulo
+java.launcher.module.error1=el m\u00F3dulo {0} no tiene ning\u00FAn atributo MainClass, utilice -m <m\u00F3dulo>/<clase-principal>
+java.launcher.module.error2=Error: no se ha encontrado o cargado la clase principal {0} en el m\u00F3dulo {1}
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_fr.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_fr.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   Syntaxe : {0} [-options] class [args...]\n           (pour l''ex\u00E9cution d''une classe)\n   ou  {0} [-options] -jar jarfile [args...]\n           (pour l''ex\u00E9cution d''un fichier JAR)\no\u00F9 les options comprennent :\n
+java.launcher.opt.header  =   Syntaxe : {0} [options] class [args...]\n           (pour l''ex\u00E9cution d''une classe)\n   ou  {0} [options] -jar jarfile [args...]\n           (pour l''ex\u00E9cution d''un fichier JAR)\n   ou  {0} [-options] -mp <modulepath> -m <modulename> | <modulename>/<mainclass>\n           (pour l''ex\u00E9cution de la classe principale dans un module)\no\u00F9 les options incluent :\n
 
 java.launcher.opt.datamodel  =\    -d{0}\t  utilisez le mod\u00E8le de donn\u00E9es {0} bits s''il est disponible\n
 java.launcher.opt.vmselect   =\    {0}\t  pour s\u00E9lectionner la machine virtuelle "{1}"\n
@@ -34,10 +34,11 @@
 java.launcher.ergo.message2  =\                  car vous ex\u00E9cutez une machine de classe de serveur.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n    -classpath <class search path of directories and zip/jar files>\n                  Liste de r\u00E9pertoires, d''archives JAR et\n                   d''archives ZIP s\u00E9par\u00E9s par des {0}, dans laquelle rechercher les fichiers de classe.\n    -D<name>=<value>\n                  d\u00E9finition d''une propri\u00E9t\u00E9 syst\u00E8me\n    -verbose:[class|gc|jni]\n                  activation de la sortie en mode verbose\n    -version      impression de la version du produit et fin de l''op\u00E9ration\n    -version:<value>\n                  ex\u00E9cution de la version sp\u00E9cifi\u00E9e obligatoire\n    -showversion  impression de la version du produit et poursuite de l''op\u00E9ration\n    -jre-restrict-search | -no-jre-restrict-search\n                  inclusion/exclusion des environnements JRE priv\u00E9s de l''utilisateur dans la recherche de version\n    -? -help      impression du message d''aide\n    -X            impression de l''aide sur les options non standard\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  activation des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  d\u00E9sactivation des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n    -esa | -enablesystemassertions\n                  activation des assertions syst\u00E8me\n    -dsa | -disablesystemassertions\n                  d\u00E9sactivation des assertions syst\u00E8me\n    -agentlib:<libname>[=<options>]\n                  chargement de la biblioth\u00E8que d''agent natif <libname>, par exemple -agentlib:hprof\n                  voir \u00E9galement, -agentlib:jdwp=help et -agentlib:hprof=help\n    -agentpath:<pathname>[=<options>]\n                  chargement de la biblioth\u00E8que d''agent natif via le chemin d''acc\u00E8s complet\n    -javaagent:<jarpath>[=<options>]\n                  chargement de l''agent du langage de programmation Java, voir java.lang.instrument\n    -splash:<imagepath>\n                  affichage de l''\u00E9cran d''accueil avec l''image sp\u00E9cifi\u00E9e\nVoir http://www.oracle.com/technetwork/java/javase/documentation/index.html pour plus de d\u00E9tails.
+java.launcher.opt.footer     =\    -cp <chemin de recherche de classe de r\u00E9pertoire et de fichiers ZIP/JAR>\n    -classpath <chemin de recherche de classe de r\u00E9pertoire et de fichiers ZIP/JAR>\n                  Liste de r\u00E9pertoires, d''archives JAR et\n                  d''archives ZIP s\u00E9par\u00E9s par des {0}, dans laquelle rechercher des fichiers de classe.\n    -mp <chemin de module>\n    -modulepath <chemin de module>...\n                  Liste de r\u00E9pertoires s\u00E9par\u00E9s par des {0}, chaque r\u00E9pertoire\n                  est un r\u00E9pertoire de modules.\n    -upgrademodulepath <chemin de module>...\n                  Liste de r\u00E9pertoires s\u00E9par\u00E9s par des {0}, chaque r\u00E9pertoire\n                  est un r\u00E9pertoire de modules qui remplace des modules\n                  pouvant \u00EAtre mis \u00E0 niveau dans l''image d''ex\u00E9cution\n    -m <modulename> | <modulename>/<mainclass>\n                  modules racines \u00E0 r\u00E9soudre en plus du module initial\n    -addmods <modulename>[,<modulename>...]\n                  modules racines \u00E0 r\u00E9soudre en plus du module initial\n    -limitmods <modulename>[,<modulename>...]\n                  limitation de l''univers de modules observables\n    -listmods[:<modulename>[,<modulename>...]]\n                  \u00E9num\u00E9ration des modules observables et fin de l''op\u00E9ration\n    -D<name>=<value>\n                  d\u00E9finition d''une propri\u00E9t\u00E9 syst\u00E8me\n    -verbose:[class|gc|jni]\n                  activation de la sortie en mode verbose\n    -version      impression de la version du produit et fin de l''op\u00E9ration\n    -showversion  impression de la version du produit et poursuite de l''op\u00E9ration\n    -? -help      impression du message d''aide\n    -X            impression de l''aide sur les options non standard\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  activation des assertions avec la granularit\u00E9* sp\u00E9cifi\u00E9e\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  d\u00E9sactivation des assertions avec la granularit\u00E9 sp\u00E9cifi\u00E9e\n    -esa | -enablesystemassertions\n                  activation des assertions syst\u00E8me\n    -dsa | -disablesystemassertions\n                  d\u00E9sactivation des assertions syst\u00E8me\n    -agentlib:<libname>[=<options>]\n                  chargement de la biblioth\u00E8que d''agent natif <libname>, par exemple -agentlib:jdwp\n                  voir aussi, -agentlib:jdwp=help\n    -agentpath:<pathname>[=<options>]\n                  chargement de la biblioth\u00E8que d''agent natif via le chemin d''acc\u00E8s complet\n    -javaagent:<jarpath>[=<options>]\n                  chargement de l''agent du langage de programmation Java, voir java.lang.instrument\n    -splash:<imagepath>\n                  affichage de l''\u00E9cran d''accueil avec l''image indiqu\u00E9e\n    @<filepath>   lire les options \u00E0 partir du fichier indiqu\u00E9\n
+See http://www.oracle.com/technetwork/java/javase/documentation/index.html pour plus de d\u00E9tails.
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\    -Xmixed           ex\u00E9cution en mode mixte (valeur par d\u00E9faut)\n    -Xint             ex\u00E9cution en mode interpr\u00E9t\u00E9 uniquement\n    -Xbootclasspath:<directories and zip/jar files separated by {0}>\n                      d\u00E9finition du chemin de recherche pour les ressources et classes bootstrap\n    -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n                      ajout \u00E0 la fin du chemin de classe bootstrap\n    -Xbootclasspath/p:<directories and zip/jar files separated by {0}>\n                      ajout au d\u00E9but du chemin de classe bootstrap\n    -Xdiag            affichage de messages de diagnostic suppl\u00E9mentaires\n    -Xnoclassgc       d\u00E9sactivation de l''op\u00E9ration de ramasse-miette (garbage collection) de la classe\n    -Xincgc           activation de l''op\u00E9ration de ramasse-miette (garbage collection) incr\u00E9mentielle\n    -Xloggc:<file>    journalisation du statut de l''op\u00E9ration de ramasse-miette (garbage collection) dans un fichier avec horodatages\n    -Xbatch           d\u00E9sactivation de la compilation en arri\u00E8re-plan\n    -Xms<size>        d\u00E9finition de la taille initiale des portions de m\u00E9moire Java\n    -Xmx<size>        d\u00E9finition de la taille maximale des portions de m\u00E9moire Java\n    -Xss<size>        d\u00E9finition de la taille de pile de thread Java\n    -Xprof            sortie des donn\u00E9es de profilage de l''unit\u00E9 centrale\n    -Xfuture          activation des contr\u00F4les les plus stricts en vue d''anticiper la future valeur par d\u00E9faut\n    -Xrs              r\u00E9duction de l''utilisation des signaux OS par Java/la machine virtuelle (voir documentation)\n    -Xcheck:jni       ex\u00E9cution de contr\u00F4les suppl\u00E9mentaires pour les fonctions JNI\n    -Xshare:off       aucune tentative d''utilisation des donn\u00E9es de classe partag\u00E9es\n    -Xshare:auto      utilisation des donn\u00E9es de classe partag\u00E9es si possible (valeur par d\u00E9faut)\n    -Xshare:on        utilisation des donn\u00E9es de classe partag\u00E9es obligatoire ou \u00E9chec de l''op\u00E9ration\n    -XshowSettings    affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n    -XshowSettings:all\n                      affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n    -XshowSettings:vm affichage de tous les param\u00E8tres de machine virtuelle et poursuite de l''op\u00E9ration\n    -XshowSettings:properties\n                      affichage de tous les param\u00E8tres de propri\u00E9t\u00E9 et poursuite de l''op\u00E9ration\n    -XshowSettings:locale\n                      affichage de tous les param\u00E8tres d''environnement local et poursuite de l''op\u00E9ration\n\nLes options -X ne sont pas des options standard et peuvent faire l''objet de modifications sans pr\u00E9avis.\n
+java.launcher.X.usage=\    -Xmixed           ex\u00E9cution en mode mixte (valeur par d\u00E9faut)\n    -Xint             ex\u00E9cution en mode interpr\u00E9t\u00E9 uniquement\n    -Xbootclasspath/a:<r\u00E9pertoires et fichiers ZIP/JAR s\u00E9par\u00E9s par des {0}>\n                      ajout \u00E0 la fin du chemin de classe bootstrap\n    -Xdiag            affichage de messages de diagnostic suppl\u00E9mentaires\n    -Xdiag:resolver   affichage de messages de diagnostic du r\u00E9solveur\n    -Xnoclassgc       d\u00E9sactivation du nettoyage de la m\u00E9moire de la classe\n    -Xincgc           activation du nettoyage de la m\u00E9moire incr\u00E9mentiel\n    -Xloggc:<file>    journalisation du statut de nettoyage de la m\u00E9moire dans un fichier avec horodatage\n    -Xbatch           d\u00E9sactivation de la compilation en arri\u00E8re-plan\n    -Xms<size>        d\u00E9finition de la taille initiale des portions de m\u00E9moire Java\n    -Xmx<size>        d\u00E9finition de la taille maximale des portions de m\u00E9moire Java\n    -Xss<size>        d\u00E9finition de la taille de pile de threads Java\n    -Xprof            sortie des donn\u00E9es de profilage d''UC\n    -Xfuture          activation des contr\u00F4les les plus stricts en vue d''anticiper la future valeur par d\u00E9faut\n    -Xrs              r\u00E9duction de l''utilisation des signaux d''OS par Java/la machine virtuelle (voir documentation)\n    -Xcheck:jni       ex\u00E9cution de contr\u00F4les suppl\u00E9mentaires pour les fonctions JNI\n    -Xshare:off       aucune tentative d''utilisation des donn\u00E9es de classe partag\u00E9e\n    -Xshare:auto      utilisation des donn\u00E9es de classe partag\u00E9e si possible (valeur par d\u00E9faut)\n    -Xshare:on        utilisation des donn\u00E9es de classe partag\u00E9e obligatoire ou \u00E9chec de l''op\u00E9ration\n    -XshowSettings    affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n    -XshowSettings:all\n                      affichage de tous les param\u00E8tres et poursuite de l''op\u00E9ration\n    -XshowSettings:vm affichage de tous les param\u00E8tres de machine virtuelle et poursuite de l''op\u00E9ration\n    -XshowSettings:properties\n                      affichage de tous les param\u00E8tres de propri\u00E9t\u00E9 et poursuite de l''op\u00E9ration\n    -XshowSettings:locale\n                      affichage de tous les param\u00E8tres d''environnement local et poursuite de l''op\u00E9ration\n    -XaddReads:<module>=<other-module>(,<other-module>)*\n                      <module> lecture de tous les modules,\n                      quelle que soit la d\u00E9claration de module\n    -XaddExports:<module>/<package>=<other-module>(,<other-module>)*\n                      <module> exporte <package> vers d''autres modules,\n                      quelle que soit la d\u00E9claration de module\n    -Xpatch:<module>=<file>({0}<file>)*\n                      Remplacement ou augmentation d''un module avec des classes et des ressources\n                      dans des fichiers ou r\u00E9pertoires JAR\n    -Xdisable-@files  d\u00E9sactivation d''autres d\u00E9veloppements de fichier d''argument\n\nLes options -X ne sont pas standard et sont susceptibles de modification sans pr\u00E9avis.\n
 
 # Translators please note do not translate the options themselves
 java.launcher.X.macosx.usage=\nLes options suivantes sont propres \u00E0 Mac OS X :\n    -XstartOnFirstThread\n                      ex\u00E9cute la m\u00E9thode main() sur le premier thread (AppKit)\n    -Xdock:name=<application name>"\n                      remplace le nom d'application par d\u00E9faut affich\u00E9 dans l'ancrage\n    -Xdock:icon=<path to icon file>\n                      remplace l'ic\u00F4ne par d\u00E9faut affich\u00E9e dans l'ancrage\n\n
@@ -52,3 +53,5 @@
 java.launcher.jar.error3=aucun attribut manifest principal dans {0}
 java.launcher.init.error=erreur d'initialisation
 java.launcher.javafx.error1=Erreur : la signature de la m\u00E9thode launchApplication JavaFX est incorrecte, la\nm\u00E9thode doit \u00EAtre d\u00E9clar\u00E9e statique et renvoyer une valeur de type void
+java.launcher.module.error1=le module {0} n''a pas d''attribut MainClass, utilisez -m <module>/<main-class>
+java.launcher.module.error2=Erreur : impossible de trouver ou charger la classe principale {0} dans le module {1}
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_it.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_it.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   Uso: {0} [-opzioni] class [argomenti...]\n           (per eseguire una classe)\n   oppure  {0} [-opzioni] -jar filejar [argomenti...]\n           (per eseguire un file jar)\ndove le opzioni sono:\n
+java.launcher.opt.header  =   Uso: {0} [options] class [args...]\n           (per eseguire una classe)\n   oppure  {0} [options] -jar jarfile [args...]\n           (per eseguire un file jar)\n   oppure  {0} [-options] -mp <modulepath> -m <modulename> | <modulename>/<mainclass>\n           (per eseguire la classe principale in un modulo)\nin cui options include:\n
 
 java.launcher.opt.datamodel  =\    -d{0}\t  usare un modello di dati {0}-bit se disponibile\n
 java.launcher.opt.vmselect   =\    {0}\t  per selezionare la VM "{1}"\n
@@ -34,10 +34,11 @@
 java.launcher.ergo.message2  =\                  perch\u00E9 si utilizza un computer di classe server.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <classpath di ricerca di directory e file zip/jar>\n    -classpath <classpath di ricerca di directory e file zip/jar>\n                  Una lista separata da {0} di directory, archivi JAR,\n                  e archivi ZIP utilizzata per la ricerca di file di classe.\n    -D<nome>=<valore>\n                  imposta una propriet\u00E0 di sistema\n    -verbose:[class|gc|jni]\n                  abilita l''output descrittivo\n    -version      stampa la versione del prodotto ed esce\n    -version:<valore>\n                  richiede l''esecuzione della versione specificata\n    -showversion  stampa la versione del prodotto e continua\n    -jre-restrict-search | -no-jre-restrict-search\n                  include/esclude gli ambienti JRE privati dell''utente nella ricerca della versione\n    -? -help      stampa questo messaggio della Guida\n    -X            stampa la Guida sulle opzioni non standard\n    -ea[:<nomepackage>...|:<nomeclasse>]\n    -enableassertions[:<nomepackage>...|:<nomeclasse>]\n                  abilita le asserzioni con la granularit\u00E0 specificata\n    -da[:<nomepackage>...|:<nomeclasse>]\n    -disableassertions[:<nomepackage>...|:<nomeclasse>]\n                  disabilita le asserzioni con la granularit\u00E0 specificata\n    -esa | -enablesystemassertions\n                  abilita le asserzioni di sistema\n    -dsa | -disablesystemassertions\n                  disabilita le asserzioni di sistema\n    -agentlib:<nomelib>[=<opzioni>]\n                  carica la libreria agenti nativa <nomelib>, ad esempio -agentlib:hprof\n                  vedere anche, -agentlib:jdwp=help and -agentlib:hprof=help\n    -agentpath:<nomepercorso>[=<opzioni>]\n                  carica la libreria agenti nativa con il percorso completo\n    -javaagent:<percorsojar>[=<opzioni>]\n                  carica l''agente del linguaggio di programmazione Java. Vedere java.lang.instrument\n    -splash:<percorsoimmagine>\n                  mostra la schermata iniziale con l''immagine specificata\nPer ulteriori dettagli, vedere http://www.oracle.com/technetwork/java/javase/documentation/index.html.
+java.launcher.opt.footer     =\    -cp <classpath di ricerca di directory e file zip/jar>\n    -classpath <classpath di ricerca di directory e file zip/jar>\n                  Una lista separata da {0} di directory, archivi JAR\n                  e ZIP utilizzata per la ricerca di file di classe.\n    -mp <percorsomodulo>\n    -modulepath <percorsomodulo>...\n                  Una lista separata da {0} di directory; ciascuna directory\n                  \u00E8 una directory di moduli.\n    -upgrademodulepath <percorso modulo>...\n                  Una lista separata da {0} di directory; ciascuna directory\n                  \u00E8 una directory dei moduli che sostituiscono i moduli\n                  aggiornabili nell''immagine in fase di esecuzione\n    -m <nomemodulo>| <nomemodulo>/<classeprincipale>\n                  il modulo iniziale o principale da risolvere\n    -addmods <nomemodulo>[,<nomemodulo>...]\n                  moduli root da risolvere in aggiunta al modulo iniziale\n    -limitmods <nomemodulo>[,<nomemodulo>...]\n                  limita l''universe dei moduli osservabili\n    -listmods[:<nomemodulo>[,<nomemodulo>...]]\n                  elenca i moduli osservabili ed esce\n    -D<nome>=<valore>\n                  imposta una propriet\u00E0 di sistema\n    -verbose:[class|gc|jni]\n                  abilita l''output descrittivo\n    -version      stampa la versione del prodotto ed esce\n    -showversion  stampa la versione del prodotto e continua\n    -? -help      stampa questo messaggio della Guida\n    -X            stampa la Guida sulle opzioni non standard\n    -ea[:<nomepackage>...|:<nomeclasse>]\n    -enableassertions[:<nomepackage>...|:<nomeclasse>]\n                  abilita le asserzioni con la granularit\u00E0 specificata\n    -da[:<nomepackage>...|:<nomeclasse>]\n    -disableassertions[:<nomepackage>...|:<nomeclasse>]\n                  disabilita le asserzioni con la granularit\u00E0 specificata\n    -esa | -enablesystemassertions\n                  abilita le asserzioni di sistema\n    -dsa | -disablesystemassertions\n                  disabilita le asserzioni di sistema\n    -agentlib:<nomelibreria>[=<opzioni>]\n                  load native agent library <nomelibreria>, ad esempio -agentlib:jdwp\n                  vedere anche -agentlib:jdwp=help\n    -agentpath:<nomepercorso>[=<opzioni>]\n                  carica la libreria agenti nativa con il percorso completo\n    -javaagent:<percorsojar>[=<opzioni>]\n                  carica l''agente del linguaggio di programmazione Java. Vedere java.lang.instrument\n    -splash:<percorsoimmagine>\n                  mostra la schermata iniziale con l''immagine specificata\n    @<percorsofile>   legge le opzioni dal file specificato\n
+See Per ulteriori dettagli, vedere http://www.oracle.com/technetwork/java/javase/documentation/index.html.
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\    -Xmixed           esecuzione in modalit\u00E0 mista (impostazione predefinita)\n    -Xint             esecuzione solo in modalit\u00E0 convertita\n    -Xbootclasspath:<directory e file zip/jar separati da {0}>\n                      imposta il percorso di ricerca per le classi e le risorse di bootstrap\n    -Xbootclasspath/a:<directory e file zip/jar separati da {0}>\n                      aggiunge alla fine del classpath di bootstrap\n    -Xbootclasspath/p:<directory e file zip/jar separati da {0}>\n                      antepone al classpath di bootstrap\n    -Xdiag            mostra messaggi di diagnostica aggiuntivi\n    -Xnoclassgc       disabilita la garbage collection della classe\n    -Xincgc           abilita la garbage collection incrementale\n    -Xloggc:<file>    registra lo stato GC in un file di log con indicatori orari\n    -Xbatch           disabilita la compilazione in background\n    -Xms<dimensione>        imposta la dimensione heap Java iniziale\n    -Xmx<dimensione>        imposta la dimensione heap Java massima\n    -Xss<dimensione>        imposta la dimensione dello stack di thread Java\n    -Xprof            visualizza i dati di profilo della CPU\n    -Xfuture          abilita i controlli pi\u00F9 limitativi anticipando le impostazioni predefinite future\n    -Xrs              riduce l''uso di segnali del sistema operativo da Java/VM (vedere la documentazione)\n    -Xcheck:jni       esegue controlli aggiuntivi per le funzioni JNI\n    -Xshare:off       non tenta di utilizzare i dati della classe condivisi\n    -Xshare:auto      utilizza i dati di classe condivisi se possibile (impostazione predefinita)\n    -Xshare:on        richiede l''uso dei dati di classe condivisi, altrimenti l''esecuzione non riesce.\n    -XshowSettings    mostra tutte le impostazioni e continua\n    -XshowSettings:all\n                      mostra tutte le impostazioni e continua\n    -XshowSettings:vm mostra tutte le impostazioni correlate alla VM e continua\n    -XshowSettings:properties\n                      mostra tutte le impostazioni delle propriet\u00E0 e continua\n    -XshowSettings:locale\n                      mostra tutte le impostazioni correlate alle impostazioni nazionali e continua\n\nLe opzioni -X non sono opzioni standard e sono soggette a modifiche senza preavviso.\n
+java.launcher.X.usage=\    -Xmixed           esecuzione in modalit\u00E0 mista (impostazione predefinita)\n    -Xint             esecuzione solo in modalit\u00E0 convertita\n    -Xbootclasspath/a:<directory e file zip/jar separati da {0}>\n                      aggiunge alla fine del classpath di bootstrap\n     -Xdiag            mostra messaggi di diagnostica aggiuntivi\n    -Xdiag:resolver   mostra i messaggi di diagnostica del resolver\n    -Xnoclassgc       disabilita la garbage collection della classe\n    -Xincgc           abilita la garbage collection incrementale\n    -Xloggc:<file>    registra lo stato GC in un file con indicatori orari\n    -Xbatch           disabilita la compilazione in background\n    -Xms<size>        imposta la dimensione heap Java iniziale\n    -Xmx<size>        imposta la dimensione heap Java massima\n    -Xss<size>        imposta la dimensione dello stack di thread Java\n    -Xprof            visualizza i dati di profilo della CPU\n    -Xfuture          abilita i controlli pi\u00F9 limitativi anticipando le impostazioni predefinite future\n    -Xrs              riduce l''uso di segnali del sistema operativo da Java/VM (vedere la documentazione)\n    -Xcheck:jni       esegue controlli aggiuntivi per le funzioni JNI\n    -Xshare:off       non tenta di utilizzare i dati della classe condivisi\n    -Xshare:auto      utilizza i dati di classe condivisi se possibile (impostazione predefinita)\n    -Xshare:on        richiede l''uso dei dati di classe condivisi, altrimenti l''esecuzione non riesce.\n    -XshowSettings    mostra tutte le impostazioni e continua\n    -XshowSettings:all\n                      mostra tutte le impostazioni e continua\n    -XshowSettings:vm mostra tutte le impostazioni correlate alla VM e continua\n    -XshowSettings:properties\n                      mostra tutte le impostazioni delle propriet\u00E0 e continua\n    -XshowSettings:locale\n                      mostra tutte le impostazioni correlate alle impostazioni nazionali e continua\n   -XaddReads:<module>=<other-module>(,<other-module>)*\n                      <module> legge altri moduli,\n                      indipendentemente dalla dichiarazione del modulo\n   -XaddExports:<module>/<package>=<other-module>(,<other-module>)*\n                      <module> esporta il <package> in altri moduli,\n                      indipendentemente dalla dichiarazione del modulo\n    -Xpatch:<module>=<file>({0}<file>)*\n                      sostituisce o migliora un modulo con classi e risorse\n                      in file JAR o directory\n    -Xdisable-@files  disabilita l''ulteriore espansione del file di argomenti\n\nLe opzioni -X non sono opzioni standard e sono soggette a modifiche senza preavviso.\n
 
 # Translators please note do not translate the options themselves
 java.launcher.X.macosx.usage=\nLe opzioni riportate di seguito sono specifiche del sistema operativo Mac OS X:\n    -XstartOnFirstThread\n                      Esegue il metodo main() sul primo thread (AppKit).\n    -Xdock:name=<nome applicazione>"\n                      Sostituisce il nome applicazione predefinito visualizzato nel dock\n    -Xdock:icon=<percorso file icona>\n                      Sostituisce l'icona predefinita visualizzata nel dock\n\n
@@ -52,3 +53,5 @@
 java.launcher.jar.error3=nessun attributo manifest principale in {0}
 java.launcher.init.error=errore di inizializzazione
 java.launcher.javafx.error1=Errore: il metodo JavaFX launchApplication dispone di una firma errata, \nla firma deve essere dichiarata static e restituire un valore di tipo void
+java.launcher.module.error1=il modulo {0} non dispone di un attributo MainClass. Utilizzare -m <module>/<mail-class>
+java.launcher.module.error2=Errore: impossibile trovare o caricare la classe principale {0} nel modulo {1}
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   \u4F7F\u7528\u65B9\u6CD5: {0} [-options] class [args...]\n           (\u30AF\u30E9\u30B9\u3092\u5B9F\u884C\u3059\u308B\u5834\u5408)\n   \u307E\u305F\u306F  {0} [-options] -jar jarfile [args...]\n           (jar\u30D5\u30A1\u30A4\u30EB\u3092\u5B9F\u884C\u3059\u308B\u5834\u5408)\noptions\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n
+java.launcher.opt.header  =   \u4F7F\u7528\u65B9\u6CD5: {0} [options] class [args...]\n           (\u30AF\u30E9\u30B9\u3092\u5B9F\u884C\u3059\u308B\u5834\u5408)\n   \u307E\u305F\u306F  {0} [options] -jar jarfile [args...]\n           (jar\u30D5\u30A1\u30A4\u30EB\u3092\u5B9F\u884C\u3059\u308B\u5834\u5408)\n   \u307E\u305F\u306F  {0} [-options] -mp <modulepath> -m <modulename> | <modulename>/<mainclass>\n           (\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3092\u5B9F\u884C\u3059\u308B\u5834\u5408)\noptions\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n
 
 java.launcher.opt.datamodel  =\    -d{0}\t  \u4F7F\u7528\u53EF\u80FD\u306A\u5834\u5408\u306F{0}\u30D3\u30C3\u30C8\u306E\u30C7\u30FC\u30BF\u30FB\u30E2\u30C7\u30EB\u3092\u4F7F\u7528\u3059\u308B\n
 java.launcher.opt.vmselect   =\    {0}\t  "{1}" VM\u3092\u9078\u629E\u3059\u308B\u5834\u5408\n
@@ -34,11 +34,13 @@
 java.launcher.ergo.message2  =\                  \u3053\u308C\u306F\u30B5\u30FC\u30D0\u30FC\u30AF\u30E9\u30B9\u306E\u30DE\u30B7\u30F3\u3067\u5B9F\u884C\u3057\u3066\u3044\u308B\u305F\u3081\u3067\u3059\u3002\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB\u306E\u30AF\u30E9\u30B9\u691C\u7D22\u30D1\u30B9>\n    -classpath <\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB\u306E\u30AF\u30E9\u30B9\u691C\u7D22\u30D1\u30B9>\n                  \u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001\n                  JAR\u30A2\u30FC\u30AB\u30A4\u30D6\u304A\u3088\u3073ZIP\u30A2\u30FC\u30AB\u30A4\u30D6\u306E{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30EA\u30B9\u30C8\u3067\u3059\u3002\n    -D<name>=<value>\n                  \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A2D\u5B9A\u3059\u308B\n    -verbose:[class|gc|jni]\n                  \u8A73\u7D30\u306A\u51FA\u529B\u3092\u884C\u3046\n    -version      \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B\n    -version:<value>\n                  \u6307\u5B9A\u3057\u305F\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u5B9F\u884C\u306B\u5FC5\u9808\u306B\u3059\u308B\n    -showversion  \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -jre-restrict-search | -no-jre-restrict-search\n                  \u30E6\u30FC\u30B6\u30FC\u306E\u30D7\u30E9\u30A4\u30D9\u30FC\u30C8JRE\u3092\u30D0\u30FC\u30B8\u30E7\u30F3\u691C\u7D22\u306B\u542B\u3081\u308B/\u9664\u5916\u3059\u308B\n    -? -help      \u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n    -X            \u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u95A2\u3059\u308B\u30D8\u30EB\u30D7\u3092\u51FA\u529B\u3059\u308B\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n    -esa | -enablesystemassertions\n                  \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n    -dsa | -disablesystemassertions\n                  \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n    -agentlib:<libname>[=<options>]\n                  \u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA<libname>\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3002\u4F8B: -agentlib:hprof\n                  -agentlib:jdwp=help\u3068-agentlib:hprof=help\u3082\u53C2\u7167\n    -agentpath:<pathname>[=<options>]\n                  \u30D5\u30EB\u30D1\u30B9\u540D\u3067\u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u30ED\u30FC\u30C9\u3059\u308B\n    -javaagent:<jarpath>[=<options>]\n                  Java\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3002java.lang.instrument\u3092\u53C2\u7167\n    -splash:<imagepath>\n                  \u6307\u5B9A\u3057\u305F\u30A4\u30E1\u30FC\u30B8\u3067\u30B9\u30D7\u30E9\u30C3\u30B7\u30E5\u753B\u9762\u3092\u8868\u793A\u3059\u308B\n\u8A73\u7D30\u306Fhttp://www.oracle.com/technetwork/java/javase/documentation/index.html\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n    -classpath <class search path of directories and zip/jar files>\n                  \u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3001\n                  JAR\u30A2\u30FC\u30AB\u30A4\u30D6\u304A\u3088\u3073ZIP\u30A2\u30FC\u30AB\u30A4\u30D6\u306E{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30EA\u30B9\u30C8\u3002\n    -mp <module path>\n    -modulepath <module path>...\n                  \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30EA\u30B9\u30C8\u3002\u5404\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\n                  \u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3059\u3002\n    -upgrademodulepath <module path>...\n                  \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30EA\u30B9\u30C8\u3002\u5404\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\n                  \u30E9\u30F3\u30BF\u30A4\u30E0\u30FB\u30A4\u30E1\u30FC\u30B8\u3067\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u7F6E\u63DB\u3059\u308B\n                  \u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3059\n    -m <modulename> | <modulename>/<mainclass>\n                  \u89E3\u6C7A\u3059\u308B\u521D\u671F\u307E\u305F\u306F\u30E1\u30A4\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\n    -addmods <modulename>[,<modulename>...]\n                  \u521D\u671F\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u52A0\u3048\u3066\u89E3\u6C7A\u3059\u308B\u30EB\u30FC\u30C8\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\n    -limitmods <modulename>[,<modulename>...]\n                  \u76E3\u8996\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30E6\u30CB\u30D0\u30FC\u30B9\u3092\u5236\u9650\u3059\u308B\n    -listmods[:<modulename>[,<modulename>...]]\n                  \u76E3\u8996\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u30EA\u30B9\u30C8\u3057\u3066\u7D42\u4E86\u3059\u308B\n    -D<name>=<value>\n                  \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A2D\u5B9A\u3059\u308B\n    -verbose:[class|gc|jni]\n                  \u8A73\u7D30\u306A\u51FA\u529B\u3092\u884C\u3046\n    -version      \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B\n    -showversion  \u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -? -help      \u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n    -X            \u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u95A2\u3059\u308B\u30D8\u30EB\u30D7\u3092\u51FA\u529B\u3059\u308B\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  \u6307\u5B9A\u3057\u305F\u7C92\u5EA6\u3067\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n    -esa | -enablesystemassertions\n                  \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n    -dsa | -disablesystemassertions\n                  \u30B7\u30B9\u30C6\u30E0\u30FB\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n    -agentlib:<libname>[=<options>]\n                  \u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA<libname>\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3002\u4F8B: -agentlib:jdwp\n                  -agentlib:jdwp=help\u3082\u53C2\u7167\n    -agentpath:<pathname>[=<options>]\n                  \
+\u30D5\u30EB\u30D1\u30B9\u540D\u3067\u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u30ED\u30FC\u30C9\u3059\u308B\n    -javaagent:<jarpath>[=<options>]\n                  Java\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3002java.lang.instrument\u3092\u53C2\u7167\n    -splash:<imagepath>\n                  \u6307\u5B9A\u3057\u305F\u30A4\u30E1\u30FC\u30B8\u3067\u30B9\u30D7\u30E9\u30C3\u30B7\u30E5\u753B\u9762\u3092\u8868\u793A\u3059\u308B\n    @<filepath>   \u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8AAD\u307F\u53D6\u308B\n
+See \u8A73\u7D30\u306F\u3001http://www.oracle.com/technetwork/java/javase/documentation/index.html\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\    -Xmixed           \u6DF7\u5408\u30E2\u30FC\u30C9\u306E\u5B9F\u884C(\u30C7\u30D5\u30A9\u30EB\u30C8)\n    -Xint             \u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u30FB\u30E2\u30FC\u30C9\u306E\u5B9F\u884C\u306E\u307F\n    -Xbootclasspath:<{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB>\n                      \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u306E\u30AF\u30E9\u30B9\u3068\u30EA\u30BD\u30FC\u30B9\u306E\u691C\u7D22\u30D1\u30B9\u3092\u8A2D\u5B9A\u3059\u308B\n    -Xbootclasspath/a:<{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB>\n                      \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306E\u6700\u5F8C\u306B\u8FFD\u52A0\u3059\u308B\n    -Xbootclasspath/p:<{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB>\n                      \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306E\u524D\u306B\u4ED8\u52A0\u3059\u308B\n    -Xdiag            \u8FFD\u52A0\u306E\u8A3A\u65AD\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B\n    -Xnoclassgc       \u30AF\u30E9\u30B9\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n    -Xincgc           \u5897\u5206\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n    -Xloggc:<file>    \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u4ED8\u3044\u305F\u30D5\u30A1\u30A4\u30EB\u306BGC\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30ED\u30B0\u3092\u8A18\u9332\u3059\u308B\n    -Xbatch           \u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u3092\u7121\u52B9\u306B\u3059\u308B\n    -Xms<size>        Java\u306E\u521D\u671F\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n    -Xmx<size>        Java\u306E\u6700\u5927\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n    -Xss<size>        Java\u306E\u30B9\u30EC\u30C3\u30C9\u30FB\u30B9\u30BF\u30C3\u30AF\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n    -Xprof            CPU\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u30FB\u30C7\u30FC\u30BF\u3092\u51FA\u529B\u3059\u308B\n    -Xfuture          \u5C06\u6765\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u898B\u8D8A\u3057\u3066\u3001\u6700\u3082\u53B3\u5BC6\u306A\u30C1\u30A7\u30C3\u30AF\u3092\u6709\u52B9\u306B\u3059\u308B\n    -Xrs              Java/VM\u306B\u3088\u308BOS\u30B7\u30B0\u30CA\u30EB\u306E\u4F7F\u7528\u3092\u524A\u6E1B\u3059\u308B(\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167)\n    -Xcheck:jni       JNI\u95A2\u6570\u306B\u5BFE\u3059\u308B\u8FFD\u52A0\u306E\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3059\u308B\n    -Xshare:off       \u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u306A\u3044\n    -Xshare:auto      \u53EF\u80FD\u3067\u3042\u308C\u3070\u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8)\n    -Xshare:on        \u5171\u6709\u30AF\u30E9\u30B9\u30FB\u30C7\u30FC\u30BF\u306E\u4F7F\u7528\u3092\u5FC5\u9808\u306B\u3057\u3001\u3067\u304D\u306A\u3051\u308C\u3070\u5931\u6557\u3059\u308B\u3002\n    -XshowSettings    \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -XshowSettings:all\n                      \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -XshowSettings:vm \u3059\u3079\u3066\u306EVM\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -XshowSettings:properties\n                      \
-\u3059\u3079\u3066\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -XshowSettings:locale\n                      \u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n\n-X\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u975E\u6A19\u6E96\u306A\u306E\u3067\u3001\u4E88\u544A\u306A\u304F\u5909\u66F4\u3055\u308C\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\n
+java.launcher.X.usage=\    -Xmixed           \u6DF7\u5408\u30E2\u30FC\u30C9\u306E\u5B9F\u884C(\u30C7\u30D5\u30A9\u30EB\u30C8)\n    -Xint             \u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u30FB\u30E2\u30FC\u30C9\u306E\u5B9F\u884C\u306E\u307F\n    -Xbootclasspath/a:<{0}\u3067\u533A\u5207\u3089\u308C\u305F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304A\u3088\u3073zip/jar\u30D5\u30A1\u30A4\u30EB>\n                      \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306E\u6700\u5F8C\u306B\u8FFD\u52A0\u3059\u308B\n    -Xdiag            \u8FFD\u52A0\u306E\u8A3A\u65AD\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B\n    -Xdiag:resolver   \u30EA\u30BE\u30EB\u30D0\u8A3A\u65AD\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B\n    -Xnoclassgc       \u30AF\u30E9\u30B9\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u7121\u52B9\u306B\u3059\u308B\n    -Xincgc           \u5897\u5206\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u6709\u52B9\u306B\u3059\u308B\n    -Xloggc:<file>    \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u4ED8\u3044\u305F\u30D5\u30A1\u30A4\u30EB\u306BGC\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30ED\u30B0\u3092\u8A18\u9332\u3059\u308B\n    -Xbatch           \u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u3092\u7121\u52B9\u306B\u3059\u308B\n    -Xms<size>        Java\u306E\u521D\u671F\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n    -Xmx<size>        Java\u306E\u6700\u5927\u30D2\u30FC\u30D7\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n    -Xss<size>        Java\u306E\u30B9\u30EC\u30C3\u30C9\u30FB\u30B9\u30BF\u30C3\u30AF\u30FB\u30B5\u30A4\u30BA\u3092\u8A2D\u5B9A\u3059\u308B\n    -Xprof            CPU\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u30FB\u30C7\u30FC\u30BF\u3092\u51FA\u529B\u3059\u308B\n    -Xfuture          \u5C06\u6765\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u898B\u8D8A\u3057\u3066\u3001\u6700\u3082\u53B3\u5BC6\u306A\u30C1\u30A7\u30C3\u30AF\u3092\u6709\u52B9\u306B\u3059\u308B\n    -Xrs              Java/VM\u306B\u3088\u308BOS\u30B7\u30B0\u30CA\u30EB\u306E\u4F7F\u7528\u3092\u524A\u6E1B\u3059\u308B(\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167)\n    -Xcheck:jni       JNI\u95A2\u6570\u306B\u5BFE\u3059\u308B\u8FFD\u52A0\u306E\u30C1\u30A7\u30C3\u30AF\u3092\u5B9F\u884C\u3059\u308B\n    -Xshare:off       \u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3057\u3088\u3046\u3068\u3057\u306A\u3044\n    -Xshare:auto      \u53EF\u80FD\u3067\u3042\u308C\u3070\u5171\u6709\u30AF\u30E9\u30B9\u306E\u30C7\u30FC\u30BF\u3092\u4F7F\u7528\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8)\n    -Xshare:on        \u5171\u6709\u30AF\u30E9\u30B9\u30FB\u30C7\u30FC\u30BF\u306E\u4F7F\u7528\u3092\u5FC5\u9808\u306B\u3057\u3001\u3067\u304D\u306A\u3051\u308C\u3070\u5931\u6557\u3059\u308B\u3002\n    -XshowSettings    \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -XshowSettings:all\n                      \u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -XshowSettings:vm \u3059\u3079\u3066\u306EVM\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -XshowSettings:properties\n                      \u3059\u3079\u3066\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -XshowSettings:locale\n                      \u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\u95A2\u9023\u306E\u8A2D\u5B9A\u3092\u8868\u793A\u3057\u3066\u7D9A\u884C\u3059\u308B\n    -XaddReads:<module>=<other-module>(,<other-module>)*\n                      \u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F\u3001\n                      <module>\u306F\u4ED6\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u8AAD\u307F\u53D6\u308B\n    \
+-XaddExports:<module>/<package>=<other-module>(,<other-module>)*\n                      \u30E2\u30B8\u30E5\u30FC\u30EB\u5BA3\u8A00\u306B\u95A2\u4FC2\u306A\u304F\u3001\n                      <module>\u306F<package>\u3092\u4ED6\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B\n    -Xpatch:<module>=<file>({0}<file>)*\n                      JAR\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30EA\u30BD\u30FC\u30B9\u3067\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\n                      \u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u307E\u305F\u306F\u62E1\u5F35\u3059\u308B\n    -Xdisable-@files  \u3055\u3089\u306A\u308B\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u3092\u7121\u52B9\u306B\u3059\u308B\n\n-X\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u975E\u6A19\u6E96\u306A\u306E\u3067\u3001\u4E88\u544A\u306A\u304F\u5909\u66F4\u3055\u308C\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\u3002\n
 
 # Translators please note do not translate the options themselves
 java.launcher.X.macosx.usage=\n\u6B21\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306FMac OS X\u56FA\u6709\u3067\u3059\u3002\n    -XstartOnFirstThread\n                      main()\u30E1\u30BD\u30C3\u30C9\u3092\u6700\u521D(AppKit)\u306E\u30B9\u30EC\u30C3\u30C9\u3067\u5B9F\u884C\u3059\u308B\n    -Xdock:name=<application name>"\n                      Dock\u306B\u8868\u793A\u3055\u308C\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n    -Xdock:icon=<path to icon file>\n                      Dock\u306B\u8868\u793A\u3055\u308C\u308B\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n\n
@@ -53,3 +55,5 @@
 java.launcher.jar.error3={0}\u306B\u30E1\u30A4\u30F3\u30FB\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5C5E\u6027\u304C\u3042\u308A\u307E\u305B\u3093
 java.launcher.init.error=\u521D\u671F\u5316\u30A8\u30E9\u30FC
 java.launcher.javafx.error1=\u30A8\u30E9\u30FC: JavaFX launchApplication\u30E1\u30BD\u30C3\u30C9\u306B\u8AA4\u3063\u305F\u30B7\u30B0\u30CD\u30C1\u30E3\u304C\u3042\u308A\u3001\nstatic\u3092\u5BA3\u8A00\u3057\u3066void\u578B\u306E\u5024\u3092\u8FD4\u3059\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+java.launcher.module.error1=\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u306BMainClass\u5C5E\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002-m <module>/<main-class>\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044
+java.launcher.module.error2=\u30A8\u30E9\u30FC: \u30E2\u30B8\u30E5\u30FC\u30EB{1}\u306B\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u3089\u306A\u304B\u3063\u305F\u304B\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_ko.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_ko.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   \uC0AC\uC6A9\uBC95: {0} [-options] class [args...]\n           (\uD074\uB798\uC2A4 \uC2E4\uD589)\n   \uB610\uB294  {0} [-options] -jar jarfile [args...]\n           (jar \uD30C\uC77C \uC2E4\uD589)\n\uC5EC\uAE30\uC11C options\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n
+java.launcher.opt.header  =   \uC0AC\uC6A9\uBC95: {0} [options] class [args...]\n           (\uD074\uB798\uC2A4 \uC2E4\uD589)\n   \uB610\uB294  {0} [options] -jar jarfile [args...]\n           (jar \uD30C\uC77C \uC2E4\uD589)\n   \uB610\uB294  {0} [-options] -mp <modulepath> -m <modulename> | <modulename>/<mainclass>\n           (\uBAA8\uB4C8\uC758 \uAE30\uBCF8 \uD074\uB798\uC2A4 \uC2E4\uD589)\n\uC5EC\uAE30\uC11C options\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n
 
 java.launcher.opt.datamodel  =\    -d{0}\t  \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uACBD\uC6B0 {0}\uBE44\uD2B8 \uB370\uC774\uD130 \uBAA8\uB378\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n
 java.launcher.opt.vmselect   =\    {0}\t  "{1}" VM\uC744 \uC120\uD0DD\uD569\uB2C8\uB2E4.\n
@@ -34,22 +34,26 @@
 java.launcher.ergo.message2  =\                  \uC11C\uBC84\uAE09 \uC2DC\uC2A4\uD15C\uC5D0\uC11C \uC2E4\uD589 \uC911\uC774\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <\uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C\uC758 \uD074\uB798\uC2A4 \uAC80\uC0C9 \uACBD\uB85C>\n    -classpath <\uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C\uC758 \uD074\uB798\uC2A4 \uAC80\uC0C9 \uACBD\uB85C>\n                  \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uAC80\uC0C9\uD560 {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC,\n                  JAR \uC544\uCE74\uC774\uBE0C \uBC0F ZIP \uC544\uCE74\uC774\uBE0C \uBAA9\uB85D\uC785\uB2C8\uB2E4.\n    -D<name>=<value>\n                  \uC2DC\uC2A4\uD15C \uC18D\uC131\uC744 \uC124\uC815\uD569\uB2C8\uB2E4.\n    -verbose:[class|gc|jni]\n                  \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -version      \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD55C \uD6C4 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n    -version:<value>\n                  \uC2E4\uD589\uD560 \uBC84\uC804\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.\n    -showversion  \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -jre-restrict-search | -no-jre-restrict-search\n                  \uBC84\uC804 \uAC80\uC0C9\uC5D0\uC11C \uC0AC\uC6A9\uC790 \uC804\uC6A9 JRE\uB97C \uD3EC\uD568/\uC81C\uC678\uD569\uB2C8\uB2E4.\n    -? -help      \uC774 \uB3C4\uC6C0\uB9D0 \uBA54\uC2DC\uC9C0\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4.\n    -X            \uBE44\uD45C\uC900 \uC635\uC158\uC5D0 \uB300\uD55C \uB3C4\uC6C0\uB9D0\uC744 \uC778\uC1C4\uD569\uB2C8\uB2E4.\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -esa | -enablesystemassertions\n                  \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -dsa | -disablesystemassertions\n                  \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -agentlib:<libname>[=<options>]\n                  <libname> \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4(\uC608: -agentlib:hprof).\n                  -agentlib:jdwp=help \uBC0F -agentlib:hprof=help\uB3C4 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n    -agentpath:<pathname>[=<options>]\n                  \uC804\uCCB4 \uACBD\uB85C\uBA85\uC744 \uC0AC\uC6A9\uD558\uC5EC \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4.\n    -javaagent:<jarpath>[=<options>]\n                  Java \uD504\uB85C\uADF8\uB798\uBC0D \uC5B8\uC5B4 \uC5D0\uC774\uC804\uD2B8\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4. java.lang.instrument\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n    -splash:<imagepath>\n                  \uC774\uBBF8\uC9C0\uAC00 \uC9C0\uC815\uB41C \uC2A4\uD50C\uB798\uC2DC \uD654\uBA74\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n\uC790\uC138\uD55C \uB0B4\uC6A9\uC740 http://www.oracle.com/technetwork/java/javase/documentation/index.html\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.
+java.launcher.opt.footer     =\    -cp <\uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C\uC758 \uD074\uB798\uC2A4 \uAC80\uC0C9 \uACBD\uB85C>\n    -classpath <\uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C\uC758 \uD074\uB798\uC2A4 \uAC80\uC0C9 \uACBD\uB85C>\n                  \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uAC80\uC0C9\uD560 {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC,\n                  JAR \uC544\uCE74\uC774\uBE0C \uBC0F ZIP \uC544\uCE74\uC774\uBE0C \uBAA9\uB85D\uC785\uB2C8\uB2E4.\n    -mp <\uBAA8\uB4C8 \uACBD\uB85C>\n    -modulepath <\uBAA8\uB4C8 \uACBD\uB85C>...\n                  {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D\uC785\uB2C8\uB2E4. \uAC01 \uB514\uB809\uD1A0\uB9AC\uB294\n                  \uBAA8\uB4C8\uC758 \uB514\uB809\uD1A0\uB9AC\uC785\uB2C8\uB2E4.\n    -upgrademodulepath <\uBAA8\uB4C8 \uACBD\uB85C>...\n                  {0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D\uC785\uB2C8\uB2E4. \uAC01 \uB514\uB809\uD1A0\uB9AC\uB294\n                  \uBAA8\uB4C8\uC758 \uB514\uB809\uD1A0\uB9AC\uB85C, \uB7F0\uD0C0\uC784 \uC774\uBBF8\uC9C0\uC5D0\uC11C \uC5C5\uADF8\uB808\uC774\uB4DC\n                  \uAC00\uB2A5\uD55C \uBAA8\uB4C8\uC744 \uB300\uCCB4\uD569\uB2C8\uB2E4.\n    -m <modulename> | <modulename>/<mainclass>\n                  \uBD84\uC11D\uD560 \uCD08\uAE30 \uB610\uB294 \uAE30\uBCF8 \uBAA8\uB4C8\uC785\uB2C8\uB2E4.\n    -addmods <modulename>[,<modulename>...]\n                  \uCD08\uAE30 \uBAA8\uB4C8 \uC678\uC5D0 \uBD84\uC11D\uD560 \uB8E8\uD2B8 \uBAA8\uB4C8\uC785\uB2C8\uB2E4.\n    -limitmods <modulename>[,<modulename>...]\n                  \uAD00\uCC30 \uAC00\uB2A5\uD55C \uBAA8\uB4C8\uC758 \uBC94\uC704\uB97C \uC81C\uD55C\uD569\uB2C8\uB2E4.\n    -listmods[:<modulename>[,<modulename>...]]\n                  \uAD00\uCC30 \uAC00\uB2A5\uD55C \uBAA8\uB4C8\uC744 \uB098\uC5F4\uD55C \uD6C4 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n    -D<name>=<value>\n                  \uC2DC\uC2A4\uD15C \uC18D\uC131\uC744 \uC124\uC815\uD569\uB2C8\uB2E4.\n    -verbose:[class|gc|jni]\n                  \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -version      \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD55C \uD6C4 \uC885\uB8CC\uD569\uB2C8\uB2E4.\n    -showversion  \uC81C\uD488 \uBC84\uC804\uC744 \uC778\uC1C4\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -? -help      \uC774 \uB3C4\uC6C0\uB9D0 \uBA54\uC2DC\uC9C0\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4.\n    -X            \uBE44\uD45C\uC900 \uC635\uC158\uC5D0 \uB300\uD55C \uB3C4\uC6C0\uB9D0\uC744 \uC778\uC1C4\uD569\uB2C8\uB2E4.\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  \uC138\uBD84\uC131\uC774 \uC9C0\uC815\uB41C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -esa | -enablesystemassertions\n                  \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -dsa | -disablesystemassertions\n                  \uC2DC\uC2A4\uD15C \uAC80\uC99D\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -agentlib:<libname>[=<options>]\n                  \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC <libname>\uC744 \uB85C\uB4DC\uD569\uB2C8\uB2E4(\uC608: -agentlib:jdwp).\n                  -agentlib:jdwp=help\uB3C4 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n    -agentpath:<pathname>[=<options>]\n                  \uC804\uCCB4 \uACBD\uB85C\uBA85\uC744 \uC0AC\uC6A9\uD558\uC5EC \uACE0\uC720 \uC5D0\uC774\uC804\uD2B8 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4.\n    \
+-javaagent:<jarpath>[=<options>]\n                  Java \uD504\uB85C\uADF8\uB798\uBC0D \uC5B8\uC5B4 \uC5D0\uC774\uC804\uD2B8\uB97C \uB85C\uB4DC\uD569\uB2C8\uB2E4. java.lang.instrument\uB97C \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.\n    -splash:<imagepath>\n                  \uC774\uBBF8\uC9C0\uAC00 \uC9C0\uC815\uB41C \uC2A4\uD50C\uB798\uC2DC \uD654\uBA74\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n    @<filepath>   \uC9C0\uC815\uB41C \uD30C\uC77C\uC5D0\uC11C \uC635\uC158\uC744 \uC77D\uC2B5\uB2C8\uB2E4.\n
+See \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 http://www.oracle.com/technetwork/java/javase/documentation/index.html\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624.
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\    -Xmixed           \uD63C\uD569 \uBAA8\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n    -Xint             \uD574\uC11D\uB41C \uBAA8\uB4DC\uB9CC \uC2E4\uD589\uD569\uB2C8\uB2E4.\n    -Xbootclasspath:<{0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C>\n                      \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uBC0F \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uAC80\uC0C9 \uACBD\uB85C\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xbootclasspath/a:<{0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C>\n                      \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uACBD\uB85C \uB05D\uC5D0 \uCD94\uAC00\uD569\uB2C8\uB2E4.\n    -Xbootclasspath/p:<{0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C>\n                      \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uACBD\uB85C \uC55E\uC5D0 \uCD94\uAC00\uD569\uB2C8\uB2E4.\n    -Xdiag            \uCD94\uAC00 \uC9C4\uB2E8 \uBA54\uC2DC\uC9C0\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n    -Xnoclassgc       \uD074\uB798\uC2A4\uC758 \uBD88\uD544\uC694\uD55C \uC815\uBCF4 \uBAA8\uC74C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xincgc           \uC99D\uBD84\uC801\uC778 \uBD88\uD544\uC694\uD55C \uC815\uBCF4 \uBAA8\uC74C\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xloggc:<file>    \uC2DC\uAC04 \uAE30\uB85D\uACFC \uD568\uAED8 \uD30C\uC77C\uC5D0 GC \uC0C1\uD0DC\uB97C \uAE30\uB85D\uD569\uB2C8\uB2E4.\n    -Xbatch           \uBC31\uADF8\uB77C\uC6B4\uB4DC \uCEF4\uD30C\uC77C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xms<size>        \uCD08\uAE30 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xmx<size>        \uCD5C\uB300 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xss<size>        Java \uC2A4\uB808\uB4DC \uC2A4\uD0DD \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xprof            CPU \uD504\uB85C\uD30C\uC77C \uC791\uC131 \uB370\uC774\uD130\uB97C \uCD9C\uB825\uD569\uB2C8\uB2E4.\n    -Xfuture          \uBBF8\uB798 \uAE30\uBCF8\uAC12\uC744 \uC608\uCE21\uD558\uC5EC \uAC00\uC7A5 \uC5C4\uACA9\uD55C \uAC80\uC0AC\uB97C \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xrs              Java/VM\uC5D0 \uC758\uD55C OS \uC2E0\uD638 \uC0AC\uC6A9\uC744 \uC904\uC785\uB2C8\uB2E4(\uC124\uBA85\uC11C \uCC38\uC870).\n    -Xcheck:jni       JNI \uD568\uC218\uC5D0 \uB300\uD55C \uCD94\uAC00 \uAC80\uC0AC\uB97C \uC218\uD589\uD569\uB2C8\uB2E4.\n    -Xshare:off       \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130 \uC0AC\uC6A9\uC744 \uC2DC\uB3C4\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n    -Xshare:auto      \uAC00\uB2A5\uD55C \uACBD\uC6B0 \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n    -Xshare:on        \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4. \uADF8\uB807\uC9C0 \uC54A\uC744 \uACBD\uC6B0 \uC2E4\uD328\uD569\uB2C8\uB2E4.\n    -XshowSettings    \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -XshowSettings:all\n                      \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -XshowSettings:vm \uBAA8\uB4E0 VM \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -XshowSettings:properties\n                      \uBAA8\uB4E0 \uC18D\uC131 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -XshowSettings:locale\n                      \uBAA8\uB4E0 \uB85C\uCF00\uC77C \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n\n-X \uC635\uC158\uC740 \uBE44\uD45C\uC900 \uC635\uC158\uC774\uBBC0\uB85C \uD1B5\uC9C0 \uC5C6\uC774 \uBCC0\uACBD\uB420 \uC218 \
-\uC788\uC2B5\uB2C8\uB2E4.\n
+java.launcher.X.usage=\    -Xmixed           \uD63C\uD569 \uBAA8\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n    -Xint             \uD574\uC11D\uB41C \uBAA8\uB4DC\uB9CC \uC2E4\uD589\uD569\uB2C8\uB2E4.\n    -Xbootclasspath/a:<{0}(\uC73C)\uB85C \uAD6C\uBD84\uB41C \uB514\uB809\uD1A0\uB9AC \uBC0F zip/jar \uD30C\uC77C>\n                      \uBD80\uD2B8\uC2A4\uD2B8\uB7A9 \uD074\uB798\uC2A4 \uACBD\uB85C \uB05D\uC5D0 \uCD94\uAC00\uD569\uB2C8\uB2E4.\n    -Xdiag            \uCD94\uAC00 \uC9C4\uB2E8 \uBA54\uC2DC\uC9C0\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n    -Xdiag:resolver   \uBD84\uC11D\uAE30 \uC9C4\uB2E8 \uBA54\uC2DC\uC9C0\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n    -Xnoclassgc       \uD074\uB798\uC2A4\uC758 \uBD88\uD544\uC694\uD55C \uC815\uBCF4 \uBAA8\uC74C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xincgc           \uC99D\uBD84\uC801\uC778 \uBD88\uD544\uC694\uD55C \uC815\uBCF4 \uBAA8\uC74C\uC744 \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xloggc:<file>    \uC2DC\uAC04 \uAE30\uB85D\uACFC \uD568\uAED8 \uD30C\uC77C\uC5D0 GC \uC0C1\uD0DC\uB97C \uAE30\uB85D\uD569\uB2C8\uB2E4.\n    -Xbatch           \uBC31\uADF8\uB77C\uC6B4\uB4DC \uCEF4\uD30C\uC77C\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xms<size>        \uCD08\uAE30 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xmx<size>        \uCD5C\uB300 Java \uD799 \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xss<size>        Java \uC2A4\uB808\uB4DC \uC2A4\uD0DD \uD06C\uAE30\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xprof            CPU \uD504\uB85C\uD30C\uC77C \uC791\uC131 \uB370\uC774\uD130\uB97C \uCD9C\uB825\uD569\uB2C8\uB2E4.\n    -Xfuture          \uBBF8\uB798 \uAE30\uBCF8\uAC12\uC744 \uC608\uCE21\uD558\uC5EC \uAC00\uC7A5 \uC5C4\uACA9\uD55C \uAC80\uC0AC\uB97C \uC0AC\uC6A9\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n    -Xrs              Java/VM\uC5D0 \uC758\uD55C OS \uC2E0\uD638 \uC0AC\uC6A9\uC744 \uC904\uC785\uB2C8\uB2E4(\uC124\uBA85\uC11C \uCC38\uC870).\n    -Xcheck:jni       JNI \uD568\uC218\uC5D0 \uB300\uD55C \uCD94\uAC00 \uAC80\uC0AC\uB97C \uC218\uD589\uD569\uB2C8\uB2E4.\n    -Xshare:off       \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130 \uC0AC\uC6A9\uC744 \uC2DC\uB3C4\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n    -Xshare:auto      \uAC00\uB2A5\uD55C \uACBD\uC6B0 \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4(\uAE30\uBCF8\uAC12).\n    -Xshare:on        \uACF5\uC720 \uD074\uB798\uC2A4 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uD574\uC57C \uD569\uB2C8\uB2E4. \uADF8\uB807\uC9C0 \uC54A\uC744 \uACBD\uC6B0 \uC2E4\uD328\uD569\uB2C8\uB2E4.\n    -XshowSettings    \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -XshowSettings:all\n                      \uBAA8\uB4E0 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -XshowSettings:vm\n                      \uBAA8\uB4E0 VM \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -XshowSettings:properties\n                      \uBAA8\uB4E0 \uC18D\uC131 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -XshowSettings:locale\n                      \uBAA8\uB4E0 \uB85C\uCF00\uC77C \uAD00\uB828 \uC124\uC815\uC744 \uD45C\uC2DC\uD55C \uD6C4 \uACC4\uC18D\uD569\uB2C8\uB2E4.\n    -XaddReads:<module>=<other-module>(,<other-module>)*\n                      <module>\uC740 \uBAA8\uB4C8 \uC120\uC5B8\uC5D0 \uAD00\uACC4\uC5C6\uC774\n                      \uB2E4\uB978 \uBAA8\uB4C8\uC744 \uC77D\uC2B5\uB2C8\uB2E4.\n    -XaddExports:<module>/<package>=<other-module>(,<other-module>)*\n                      <module>\uC740 \uBAA8\uB4C8 \uC120\uC5B8\uC5D0 \uAD00\uACC4\uC5C6\uC774\n                      <package>\uB97C \uB2E4\uB978 \uBAA8\uB4C8\uB85C \uC775\uC2A4\uD3EC\uD2B8\uD569\uB2C8\uB2E4.\n    \
+-Xpatch:<module>=<file>({0}<file>)*\n                      JAR \uD30C\uC77C/\uB514\uB809\uD1A0\uB9AC\uC758 \uD074\uB798\uC2A4\uC640 \uB9AC\uC18C\uC2A4\uB85C\n                      \uBAA8\uB4C8\uC744 \uBB34\uD6A8\uD654\uD558\uAC70\uB098 \uC778\uC218\uD654\uD569\uB2C8\uB2E4.\n    -Xdisable-@files  \uCD94\uAC00 \uC778\uC218 \uD30C\uC77C \uD655\uC7A5\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.\n\n-X \uC635\uC158\uC740 \uBE44\uD45C\uC900 \uC635\uC158\uC774\uBBC0\uB85C \uD1B5\uC9C0 \uC5C6\uC774 \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.X.macosx.usage=\n\uB2E4\uC74C\uC740 Mac OS X\uC5D0 \uD2B9\uC815\uB41C \uC635\uC158\uC785\uB2C8\uB2E4.\n    -XstartOnFirstThread\n                      \uCCAB\uBC88\uC9F8 (AppKit) \uC2A4\uB808\uB4DC\uC5D0 main() \uBA54\uC18C\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.\n    -Xdock:name=<application name>"\n                      \uACE0\uC815\uC73C\uB85C \uD45C\uC2DC\uB41C \uAE30\uBCF8 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8 \uC774\uB984\uC744 \uBB34\uD6A8\uD654\uD569\uB2C8\uB2E4.\n    -Xdock:icon=<path to icon file>\n                      \uACE0\uC815\uC73C\uB85C \uD45C\uC2DC\uB41C \uAE30\uBCF8 \uC544\uC774\uCF58\uC744 \uBB34\uD6A8\uD654\uD569\uB2C8\uB2E4.\n\n
+java.launcher.X.macosx.usage=\n\uB2E4\uC74C\uC740 Mac OS X\uC5D0 \uD2B9\uC815\uB41C \uC635\uC158\uC785\uB2C8\uB2E4.\n    -XstartOnFirstThread\n                      \uCCAB\uBC88\uC9F8 (AppKit) \uC2A4\uB808\uB4DC\uC5D0 main() \uBA54\uC18C\uB4DC\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.\n    -Xdock:name=<application name>"\n                      \uACE0\uC815\uC73C\uB85C \uD45C\uC2DC\uB41C \uAE30\uBCF8 \uC560\uD50C\uB9AC\uCF00\uC774\uC158 \uC774\uB984\uC744 \uBB34\uD6A8\uD654\uD569\uB2C8\uB2E4.\n    -Xdock:icon=<path to icon file>\n                      \uACE0\uC815\uC73C\uB85C \uD45C\uC2DC\uB41C \uAE30\uBCF8 \uC544\uC774\uCF58\uC744 \uBB34\uD6A8\uD654\uD569\uB2C8\uB2E4.\n\n
 
 java.launcher.cls.error1=\uC624\uB958: \uAE30\uBCF8 \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uCC3E\uAC70\uB098 \uB85C\uB4DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 java.launcher.cls.error2=\uC624\uB958: {1} \uD074\uB798\uC2A4\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uAC00 {0}\uC774(\uAC00) \uC544\uB2D9\uB2C8\uB2E4. \uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\n   public static void main(String[] args)
 java.launcher.cls.error3=\uC624\uB958: \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB294 {0} \uD074\uB798\uC2A4\uC5D0\uC11C void \uC720\uD615\uC758 \uAC12\uC744 \uBC18\uD658\uD574\uC57C \uD569\uB2C8\uB2E4. \n\uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\n   public static void main(String[] args)
-java.launcher.cls.error4=\uC624\uB958: {0} \uD074\uB798\uC2A4\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\r\n   public static void main(String[] args)\r\n\uB610\uB294 JavaFX \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8 \uD074\uB798\uC2A4\uB294 {1}\uC744(\uB97C) \uD655\uC7A5\uD574\uC57C \uD569\uB2C8\uB2E4.
-java.launcher.cls.error5=\uC624\uB958: \uC774 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8\uC744 \uC2E4\uD589\uD558\uB294 \uB370 \uD544\uC694\uD55C JavaFX \uB7F0\uD0C0\uC784 \uAD6C\uC131 \uC694\uC18C\uAC00 \uB204\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+java.launcher.cls.error4=\uC624\uB958: {0} \uD074\uB798\uC2A4\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E4\uC74C \uD615\uC2DD\uC73C\uB85C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uC815\uC758\uD558\uC2ED\uC2DC\uC624.\r\n   public static void main(String[] args)\r\n\uB610\uB294 JavaFX \uC560\uD50C\uB9AC\uCF00\uC774\uC158 \uD074\uB798\uC2A4\uB294 {1}\uC744(\uB97C) \uD655\uC7A5\uD574\uC57C \uD569\uB2C8\uB2E4.
+java.launcher.cls.error5=\uC624\uB958: \uC774 \uC560\uD50C\uB9AC\uCF00\uC774\uC158\uC744 \uC2E4\uD589\uD558\uB294 \uB370 \uD544\uC694\uD55C JavaFX \uB7F0\uD0C0\uC784 \uAD6C\uC131 \uC694\uC18C\uAC00 \uB204\uB77D\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 java.launcher.jar.error1=\uC624\uB958: {0} \uD30C\uC77C\uC744 \uC5F4\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC0C1\uCE58 \uC54A\uC740 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
 java.launcher.jar.error2={0}\uC5D0\uC11C Manifest\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 java.launcher.jar.error3={0}\uC5D0 \uAE30\uBCF8 Manifest \uC18D\uC131\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.
 java.launcher.init.error=\uCD08\uAE30\uD654 \uC624\uB958
 java.launcher.javafx.error1=\uC624\uB958: JavaFX launchApplication \uBA54\uC18C\uB4DC\uC5D0 \uC798\uBABB\uB41C \uC11C\uBA85\uC774 \uC788\uC2B5\uB2C8\uB2E4.\\n\uB530\uB77C\uC11C static\uC73C\uB85C \uC120\uC5B8\uD558\uACE0 void \uC720\uD615\uC758 \uAC12\uC744 \uBC18\uD658\uD574\uC57C \uD569\uB2C8\uB2E4.
+java.launcher.module.error1={0} \uBAA8\uB4C8\uC5D0 MainClass \uC18D\uC131\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. -m <module>/<main-class>\uB97C \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624.
+java.launcher.module.error2=\uC624\uB958: {1} \uBAA8\uB4C8\uC758 \uAE30\uBCF8 \uD074\uB798\uC2A4 {0}\uC744(\uB97C) \uCC3E\uAC70\uB098 \uB85C\uB4DC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_pt_BR.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_pt_BR.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,31 +24,34 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   Uso: {0} [-options] class [args...]\n           (para executar uma classe)\n   ou  {0} [-options] -jar jarfile [args...]\n           (para executar um arquivo jar)\nem que as op\u00E7\u00F5es incluem:\n
+java.launcher.opt.header  =   Uso: {0} [options] class [args...]\n           (para executar uma classe)\n   ou  {0} [options] -jar jarfile [args...]\n           (para executar um arquivo jar)\n   ou  {0} [-options] -mp <modulepath> -m <modulename> | <modulename>/<mainclass>\n           (para executar a classe principal em um m\u00F3dulo class in a module)\nem que as op\u00E7\u00F5es incluem:\n
 
 java.launcher.opt.datamodel  =\    -d{0}\t  usar um modelo de dados de {0} bits, se estiver dispon\u00EDvel\n
 java.launcher.opt.vmselect   =\    {0}\t  para selecionar a VM "{1}"\n
 java.launcher.opt.hotspot    =\    {0}\t  \u00E9 um sin\u00F4nimo da VM "{1}" [obsoleto]\n
 
-java.launcher.ergo.message1  =\                  A VM default \u00E9 {0}
+java.launcher.ergo.message1  =\                  A VM padr\u00E3o \u00E9 {0}
 java.launcher.ergo.message2  =\                  porque a execu\u00E7\u00E3o est\u00E1 sendo feita em uma m\u00E1quina de classe de servidor.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <caminho de pesquisa da classe dos diret\u00F3rios e arquivos zip/jar>\n    -classpath <caminho de pesquisa da classe dos diret\u00F3rios e arquivos zip/jar>\n                  Uma lista separada por {0} de diret\u00F3rios, archives JAR\n                  e archives ZIP nos quais ser\u00E3o procurados os arquivos de classe.\n    -D<nome>=<valor>\n                  define uma propriedade do sistema\n    -verbose:[class|gc|jni]\n                  ativa a sa\u00EDda detalhada\n    -version      imprime a vers\u00E3o do produto e sai do programa\n    -version:<valor>\n                  requer a execu\u00E7\u00E3o da vers\u00E3o especificada\n    -showversion  imprime a vers\u00E3o do produto e continua\n    -jre-restrict-search | -no-jre-restrict-search\n                  inclui/exclui JREs privados do usu\u00E1rio na pesquisa de vers\u00E3o\n    -? -help      imprime esta mensagem de ajuda\n    -X            imprime a ajuda sobre op\u00E7\u00F5es n\u00E3o padronizadas\n    -ea[:<nome do pacote>...|:<nome da classe>]\n    -enableassertions[:<nome do pacote>...|:<nome da classe>]\n                  ativa asser\u00E7\u00F5es com granularidade especificada\n    -da[:<nome do pacote>...|:<nome da classe>]\n    -disableassertions[:<nome do pacote>...|:<nome da classe>]\n                  desativa asser\u00E7\u00F5es com granularidade especificada\n    -esa | -enablesystemassertions\n                  ativa asser\u00E7\u00F5es do sistema\n    -dsa | -disablesystemassertions\n                  desativa asser\u00E7\u00F5es do sistema\n    -agentlib:<nome da biblioteca>[=<op\u00E7\u00F5es>]\n                  carrega a biblioteca de agentes nativa <nome da biblioteca>, por exemplo: -agentlib:hprof\n                  consulte tamb\u00E9m: -agentlib:jdwp=help e -agentlib:hprof=help\n    -agentpath:<nome do caminho>[=<op\u00E7\u00F5es>]\n                  carrega a biblioteca de agentes nativa com base no nome do caminho completo\n    -javaagent:<caminho do arquivo jar>[=<op\u00E7\u00F5es>]\n                  carrega o agente da linguagem de programa\u00E7\u00E3o Java; consulte java.lang.instrument\n    -splash:<caminho da imagem>\n                  mostra a tela de abertura com a imagem especificada\nConsulte http://www.oracle.com/technetwork/java/javase/documentation/index.html para obter mais detalhes.
+java.launcher.opt.footer     =\    -cp <caminho de pesquisa de classe de diret\u00F3rios e arquivos zip/jar>\n    -classpath <caminho de pesquisa de classe de diret\u00F3rios e arquivos zip/jar>\n                  Uma lista separada por {0} de diret\u00F3rios, arquivos compactados JAR,\n                  e arquivos compactados ZIP para procurar arquivos de classe.\n    -mp <caminho do m\u00F3dulo>\n    -modulepath <caminho do m\u00F3dulo>...\n                  Uma lista separada por {0} de diret\u00F3rios, cada um\n                  sendo um diret\u00F3rio de m\u00F3dulos.\n    -upgrademodulepath <caminho do m\u00F3dulo>...\n                  Uma lista separada por {0} de diret\u00F3rios, cada um\n                  sendo um diret\u00F3rio de m\u00F3dulos que substituem m\u00F3dulos\n                  pass\u00EDveis de upgrade na imagem de runtime\n    -m <modulename> | <modulename>/<mainclass>\n                  o m\u00F3dulo inicial ou principal a ser resolvido\n    -addmods <modulename>[,<modulename>...]\n                  m\u00F3dulos raiz a serem resolvidos al\u00E9m do m\u00F3dulo inicial\n    -limitmods <modulename>[,<modulename>...]\n                  limita o universo de m\u00F3dulos observ\u00E1veis\n    -listmods[:<modulename>[,<modulename>...]]\n                  lista os m\u00F3dulos observ\u00E1veis e sai\n    -D<name>=<value>\n                  define uma propriedade de sistema\n    -verbose:[class|gc|jni]\n                  ativa sa\u00EDda detalhada\n    -version      imprime a vers\u00E3o do produto e sai\n    -showversion  imprime a vers\u00E3o do produto e continua\n    -? -help      imprime esta mensagem de ajuda\n    -X            imprime a ajuda em op\u00E7\u00F5es n\u00E3o padronizadas\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  ativa asser\u00E7\u00F5es com granularidade especificada\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  desativa asser\u00E7\u00F5es com granularidade especificada\n    -esa | -enablesystemassertions\n                  ativa asser\u00E7\u00F5es do sistema\n    -dsa | -disablesystemassertions\n                  desativa asser\u00E7\u00F5es do sistema\n    -agentlib:<libname>[=<options>]\n                  carrega a biblioteca de agente nativo <libname>, por exemplo, -agentlib:jdwp\n                  consulte tamb\u00E9m -agentlib:jdwp=help\n    -agentpath:<pathname>[=<options>]\n                  carrega a biblioteca de agente nativo por nome do caminho completo\n    -javaagent:<jarpath>[=<options>]\n                  carrega o agente de linguagem de programa\u00E7\u00E3o Java; consulte java.lang.instrument\n    -splash:<imagepath>\n                  mostra a tela inicial com a imagem especificada\n    @<filepath>   op\u00E7\u00F5es de leitura do arquivo especificado\n
+See http://www.oracle.com/technetwork/java/javase/documentation/index.html para obter mais detalhes.
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\    -Xmixed           execu\u00E7\u00E3o no modo misto (default)\n    -Xint             execu\u00E7\u00E3o somente no modo interpretado\n    -Xbootclasspath:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n                      define o caminho de pesquisa para classes e recursos de inicializa\u00E7\u00E3o\n    -Xbootclasspath/a:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n                      anexa no final do caminho da classe de inicializa\u00E7\u00E3o\n    -Xbootclasspath/p:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n                      anexa no in\u00EDcio do caminho da classe de inicializa\u00E7\u00E3o\n    -Xdiag            mostra mensagens de diagn\u00F3stico adicionais\n    -Xnoclassgc       desativa a coleta de lixo da classe\n    -Xincgc           ativa a coleta de lixo incremental\n    -Xloggc:<arquivo>    registra o status do GC status em um arquivo com marca\u00E7\u00F5es de data e hor\u00E1rio\n    -Xbatch           desativa a compila\u00E7\u00E3o em segundo plano\n    -Xms<tamanho>        define o tamanho inicial do heap Java\n    -Xmx<tamanho>        define o tamanho m\u00E1ximo do heap Java\n    -Xss<tamanho>        define o tamanho da pilha de threads java\n    -Xprof            produz dados de perfil da cpu\n    -Xfuture          ativa verifica\u00E7\u00F5es de n\u00EDvel m\u00E1ximo de exig\u00EAncia, prevendo o valor default futuro\n    -Xrs              reduz o uso de sinais do SO pelo(a) Java/VM (consulte a documenta\u00E7\u00E3o)\n    -Xcheck:jni       executa verifica\u00E7\u00F5es adicionais de fun\u00E7\u00F5es da JNI\n    -Xshare:off       n\u00E3o tenta usar dados da classe compartilhada\n    -Xshare:auto      se poss\u00EDvel, usa dados da classe compartilhada (default)\n    -Xshare:on        requer o uso de dados da classe compartilhada, caso contr\u00E1rio haver\u00E1 falha.\n    -XshowSettings    mostra todas as defini\u00E7\u00F5es e continua\n    -XshowSettings:all\n                      mostra todas as defini\u00E7\u00F5es e continua\n    -XshowSettings:vm mostra todas as defini\u00E7\u00F5es relacionadas \u00E0 vm e continua\n    -XshowSettings:properties\n                      mostra todas as defini\u00E7\u00F5es da propriedade e continua\n    -XshowSettings:locale\n                      mostra todas as defini\u00E7\u00F5es relativas \u00E0s configura\u00E7\u00F5es regionais e continua\n\nAs -X options n\u00E3o s\u00E3o padronizadas e est\u00E3o sujeitas a altera\u00E7\u00F5es sem aviso.\n
+java.launcher.X.usage=\    -Xmixed           execu\u00E7\u00E3o no modo misto (padr\u00E3o)\n    -Xint             execu\u00E7\u00E3o somente no modo interpretado\n    -Xbootclasspath:<diret\u00F3rios e arquivos zip/jar separados por {0}>\n                      anexos ao final do caminho de classe de inicializa\u00E7\u00E3o\n    -Xdiag            mostra mensagens de diagn\u00F3stico adicionais\n    -Xdiag:resolver   mostra mensagens de diagn\u00F3stico do resolvedor\n    -Xnoclassgc       desativa a coleta de lixo da classe\n    -Xincgc           ativa a coleta de lixo incremental\n    -Xloggc:<arquivo>    registra o status do GC status em um arquivo com marca\u00E7\u00F5es de data e hor\u00E1rio\n    -Xbatch           desativa a compila\u00E7\u00E3o em segundo plano\n    -Xms<tamanho>        define o tamanho inicial do heap Java\n    -Xmx<tamanho>        define o tamanho m\u00E1ximo do heap Java\n    -Xss<tamanho>        define o tamanho da pilha de threads java\n    -Xprof            produz dados de perfil da cpu\n    -Xfuture          ativa verifica\u00E7\u00F5es de n\u00EDvel m\u00E1ximo de exig\u00EAncia, prevendo o valor padr\u00E3o futuro\n    -Xrs              reduz o uso de sinais do SO pelo(a) Java/VM (consulte a documenta\u00E7\u00E3o)\n    -Xcheck:jni       executa verifica\u00E7\u00F5es adicionais de fun\u00E7\u00F5es da JNI\n    -Xshare:off       n\u00E3o tenta usar dados da classe compartilhada\n    -Xshare:auto      se poss\u00EDvel, usa dados da classe compartilhada (padr\u00E3o)\n    -Xshare:on        requer o uso de dados da classe compartilhada, caso contr\u00E1rio haver\u00E1 falha.\n    -XshowSettings    mostra todas as defini\u00E7\u00F5es e continua\n    -XshowSettings:all\n                      mostra todas as defini\u00E7\u00F5es e continua\n    -XshowSettings:vm mostra todas as defini\u00E7\u00F5es relacionadas \u00E0 vm e continua\n    -XshowSettings:properties\n                      mostra todas as defini\u00E7\u00F5es da propriedade e continua\n    -XshowSettings:locale\n                      mostra todas as defini\u00E7\u00F5es relativas \u00E0s configura\u00E7\u00F5es regionais e continua\n    -XaddReads:<module>=<other-module>(,<other-module>)*\n                      <module> l\u00EA outros m\u00F3dulos,\n                      n\u00E3o importando a declara\u00E7\u00E3o do m\u00F3dulo\n    -XaddExports:<module>/<package>=<other-module>(,<other-module>)*\n                      <module> exports <package> para outros m\u00F3dulos,\n                      n\u00E3o importando a declara\u00E7\u00E3o do m\u00F3dulo\n    -Xpatch:<module>=<file>({0}<file>)*\n                      Substitui ou aumenta um m\u00F3dulo com classes e recursos\n                      em arquivos JAR ou diret\u00F3rios\n    -Xdisable-@files  desativa uma expans\u00E3o adicional de arquivo de argumentos\n\nAs op\u00E7\u00F5es -X n\u00E3o s\u00E3o padronizadas e est\u00E3o sujeitas a altera\u00E7\u00F5es sem aviso.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.X.macosx.usage=\nAs op\u00E7\u00F5es a seguir s\u00E3o espec\u00EDficas para o Mac OS X:\n    -XstartOnFirstThread\n                      executa o m\u00E9todo main() no primeiro thread (AppKit)\n    -Xdock:name=<nome da aplica\u00E7\u00E3o>"\n                      substitui o nome da aplica\u00E7\u00E3o default exibido no encaixe\n    -Xdock:icon=<caminho para o arquivo do \u00EDcone>\n                      substitui o \u00EDcone exibido no encaixe\n\n
+java.launcher.X.macosx.usage=\nAs op\u00E7\u00F5es a seguir s\u00E3o espec\u00EDficas para o Mac OS X:\n    -XstartOnFirstThread\n                      executa o m\u00E9todo main() no primeiro thread (AppKit)\n    -Xdock:name=<nome do aplicativo>"\n                      substitui o nome do aplicativo padr\u00E3o exibido no encaixe\n    -Xdock:icon=<caminho para o arquivo do \u00EDcone>\n                      substitui o \u00EDcone exibido no encaixe\n\n
 
 java.launcher.cls.error1=Erro: N\u00E3o foi poss\u00EDvel localizar nem carregar a classe principal {0}
 java.launcher.cls.error2=Erro: o m\u00E9todo main n\u00E3o \u00E9 {0} na classe {1}; defina o m\u00E9todo main como:\n   public static void main(String[] args)
 java.launcher.cls.error3=Erro: o m\u00E9todo main deve retornar um valor do tipo void na classe {0}; \ndefina o m\u00E9todo main como:\n   public static void main(String[] args)
-java.launcher.cls.error4=Erro: o m\u00E9todo main n\u00E3o foi encontrado na classe {0}; defina o m\u00E9todo main como:\\n   public static void main(String[] args)\\nou uma classe da aplica\u00E7\u00E3o JavaFX deve expandir {1}
-java.launcher.cls.error5=Erro: os componentes de runtime do JavaFX n\u00E3o foram encontrados. Eles s\u00E3o obrigat\u00F3rios para executar esta aplica\u00E7\u00E3o
+java.launcher.cls.error4=Erro: o m\u00E9todo main n\u00E3o foi encontrado na classe {0}; defina o m\u00E9todo main como:\n   public static void main(String[] args)\nou uma classe de aplicativo JavaFX deve expandir {1}
+java.launcher.cls.error5=Erro: os componentes de runtime do JavaFX n\u00E3o foram encontrados. Eles s\u00E3o obrigat\u00F3rios para executar este aplicativo
 java.launcher.jar.error1=Erro: ocorreu um erro inesperado ao tentar abrir o arquivo {0}
 java.launcher.jar.error2=manifesto n\u00E3o encontrado em {0}
 java.launcher.jar.error3=nenhum atributo de manifesto principal em {0}
 java.launcher.init.error=erro de inicializa\u00E7\u00E3o
 java.launcher.javafx.error1=Erro: O m\u00E9todo launchApplication do JavaFX tem a assinatura errada. Ele\\ndeve ser declarado como est\u00E1tico e retornar um valor do tipo void
+java.launcher.module.error1=o m\u00F3dulo {0} n\u00E3o tem um atributo MainClass, use -m <module>/<main-class>
+java.launcher.module.error2=Erro: N\u00E3o foi poss\u00EDvel localizar nem carregar a classe principal {0} no m\u00F3dulo {1}
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   Syntax: {0} [-alternativ] class [argument...]\n           (f\u00F6r att k\u00F6ra en klass)\n   eller  {0} [-alternativ] -jar jarfile [argument...]\n           (f\u00F6r att k\u00F6ra en jar-fil)\nd\u00E4r alternativen omfattar:\n
+java.launcher.opt.header  =   Syntax: {0} [options] class [args...]\n           (f\u00F6r att k\u00F6ra en klass)\n   eller  {0} [options] -jar jarfile [args...]\n           (f\u00F6r att k\u00F6ra en jar-fil)\n   eller  {0} [-options] -mp <modulepath> -m <modulename> | <modulename>/<mainclass>\n           (f\u00F6r att k\u00F6ra huvudklassen i en modul)\nmed alternativen:\n
 
 java.launcher.opt.datamodel  =\    -d{0}\t  anv\u00E4nd en {0}-bitsdatamodell om det finns\n
 java.launcher.opt.vmselect   =\    {0}\t  f\u00F6r att v\u00E4lja "{1}" VM\n
@@ -34,21 +34,24 @@
 java.launcher.ergo.message2  =\                  eftersom du k\u00F6r en serverklassmaskin.\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <klass\u00F6kv\u00E4g f\u00F6r kataloger och zip-/jar-filer>\n    -classpath <klass\u00F6kv\u00E4g f\u00F6r kataloger och zip-/jar-filer>\n                  En {0}-separerad lista med kataloger, JAR-arkiv,\n                  och ZIP-arkiv f\u00F6r s\u00F6kning efter klassfiler.\n    -D<name>=<value>\n                  ange en systemegenskap\n    -verbose:[class|gc|jni]\n                  aktivera utf\u00F6rliga utdata\n    -version      skriv ut produktversionen och avsluta\n    -version:<value>\n                  beg\u00E4r den specifika versionen som ska k\u00F6ras\n    -showversion  skriv ut produktversionen och forts\u00E4tt\n    -jre-restrict-search | -no-jre-restrict-search\n                  inkludera/exkludera anv\u00E4ndarprivata JRE:er i versions\u00F6kningen\n    -? -help      skriv ut det h\u00E4r hj\u00E4lpmeddelandet\n    -X            skriv ut hj\u00E4lp f\u00F6r icke-standardalternativ\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  aktivera verifiering med angiven detaljgrad\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  avaktivera verifiering med angiven detaljgrad\n    -esa | -enablesystemassertions\n                  aktivera systemverifieringar\n    -dsa | -disablesystemassertions\n                  avaktivera systemverifieringar\n    -agentlib:<libname>[=<options>]\n                  ladda ursprungligt agentbibliotek <libname>, e.g. -agentlib:hprof\n                  se \u00E4ven -agentlib:jdwp=help och -agentlib:hprof=help\n    -agentpath:<pathname>[=<options>]\n                  ladda ursprungligt agentbibliotek med helt s\u00F6kv\u00E4gsnamn\n    -javaagent:<jarpath>[=<options>]\n                  ladda Java-programspr\u00E5ksagent, se java.lang.instrument\n    -splash:<imagepath>\n                  visa v\u00E4lkomstsk\u00E4rm med angiven bild\nMer information finns p\u00E5 http://www.oracle.com/technetwork/java/javase/documentation/index.html.
+java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n    -classpath <class search path of directories and zip/jar files>\n                  En {0}-avgr\u00E4nsad lista \u00F6ver kataloger, JAR-arkiv\n                  och ZIP-arkiv att s\u00F6ka efter klassfiler i.\n    -mp <module path>\n    -modulepath <module path>...\n                  En {0}-avgr\u00E4nsad lista \u00F6ver kataloger, d\u00E4r varje\n                  katalog \u00E4r en katalog med moduler.\n    -upgrademodulepath <module path>...\n                  En {0}-avgr\u00E4nsad lista \u00F6ver kataloger, d\u00E4r varje\n                  katalog \u00E4r en katalog med moduler som ers\u00E4tter\n                  uppgraderingsbara moduler i exekveringsavbilden\n    -m <modulename> | <modulename>/<mainclass>\n                  den ursprungliga modulen eller huvudmodulen att l\u00F6sa\n    -addmods <modulename>[,<modulename>...]\n                  rotmoduler att l\u00F6sa f\u00F6rutom den ursprungliga modulen\n    -limitmods <modulename>[,<modulename>...]\n                  begr\u00E4nsar universumet med observerbara moduler\n    -listmods[:<modulename>[,<modulename>...]]\n                  lista observerbara moduler och avsluta\n    -D<name>=<value>\n                  ange en systemegenskap\n    -verbose:[class|gc|jni]\n                  aktivera utf\u00F6rliga utdata\n    -version      skriv ut produktversion och avsluta\n    -showversion  skriv ut produktversion och forts\u00E4tt\n    -? -help      skriv ut det h\u00E4r hj\u00E4lpmeddelandet\n    -X            skriv ut f\u00F6r icke-standardalternativ\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  aktivera verifieringar med den angivna detaljgraden\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  avaktivera verifieringar med den angivna detaljgraden\n    -esa | -enablesystemassertions\n                  aktivera systemverifieringar\n    -dsa | -disablesystemassertions\n                  avaktivera systemverifieringar\n    -agentlib:<libname>[=<options>]\n                  ladda det ursprungliga agentbiblioteket <libname>, exempel: -agentlib:jdwp\n                  se \u00E4ven -agentlib:jdwp=help\n    -agentpath:<pathname>[=<options>]\n                  ladda det ursprungliga agentbiblioteket med fullst\u00E4ndigt s\u00F6kv\u00E4gsnamn\n    -javaagent:<jarpath>[=<options>]\n                  ladda agenten f\u00F6r programmeringsspr\u00E5ket Java, se java.lang.instrument\n    -splash:<imagepath>\n                  visa v\u00E4lkomstsk\u00E4rmen med den angivna bilden\n    @<filepath>   l\u00E4s alternativ fr\u00E5n den angivna filen\n
+See Se http://www.oracle.com/technetwork/java/javase/documentation/index.html f\u00F6r mer information.
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\    -Xmixed           k\u00F6rning i blandat l\u00E4ge (standard)\n    -Xint             endast k\u00F6rning i tolkat l\u00E4ge\n    -Xbootclasspath:<kataloger och zip-/jar-filer avgr\u00E4nsas med {0}>\n                      ange s\u00F6kv\u00E4g f\u00F6r programladdningsklasser och -resurser\n    -Xbootclasspath/a:<kataloger och zip-/jar-filer avgr\u00E4nsas med {0}>\n                      l\u00E4gg till i slutet av programladdningsklassens s\u00F6kv\u00E4g\n    -Xbootclasspath/p:<kataloger och zip-/jar-filer avgr\u00E4nsas med {0}>\n                      l\u00E4gg till i b\u00F6rjan av programladdningsklassens s\u00F6kv\u00E4g\n    -Xdiag            visa ytterligare diagnostiska meddelanden\n    -Xnoclassgc       avaktivera klassens skr\u00E4pinsamling\n    -Xincgc           aktivera inkrementell skr\u00E4pinsamling\n    -Xloggc:<fil>    logga GC-status till en fil med tidsst\u00E4mplar\n    -Xbatch           avaktivera bakgrundskompilering\n    -Xms<storlek>        ange ursprunglig storlek f\u00F6r Java-heap\n    -Xmx<storlek>        ange maximal storlek f\u00F6r Java-heap\n    -Xss<storlek>        ange storlek f\u00F6r java-tr\u00E5dsstack\n    -Xprof            utdata f\u00F6r processorprofilering\n    -Xfuture          aktivera str\u00E4ngaste kontroller, f\u00F6rv\u00E4ntad framtida standard\n    -Xrs              minska OS-signalanv\u00E4ndning av Java/VM (se dokumentation)\n    -Xcheck:jni       utf\u00F6r ytterligare kontroller f\u00F6r JNI-funktioner\n    -Xshare:off       anv\u00E4nd inte delade klassdata\n    -Xshare:auto      anv\u00E4nd delade klassdata om det g\u00E5r (standard)\n    -Xshare:on        kr\u00E4v att delade klassdata anv\u00E4nds, annars slutf\u00F6r inte.\n    -XshowSettings    visa alla inst\u00E4llningar och forts\u00E4tt\n    -XshowSettings:all\n                      visa alla inst\u00E4llningar och forts\u00E4tt\n    -XshowSettings:vm visa alla vm-relaterade inst\u00E4llningar och forts\u00E4tt\n    -XshowSettings:properties\n                      visa alla egenskapsinst\u00E4llningar och forts\u00E4tt\n    -XshowSettings:locale\n                      visa alla spr\u00E5krelaterade inst\u00E4llningar och forts\u00E4tt\n\n-X-alternativen \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande.\n
+java.launcher.X.usage=\    -Xmixed           exekvering i blandat l\u00E4ge (standard)\n    -Xint             endast exekvering i tolkat l\u00E4ge\n    -Xbootclasspath/a:<directories and zip/jar files separated by {0}>\n                      l\u00E4gg till sist i klass\u00F6kv\u00E4gen f\u00F6r programladdning\n    -Xdiag            visa fler diagnostiska meddelanden\n    -Xdiag:resolver   visa diagnostiska meddelanden f\u00F6r matchning\n    -Xnoclassgc       avaktivera klasskr\u00E4pinsamling\n    -Xincgc           aktivera inkrementell skr\u00E4pinsamling\n    -Xloggc:<file>    logga GC-status till en fil med tidsst\u00E4mplar\n    -Xbatch           avaktivera bakgrundskompilering\n    -Xms<size>        ange ursprunglig storlek f\u00F6r Java-heap-utrymmet\n    -Xmx<size>        ange st\u00F6rsta storlek f\u00F6r Java-heap-utrymmet\n    -Xss<size>        ange storlek f\u00F6r java-tr\u00E5dsstacken\n    -Xprof            utdata f\u00F6r processorprofilering\n    -Xfuture          aktivera str\u00E4ngaste kontroller, f\u00F6rv\u00E4ntad framtida standard\n    -Xrs              minska operativsystemssignalanv\u00E4ndning f\u00F6r Java/VM (se dokumentationen)\n    -Xcheck:jni       utf\u00F6r fler kontroller f\u00F6r JNI-funktioner\n    -Xshare:off       f\u00F6rs\u00F6k inte anv\u00E4nda delade klassdata\n    -Xshare:auto      anv\u00E4nd delade klassdata om m\u00F6jligt (standard)\n    -Xshare:on        kr\u00E4v anv\u00E4ndning av delade klassdata, utf\u00F6r inte i annat fall.\n    -XshowSettings    visa alla inst\u00E4llningar och forts\u00E4tt\n    -XshowSettings:all\n                      visa alla inst\u00E4llningar och forts\u00E4tt\n    -XshowSettings:vm visa alla vm-relaterade inst\u00E4llningar och forts\u00E4tt\n    -XshowSettings:properties\n                      visa alla vm-relaterade inst\u00E4llningar och forts\u00E4tt\n    -XshowSettings:locale\n                      visa alla spr\u00E5kkonventionsrelaterade inst\u00E4llningar och forts\u00E4tt\n    -XaddReads:<module>=<other-module>(,<other-module>)*\n                      <module> l\u00E4ser andra moduler,\n                      oavsett moduldeklarationen\n    -XaddExports:<module>/<package>=<other-module>(,<other-module>)*\n                      <module> exporterar <package> till andra moduler,\n                      oavsett moduldeklarationen\n    -Xpatch:<module>=<file>({0}<file>)*\n                      \u00C5sidos\u00E4tt eller ut\u00F6ka en modul med klasser och resurser\n                      i JAR-filer eller kataloger\n    -Xdisable-@files  avaktivera framtida argumentfilsut\u00F6kning\n\n-X-alternativen \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande.\n
 
 # Translators please note do not translate the options themselves
 java.launcher.X.macosx.usage=\nF\u00F6ljande alternativ \u00E4r specifika f\u00F6r Mac OS X:\n    -XstartOnFirstThread\n                      k\u00F6r huvudmetoden() p\u00E5 den f\u00F6rsta (AppKit) tr\u00E5den\n    -Xdock:name=<application name>"\n                      \u00E5sidosatt standardapplikationsnamn visas i docka\n    -Xdock:icon=<path to icon file>\n                      \u00E5sidosatt standardikon visas i docka\n\n
 
-java.launcher.cls.error1=Fel: Hittar inte eller kan inte ladda huvudklassen {0}
+java.launcher.cls.error1=Fel: Kan inte hitta eller kan inte ladda huvudklassen {0}
 java.launcher.cls.error2=Fel: Huvudmetoden \u00E4r inte {0} i klassen {1}, definiera huvudmetoden som:\n   public static void main(String[] args)
 java.launcher.cls.error3=Fel: Huvudmetoden m\u00E5ste returnera ett v\u00E4rde av typen void i klassen {0}, \ndefiniera huvudmetoden som:\n   public static void main(String[] args)
 java.launcher.cls.error4=Fel: Huvudmetoden finns inte i klassen {0}, definiera huvudmetoden som:\n   public static void main(String[] args)\neller s\u00E5 m\u00E5ste en JavaFX-applikationsklass ut\u00F6ka {1}
-java.launcher.cls.error5=Fel: JavaFX-k\u00F6rningskomponenter saknas, och de kr\u00E4vs f\u00F6r att kunna k\u00F6ra den h\u00E4r applikationen
+java.launcher.cls.error5=Fel: JavaFX-exekveringskomponenter saknas, och de kr\u00E4vs f\u00F6r att kunna k\u00F6ra den h\u00E4r applikationen
 java.launcher.jar.error1=Fel: Ett ov\u00E4ntat fel intr\u00E4ffade n\u00E4r filen {0} skulle \u00F6ppnas
 java.launcher.jar.error2=manifest finns inte i {0}
 java.launcher.jar.error3=inget huvudmanifestattribut i {0}
 java.launcher.init.error=initieringsfel
 java.launcher.javafx.error1=Fel: JavaFX launchApplication-metoden har fel signatur, den \nm\u00E5ste ha deklarerats som statisk och returnera ett v\u00E4rde av typen void
+java.launcher.module.error1=modulen {0} har inget MainClass-attribut, anv\u00E4nd -m <module>/<main-class>
+java.launcher.module.error2=Fel: kunde inte hitta eller ladda huvudklassen {0} i modulen {1}
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   \u7528\u6CD5: {0} [-options] class [args...]\n           (\u6267\u884C\u7C7B)\n   \u6216  {0} [-options] -jar jarfile [args...]\n           (\u6267\u884C jar \u6587\u4EF6)\n\u5176\u4E2D\u9009\u9879\u5305\u62EC:\n
+java.launcher.opt.header  =   \u7528\u6CD5: {0} [options] class [args...]\n           (\u6267\u884C\u7C7B)\n   or  {0} [options] -jar jarfile [args...]\n           (\u6267\u884C jar \u6587\u4EF6)\n   or  {0} [-options] -mp <modulepath> -m <modulename> | <modulename>/<mainclass>\n           (\u6267\u884C\u6A21\u5757\u4E2D\u7684\u4E3B\u7C7B)\n\u5176\u4E2D options \u5305\u62EC:\n
 
 java.launcher.opt.datamodel  =\    -d{0}\t  \u4F7F\u7528 {0} \u4F4D\u6570\u636E\u6A21\u578B (\u5982\u679C\u53EF\u7528)\n
 java.launcher.opt.vmselect   =\    {0}\t  \u9009\u62E9 "{1}" VM\n
@@ -34,10 +34,11 @@
 java.launcher.ergo.message2  =\                  \u56E0\u4E3A\u60A8\u662F\u5728\u670D\u52A1\u5668\u7C7B\u8BA1\u7B97\u673A\u4E0A\u8FD0\u884C\u3002\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n    -classpath <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n                  \u7528 {0} \u5206\u9694\u7684\u76EE\u5F55, JAR \u6863\u6848\n                  \u548C ZIP \u6863\u6848\u5217\u8868, \u7528\u4E8E\u641C\u7D22\u7C7B\u6587\u4EF6\u3002\n    -D<\u540D\u79F0>=<\u503C>\n                  \u8BBE\u7F6E\u7CFB\u7EDF\u5C5E\u6027\n    -verbose:[class|gc|jni]\n                  \u542F\u7528\u8BE6\u7EC6\u8F93\u51FA\n    -version      \u8F93\u51FA\u4EA7\u54C1\u7248\u672C\u5E76\u9000\u51FA\n    -version:<\u503C>\n                  \u9700\u8981\u6307\u5B9A\u7684\u7248\u672C\u624D\u80FD\u8FD0\u884C\n    -showversion  \u8F93\u51FA\u4EA7\u54C1\u7248\u672C\u5E76\u7EE7\u7EED\n    -jre-restrict-search | -no-jre-restrict-search\n                  \u5728\u7248\u672C\u641C\u7D22\u4E2D\u5305\u62EC/\u6392\u9664\u7528\u6237\u4E13\u7528 JRE\n    -? -help      \u8F93\u51FA\u6B64\u5E2E\u52A9\u6D88\u606F\n    -X            \u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u5E2E\u52A9\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  \u6309\u6307\u5B9A\u7684\u7C92\u5EA6\u542F\u7528\u65AD\u8A00\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  \u7981\u7528\u5177\u6709\u6307\u5B9A\u7C92\u5EA6\u7684\u65AD\u8A00\n    -esa | -enablesystemassertions\n                  \u542F\u7528\u7CFB\u7EDF\u65AD\u8A00\n    -dsa | -disablesystemassertions\n                  \u7981\u7528\u7CFB\u7EDF\u65AD\u8A00\n    -agentlib:<libname>[=<\u9009\u9879>]\n                  \u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93 <libname>, \u4F8B\u5982 -agentlib:hprof\n                  \u53E6\u8BF7\u53C2\u9605 -agentlib:jdwp=help \u548C -agentlib:hprof=help\n    -agentpath:<pathname>[=<\u9009\u9879>]\n                  \u6309\u5B8C\u6574\u8DEF\u5F84\u540D\u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93\n    -javaagent:<jarpath>[=<\u9009\u9879>]\n                  \u52A0\u8F7D Java \u7F16\u7A0B\u8BED\u8A00\u4EE3\u7406, \u8BF7\u53C2\u9605 java.lang.instrument\n    -splash:<imagepath>\n                  \u4F7F\u7528\u6307\u5B9A\u7684\u56FE\u50CF\u663E\u793A\u542F\u52A8\u5C4F\u5E55\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605 http://www.oracle.com/technetwork/java/javase/documentation/index.html\u3002
+java.launcher.opt.footer     =\    -cp <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n    -classpath <\u76EE\u5F55\u548C zip/jar \u6587\u4EF6\u7684\u7C7B\u641C\u7D22\u8DEF\u5F84>\n                  \u7528\u4E8E\u641C\u7D22\u7C7B\u6587\u4EF6\u7684\u76EE\u5F55, JAR \u6863\u6848\n                  \u548C ZIP \u6863\u6848\u7684\u5217\u8868, \u4F7F\u7528 {0} \u5206\u9694\u3002\n    -mp <\u6A21\u5757\u8DEF\u5F84>\n    -modulepath <\u6A21\u5757\u8DEF\u5F84>...\n                  \u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u5217\u8868, \u6BCF\u4E2A\u76EE\u5F55\n                  \u90FD\u662F\u4E00\u4E2A\u5305\u542B\u6A21\u5757\u7684\u76EE\u5F55\u3002\n    -upgrademodulepath <module path>...\n                  \u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u5217\u8868, \u6BCF\u4E2A\u76EE\u5F55\n                  \u90FD\u662F\u4E00\u4E2A\u5305\u542B\u6A21\u5757\u7684\u76EE\u5F55, \u8FD9\u4E9B\u6A21\u5757\n                  \u7528\u4E8E\u66FF\u6362\u8FD0\u884C\u65F6\u6620\u50CF\u4E2D\u7684\u53EF\u5347\u7EA7\u6A21\u5757\n    -m <modulename> | <modulename>/<mainclass>\n                  \u8981\u89E3\u6790\u7684\u521D\u59CB\u6A21\u5757\u6216\u4E3B\u6A21\u5757\n    -addmods <modulename>[,<modulename>...]\n                  \u9664\u4E86\u521D\u59CB\u6A21\u5757\u4E4B\u5916\u8981\u89E3\u6790\u7684\u6839\u6A21\u5757\n    -limitmods <modulename>[,<modulename>...]\n                  \u9650\u5236\u53EF\u89C2\u5BDF\u6A21\u5757\u7684\u9886\u57DF\n    -listmods[:<modulename>[,<modulename>...]]\n                  \u5217\u51FA\u53EF\u89C2\u5BDF\u6A21\u5757\u5E76\u9000\u51FA\n    -D<name>=<value>\n                  \u8BBE\u7F6E\u7CFB\u7EDF\u5C5E\u6027\n    -verbose:[class|gc|jni]\n                  \u542F\u7528\u8BE6\u7EC6\u8F93\u51FA\n    -version      \u8F93\u51FA\u4EA7\u54C1\u7248\u672C\u5E76\u9000\u51FA\n    -showversion  \u8F93\u51FA\u4EA7\u54C1\u7248\u672C\u5E76\u7EE7\u7EED\n    -? -help      \u8F93\u51FA\u6B64\u5E2E\u52A9\u6D88\u606F\n    -X            \u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u5E2E\u52A9\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  \u6309\u6307\u5B9A\u7684\u7C92\u5EA6\u542F\u7528\u65AD\u8A00\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  \u7981\u7528\u5177\u6709\u6307\u5B9A\u7C92\u5EA6\u7684\u65AD\u8A00\n    -esa | -enablesystemassertions\n                  \u542F\u7528\u7CFB\u7EDF\u65AD\u8A00\n    -dsa | -disablesystemassertions\n                  \u7981\u7528\u7CFB\u7EDF\u65AD\u8A00\n    -agentlib:<libname>[=<options>]\n                  \u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93 <libname>, \u4F8B\u5982 -agentlib:jdwp\n                  \u53E6\u8BF7\u53C2\u9605 -agentlib:jdwp=help\n    -agentpath:<pathname>[=<options>]\n                  \u6309\u5B8C\u6574\u8DEF\u5F84\u540D\u52A0\u8F7D\u672C\u673A\u4EE3\u7406\u5E93\n    -javaagent:<jarpath>[=<options>]\n                  \u52A0\u8F7D Java \u7F16\u7A0B\u8BED\u8A00\u4EE3\u7406, \u8BF7\u53C2\u9605 java.lang.instrument\n    -splash:<imagepath>\n                  \u4F7F\u7528\u6307\u5B9A\u7684\u56FE\u50CF\u663E\u793A\u542F\u52A8\u5C4F\u5E55\n    @<filepath>   \u4ECE\u6307\u5B9A\u6587\u4EF6\u4E2D\u8BFB\u53D6\u9009\u9879\n
+See \u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605 http://www.oracle.com/technetwork/java/javase/documentation/index.html\u3002
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\    -Xmixed           \u6DF7\u5408\u6A21\u5F0F\u6267\u884C (\u9ED8\u8BA4)\n    -Xint             \u4EC5\u89E3\u91CA\u6A21\u5F0F\u6267\u884C\n    -Xbootclasspath:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n                      \u8BBE\u7F6E\u641C\u7D22\u8DEF\u5F84\u4EE5\u5F15\u5BFC\u7C7B\u548C\u8D44\u6E90\n    -Xbootclasspath/a:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n                      \u9644\u52A0\u5728\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u672B\u5C3E\n    -Xbootclasspath/p:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n                      \u7F6E\u4E8E\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u4E4B\u524D\n    -Xdiag            \u663E\u793A\u9644\u52A0\u8BCA\u65AD\u6D88\u606F\n    -Xnoclassgc       \u7981\u7528\u7C7B\u5783\u573E\u6536\u96C6\n    -Xincgc           \u542F\u7528\u589E\u91CF\u5783\u573E\u6536\u96C6\n    -Xloggc:<file>    \u5C06 GC \u72B6\u6001\u8BB0\u5F55\u5728\u6587\u4EF6\u4E2D (\u5E26\u65F6\u95F4\u6233)\n    -Xbatch           \u7981\u7528\u540E\u53F0\u7F16\u8BD1\n    -Xms<size>        \u8BBE\u7F6E\u521D\u59CB Java \u5806\u5927\u5C0F\n    -Xmx<size>        \u8BBE\u7F6E\u6700\u5927 Java \u5806\u5927\u5C0F\n    -Xss<size>        \u8BBE\u7F6E Java \u7EBF\u7A0B\u5806\u6808\u5927\u5C0F\n    -Xprof            \u8F93\u51FA cpu \u914D\u7F6E\u6587\u4EF6\u6570\u636E\n    -Xfuture          \u542F\u7528\u6700\u4E25\u683C\u7684\u68C0\u67E5, \u9884\u671F\u5C06\u6765\u7684\u9ED8\u8BA4\u503C\n    -Xrs              \u51CF\u5C11 Java/VM \u5BF9\u64CD\u4F5C\u7CFB\u7EDF\u4FE1\u53F7\u7684\u4F7F\u7528 (\u8BF7\u53C2\u9605\u6587\u6863)\n    -Xcheck:jni       \u5BF9 JNI \u51FD\u6570\u6267\u884C\u5176\u4ED6\u68C0\u67E5\n    -Xshare:off       \u4E0D\u5C1D\u8BD5\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E\n    -Xshare:auto      \u5728\u53EF\u80FD\u7684\u60C5\u51B5\u4E0B\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E (\u9ED8\u8BA4)\n    -Xshare:on        \u8981\u6C42\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E, \u5426\u5219\u5C06\u5931\u8D25\u3002\n    -XshowSettings    \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n    -XshowSettings:all\n                      \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n    -XshowSettings:vm \u663E\u793A\u6240\u6709\u4E0E vm \u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n    -XshowSettings:properties\n                      \u663E\u793A\u6240\u6709\u5C5E\u6027\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n    -XshowSettings:locale\n                      \u663E\u793A\u6240\u6709\u4E0E\u533A\u57DF\u8BBE\u7F6E\u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n\n-X \u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
+java.launcher.X.usage=\    -Xmixed           \u6DF7\u5408\u6A21\u5F0F\u6267\u884C (\u9ED8\u8BA4\u503C)\n    -Xint             \u4EC5\u89E3\u91CA\u6A21\u5F0F\u6267\u884C\n    -Xbootclasspath/a:<\u7528 {0} \u5206\u9694\u7684\u76EE\u5F55\u548C zip/jar \u6587\u4EF6>\n                      \u9644\u52A0\u5728\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u672B\u5C3E\n    -Xdiag            \u663E\u793A\u9644\u52A0\u8BCA\u65AD\u6D88\u606F\n    -Xdiag:resolver   \u663E\u793A\u89E3\u6790\u5668\u8BCA\u65AD\u6D88\u606F\n    -Xnoclassgc       \u7981\u7528\u7C7B\u5783\u573E\u6536\u96C6\n    -Xincgc           \u542F\u7528\u589E\u91CF\u5783\u573E\u6536\u96C6\n    -Xloggc:<file>    \u5C06 GC \u72B6\u6001\u8BB0\u5F55\u5728\u6587\u4EF6\u4E2D (\u5E26\u65F6\u95F4\u6233)\n    -Xbatch           \u7981\u7528\u540E\u53F0\u7F16\u8BD1\n    -Xms<size>        \u8BBE\u7F6E\u521D\u59CB Java \u5806\u5927\u5C0F\n    -Xmx<size>        \u8BBE\u7F6E\u6700\u5927 Java \u5806\u5927\u5C0F\n    -Xss<size>        \u8BBE\u7F6E Java \u7EBF\u7A0B\u5806\u6808\u5927\u5C0F\n    -Xprof            \u8F93\u51FA cpu \u5206\u6790\u6570\u636E\n    -Xfuture          \u542F\u7528\u6700\u4E25\u683C\u7684\u68C0\u67E5, \u9884\u671F\u5C06\u6765\u7684\u9ED8\u8BA4\u503C\n    -Xrs              \u51CF\u5C11 Java/VM \u5BF9\u64CD\u4F5C\u7CFB\u7EDF\u4FE1\u53F7\u7684\u4F7F\u7528 (\u8BF7\u53C2\u9605\u6587\u6863)\n    -Xcheck:jni       \u5BF9 JNI \u51FD\u6570\u6267\u884C\u5176\u4ED6\u68C0\u67E5\n    -Xshare:off       \u4E0D\u5C1D\u8BD5\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E\n    -Xshare:auto      \u5728\u53EF\u80FD\u7684\u60C5\u51B5\u4E0B\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E (\u9ED8\u8BA4\u503C)\n    -Xshare:on        \u8981\u6C42\u4F7F\u7528\u5171\u4EAB\u7C7B\u6570\u636E, \u5426\u5219\u5C06\u5931\u8D25\u3002\n    -XshowSettings    \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n    -XshowSettings:all\n                      \u663E\u793A\u6240\u6709\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n    -XshowSettings:vm \u663E\u793A\u6240\u6709\u4E0E vm \u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n    -XshowSettings:properties\n                      \u663E\u793A\u6240\u6709\u5C5E\u6027\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n    -XshowSettings:locale\n                      \u663E\u793A\u6240\u6709\u4E0E\u533A\u57DF\u8BBE\u7F6E\u76F8\u5173\u7684\u8BBE\u7F6E\u5E76\u7EE7\u7EED\n    -XaddReads:<module>=<other-module>(,<other-module>)*\n                      <module> \u8BFB\u53D6\u5176\u4ED6\u6A21\u5757,\n                      \u800C\u65E0\u8BBA\u6A21\u5757\u58F0\u660E\u5982\u4F55\n    -XaddExports:<module>/<package>=<other-module>(,<other-module>)*\n                      <module> \u5C06 <package> \u5BFC\u51FA\u5230\u5176\u4ED6\u6A21\u5757,\n                      \u800C\u65E0\u8BBA\u6A21\u5757\u58F0\u660E\u5982\u4F55\n    -Xpatch:<module>=<file>({0}<file>)*\n                      \u4F7F\u7528 JAR \u6587\u4EF6\u6216\u76EE\u5F55\u4E2D\u7684\u7C7B\u548C\u8D44\u6E90\n                      \u8986\u76D6\u6216\u589E\u5F3A\u6A21\u5757\n    -Xdisable-@files  \u7981\u6B62\u8FDB\u4E00\u6B65\u6269\u5C55\u53C2\u6570\u6587\u4EF6\n\n-X \u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
 
 # Translators please note do not translate the options themselves
 java.launcher.X.macosx.usage=\n\u4EE5\u4E0B\u9009\u9879\u4E3A Mac OS X \u7279\u5B9A\u7684\u9009\u9879:\n    -XstartOnFirstThread\n                      \u5728\u7B2C\u4E00\u4E2A (AppKit) \u7EBF\u7A0B\u4E0A\u8FD0\u884C main() \u65B9\u6CD5\n    -Xdock:name=<\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0>"\n                      \u8986\u76D6\u505C\u9760\u680F\u4E2D\u663E\u793A\u7684\u9ED8\u8BA4\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0\n    -Xdock:icon=<\u56FE\u6807\u6587\u4EF6\u7684\u8DEF\u5F84>\n                      \u8986\u76D6\u505C\u9760\u680F\u4E2D\u663E\u793A\u7684\u9ED8\u8BA4\u56FE\u6807\n\n
@@ -52,3 +53,5 @@
 java.launcher.jar.error3={0}\u4E2D\u6CA1\u6709\u4E3B\u6E05\u5355\u5C5E\u6027
 java.launcher.init.error=\u521D\u59CB\u5316\u9519\u8BEF
 java.launcher.javafx.error1=\u9519\u8BEF: JavaFX launchApplication \u65B9\u6CD5\u5177\u6709\u9519\u8BEF\u7684\u7B7E\u540D, \u5FC5\u987B\n\u5C06\u65B9\u6CD5\u58F0\u660E\u4E3A\u9759\u6001\u65B9\u6CD5\u5E76\u8FD4\u56DE\u7A7A\u7C7B\u578B\u7684\u503C
+java.launcher.module.error1=\u6A21\u5757 {0} \u4E0D\u5177\u6709 MainClass \u5C5E\u6027, \u8BF7\u4F7F\u7528 -m <module>/<main-class>
+java.launcher.module.error2=\u9519\u8BEF: \u5728\u6A21\u5757 {1} \u4E2D\u627E\u4E0D\u5230\u6216\u65E0\u6CD5\u52A0\u8F7D\u4E3B\u7C7B {0}
--- a/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_zh_TW.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/launcher/resources/launcher_zh_TW.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,7 +24,7 @@
 #
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.header  =   \u7528\u6CD5: {0} [-options] class [args...]\n           (\u57F7\u884C\u985E\u5225)\n   \u6216  {0} [-options] -jar jarfile [args...]\n           (\u57F7\u884C jar \u6A94\u6848)\n\u9078\u9805\u5305\u62EC:\n
+java.launcher.opt.header  =   \u7528\u6CD5: {0} [options] class [args...]\n           (\u7528\u65BC\u57F7\u884C\u985E\u5225)\n   \u6216  {0} [options] -jar jarfile [args...]\n           (\u7528\u65BC\u57F7\u884C jar \u6A94\u6848)\n   \u6216  {0} [-options] -mp <modulepath> -m <modulename> | <modulename>/<mainclass>\n           (\u7528\u65BC\u57F7\u884C\u6A21\u7D44\u4E2D\u7684\u4E3B\u8981\u985E\u5225)\n\u5176\u4E2D\u7684\u9078\u9805\u5305\u62EC:\n
 
 java.launcher.opt.datamodel  =\    -d{0}\t  \u4F7F\u7528 {0} \u4F4D\u5143\u8CC7\u6599\u6A21\u578B (\u5982\u679C\u6709\u7684\u8A71)\n
 java.launcher.opt.vmselect   =\    {0}\t  \u9078\u53D6 "{1}" VM\n
@@ -34,17 +34,18 @@
 java.launcher.ergo.message2  =\                  \u56E0\u70BA\u60A8\u6B63\u5728\u4F3A\u670D\u5668\u985E\u5225\u6A5F\u5668\u4E0A\u57F7\u884C\u3002\n
 
 # Translators please note do not translate the options themselves
-java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n    -classpath <class search path of directories and zip/jar files>\n                  \u4F7F\u7528 {0} \u5340\u9694\u7684\u76EE\u9304\u3001JAR \u5B58\u6A94\u4EE5\u53CA\n                  ZIP \u5B58\u6A94\u6E05\u55AE\u4F86\u641C\u5C0B\u985E\u5225\u6A94\u6848\u3002\n    -D<name>=<value>\n                  \u8A2D\u5B9A\u7CFB\u7D71\u5C6C\u6027\n    -verbose:[class|gc|jni]\n                  \u555F\u7528\u8A73\u7D30\u8CC7\u8A0A\u8F38\u51FA\n    -version      \u5217\u5370\u7522\u54C1\u7248\u672C\u4E26\u7D50\u675F\n    -version:<value>\n                  \u9700\u8981\u6307\u5B9A\u7684\u7248\u672C\u624D\u80FD\u57F7\u884C\n    -showversion  \u5217\u5370\u7522\u54C1\u7248\u672C\u4E26\u7E7C\u7E8C\n    -jre-restrict-search | -no-jre-restrict-search\n                  \u5728\u7248\u672C\u641C\u5C0B\u4E2D\u5305\u62EC/\u6392\u9664\u4F7F\u7528\u8005\u5C08\u7528 JRE\n    -? -help      \u5217\u5370\u6B64\u8AAA\u660E\u8A0A\u606F\n    -X            \u5217\u5370\u975E\u6A19\u6E96\u9078\u9805\u7684\u8AAA\u660E\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  \u555F\u7528\u542B\u6307\u5B9A\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  \u505C\u7528\u542B\u6307\u5B9A\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n    -esa | -enablesystemassertions\n                  \u555F\u7528\u7CFB\u7D71\u5BA3\u544A\n    -dsa | -disablesystemassertions\n                  \u505C\u7528\u7CFB\u7D71\u5BA3\u544A\n    -agentlib:<libname>[=<options>]\n                  \u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB <libname>\uFF0C\u4F8B\u5982 -agentlib:hprof\n                  \u53E6\u8ACB\u53C3\u95B1 -agentlib:jdwp=help \u8207 -agentlib:hprof=help\n    -agentpath:<pathname>[=<options>]\n                  \u4F7F\u7528\u5B8C\u6574\u8DEF\u5F91\u540D\u7A31\u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB\n    -javaagent:<jarpath>[=<options>]\n                  \u8F09\u5165 Java \u7A0B\u5F0F\u8A9E\u8A00\u4EE3\u7406\u7A0B\u5F0F\uFF0C\u8ACB\u53C3\u95B1 java.lang.instrument\n    -splash:<imagepath>\n                  \u986F\u793A\u6307\u5B9A\u5F71\u50CF\u7684\u8EDF\u9AD4\u8CC7\u8A0A\u756B\u9762\n\u8ACB\u53C3\u95B1 http://www.oracle.com/technetwork/java/javase/documentation/index.html \u66B8\u89E3\u8A73\u7D30\u8CC7\u8A0A\u3002
+java.launcher.opt.footer     =\    -cp <class search path of directories and zip/jar files>\n    -classpath <class search path of directories and zip/jar files>\n                  \u4F7F\u7528\u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u3001JAR \u5B58\u6A94\u4EE5\u53CA\n                  ZIP \u5B58\u6A94\u6E05\u55AE\u4F86\u641C\u5C0B\u985E\u5225\u6A94\u6848\u3002\n    -mp <module path>\n    -modulepath <module path>...\n                  \u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u6E05\u55AE\uFF0C\u6BCF\u500B\u76EE\u9304\n                  \u5747\u70BA\u6A21\u7D44\u76EE\u9304\u3002\n    -upgrademodulepath <module path>...\n                  \u4EE5 {0} \u5340\u9694\u7684\u76EE\u9304\u6E05\u55AE\uFF0C\u6BCF\u500B\u76EE\u9304\n                  \u5747\u70BA\u6A21\u7D44\u76EE\u9304\uFF0C\u4E14\u7576\u4E2D\u7684\u6A21\u7D44\u53EF\u53D6\u4EE3\n                  \u7A0B\u5F0F\u5BE6\u969B\u57F7\u884C\u5F71\u50CF\u4E2D\u7684\u53EF\u5347\u7D1A\u6A21\u7D44\n    -m <modulename> | <modulename>/<mainclass>\n                  \u8981\u89E3\u6790\u7684\u8D77\u59CB\u6216\u4E3B\u8981\u6A21\u7D44\n    -addmods <modulename>[,<modulename>...]\n                  \u9664\u4E86\u8D77\u59CB\u6A21\u7D44\u5916\uFF0C\u8981\u89E3\u6790\u7684\u6839\u6A21\u7D44\n    -limitmods <modulename>[,<modulename>...]\n                  \u9650\u5236\u53EF\u76E3\u6E2C\u6A21\u7D44\u7684\u7BC4\u570D\n    -listmods[:<modulename>[,<modulename>...]]\n                  \u5217\u51FA\u53EF\u76E3\u6E2C\u6A21\u7D44\u4E26\u7D50\u675F\n    -D<name>=<value>\n                  \u8A2D\u5B9A\u7CFB\u7D71\u5C6C\u6027\n    -verbose:[class|gc|jni]\n                  \u555F\u7528\u8A73\u7D30\u8CC7\u8A0A\u8F38\u51FA\n    -version     \u5217\u5370\u7522\u54C1\u7248\u672C\u4E26\u7D50\u675F\n    -showversion  \u5217\u5370\u7522\u54C1\u7248\u672C\u4E26\u7E7C\u7E8C\n    -? -help      \u5217\u5370\u6B64\u8AAA\u660E\u8A0A\u606F\n    -X            \u5217\u5370\u975E\u6A19\u6E96\u9078\u9805\u7684\u8AAA\u660E\n    -ea[:<packagename>...|:<classname>]\n    -enableassertions[:<packagename>...|:<classname>]\n                  \u555F\u7528\u542B\u6307\u5B9A\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n    -da[:<packagename>...|:<classname>]\n    -disableassertions[:<packagename>...|:<classname>]\n                  \u505C\u7528\u542B\u6307\u5B9A\u8A73\u7D30\u7A0B\u5EA6\u7684\u5BA3\u544A\n    -esa | -enablesystemassertions\n                  \u555F\u7528\u7CFB\u7D71\u5BA3\u544A\n    -dsa | -disablesystemassertions\n                  \u505C\u7528\u7CFB\u7D71\u5BA3\u544A\n    -agentlib:<libname>[=<options>]\n                  \u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB <libname>\uFF0C\u4F8B\u5982 -agentlib:jdwp\n                  \u53E6\u8ACB\u53C3\u95B1 -agentlib:jdwp=help\n    -agentpath:<pathname>[=<options>]\n                  \u4F7F\u7528\u5B8C\u6574\u8DEF\u5F91\u540D\u7A31\u8F09\u5165\u539F\u751F\u4EE3\u7406\u7A0B\u5F0F\u7A0B\u5F0F\u5EAB\n    -javaagent:<jarpath>[=<options>]\n                  \u8F09\u5165 Java \u7A0B\u5F0F\u8A9E\u8A00\u4EE3\u7406\u7A0B\u5F0F\uFF0C\u8ACB\u53C3\u95B1 java.lang.instrument\n    -splash:<imagepath>\n                   \u4EE5\u6307\u5B9A\u5F71\u50CF\u986F\u793A\u8EDF\u9AD4\u8CC7\u8A0A\u756B\u9762\n    @<filepath>   \u5F9E\u6307\u5B9A\u6A94\u6848\u8B80\u53D6\u9078\u9805\n
+See \u8ACB\u53C3\u95B1 http://www.oracle.com/technetwork/java/javase/documentation/index.html \u66B8\u89E3\u8A73\u7D30\u8CC7\u8A0A\u3002
 
 # Translators please note do not translate the options themselves
-java.launcher.X.usage=\    -Xmixed           \u6DF7\u5408\u6A21\u5F0F\u57F7\u884C (\u9810\u8A2D)\n    -Xint             \u50C5\u9650\u89E3\u8B6F\u6A21\u5F0F\u57F7\u884C\n    -Xbootclasspath:<\u4EE5 {0} \u5206\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n                      \u8A2D\u5B9A\u555F\u52D5\u5B89\u88DD\u985E\u5225\u548C\u8CC7\u6E90\u7684\u641C\u5C0B\u8DEF\u5F91\n    -Xbootclasspath/a:<\u4EE5 {0} \u5206\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n                      \u9644\u52A0\u5728\u555F\u52D5\u5B89\u88DD\u985E\u5225\u8DEF\u5F91\u7684\u7D50\u5C3E\n    -Xbootclasspath/p:<\u4EE5 {0} \u5206\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n                      \u9644\u52A0\u5728\u555F\u52D5\u5B89\u88DD\u985E\u5225\u8DEF\u5F91\u7684\u524D\u9762\n    -Xdiag            \u986F\u793A\u5176\u4ED6\u7684\u8A3A\u65B7\u8A0A\u606F\n    -Xnoclassgc       \u505C\u7528\u985E\u5225\u8CC7\u6E90\u56DE\u6536\n    -Xincgc           \u555F\u7528\u6F38\u9032\u8CC7\u6E90\u56DE\u6536\n    -Xloggc:<file>    \u5229\u7528\u6642\u6233\u5C07 GC \u72C0\u614B\u8A18\u9304\u81F3\u6A94\u6848\u4E2D\n    -Xbatch           \u505C\u7528\u80CC\u666F\u7DE8\u8B6F\n    -Xms<size>        \u8A2D\u5B9A\u8D77\u59CB Java \u5806\u96C6\u5927\u5C0F\n    -Xmx<size>        \u8A2D\u5B9A Java \u5806\u96C6\u5927\u5C0F\u4E0A\u9650\n    -Xss<size>        \u8A2D\u5B9A Java \u57F7\u884C\u7DD2\u5806\u758A\u5927\u5C0F\n    -Xprof            \u8F38\u51FA CPU \u5206\u6790\u8CC7\u6599\n    -Xfuture          \u555F\u7528\u6700\u56B4\u683C\u7684\u6AA2\u67E5\uFF0C\u9810\u5148\u4F5C\u70BA\u5C07\u4F86\u7684\u9810\u8A2D\n    -Xrs              \u6E1B\u5C11 Java/VM \u4F7F\u7528\u4F5C\u696D\u7CFB\u7D71\u4FE1\u865F (\u8ACB\u53C3\u95B1\u6587\u4EF6)\n    -Xcheck:jni       \u57F7\u884C\u5176\u4ED6\u7684 JNI \u51FD\u6578\u6AA2\u67E5\n    -Xshare:off       \u4E0D\u5617\u8A66\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\n    -Xshare:auto      \u5118\u53EF\u80FD\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599 (\u9810\u8A2D)\n    -Xshare:on        \u9700\u8981\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\uFF0C\u5426\u5247\u5931\u6557\u3002\n    -XshowSettings    \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n    -XshowSettings:all\n                      \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n    -XshowSettings:vm \u986F\u793A\u6240\u6709 VM \u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n    -XshowSettings:properties\n                      \u986F\u793A\u6240\u6709\u5C6C\u6027\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n    -XshowSettings:locale\n                      \u986F\u793A\u6240\u6709\u5730\u5340\u8A2D\u5B9A\u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n\n -X \u9078\u9805\u4E0D\u662F\u6A19\u6E96\u9078\u9805\uFF0C\u82E5\u6709\u8B8A\u66F4\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
+java.launcher.X.usage=\    -Xmixed           \u6DF7\u5408\u6A21\u5F0F\u57F7\u884C (\u9810\u8A2D)\n    -Xint             \u50C5\u9650\u89E3\u8B6F\u6A21\u5F0F\u57F7\u884C\n    -Xbootclasspath/a:<\u4EE5 {0} \u5206\u9694\u7684\u76EE\u9304\u548C zip/jar \u6A94\u6848>\n                      \u9644\u52A0\u5728\u555F\u52D5\u5B89\u88DD\u985E\u5225\u8DEF\u5F91\u7684\u7D50\u5C3E\n    -Xdiag            \u986F\u793A\u5176\u4ED6\u7684\u8A3A\u65B7\u8A0A\u606F\n    -Xdiag:resolver   \u986F\u793A\u89E3\u6790\u5668\u8A3A\u65B7\u8A0A\u606F\n    -Xnoclassgc       \u505C\u7528\u985E\u5225\u8CC7\u6E90\u56DE\u6536\n    -Xincgc           \u555F\u7528\u6F38\u9032\u8CC7\u6E90\u56DE\u6536\n    -Xloggc:<file>    \u5C07 GC \u72C0\u614B\u548C\u6642\u6233\u8A18\u9304\u81F3\u6A94\u6848\n    -Xbatch           \u505C\u7528\u80CC\u666F\u7DE8\u8B6F\n    -Xms<size>        \u8A2D\u5B9A\u8D77\u59CB Java \u5806\u96C6\u5927\u5C0F\n    -Xmx<size>        \u8A2D\u5B9A Java \u5806\u96C6\u5927\u5C0F\u4E0A\u9650\n    -Xss<size>        \u8A2D\u5B9A Java \u57F7\u884C\u7DD2\u5806\u758A\u5927\u5C0F\n    -Xprof            \u8F38\u51FA CPU \u5206\u6790\u8CC7\u6599\n    -Xfuture          \u555F\u7528\u6700\u56B4\u683C\u7684\u6AA2\u67E5\uFF0C\u9810\u5148\u4F5C\u70BA\u5C07\u4F86\u7684\u9810\u8A2D\n    -Xrs              \u6E1B\u5C11 Java/VM \u4F7F\u7528\u4F5C\u696D\u7CFB\u7D71\u4FE1\u865F (\u8ACB\u53C3\u95B1\u6587\u4EF6)\n    -Xcheck:jni       \u57F7\u884C\u5176\u4ED6\u7684 JNI \u51FD\u6578\u6AA2\u67E5\n    -Xshare:off       \u4E0D\u5617\u8A66\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\n    -Xshare:auto      \u5118\u53EF\u80FD\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599 (\u9810\u8A2D)\n    -Xshare:on        \u9700\u8981\u4F7F\u7528\u5171\u7528\u985E\u5225\u8CC7\u6599\uFF0C\u5426\u5247\u5931\u6557\u3002\n    -XshowSettings    \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n    -XshowSettings:all\n                      \u986F\u793A\u6240\u6709\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n    -XshowSettings:vm \u986F\u793A\u6240\u6709 VM \u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n    -XshowSettings:properties\n                      \u986F\u793A\u6240\u6709\u5C6C\u6027\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n    -XshowSettings:locale\n                      \u986F\u793A\u6240\u6709\u5730\u5340\u8A2D\u5B9A\u76F8\u95DC\u8A2D\u5B9A\u503C\u4E26\u7E7C\u7E8C\n    -XaddReads:<module>=<other-module>(,<other-module>)*\n                      \u7121\u8AD6\u6A21\u7D44\u5BA3\u544A\u70BA\u4F55\uFF0C\n                      <module> \u6703\u8B80\u53D6\u5176\u4ED6\u6A21\u7D44\n    -XaddExports:<module>/<package>=<other-module>(,<other-module>)*\n                      \u7121\u8AD6\u6A21\u7D44\u5BA3\u544A\u70BA\u4F55\uFF0C<module> \u6703\u5C07 <package>\n                      \u532F\u51FA\u81F3\u5176\u4ED6\u6A21\u7D44\n    -Xpatch:<module>=<file>({0}<file>)*\n                      \u8986\u5BEB\u6216\u52A0\u5F37 JAR \u6A94\u6848\u6216\u76EE\u9304\u4E2D\u7684\n                      \u6A21\u7D44\u985E\u578B\u548C\u8CC7\u6E90\n    -Xdisable-@files  \u505C\u7528\u9032\u4E00\u6B65\u7684\u5F15\u6578\u6A94\u6848\u64F4\u5145\n\n-X  \u9078\u9805\u4E0D\u662F\u6A19\u6E96\u9078\u9805\uFF0C\u82E5\u6709\u8B8A\u66F4\u4E0D\u53E6\u884C\u901A\u77E5\u3002\n
 
 # Translators please note do not translate the options themselves
 java.launcher.X.macosx.usage=\n\u4E0B\u5217\u662F Mac OS X \u7279\u5B9A\u9078\u9805:\n    -XstartOnFirstThread\n                      \u5728\u7B2C\u4E00\u500B (AppKit) \u57F7\u884C\u7DD2\u57F7\u884C main() \u65B9\u6CD5\n    -Xdock:name=<application name>"\n                      \u8986\u5BEB\u7D50\u5408\u8AAA\u660E\u756B\u9762\u4E2D\u986F\u793A\u7684\u9810\u8A2D\u61C9\u7528\u7A0B\u5F0F\u540D\u7A31\n    -Xdock:icon=<path to icon file>\n                      \u8986\u5BEB\u7D50\u5408\u8AAA\u660E\u756B\u9762\u4E2D\u986F\u793A\u7684\u9810\u8A2D\u5716\u793A\n\n
 
 java.launcher.cls.error1=\u932F\u8AA4: \u627E\u4E0D\u5230\u6216\u7121\u6CD5\u8F09\u5165\u4E3B\u8981\u985E\u5225 {0}
 java.launcher.cls.error2=\u932F\u8AA4: \u4E3B\u8981\u65B9\u6CD5\u4E0D\u662F\u985E\u5225 {1} \u4E2D\u7684 {0}\uFF0C\u8ACB\u5B9A\u7FA9\u4E3B\u8981\u65B9\u6CD5\u70BA:\n   public static void main(String[] args)
-java.launcher.cls.error3=\u932F\u8AA4: \u4E3B\u8981\u65B9\u6CD5\u5FC5\u9808\u50B3\u56DE\u985E\u5225 {0} \u4E2D void \u985E\u578B\u7684\u503C\uFF0C \n\u8ACB\u5B9A\u7FA9\u4E3B\u8981\u65B9\u6CD5\u70BA:\n   public static void main(String[] args)
+java.launcher.cls.error3=\u932F\u8AA4: \u4E3B\u8981\u65B9\u6CD5\u5FC5\u9808\u50B3\u56DE\u985E\u5225 {0} \u4E2D void \u985E\u578B\u7684\u503C\uFF0C\n\u8ACB\u5B9A\u7FA9\u4E3B\u8981\u65B9\u6CD5\u70BA:\n   public static void main(String[] args)
 java.launcher.cls.error4=\u932F\u8AA4: \u5728\u985E\u5225 {0} \u4E2D\u627E\u4E0D\u5230\u4E3B\u8981\u65B9\u6CD5\uFF0C\u8ACB\u5B9A\u7FA9\u4E3B\u8981\u65B9\u6CD5\u70BA:\n   public static void main(String[] args)\n\u6216\u8005 JavaFX \u61C9\u7528\u7A0B\u5F0F\u985E\u5225\u5FC5\u9808\u64F4\u5145 {1}
 java.launcher.cls.error5=\u932F\u8AA4: \u907A\u6F0F\u57F7\u884C\u6B64\u61C9\u7528\u7A0B\u5F0F\u6240\u9700\u7684 JavaFX \u7A0B\u5F0F\u5BE6\u969B\u57F7\u884C\u5143\u4EF6
 java.launcher.jar.error1=\u932F\u8AA4: \u5617\u8A66\u958B\u555F\u6A94\u6848 {0} \u6642\u767C\u751F\u672A\u9810\u671F\u7684\u932F\u8AA4
@@ -52,3 +53,5 @@
 java.launcher.jar.error3={0} \u4E2D\u6C92\u6709\u4E3B\u8981\u8CC7\u8A0A\u6E05\u55AE\u5C6C\u6027
 java.launcher.init.error=\u521D\u59CB\u5316\u932F\u8AA4
 java.launcher.javafx.error1=\u932F\u8AA4: JavaFX launchApplication \u65B9\u6CD5\u7684\u7C3D\u7AE0\u932F\u8AA4\uFF0C\u5B83\n\u5FC5\u9808\u5BA3\u544A\u70BA\u975C\u614B\u4E26\u50B3\u56DE void \u985E\u578B\u7684\u503C
+java.launcher.module.error1=\u6A21\u7D44 {0} \u4E0D\u542B MainClass \u5C6C\u6027\uFF0C\u8ACB\u4F7F\u7528 -m <module>/<main-class>
+java.launcher.module.error2=\u932F\u8AA4: \u627E\u4E0D\u5230\u6216\u7121\u6CD5\u8F09\u5165\u6A21\u7D44 {1} \u4E2D\u7684\u4E3B\u8981\u985E\u5225 {0}
--- a/jdk/src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	Wed Jul 05 21:51:13 2017 +0200
@@ -62,7 +62,7 @@
         // Handle Object and Annotation methods
         if (member.equals("equals") && paramTypes.length == 1 &&
             paramTypes[0] == Object.class)
-            return equalsImpl(args[0]);
+            return equalsImpl(proxy, args[0]);
         if (paramTypes.length != 0)
             throw new AssertionError("Too many parameters for an annotation method");
 
@@ -209,8 +209,8 @@
     /**
      * Implementation of dynamicProxy.equals(Object o)
      */
-    private Boolean equalsImpl(Object o) {
-        if (o == this)
+    private Boolean equalsImpl(Object proxy, Object o) {
+        if (o == proxy)
             return true;
 
         if (!type.isInstance(o))
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Main.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Main.java	Wed Jul 05 21:51:13 2017 +0200
@@ -3274,6 +3274,11 @@
         // we parsed them using an X.509 certificate factory
         int i;
         PublicKey userPubKey = userCert.getPublicKey();
+
+        // Remove duplicated certificates.
+        HashSet<Certificate> nodup = new HashSet<>(Arrays.asList(replyCerts));
+        replyCerts = nodup.toArray(new Certificate[nodup.size()]);
+
         for (i=0; i<replyCerts.length; i++) {
             if (userPubKey.equals(replyCerts[i].getPublicKey())) {
                 break;
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_de.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_de.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.tools.keytool;
 
 /**
- * This class represents the <code>ResourceBundle</code>
+ * <p> This class represents the <code>ResourceBundle</code>
  * for the keytool.
  *
  */
@@ -48,7 +48,7 @@
                  "Schl\u00FCssel- und Zertifikatsverwaltungstool"},
         {"Commands.", "Befehle:"},
         {"Use.keytool.command.name.help.for.usage.of.command.name",
-                "\"keytool -command_name -help\" f\u00FCr Verwendung von command_name verwenden"},
+                "Verwenden Sie \"keytool -command_name -help\" f\u00FCr die Verwendung von command_name.\nVerwenden Sie die Option -conf <url>, um eine vorkonfigurierte Optionsdatei anzugeben."},
         // keytool: help: commands
         {"Generates.a.certificate.request",
                 "Generiert eine Zertifikatanforderung"}, //-certreq
@@ -72,7 +72,7 @@
         {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
                 "Importiert Eintr\u00E4ge aus einer Identity-Datenbank im JDK 1.1.x-Stil"}, //-identitydb
         {"Imports.a.certificate.or.a.certificate.chain",
-                "Importiert ein Zertifikat oder eine Zertifikatkette"}, //-importcert
+                "Importiert ein Zertifikat oder eine Zertifikatskette"}, //-importcert
         {"Imports.a.password",
                 "Importiert ein Kennwort"}, //-importpass
         {"Imports.one.or.all.entries.from.another.keystore",
@@ -304,9 +304,9 @@
                 "{0}, {1,date}, "},
         {"alias.", "{0}, "},
         {"Entry.type.type.", "Eintragstyp: {0}"},
-        {"Certificate.chain.length.", "Zertifikatkettenl\u00E4nge: "},
+        {"Certificate.chain.length.", "Zertifikatskettenl\u00E4nge: "},
         {"Certificate.i.1.", "Zertifikat[{0,number,integer}]:"},
-        {"Certificate.fingerprint.SHA1.", "Zertifikat-Fingerprint (SHA1): "},
+        {"Certificate.fingerprint.SHA.256.", "Zertifikat-Fingerprint (SHA-256): "},
         {"Keystore.type.", "Keystore-Typ: "},
         {"Keystore.provider.", "Keystore-Provider: "},
         {"Your.keystore.contains.keyStore.size.entry",
@@ -346,7 +346,7 @@
         {".RETURN.if.same.as.for.otherAlias.",
                 "\t(RETURN, wenn identisch mit <{0}>)"},
         {".PATTERN.printX509Cert",
-                "Eigent\u00FCmer: {0}\nAussteller: {1}\nSeriennummer: {2}\nG\u00FCltig von: {3} bis: {4}\nZertifikat-Fingerprints:\n\t MD5:  {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Signaturalgorithmusname: {8}\n\t Version: {9}"},
+                "Eigent\u00FCmer: {0}\nAussteller: {1}\nSeriennummer: {2}\nG\u00FCltig von: {3} bis: {4}\nZertifikatfingerprints:\n\t SHA1: {5}\n\t SHA256: {6}\nSignaturalgorithmusname: {7}\nAlgorithmus des Public Key von Betreff: {8} ({9,number,#})\nVersion: {10}"},
         {"What.is.your.first.and.last.name.",
                 "Wie lautet Ihr Vor- und Nachname?"},
         {"What.is.the.name.of.your.organizational.unit.",
@@ -367,7 +367,7 @@
         {"Alias.alias.has.no.key",
                 "Alias <{0}> verf\u00FCgt \u00FCber keinen Schl\u00FCssel"},
         {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
-                 "Alias <{0}> verweist auf einen Eintragstyp, der kein Private Key-Eintrag ist. Der Befehl -keyclone unterst\u00FCtzt nur das Clonen von Private Key-Eintr\u00E4gen"},
+                 "Alias <{0}> verweist auf einen Eintragstyp, der kein Private Key-Eintrag ist. Der Befehl -keyclone unterst\u00FCtzt nur das Klonen von Private Key-Eintr\u00E4gen"},
 
         {".WARNING.WARNING.WARNING.",
             "*****************  WARNING WARNING WARNING  *****************"},
@@ -388,9 +388,9 @@
         {"Certificate.reply.does.not.contain.public.key.for.alias.",
                 "Zertifikatantwort enth\u00E4lt keinen Public Key f\u00FCr <{0}>"},
         {"Incomplete.certificate.chain.in.reply",
-                "Unvollst\u00E4ndige Zertifikatkette in Antwort"},
+                "Unvollst\u00E4ndige Zertifikatskette in Antwort"},
         {"Certificate.chain.in.reply.does.not.verify.",
-                "Zertifikatkette in Antwort verifiziert nicht: "},
+                "Zertifikatskette in Antwort verifiziert nicht: "},
         {"Top.level.certificate.in.reply.",
                 "Zertifikat der obersten Ebene in Antwort:\n"},
         {".is.not.trusted.", "... ist nicht vertrauensw\u00FCrdig. "},
@@ -433,6 +433,8 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
+     * <p>
+     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_es.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_es.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.tools.keytool;
 
 /**
- * This class represents the <code>ResourceBundle</code>
+ * <p> This class represents the <code>ResourceBundle</code>
  * for the keytool.
  *
  */
@@ -48,7 +48,7 @@
                  "Herramienta de Gesti\u00F3n de Certificados y Claves"},
         {"Commands.", "Comandos:"},
         {"Use.keytool.command.name.help.for.usage.of.command.name",
-                "Utilice \"keytool -command_name -help\" para la sintaxis de nombre_comando"},
+                "Utilice \"keytool -command_name -help\" para la sintaxis de nombre_comando.\nUtilice la opci\u00F3n -conf <url> para especificar un archivo de opciones preconfigurado."},
         // keytool: help: commands
         {"Generates.a.certificate.request",
                 "Genera una solicitud de certificado"}, //-certreq
@@ -306,7 +306,7 @@
         {"Entry.type.type.", "Tipo de Entrada: {0}"},
         {"Certificate.chain.length.", "Longitud de la Cadena de Certificado: "},
         {"Certificate.i.1.", "Certificado[{0,number,integer}]:"},
-        {"Certificate.fingerprint.SHA1.", "Huella Digital de Certificado (SHA1): "},
+        {"Certificate.fingerprint.SHA.256.", "Huella de certificado (SHA-256): "},
         {"Keystore.type.", "Tipo de Almac\u00E9n de Claves: "},
         {"Keystore.provider.", "Proveedor de Almac\u00E9n de Claves: "},
         {"Your.keystore.contains.keyStore.size.entry",
@@ -346,7 +346,7 @@
         {".RETURN.if.same.as.for.otherAlias.",
                 "\t(INTRO si es el mismo que para <{0}>)"},
         {".PATTERN.printX509Cert",
-                "Propietario: {0}\nEmisor: {1}\nN\u00FAmero de serie: {2}\nV\u00E1lido desde: {3} hasta: {4}\nHuellas digitales del Certificado:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Nombre del Algoritmo de Firma: {8}\n\t Versi\u00F3n: {9}"},
+                "Propietario: {0}\nEmisor: {1}\nN\u00FAmero de serie: {2}\nV\u00E1lido desde: {3} hasta: {4}\nHuellas digitales del certificado:\n\t SHA1: {5}\n\t SHA256: {6}\nNombre del algoritmo de firma: {7}\nAlgoritmo de clave p\u00FAblica de asunto: {8} ({9,number,#})\nVersi\u00F3n: {10}"},
         {"What.is.your.first.and.last.name.",
                 "\u00BFCu\u00E1les son su nombre y su apellido?"},
         {"What.is.the.name.of.your.organizational.unit.",
@@ -433,6 +433,8 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
+     * <p>
+     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_fr.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_fr.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.tools.keytool;
 
 /**
- * This class represents the <code>ResourceBundle</code>
+ * <p> This class represents the <code>ResourceBundle</code>
  * for the keytool.
  *
  */
@@ -48,7 +48,7 @@
                  "Outil de gestion de certificats et de cl\u00E9s"},
         {"Commands.", "Commandes :"},
         {"Use.keytool.command.name.help.for.usage.of.command.name",
-                "Utiliser \"keytool -command_name -help\" pour la syntaxe de command_name"},
+                "Utilisez \"keytool -command_name -help\" pour la syntaxe de command_name.\nUtilisez l'option -conf <url> pour indiquer un fichier d'options pr\u00E9configur\u00E9es."},
         // keytool: help: commands
         {"Generates.a.certificate.request",
                 "G\u00E9n\u00E8re une demande de certificat"}, //-certreq
@@ -306,7 +306,7 @@
         {"Entry.type.type.", "Type d''entr\u00E9e\u00A0: {0}"},
         {"Certificate.chain.length.", "Longueur de cha\u00EEne du certificat : "},
         {"Certificate.i.1.", "Certificat[{0,number,integer}]:"},
-        {"Certificate.fingerprint.SHA1.", "Empreinte du certificat (SHA1) : "},
+        {"Certificate.fingerprint.SHA.256.", "Empreinte du certificat (SHA-256) : "},
         {"Keystore.type.", "Type de fichier de cl\u00E9s : "},
         {"Keystore.provider.", "Fournisseur de fichier de cl\u00E9s : "},
         {"Your.keystore.contains.keyStore.size.entry",
@@ -346,7 +346,7 @@
         {".RETURN.if.same.as.for.otherAlias.",
                 "\t(appuyez sur Entr\u00E9e si le r\u00E9sultat est identique \u00E0 <{0}>)"},
         {".PATTERN.printX509Cert",
-                "Propri\u00E9taire : {0}\nEmetteur : {1}\nNum\u00E9ro de s\u00E9rie : {2}\nValide du : {3} au : {4}\nEmpreintes du certificat :\n\t MD5:  {5}\n\t SHA1 : {6}\n\t SHA256 : {7}\n\t Nom de l''algorithme de signature : {8}\n\t Version : {9}"},
+                "Propri\u00E9taire : {0}\nEmetteur : {1}\nNum\u00E9ro de s\u00E9rie : {2}\nValide du : {3} au : {4}\nEmpreintes du certificat :\n\t SHA1 : {5}\n\t SHA256 : {6}\nNom de l''algorithme de signature : {7}\nAlgorithme de cl\u00E9 publique du sujet : {8} ({9,number,#})\nVersion : {10}"},
         {"What.is.your.first.and.last.name.",
                 "Quels sont vos nom et pr\u00E9nom ?"},
         {"What.is.the.name.of.your.organizational.unit.",
@@ -433,6 +433,8 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
+     * <p>
+     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_it.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_it.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.tools.keytool;
 
 /**
- * This class represents the <code>ResourceBundle</code>
+ * <p> This class represents the <code>ResourceBundle</code>
  * for the keytool.
  *
  */
@@ -48,7 +48,7 @@
                  "Strumento di gestione di chiavi e certificati"},
         {"Commands.", "Comandi:"},
         {"Use.keytool.command.name.help.for.usage.of.command.name",
-                "Utilizzare \"keytool -command_name -help\" per informazioni sull'uso di command_name"},
+                "Utilizzare \"keytool -command_name -help\" per informazioni sull'uso di command_name.\nUtilizzare l'opzione -conf <url> per specificare un file di opzioni preconfigurato."},
         // keytool: help: commands
         {"Generates.a.certificate.request",
                 "Genera una richiesta di certificato"}, //-certreq
@@ -306,7 +306,7 @@
         {"Entry.type.type.", "Tipo di voce: {0}"},
         {"Certificate.chain.length.", "Lunghezza catena certificati: "},
         {"Certificate.i.1.", "Certificato[{0,number,integer}]:"},
-        {"Certificate.fingerprint.SHA1.", "Impronta digitale certificato (SHA1): "},
+        {"Certificate.fingerprint.SHA.256.", "Copia di certificato (SHA-256): "},
         {"Keystore.type.", "Tipo keystore: "},
         {"Keystore.provider.", "Provider keystore: "},
         {"Your.keystore.contains.keyStore.size.entry",
@@ -346,7 +346,7 @@
         {".RETURN.if.same.as.for.otherAlias.",
                 "\t(INVIO se corrisponde al nome di <{0}>)"},
         {".PATTERN.printX509Cert",
-                "Proprietario: {0}\nAutorit\u00E0 emittente: {1}\nNumero di serie: {2}\nValido da: {3} a: {4}\nImpronte digitali certificato:\n\t MD5:  {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Nome algoritmo firma: {8}\n\t Versione: {9}"},
+                "Proprietario: {0}\nEmittente: {1}\nNumero di serie: {2}\nValido da: {3} a: {4}\nCopie di certificato:\n\t SHA1: {5}\n\t SHA256: {6}\nNome algoritmo firma: {7}\nAlgoritmo di chiave pubblica oggetto: {8} ({9,number,#})\nVersione: {10}"},
         {"What.is.your.first.and.last.name.",
                 "Specificare nome e cognome"},
         {"What.is.the.name.of.your.organizational.unit.",
@@ -433,6 +433,8 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
+     * <p>
+     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_ja.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_ja.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.tools.keytool;
 
 /**
- * This class represents the <code>ResourceBundle</code>
+ * <p> This class represents the <code>ResourceBundle</code>
  * for the keytool.
  *
  */
@@ -48,7 +48,7 @@
                  "\u30AD\u30FC\u304A\u3088\u3073\u8A3C\u660E\u66F8\u7BA1\u7406\u30C4\u30FC\u30EB"},
         {"Commands.", "\u30B3\u30DE\u30F3\u30C9:"},
         {"Use.keytool.command.name.help.for.usage.of.command.name",
-                "command_name\u306E\u4F7F\u7528\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306F\"keytool -command_name -help\"\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"},
+                "command_name\u306E\u4F7F\u7528\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306F\u3001\"keytool -command_name -help\"\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\n\u4E8B\u524D\u69CB\u6210\u6E08\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u6307\u5B9A\u3059\u308B\u306B\u306F\u3001-conf <url>\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002"},
         // keytool: help: commands
         {"Generates.a.certificate.request",
                 "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u751F\u6210\u3057\u307E\u3059"}, //-certreq
@@ -248,7 +248,7 @@
                  "\u65E2\u5B58\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u5225\u540D{0}\u304C\u5B58\u5728\u3057\u3066\u3044\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\u3002[\u3044\u3044\u3048]:  "},
         {"Too.many.failures.try.later", "\u969C\u5BB3\u304C\u591A\u3059\u304E\u307E\u3059 - \u5F8C\u3067\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044"},
         {"Certification.request.stored.in.file.filename.",
-                "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u30D5\u30A1\u30A4\u30EB<{0}>\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F"},
+                "\u8A8D\u8A3C\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u30D5\u30A1\u30A4\u30EB<{0}>\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F"},
         {"Submit.this.to.your.CA", "\u3053\u308C\u3092CA\u306B\u63D0\u51FA\u3057\u3066\u304F\u3060\u3055\u3044"},
         {"if.alias.not.specified.destalias.and.srckeypass.must.not.be.specified",
             "\u5225\u540D\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u3001\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u5225\u540D\u304A\u3088\u3073\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093"},
@@ -306,7 +306,7 @@
         {"Entry.type.type.", "\u30A8\u30F3\u30C8\u30EA\u30FB\u30BF\u30A4\u30D7: {0}"},
         {"Certificate.chain.length.", "\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u306E\u9577\u3055: "},
         {"Certificate.i.1.", "\u8A3C\u660E\u66F8[{0,number,integer}]:"},
-        {"Certificate.fingerprint.SHA1.", "\u8A3C\u660E\u66F8\u306E\u30D5\u30A3\u30F3\u30AC\u30D7\u30EA\u30F3\u30C8(SHA1): "},
+        {"Certificate.fingerprint.SHA.256.", "\u8A3C\u660E\u66F8\u306E\u30D5\u30A3\u30F3\u30AC\u30D7\u30EA\u30F3\u30C8(SHA-256): "},
         {"Keystore.type.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7: "},
         {"Keystore.provider.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0: "},
         {"Your.keystore.contains.keyStore.size.entry",
@@ -346,22 +346,22 @@
         {".RETURN.if.same.as.for.otherAlias.",
                 "\t(<{0}>\u3068\u540C\u3058\u5834\u5408\u306FRETURN\u3092\u62BC\u3057\u3066\u304F\u3060\u3055\u3044)"},
         {".PATTERN.printX509Cert",
-                "\u6240\u6709\u8005: {0}\n\u767A\u884C\u8005: {1}\n\u30B7\u30EA\u30A2\u30EB\u756A\u53F7: {2}\n\u6709\u52B9\u671F\u9593\u306E\u958B\u59CB\u65E5: {3}\u7D42\u4E86\u65E5: {4}\n\u8A3C\u660E\u66F8\u306E\u30D5\u30A3\u30F3\u30AC\u30D7\u30EA\u30F3\u30C8:\n\t MD5:  {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D: {8}\n\t \u30D0\u30FC\u30B8\u30E7\u30F3: {9}"},
+                "\u6240\u6709\u8005: {0}\n\u767A\u884C\u8005: {1}\n\u30B7\u30EA\u30A2\u30EB\u756A\u53F7: {2}\n\u6709\u52B9\u671F\u9593\u306E\u958B\u59CB\u65E5: {3}\u7D42\u4E86\u65E5: {4}\n\u8A3C\u660E\u66F8\u306E\u30D5\u30A3\u30F3\u30AC\u30D7\u30EA\u30F3\u30C8:\n\t SHA1: {5}\n\t SHA256: {6}\n\u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u540D: {7}\n\u30B5\u30D6\u30B8\u30A7\u30AF\u30C8\u516C\u958B\u9375\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0: {8} ({9,number,#})\n\u30D0\u30FC\u30B8\u30E7\u30F3: {10}"},
         {"What.is.your.first.and.last.name.",
-                "\u59D3\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+                "\u59D3\u540D\u306F\u4F55\u3067\u3059\u304B\u3002"},
         {"What.is.the.name.of.your.organizational.unit.",
-                "\u7D44\u7E54\u5358\u4F4D\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+                "\u7D44\u7E54\u5358\u4F4D\u540D\u306F\u4F55\u3067\u3059\u304B\u3002"},
         {"What.is.the.name.of.your.organization.",
-                "\u7D44\u7E54\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+                "\u7D44\u7E54\u540D\u306F\u4F55\u3067\u3059\u304B\u3002"},
         {"What.is.the.name.of.your.City.or.Locality.",
-                "\u90FD\u5E02\u540D\u307E\u305F\u306F\u5730\u57DF\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+                "\u90FD\u5E02\u540D\u307E\u305F\u306F\u5730\u57DF\u540D\u306F\u4F55\u3067\u3059\u304B\u3002"},
         {"What.is.the.name.of.your.State.or.Province.",
-                "\u90FD\u9053\u5E9C\u770C\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+                "\u90FD\u9053\u5E9C\u770C\u540D\u307E\u305F\u306F\u5DDE\u540D\u306F\u4F55\u3067\u3059\u304B\u3002"},
         {"What.is.the.two.letter.country.code.for.this.unit.",
-                "\u3053\u306E\u5358\u4F4D\u306B\u8A72\u5F53\u3059\u308B2\u6587\u5B57\u306E\u56FD\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
+                "\u3053\u306E\u5358\u4F4D\u306B\u8A72\u5F53\u3059\u308B2\u6587\u5B57\u306E\u56FD\u30B3\u30FC\u30C9\u306F\u4F55\u3067\u3059\u304B\u3002"},
         {"Is.name.correct.", "{0}\u3067\u3088\u308D\u3057\u3044\u3067\u3059\u304B\u3002"},
         {"no", "\u3044\u3044\u3048"},
-        {"yes", "\u306F\u3044"},
+        {"yes", "yes"},
         {"y", "y"},
         {".defaultValue.", "  [{0}]:  "},
         {"Alias.alias.has.no.key",
@@ -433,6 +433,8 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
+     * <p>
+     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_ko.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_ko.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.tools.keytool;
 
 /**
- * This class represents the <code>ResourceBundle</code>
+ * <p> This class represents the <code>ResourceBundle</code>
  * for the keytool.
  *
  */
@@ -48,7 +48,7 @@
                  "\uD0A4 \uBC0F \uC778\uC99D\uC11C \uAD00\uB9AC \uD234"},
         {"Commands.", "\uBA85\uB839:"},
         {"Use.keytool.command.name.help.for.usage.of.command.name",
-                "command_name \uC0AC\uC6A9\uBC95\uC5D0 \"keytool -command_name -help\" \uC0AC\uC6A9"},
+                "command_name \uC0AC\uC6A9\uBC95\uC5D0 \"keytool -command_name -help\"\uB97C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n-conf <url> \uC635\uC158\uC744 \uC0AC\uC6A9\uD558\uC5EC \uC0AC\uC804 \uAD6C\uC131\uB41C \uC635\uC158 \uD30C\uC77C\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4."},
         // keytool: help: commands
         {"Generates.a.certificate.request",
                 "\uC778\uC99D\uC11C \uC694\uCCAD\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-certreq
@@ -306,7 +306,7 @@
         {"Entry.type.type.", "\uD56D\uBAA9 \uC720\uD615: {0}"},
         {"Certificate.chain.length.", "\uC778\uC99D\uC11C \uCCB4\uC778 \uAE38\uC774: "},
         {"Certificate.i.1.", "\uC778\uC99D\uC11C[{0,number,integer}]:"},
-        {"Certificate.fingerprint.SHA1.", "\uC778\uC99D\uC11C \uC9C0\uBB38(SHA1): "},
+        {"Certificate.fingerprint.SHA.256.", "\uC778\uC99D\uC11C \uC9C0\uBB38(SHA-256): "},
         {"Keystore.type.", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615: "},
         {"Keystore.provider.", "\uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790: "},
         {"Your.keystore.contains.keyStore.size.entry",
@@ -346,7 +346,7 @@
         {".RETURN.if.same.as.for.otherAlias.",
                 "\t(<{0}>\uACFC(\uC640) \uB3D9\uC77C\uD55C \uACBD\uC6B0 Enter \uD0A4\uB97C \uB204\uB984)"},
         {".PATTERN.printX509Cert",
-                "\uC18C\uC720\uC790: {0}\n\uBC1C\uD589\uC790: {1}\n\uC77C\uB828 \uBC88\uD638: {2}\n\uC801\uD569\uD55C \uC2DC\uC791 \uB0A0\uC9DC: {3}, \uC885\uB8CC \uB0A0\uC9DC: {4}\n\uC778\uC99D\uC11C \uC9C0\uBB38:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998 \uC774\uB984: {8}\n\t \uBC84\uC804: {9}"},
+                "\uC18C\uC720\uC790: {0}\n\uBC1C\uD589\uC790: {1}\n\uC77C\uB828 \uBC88\uD638: {2}\n\uC801\uD569\uD55C \uC2DC\uC791 \uB0A0\uC9DC: {3} \uC885\uB8CC \uB0A0\uC9DC: {4}\n\uC778\uC99D\uC11C \uC9C0\uBB38:\n\t SHA1: {5}\n\t SHA256: {6}\n\uC11C\uBA85 \uC54C\uACE0\uB9AC\uC998 \uC774\uB984: {7}\n\uC8FC\uCCB4 \uACF5\uC6A9 \uD0A4 \uC54C\uACE0\uB9AC\uC998: {8} ({9,number,#})\n\uBC84\uC804: {10}"},
         {"What.is.your.first.and.last.name.",
                 "\uC774\uB984\uACFC \uC131\uC744 \uC785\uB825\uD558\uC2ED\uC2DC\uC624."},
         {"What.is.the.name.of.your.organizational.unit.",
@@ -433,6 +433,8 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
+     * <p>
+     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_pt_BR.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_pt_BR.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.tools.keytool;
 
 /**
- * This class represents the <code>ResourceBundle</code>
+ * <p> This class represents the <code>ResourceBundle</code>
  * for the keytool.
  *
  */
@@ -48,14 +48,14 @@
                  "Ferramenta de Gerenciamento de Chave e Certificado"},
         {"Commands.", "Comandos:"},
         {"Use.keytool.command.name.help.for.usage.of.command.name",
-                "Use \"keytool -command_name -help\" para uso de command_name"},
+                "Utilize \"keytool -command_name -help\" para uso de command_name.\nUtilize a op\u00E7\u00E3o -conf <url> para especificar um arquivo de op\u00E7\u00F5es pr\u00E9-configurado."},
         // keytool: help: commands
         {"Generates.a.certificate.request",
                 "Gera uma solicita\u00E7\u00E3o de certificado"}, //-certreq
         {"Changes.an.entry.s.alias",
                 "Altera um alias de entrada"}, //-changealias
         {"Deletes.an.entry",
-                "Deleta uma entrada"}, //-delete
+                "Exclui uma entrada"}, //-delete
         {"Exports.certificate",
                 "Exporta o certificado"}, //-exportcert
         {"Generates.a.key.pair",
@@ -306,7 +306,7 @@
         {"Entry.type.type.", "Tipo de entrada: {0}"},
         {"Certificate.chain.length.", "Comprimento da cadeia de certificados: "},
         {"Certificate.i.1.", "Certificado[{0,number,integer}]:"},
-        {"Certificate.fingerprint.SHA1.", "Fingerprint (SHA1) do certificado: "},
+        {"Certificate.fingerprint.SHA.256.", "Fingerprint (SHA-256) do certificado: "},
         {"Keystore.type.", "Tipo de \u00E1rea de armazenamento de chaves: "},
         {"Keystore.provider.", "Fornecedor da \u00E1rea de armazenamento de chaves: "},
         {"Your.keystore.contains.keyStore.size.entry",
@@ -346,7 +346,7 @@
         {".RETURN.if.same.as.for.otherAlias.",
                 "\t(RETURN se for igual ao de <{0}>)"},
         {".PATTERN.printX509Cert",
-                "Propriet\u00E1rio: {0}\nEmissor: {1}\nN\u00FAmero de s\u00E9rie: {2}\nV\u00E1lido de: {3} a: {4}\nFingerprints do certificado:\n\t MD5:  {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Nome do algoritmo de assinatura: {8}\n\t Vers\u00E3o: {9}"},
+                "Propriet\u00E1rio: {0}\nEmissor: {1}\nN\u00FAmero de s\u00E9rie: {2}\nV\u00E1lido de {3} at\u00E9 {4}\nFingerprints do certificado:\n\t SHA1: {5}\n\t SHA256: {6}\nNome do algoritmo de assinatura: {7}\nAlgoritmo de Chave P\u00FAblica do Assunto: {8} ({9,number,#})\nVers\u00E3o: {10}"},
         {"What.is.your.first.and.last.name.",
                 "Qual \u00E9 o seu nome e o seu sobrenome?"},
         {"What.is.the.name.of.your.organizational.unit.",
@@ -433,6 +433,8 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
+     * <p>
+     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_sv.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_sv.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.tools.keytool;
 
 /**
- * This class represents the <code>ResourceBundle</code>
+ * <p> This class represents the <code>ResourceBundle</code>
  * for the keytool.
  *
  */
@@ -48,7 +48,7 @@
                  "Hanteringsverktyg f\u00F6r nycklar och certifikat"},
         {"Commands.", "Kommandon:"},
         {"Use.keytool.command.name.help.for.usage.of.command.name",
-                "L\u00E4s \"Hj\u00E4lp - Nyckelverktyg - command_name\" om anv\u00E4ndning av command_name"},
+                "Anv\u00E4nd \"keytool -command_name -help\" f\u00F6r syntax f\u00F6r command_name.\nAnv\u00E4nd alternativet -conf <url> f\u00F6r att ange en f\u00F6rkonfigurerad alternativfil."},
         // keytool: help: commands
         {"Generates.a.certificate.request",
                 "Genererar certifikatbeg\u00E4ran"}, //-certreq
@@ -175,7 +175,7 @@
         {"validity.number.of.days",
                 "antal dagar f\u00F6r giltighet"}, //-validity
         {"Serial.ID.of.cert.to.revoke",
-                 "Seriellt ID f\u00F6r certifikat som ska \u00E5terkallas"}, //-id
+                 "Seriellt id f\u00F6r certifikat som ska \u00E5terkallas"}, //-id
         // keytool: Running part
         {"keytool.error.", "nyckelverktygsfel: "},
         {"Illegal.option.", "Otill\u00E5tet alternativ:  "},
@@ -306,7 +306,7 @@
         {"Entry.type.type.", "Posttyp: {0}"},
         {"Certificate.chain.length.", "L\u00E4ngd p\u00E5 certifikatskedja: "},
         {"Certificate.i.1.", "Certifikat[{0,number,integer}]:"},
-        {"Certificate.fingerprint.SHA1.", "Certifikatets fingeravtryck (SHA1): "},
+        {"Certificate.fingerprint.SHA.256.", "Certifikatfingeravtryck (SHA-256): "},
         {"Keystore.type.", "Nyckellagertyp: "},
         {"Keystore.provider.", "Nyckellagerleverant\u00F6r: "},
         {"Your.keystore.contains.keyStore.size.entry",
@@ -346,7 +346,7 @@
         {".RETURN.if.same.as.for.otherAlias.",
                 "\t(RETURN om det \u00E4r det samma som f\u00F6r <{0}>)"},
         {".PATTERN.printX509Cert",
-                "\u00C4gare: {0}\nUtf\u00E4rdare: {1}\nSerienummer: {2}\nGiltigt fr\u00E5n den: {3} till: {4}\nCertifikatets fingeravtryck:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Namn p\u00E5 signaturalgoritm: {8}\n\t Version: {9}"},
+                "\u00C4gare: {0}\nUtf\u00E4rdare: {1}\nSerienummer: {2}\nGiltigt fr\u00E5n: {3}, till: {4}\nCertifikatfingeravtryck:\n\t SHA1: {5}\n\t SHA256: {6}\nSignaturalgoritmnamn: {7}\n\u00C4mne f\u00F6r algoritm f\u00F6r \u00F6ppen nyckel: {8} ({9,number,#})\nVersion: {10}"},
         {"What.is.your.first.and.last.name.",
                 "Vad heter du i f\u00F6r- och efternamn?"},
         {"What.is.the.name.of.your.organizational.unit.",
@@ -373,7 +373,7 @@
             "*****************  WARNING WARNING WARNING  *****************"},
         {"Signer.d.", "Signerare #%d:"},
         {"Timestamp.", "Tidsst\u00E4mpel:"},
-        {"Signature.", "Underskrift:"},
+        {"Signature.", "Signatur:"},
         {"CRLs.", "CRL:er:"},
         {"Certificate.owner.", "Certifikat\u00E4gare: "},
         {"Not.a.signed.jar.file", "Ingen signerad jar-fil"},
@@ -433,6 +433,8 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
+     * <p>
+     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_CN.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_CN.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.tools.keytool;
 
 /**
- * This class represents the <code>ResourceBundle</code>
+ * <p> This class represents the <code>ResourceBundle</code>
  * for the keytool.
  *
  */
@@ -48,7 +48,7 @@
                  "\u5BC6\u94A5\u548C\u8BC1\u4E66\u7BA1\u7406\u5DE5\u5177"},
         {"Commands.", "\u547D\u4EE4:"},
         {"Use.keytool.command.name.help.for.usage.of.command.name",
-                "\u4F7F\u7528 \"keytool -command_name -help\" \u83B7\u53D6 command_name \u7684\u7528\u6CD5"},
+                "\u4F7F\u7528 \"keytool -command_name -help\" \u53EF\u83B7\u53D6 command_name \u7684\u7528\u6CD5\u3002\n\u4F7F\u7528 -conf <url> \u9009\u9879\u53EF\u6307\u5B9A\u9884\u914D\u7F6E\u7684\u9009\u9879\u6587\u4EF6\u3002"},
         // keytool: help: commands
         {"Generates.a.certificate.request",
                 "\u751F\u6210\u8BC1\u4E66\u8BF7\u6C42"}, //-certreq
@@ -306,7 +306,7 @@
         {"Entry.type.type.", "\u6761\u76EE\u7C7B\u578B: {0}"},
         {"Certificate.chain.length.", "\u8BC1\u4E66\u94FE\u957F\u5EA6: "},
         {"Certificate.i.1.", "\u8BC1\u4E66[{0,number,integer}]:"},
-        {"Certificate.fingerprint.SHA1.", "\u8BC1\u4E66\u6307\u7EB9 (SHA1): "},
+        {"Certificate.fingerprint.SHA.256.", "\u8BC1\u4E66\u6307\u7EB9 (SHA-256): "},
         {"Keystore.type.", "\u5BC6\u94A5\u5E93\u7C7B\u578B: "},
         {"Keystore.provider.", "\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9: "},
         {"Your.keystore.contains.keyStore.size.entry",
@@ -346,7 +346,7 @@
         {".RETURN.if.same.as.for.otherAlias.",
                 "\t(\u5982\u679C\u548C <{0}> \u76F8\u540C, \u5219\u6309\u56DE\u8F66)"},
         {".PATTERN.printX509Cert",
-                "\u6240\u6709\u8005: {0}\n\u53D1\u5E03\u8005: {1}\n\u5E8F\u5217\u53F7: {2}\n\u6709\u6548\u671F\u5F00\u59CB\u65E5\u671F: {3}, \u622A\u6B62\u65E5\u671F: {4}\n\u8BC1\u4E66\u6307\u7EB9:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \u7B7E\u540D\u7B97\u6CD5\u540D\u79F0: {8}\n\t \u7248\u672C: {9}"},
+                "\u6240\u6709\u8005: {0}\n\u53D1\u5E03\u8005: {1}\n\u5E8F\u5217\u53F7: {2}\n\u751F\u6548\u65F6\u95F4: {3}, \u5931\u6548\u65F6\u95F4: {4}\n\u8BC1\u4E66\u6307\u7EB9:\n\t SHA1: {5}\n\t SHA256: {6}\n\u7B7E\u540D\u7B97\u6CD5\u540D\u79F0: {7}\n\u4E3B\u4F53\u516C\u5171\u5BC6\u94A5\u7B97\u6CD5: {8} ({9,number,#})\n\u7248\u672C: {10}"},
         {"What.is.your.first.and.last.name.",
                 "\u60A8\u7684\u540D\u5B57\u4E0E\u59D3\u6C0F\u662F\u4EC0\u4E48?"},
         {"What.is.the.name.of.your.organizational.unit.",
@@ -433,6 +433,8 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
+     * <p>
+     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_TW.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/tools/keytool/Resources_zh_TW.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.tools.keytool;
 
 /**
- * This class represents the <code>ResourceBundle</code>
+ * <p> This class represents the <code>ResourceBundle</code>
  * for the keytool.
  *
  */
@@ -48,7 +48,7 @@
                  "\u91D1\u9470\u8207\u6191\u8B49\u7BA1\u7406\u5DE5\u5177"},
         {"Commands.", "\u547D\u4EE4:"},
         {"Use.keytool.command.name.help.for.usage.of.command.name",
-                "\u4F7F\u7528 \"keytool -command_name -help\" \u53D6\u5F97 command_name \u7684\u7528\u6CD5"},
+                "\u4F7F\u7528 \"keytool -command_name -help\" \u53D6\u5F97 command_name \u7684\u7528\u6CD5\u3002\n\u4F7F\u7528 -conf <url> \u9078\u9805\u6307\u5B9A\u9810\u5148\u8A2D\u5B9A\u7684\u9078\u9805\u6A94\u6848\u3002"},
         // keytool: help: commands
         {"Generates.a.certificate.request",
                 "\u7522\u751F\u6191\u8B49\u8981\u6C42"}, //-certreq
@@ -306,7 +306,7 @@
         {"Entry.type.type.", "\u9805\u76EE\u985E\u578B: {0}"},
         {"Certificate.chain.length.", "\u6191\u8B49\u93C8\u9577\u5EA6: "},
         {"Certificate.i.1.", "\u6191\u8B49 [{0,number,integer}]:"},
-        {"Certificate.fingerprint.SHA1.", "\u6191\u8B49\u6307\u7D0B (SHA1): "},
+        {"Certificate.fingerprint.SHA.256.", "\u6191\u8B49\u6307\u7D0B (SHA-256): "},
         {"Keystore.type.", "\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B: "},
         {"Keystore.provider.", "\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005: "},
         {"Your.keystore.contains.keyStore.size.entry",
@@ -346,7 +346,7 @@
         {".RETURN.if.same.as.for.otherAlias.",
                 "\t(RETURN \u5982\u679C\u548C <{0}> \u7684\u76F8\u540C)"},
         {".PATTERN.printX509Cert",
-                "\u64C1\u6709\u8005: {0}\n\u767C\u51FA\u8005: {1}\n\u5E8F\u865F: {2}\n\u6709\u6548\u671F\u81EA: {3} \u5230: {4}\n\u6191\u8B49\u6307\u7D0B:\n\t MD5:  {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t \u7C3D\u7AE0\u6F14\u7B97\u6CD5\u540D\u7A31: {8}\n\t \u7248\u672C: {9}"},
+                "\u64C1\u6709\u8005: {0}\n\u767C\u51FA\u8005: {1}\n\u5E8F\u865F: {2}\n\u6709\u6548\u671F\u81EA: {3} \u5230: {4}\n\u6191\u8B49\u6307\u7D0B:\n\t SHA1: {5}\n\t SHA256: {6}\n\u7C3D\u7AE0\u6F14\u7B97\u6CD5\u540D\u7A31: {7}\n\u4E3B\u9AD4\u516C\u958B\u91D1\u9470\u6F14\u7B97\u6CD5: {8} ({9,number,#})\n\u7248\u672C: {10}"},
         {"What.is.your.first.and.last.name.",
                 "\u60A8\u7684\u540D\u5B57\u8207\u59D3\u6C0F\u70BA\u4F55\uFF1F"},
         {"What.is.the.name.of.your.organizational.unit.",
@@ -381,9 +381,9 @@
                 "\u6C92\u6709\u4F86\u81EA SSL \u4F3A\u670D\u5668\u7684\u6191\u8B49"},
 
         {".The.integrity.of.the.information.stored.in.your.keystore.",
-            "* \u5C1A\u672A\u9A57\u8B49\u5132\u5B58\u65BC\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u8CC7\u8A0A  *\n* \u7684\u5B8C\u6574\u6027\uFF01\u82E5\u8981\u9A57\u8B49\u5176\u5B8C\u6574\u6027\uFF0C*\n* \u60A8\u5FC5\u9808\u63D0\u4F9B\u60A8\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u3002                  *"},
+            "* \u5C1A\u672A\u9A57\u8B49\u5132\u5B58\u65BC\u91D1\u9470\u5132\u5B58\u5EAB\u4E2D\u8CC7\u8A0A  *\n* \u7684\u5B8C\u6574\u6027\uFF01\u82E5\u8981\u9A57\u8B49\u5176\u5B8C\u6574\u6027\uFF0C    *\n* \u60A8\u5FC5\u9808\u63D0\u4F9B\u60A8\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u3002  *"},
         {".The.integrity.of.the.information.stored.in.the.srckeystore.",
-            "* \u5C1A\u672A\u9A57\u8B49\u5132\u5B58\u65BC srckeystore \u4E2D\u8CC7\u8A0A*\n* \u7684\u5B8C\u6574\u6027\uFF01\u82E5\u8981\u9A57\u8B49\u5176\u5B8C\u6574\u6027\uFF0C\u60A8\u5FC5\u9808 *\n* \u63D0\u4F9B srckeystore \u5BC6\u78BC\u3002          *"},
+            "* \u5C1A\u672A\u9A57\u8B49\u5132\u5B58\u65BC srckeystore \u4E2D\u8CC7\u8A0A *\n* \u7684\u5B8C\u6574\u6027\uFF01\u82E5\u8981\u9A57\u8B49\u5176\u5B8C\u6574\u6027\uFF0C\u60A8    *\n* \u5FC5\u9808\u63D0\u4F9B srckeystore \u5BC6\u78BC\u3002       *"},
 
         {"Certificate.reply.does.not.contain.public.key.for.alias.",
                 "\u6191\u8B49\u56DE\u8986\u4E26\u672A\u5305\u542B <{0}> \u7684\u516C\u958B\u91D1\u9470"},
@@ -433,6 +433,8 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
+     * <p>
+     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/util/AuthResources_ko.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/AuthResources_ko.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -88,7 +88,7 @@
         {"Keystore.alias.","\uD0A4 \uC800\uC7A5\uC18C \uBCC4\uCE6D: "},
         {"Keystore.password.","\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638: "},
         {"Private.key.password.optional.",
-            "\uC804\uC6A9 \uD0A4 \uBE44\uBC00\uBC88\uD638(\uC120\uD0DD \uC0AC\uD56D): "},
+            "\uC804\uC6A9 \uD0A4 \uBE44\uBC00\uBC88\uD638(\uC120\uD0DD\uC0AC\uD56D): "},
 
         // com.sun.security.auth.module.Krb5LoginModule
         {"Kerberos.username.defUsername.",
--- a/jdk/src/java.base/share/classes/sun/security/util/AuthResources_sv.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/AuthResources_sv.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -117,7 +117,7 @@
         {"only.Principal.based.grant.entries.permitted",
                 "endast identitetshavarbaserade poster till\u00E5ts"},
         {"expected.permission.entry", "f\u00F6rv\u00E4ntade beh\u00F6righetspost"},
-        {"number.", "antal "},
+        {"number.", "nummer"},
         {"expected.expect.read.end.of.file.",
                 "f\u00F6rv\u00E4ntade {0}, l\u00E4ste filslut"},
         {"expected.read.end.of.file", "f\u00F6rv\u00E4ntade ';', l\u00E4ste filslut"},
--- a/jdk/src/java.base/share/classes/sun/security/util/Pem.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Pem.java	Wed Jul 05 21:51:13 2017 +0200
@@ -26,6 +26,7 @@
 package sun.security.util;
 
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.Base64;
 
 /**
@@ -42,7 +43,8 @@
      * @throws java.io.IOException if input is invalid
      */
     public static byte[] decode(String input) throws IOException {
-        byte[] src = input.replaceAll("\\s+", "").getBytes();
+        byte[] src = input.replaceAll("\\s+", "")
+                .getBytes(StandardCharsets.ISO_8859_1);
         try {
             return Base64.getDecoder().decode(src);
         } catch (IllegalArgumentException e) {
--- a/jdk/src/java.base/share/classes/sun/security/util/Resources_de.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Resources_de.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.util;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
  */
@@ -160,8 +160,6 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
-     * <p>
-     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/util/Resources_es.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Resources_es.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.util;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
  */
@@ -134,7 +134,7 @@
                 "no se puede especificar Principal con una clase de comod\u00EDn sin un nombre de comod\u00EDn"},
         {"expected.codeBase.or.SignedBy.or.Principal",
                 "se esperaba codeBase o SignedBy o Principal"},
-        {"expected.permission.entry", "se esperaba una entrada de permiso"},
+        {"expected.permission.entry", "se esperaba un permiso de entrada"},
         {"number.", "n\u00FAmero "},
         {"expected.expect.read.end.of.file.",
                 "se esperaba [{0}], se ha le\u00EDdo [final de archivo]"},
@@ -160,8 +160,6 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
-     * <p>
-     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/util/Resources_fr.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Resources_fr.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.util;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
  */
@@ -160,8 +160,6 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
-     * <p>
-     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/util/Resources_it.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Resources_it.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.util;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
  */
@@ -160,8 +160,6 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
-     * <p>
-     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/util/Resources_ja.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Resources_ja.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.util;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
  */
@@ -160,8 +160,6 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
-     * <p>
-     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/util/Resources_ko.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Resources_ko.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.util;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
  */
@@ -160,8 +160,6 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
-     * <p>
-     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/util/Resources_pt_BR.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Resources_pt_BR.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.util;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
  */
@@ -160,8 +160,6 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
-     * <p>
-     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/util/Resources_sv.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Resources_sv.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.util;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
  */
@@ -135,7 +135,7 @@
         {"expected.codeBase.or.SignedBy.or.Principal",
                 "f\u00F6rv\u00E4ntad codeBase eller SignedBy eller identitetshavare"},
         {"expected.permission.entry", "f\u00F6rv\u00E4ntade beh\u00F6righetspost"},
-        {"number.", "antal "},
+        {"number.", "nummer"},
         {"expected.expect.read.end.of.file.",
                 "f\u00F6rv\u00E4ntade [{0}], l\u00E4ste [filslut]"},
         {"expected.read.end.of.file.",
@@ -160,8 +160,6 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
-     * <p>
-     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/util/Resources_zh_CN.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Resources_zh_CN.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.util;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
  */
@@ -160,8 +160,6 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
-     * <p>
-     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/security/util/Resources_zh_TW.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/security/util/Resources_zh_TW.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
 package sun.security.util;
 
 /**
- * <p> This class represents the <code>ResourceBundle</code>
+ * This class represents the <code>ResourceBundle</code>
  * for javax.security.auth and sun.security.
  *
  */
@@ -83,7 +83,7 @@
         // javax.security.auth.login.LoginContext
         {"Invalid.null.input.name", "\u7121\u6548\u7A7A\u503C\u8F38\u5165: \u540D\u7A31"},
         {"No.LoginModules.configured.for.name",
-         "\u7121\u91DD\u5C0D {0} \u914D\u7F6E\u7684 LoginModules"},
+         "\u7121\u91DD\u5C0D {0} \u8A2D\u5B9A\u7684 LoginModules"},
         {"invalid.null.Subject.provided", "\u63D0\u4F9B\u7121\u6548\u7A7A\u503C\u4E3B\u984C"},
         {"invalid.null.CallbackHandler.provided",
                 "\u63D0\u4F9B\u7121\u6548\u7A7A\u503C CallbackHandler"},
@@ -160,8 +160,6 @@
     /**
      * Returns the contents of this <code>ResourceBundle</code>.
      *
-     * <p>
-     *
      * @return the contents of this <code>ResourceBundle</code>.
      */
     @Override
--- a/jdk/src/java.base/share/classes/sun/util/locale/LocaleMatcher.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/classes/sun/util/locale/LocaleMatcher.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -118,7 +118,7 @@
                 return new ArrayList<String>(tags);
             } else {
                 for (String tag : tags) {
-                    tag = tag.toLowerCase();
+                    tag = tag.toLowerCase(Locale.ROOT);
                     if (tag.startsWith(range)) {
                         int len = range.length();
                         if ((tag.length() == len || tag.charAt(len) == '-')
@@ -143,7 +143,7 @@
             }
             String[] rangeSubtags = range.split("-");
             for (String tag : tags) {
-                tag = tag.toLowerCase();
+                tag = tag.toLowerCase(Locale.ROOT);
                 String[] tagSubtags = tag.split("-");
                 if (!rangeSubtags[0].equals(tagSubtags[0])
                     && !rangeSubtags[0].equals("*")) {
@@ -216,7 +216,7 @@
             String rangeForRegex = range.replaceAll("\\x2A", "\\\\p{Alnum}*");
             while (rangeForRegex.length() > 0) {
                 for (String tag : tags) {
-                    tag = tag.toLowerCase();
+                    tag = tag.toLowerCase(Locale.ROOT);
                     if (tag.matches(rangeForRegex)) {
                         return tag;
                     }
@@ -228,7 +228,8 @@
                     rangeForRegex = rangeForRegex.substring(0, index);
 
                     // if range ends with an extension key, truncate it.
-                    if (rangeForRegex.lastIndexOf('-') == rangeForRegex.length()-2) {
+                    index = rangeForRegex.lastIndexOf('-');
+                    if (index >= 0 && index == rangeForRegex.length()-2) {
                         rangeForRegex =
                             rangeForRegex.substring(0, rangeForRegex.length()-2);
                     }
@@ -242,7 +243,7 @@
     }
 
     public static List<LanguageRange> parse(String ranges) {
-        ranges = ranges.replaceAll(" ", "").toLowerCase();
+        ranges = ranges.replaceAll(" ", "").toLowerCase(Locale.ROOT);
         if (ranges.startsWith("accept-language:")) {
             ranges = ranges.substring(16); // delete unnecessary prefix
         }
@@ -409,7 +410,7 @@
         // Create a map, key=originalKey.toLowerCaes(), value=originalKey
         Map<String, String> keyMap = new HashMap<>();
         for (String key : map.keySet()) {
-            keyMap.put(key.toLowerCase(), key);
+            keyMap.put(key.toLowerCase(Locale.ROOT), key);
         }
 
         List<LanguageRange> list = new ArrayList<>();
@@ -425,7 +426,7 @@
                     if (equivalents != null) {
                         int len = r.length();
                         for (String equivalent : equivalents) {
-                            list.add(new LanguageRange(equivalent.toLowerCase()
+                            list.add(new LanguageRange(equivalent.toLowerCase(Locale.ROOT)
                                      + range.substring(len),
                                      lr.getWeight()));
                         }
--- a/jdk/src/java.base/share/conf/security/java.policy	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/conf/security/java.policy	Wed Jul 05 21:51:13 2017 +0200
@@ -100,6 +100,18 @@
         permission java.security.AllPermission;
 };
 
+grant codeBase "jrt:/java.smartcardio" {
+        permission javax.smartcardio.CardPermission "*", "*";
+        permission java.lang.RuntimePermission "loadLibrary.j2pcsc";
+        permission java.lang.RuntimePermission "accessClassInPackage.sun.security.*";
+        permission java.util.PropertyPermission "*", "read";
+        // needed for looking up native PC/SC library
+        permission java.io.FilePermission "<<ALL FILES>>","read";
+        permission java.security.SecurityPermission "putProviderProperty.SunPCSC";
+        permission java.security.SecurityPermission "clearProviderProperties.SunPCSC";
+        permission java.security.SecurityPermission "removeProviderProperty.SunPCSC";
+};
+
 grant codeBase "jrt:/java.xml.bind" {
         permission java.lang.RuntimePermission "accessClassInPackage.com.sun.xml.internal.*";
         permission java.lang.RuntimePermission "accessClassInPackage.com.sun.istack.internal";
--- a/jdk/src/java.base/share/conf/security/java.security	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/share/conf/security/java.security	Wed Jul 05 21:51:13 2017 +0200
@@ -33,9 +33,9 @@
 #
 # Each provider must implement a subclass of the Provider class.
 # To register a provider in this master security properties file,
-# specify the Provider subclass name and priority in the format
+# specify the provider and priority in the format
 #
-#    security.provider.<n>=<className>
+#    security.provider.<n>=<provName | className>
 #
 # This declares a provider, and specifies its preference
 # order n. The preference order is the order in which providers are
@@ -43,20 +43,15 @@
 # requested). The order is 1-based; 1 is the most preferred, followed
 # by 2, and so on.
 #
+# <provName> must specify the name of the Provider as passed to its super
+# class java.security.Provider constructor. This is for providers loaded
+# through the ServiceLoader mechanism.
+#
 # <className> must specify the subclass of the Provider class whose
 # constructor sets the values of various properties that are required
 # for the Java Security API to look up the algorithms or other
-# facilities implemented by the provider.
-#
-# There must be at least one provider specification in java.security.
-# There is a default provider that comes standard with the JDK. It
-# is called the "SUN" provider, and its Provider subclass
-# named Sun appears in the sun.security.provider package. Thus, the
-# "SUN" provider is registered via the following:
-#
-#    security.provider.1=sun.security.provider.Sun
-#
-# (The number 1 is used for the default provider.)
+# facilities implemented by the provider. This is for providers loaded
+# through classpath.
 #
 # Note: Providers can be dynamically registered instead by calls to
 # either the addProvider or insertProviderAt method in the Security
--- a/jdk/src/java.base/unix/classes/java/lang/ProcessImpl.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/unix/classes/java/lang/ProcessImpl.java	Wed Jul 05 21:51:13 2017 +0200
@@ -649,7 +649,7 @@
         private final Object closeLock = new Object();
 
         ProcessPipeInputStream(int fd) {
-            super(new FileInputStream(newFileDescriptor(fd)));
+            super(new PipeInputStream(newFileDescriptor(fd)));
         }
         private static byte[] drainInputStream(InputStream in)
                 throws IOException {
@@ -725,8 +725,7 @@
     // behavior.  By deferring the close we allow any pending reads to see -1
     // (EOF) as they did before.
     //
-    private static class DeferredCloseInputStream extends FileInputStream
-    {
+    private static class DeferredCloseInputStream extends PipeInputStream {
         DeferredCloseInputStream(FileDescriptor fd) {
             super(fd);
         }
@@ -848,7 +847,7 @@
         private boolean closePending = false;
 
         DeferredCloseProcessPipeInputStream(int fd) {
-            super(new FileInputStream(newFileDescriptor(fd)));
+            super(new PipeInputStream(newFileDescriptor(fd)));
         }
 
         private InputStream drainInputStream(InputStream in)
--- a/jdk/src/java.base/windows/classes/java/lang/ProcessImpl.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/windows/classes/java/lang/ProcessImpl.java	Wed Jul 05 21:51:13 2017 +0200
@@ -443,7 +443,7 @@
                 FileDescriptor stdout_fd = new FileDescriptor();
                 fdAccess.setHandle(stdout_fd, stdHandles[1]);
                 stdout_stream = new BufferedInputStream(
-                    new FileInputStream(stdout_fd));
+                    new PipeInputStream(stdout_fd));
             }
 
             if (stdHandles[2] == -1L)
@@ -451,7 +451,7 @@
             else {
                 FileDescriptor stderr_fd = new FileDescriptor();
                 fdAccess.setHandle(stderr_fd, stdHandles[2]);
-                stderr_stream = new FileInputStream(stderr_fd);
+                stderr_stream = new PipeInputStream(stderr_fd);
             }
 
             return null; }});
--- a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsPath.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsPath.java	Wed Jul 05 21:51:13 2017 +0200
@@ -243,13 +243,13 @@
             // relative to default directory
             String remaining = path.substring(root.length());
             String defaultDirectory = getFileSystem().defaultDirectory();
-            String result;
-            if (defaultDirectory.endsWith("\\")) {
-                result = defaultDirectory + remaining;
+            if (remaining.length() == 0) {
+                return defaultDirectory;
+            } else if (defaultDirectory.endsWith("\\")) {
+                 return defaultDirectory + remaining;
             } else {
-                result = defaultDirectory + "\\" + remaining;
+                return defaultDirectory + "\\" + remaining;
             }
-            return result;
         } else {
             // relative to some other drive
             String wd;
@@ -412,9 +412,11 @@
         }
 
         // append remaining names in child
-        for (int j=i; j<cn; j++) {
-            result.append(other.getName(j).toString());
-            result.append("\\");
+        if (!other.isEmpty()) {
+            for (int j=i; j<cn; j++) {
+                result.append(other.getName(j).toString());
+                result.append("\\");
+            }
         }
 
         // drop trailing slash in result
--- a/jdk/src/java.desktop/macosx/classes/com/apple/laf/resources/aqua_de.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/macosx/classes/com/apple/laf/resources/aqua_de.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -124,9 +124,9 @@
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=Seite {0} wurde gedruckt ...
+PrintingDialog.contentProgress.textAndMnemonic=Seite {0} wurde gedruckt...
 
-PrintingDialog.contentAborting.textAndMnemonic=Druckvorgang wird abgebrochen ...
+PrintingDialog.contentAborting.textAndMnemonic=Druckvorgang wird abgebrochen...
 
 PrintingDialog.abortButton.textAndMnemonic=&Abbruch
 PrintingDialog.abortButtonToolTip.textAndMnemonic=Druckvorgang abbrechen
@@ -149,7 +149,7 @@
 # Used for html forms
 FormView.submitButton.textAndMnemonic=Abfrage weiterleiten
 FormView.resetButton.textAndMnemonic=Zur\u00FCcksetzen
-FormView.browseFileButton.textAndMnemonic=Durchsuchen ...
+FormView.browseFileButton.textAndMnemonic=Durchsuchen...
 
 ############ Abstract Document Strings ############
 AbstractDocument.styleChange.textAndMnemonic=Formatvorlagen\u00E4nderung
@@ -169,7 +169,7 @@
 ComboBox.togglePopup.textAndMnemonic=togglePopup
 
 ############ Progress Monitor Strings ############
-ProgressMonitor.progress.textAndMnemonic=Fortschritt ...
+ProgressMonitor.progress.textAndMnemonic=Fortschritt...
 
 ############ Split Pane Strings ############
 SplitPane.leftButton.textAndMnemonic=linke Schaltfl\u00E4che
--- a/jdk/src/java.desktop/macosx/classes/com/apple/laf/resources/aqua_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/macosx/classes/com/apple/laf/resources/aqua_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -124,7 +124,7 @@
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=Utskriven sida {0}...
+PrintingDialog.contentProgress.textAndMnemonic=Skriver ut sida {0}...
 
 PrintingDialog.contentAborting.textAndMnemonic=Utskriften avbryts...
 
@@ -172,8 +172,8 @@
 ProgressMonitor.progress.textAndMnemonic=P\u00E5g\u00E5r...
 
 ############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=v\u00E4nster knapp
-SplitPane.rightButton.textAndMnemonic=h\u00F6ger knapp
+SplitPane.leftButton.textAndMnemonic=v\u00E4nsterknapp
+SplitPane.rightButton.textAndMnemonic=h\u00F6gerknapp
 # Used for Isindex
 IsindexView.prompt=Detta \u00E4r ett s\u00F6kbart index. Ange s\u00F6kord:
 
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java	Wed Jul 05 21:51:13 2017 +0200
@@ -430,9 +430,6 @@
 
     @Override // PlatformWindow
     public void dispose() {
-        if (owner != null) {
-            CWrapper.NSWindow.removeChildWindow(owner.getNSWindowPtr(), getNSWindowPtr());
-        }
         contentView.dispose();
         nativeDispose(getNSWindowPtr());
         CPlatformWindow.super.dispose();
@@ -527,26 +524,6 @@
     public void setVisible(boolean visible) {
         final long nsWindowPtr = getNSWindowPtr();
 
-        // Process parent-child relationship when hiding
-        final ComponentAccessor acc = AWTAccessor.getComponentAccessor();
-        if (!visible) {
-            // Unparent my children
-            for (Window w : target.getOwnedWindows()) {
-                WindowPeer p = acc.getPeer(w);
-                if (p instanceof LWWindowPeer) {
-                    CPlatformWindow pw = (CPlatformWindow)((LWWindowPeer)p).getPlatformWindow();
-                    if (pw != null && pw.isVisible()) {
-                        CWrapper.NSWindow.removeChildWindow(nsWindowPtr, pw.getNSWindowPtr());
-                    }
-                }
-            }
-
-            // Unparent myself
-            if (owner != null && owner.isVisible()) {
-                CWrapper.NSWindow.removeChildWindow(owner.getNSWindowPtr(), nsWindowPtr);
-            }
-        }
-
         // Configure stuff
         updateIconImages();
         updateFocusabilityForAutoRequestFocus(false);
@@ -619,20 +596,22 @@
         updateFocusabilityForAutoRequestFocus(true);
 
         // Manage parent-child relationship when showing
+        final ComponentAccessor acc = AWTAccessor.getComponentAccessor();
+
         if (visible) {
-            // Add myself as a child
+            // Order myself above my parent
             if (owner != null && owner.isVisible()) {
-                CWrapper.NSWindow.addChildWindow(owner.getNSWindowPtr(), nsWindowPtr, CWrapper.NSWindow.NSWindowAbove);
+                CWrapper.NSWindow.orderWindow(nsWindowPtr, CWrapper.NSWindow.NSWindowAbove, owner.getNSWindowPtr());
                 applyWindowLevel(target);
             }
 
-            // Add my own children to myself
+            // Order my own children above myself
             for (Window w : target.getOwnedWindows()) {
                 final Object p = acc.getPeer(w);
                 if (p instanceof LWWindowPeer) {
                     CPlatformWindow pw = (CPlatformWindow)((LWWindowPeer)p).getPlatformWindow();
                     if (pw != null && pw.isVisible()) {
-                        CWrapper.NSWindow.addChildWindow(nsWindowPtr, pw.getNSWindowPtr(), CWrapper.NSWindow.NSWindowAbove);
+                        CWrapper.NSWindow.orderWindow(pw.getNSWindowPtr(), CWrapper.NSWindow.NSWindowAbove, nsWindowPtr);
                         pw.applyWindowLevel(w);
                     }
                 }
@@ -1052,8 +1031,8 @@
             // Order the window to front of the stack of child windows
             final long nsWindowSelfPtr = getNSWindowPtr();
             final long nsWindowOwnerPtr = owner.getNSWindowPtr();
-            CWrapper.NSWindow.removeChildWindow(nsWindowOwnerPtr, nsWindowSelfPtr);
-            CWrapper.NSWindow.addChildWindow(nsWindowOwnerPtr, nsWindowSelfPtr, CWrapper.NSWindow.NSWindowAbove);
+            CWrapper.NSWindow.orderFront(nsWindowOwnerPtr);
+            CWrapper.NSWindow.orderWindow(nsWindowSelfPtr, CWrapper.NSWindow.NSWindowAbove, nsWindowOwnerPtr);
         }
 
         applyWindowLevel(target);
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPrinterGraphicsConfig.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPrinterGraphicsConfig.java	Wed Jul 05 21:51:13 2017 +0200
@@ -166,8 +166,7 @@
     }
 
     /**
-     *
-     * Returns a {@code AffineTransform} that can be concatenated
+     * Returns an {@code AffineTransform} that can be concatenated
      * with the default {@code AffineTransform}
      * of a {@code GraphicsConfiguration} so that 72 units in user
      * space equals 1 inch in device space.
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CWarningWindow.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CWarningWindow.java	Wed Jul 05 21:51:13 2017 +0200
@@ -206,15 +206,6 @@
         synchronized (lock) {
             final long nsWindowPtr = getNSWindowPtr();
 
-            // Process parent-child relationship when hiding
-            if (!visible) {
-                // Unparent myself
-                if (owner != null && owner.isVisible()) {
-                    CWrapper.NSWindow.removeChildWindow(
-                            owner.getNSWindowPtr(), nsWindowPtr);
-                }
-            }
-
             // Actually show or hide the window
             if (visible) {
                 CWrapper.NSWindow.orderFront(nsWindowPtr);
@@ -226,10 +217,10 @@
 
             // Manage parent-child relationship when showing
             if (visible) {
-                // Add myself as a child
+                // Order myself above my parent
                 if (owner != null && owner.isVisible()) {
-                    CWrapper.NSWindow.addChildWindow(owner.getNSWindowPtr(),
-                            nsWindowPtr, CWrapper.NSWindow.NSWindowAbove);
+                    CWrapper.NSWindow.orderWindow(nsWindowPtr,
+                            CWrapper.NSWindow.NSWindowAbove, owner.getNSWindowPtr());
 
                     // do not allow security warning to be obscured by other windows
                     applyWindowLevel(ownerWindow);
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.h	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.h	Wed Jul 05 21:51:13 2017 +0200
@@ -46,6 +46,7 @@
     AWTWindow *ownerWindow;
     jint preFullScreenLevel;
     NSRect standardFrame;
+    BOOL isMinimizing;
 }
 
 // An instance of either AWTWindow_Normal or AWTWindow_Panel
@@ -60,6 +61,7 @@
 @property (nonatomic) BOOL isEnabled;
 @property (nonatomic) jint preFullScreenLevel;
 @property (nonatomic) NSRect standardFrame;
+@property (nonatomic) BOOL isMinimizing;
 
 - (id) initWithPlatformWindow:(JNFWeakJObjectWrapper *)javaPlatformWindow
                   ownerWindow:owner
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.m	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.m	Wed Jul 05 21:51:13 2017 +0200
@@ -180,6 +180,7 @@
 @synthesize ownerWindow;
 @synthesize preFullScreenLevel;
 @synthesize standardFrame;
+@synthesize isMinimizing;
 
 - (void) updateMinMaxSize:(BOOL)resizable {
     if (resizable) {
@@ -304,6 +305,7 @@
     [self.nsWindow release]; // the property retains the object already
 
     self.isEnabled = YES;
+    self.isMinimizing = NO;
     self.javaPlatformWindow = platformWindow;
     self.styleBits = bits;
     self.ownerWindow = owner;
@@ -423,6 +425,68 @@
     [super dealloc];
 }
 
+// Tests wheather the corresponding Java paltform window is visible or not
++ (BOOL) isJavaPlatformWindowVisible:(NSWindow *)window {
+    BOOL isVisible = NO;
+    
+    if ([AWTWindow isAWTWindow:window] && [window delegate] != nil) {
+        AWTWindow *awtWindow = (AWTWindow *)[window delegate];
+        [AWTToolkit eventCountPlusPlus];
+        
+        JNIEnv *env = [ThreadUtilities getJNIEnv];
+        jobject platformWindow = [awtWindow.javaPlatformWindow jObjectWithEnv:env];
+        if (platformWindow != NULL) {
+            static JNF_MEMBER_CACHE(jm_isVisible, jc_CPlatformWindow, "isVisible", "()Z");
+            isVisible = JNFCallBooleanMethod(env, platformWindow, jm_isVisible) == JNI_TRUE ? YES : NO;
+            (*env)->DeleteLocalRef(env, platformWindow);
+            
+        }
+    }
+    return isVisible;
+}
+
+// Orders window's childs based on the current focus state
+- (void) orderChildWindows:(BOOL)focus {
+AWT_ASSERT_APPKIT_THREAD;
+
+    if (self.isMinimizing) {
+        // Do not perform any ordering, if iconify is in progress
+        return;
+    }
+
+    NSEnumerator *windowEnumerator = [[NSApp windows]objectEnumerator];
+    NSWindow *window;
+    while ((window = [windowEnumerator nextObject]) != nil) {
+        if ([AWTWindow isJavaPlatformWindowVisible:window]) {
+            AWTWindow *awtWindow = (AWTWindow *)[window delegate];
+            AWTWindow *owner = awtWindow.ownerWindow;
+            if (IS(awtWindow.styleBits, ALWAYS_ON_TOP)) {
+                // Do not order 'always on top' windows
+                continue;
+            }
+            while (awtWindow.ownerWindow != nil) {
+                if (awtWindow.ownerWindow == self) {
+                    if (focus) {
+                        // Move the childWindow to floating level
+                        // so it will appear in front of its
+                        // parent which owns the focus
+                        [window setLevel:NSFloatingWindowLevel];
+                    } else {
+                        // Focus owner has changed, move the childWindow
+                        // back to normal window level
+                        [window setLevel:NSNormalWindowLevel];
+                    }
+                    // The childWindow should be displayed in front of
+                    // its nearest parentWindow
+                    [window orderWindow:NSWindowAbove relativeTo:[owner.nsWindow windowNumber]];
+                    break;
+                }
+                awtWindow = awtWindow.ownerWindow;
+            }
+        }
+    }
+}
+
 // NSWindow overrides
 - (BOOL) canBecomeKeyWindow {
 AWT_ASSERT_APPKIT_THREAD;
@@ -511,6 +575,30 @@
     return [self standardFrame];
 }
 
+// Hides/shows window's childs during iconify/de-iconify operation
+- (void) iconifyChildWindows:(BOOL)iconify {
+AWT_ASSERT_APPKIT_THREAD;
+
+    NSEnumerator *windowEnumerator = [[NSApp windows]objectEnumerator];
+    NSWindow *window;
+    while ((window = [windowEnumerator nextObject]) != nil) {
+        if ([AWTWindow isJavaPlatformWindowVisible:window]) {
+            AWTWindow *awtWindow = (AWTWindow *)[window delegate];
+            while (awtWindow.ownerWindow != nil) {
+                if (awtWindow.ownerWindow == self) {
+                    if (iconify) {
+                        [window orderOut:window];
+                    } else {
+                        [window orderFront:window];
+                    }
+                    break;
+                }
+                awtWindow = awtWindow.ownerWindow;
+            }
+        }
+    }
+}
+
 - (void) _deliverIconify:(BOOL)iconify {
 AWT_ASSERT_APPKIT_THREAD;
 
@@ -524,16 +612,28 @@
     }
 }
 
+- (void)windowWillMiniaturize:(NSNotification *)notification {
+AWT_ASSERT_APPKIT_THREAD;
+
+    self.isMinimizing = YES;
+    // Excplicitly make myself a key window to avoid possible
+    // negative visual effects during iconify operation
+    [self.nsWindow makeKeyAndOrderFront:self.nsWindow];
+    [self iconifyChildWindows:YES];
+}
+
 - (void)windowDidMiniaturize:(NSNotification *)notification {
 AWT_ASSERT_APPKIT_THREAD;
 
     [self _deliverIconify:JNI_TRUE];
+    self.isMinimizing = NO;
 }
 
 - (void)windowDidDeminiaturize:(NSNotification *)notification {
 AWT_ASSERT_APPKIT_THREAD;
 
     [self _deliverIconify:JNI_FALSE];
+    [self iconifyChildWindows:NO];
 }
 
 - (void) _deliverWindowFocusEvent:(BOOL)focused oppositeWindow:(AWTWindow *)opposite {
@@ -579,6 +679,7 @@
     [AWTWindow setLastKeyWindow:nil];
 
     [self _deliverWindowFocusEvent:YES oppositeWindow: opposite];
+    [self orderChildWindows:YES];
 }
 
 - (void) windowDidResignKey: (NSNotification *) notification {
@@ -606,6 +707,7 @@
     }
 
     [self _deliverWindowFocusEvent:NO oppositeWindow: opposite];
+    [self orderChildWindows:NO];
 }
 
 - (void) windowDidBecomeMain: (NSNotification *) notification {
@@ -709,9 +811,12 @@
             if (p.y >= (frame.origin.y + contentRect.size.height)) {
                 JNIEnv *env = [ThreadUtilities getJNIEnvUncached];
                 jobject platformWindow = [self.javaPlatformWindow jObjectWithEnv:env];
-                // Currently, no need to deliver the whole NSEvent.
-                static JNF_MEMBER_CACHE(jm_deliverNCMouseDown, jc_CPlatformWindow, "deliverNCMouseDown", "()V");
-                JNFCallVoidMethod(env, platformWindow, jm_deliverNCMouseDown);
+                if (platformWindow != NULL) {
+                    // Currently, no need to deliver the whole NSEvent.
+                    static JNF_MEMBER_CACHE(jm_deliverNCMouseDown, jc_CPlatformWindow, "deliverNCMouseDown", "()V");
+                    JNFCallVoidMethod(env, platformWindow, jm_deliverNCMouseDown);
+                    (*env)->DeleteLocalRef(env, platformWindow);
+                }
             }
         }
 }
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CGraphicsEnv.m	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CGraphicsEnv.m	Wed Jul 05 21:51:13 2017 +0200
@@ -127,6 +127,7 @@
                     jc_CGraphicsEnvironment, "_displayReconfiguration","(IZ)V");
             JNFCallVoidMethod(env, graphicsEnv, jm_displayReconfiguration,
                     (jint) display, (jboolean) flags & kCGDisplayRemoveFlag);
+            (*env)->DeleteLocalRef(env, graphicsEnv);
         });
     }];
 }
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuItem.m	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuItem.m	Wed Jul 05 21:51:13 2017 +0200
@@ -63,6 +63,7 @@
 - (BOOL) worksWhenModal {
     return YES;
 }
+
 // Events
 - (void)handleAction:(NSMenuItem *)sender {
     AWT_ASSERT_APPKIT_THREAD;
@@ -91,7 +92,6 @@
     }
     else {
         if ([currEvent type] == NSKeyDown) {
-            
             // Event available through sender variable hence NSApplication
             // not needed for checking the keyboard input sans the modifier keys
             // Also, the method used to fetch eventKey earlier would be locale dependent
@@ -99,7 +99,6 @@
             // is not U.S. (Devanagari in this case)
             // With current implementation, EventKey = MenuKey = e irrespective of
             // input method
-            
             NSString *eventKey = [sender keyEquivalent];
             // Apple uses characters from private Unicode range for some of the
             // keys, so we need to do the same translation here that we do
@@ -116,15 +115,15 @@
             if (keyWindow != nil) {
                 return;
             }
-            else {
-                static JNF_CLASS_CACHE(jc_CMenuItem, "sun/lwawt/macosx/CMenuItem");
-                static JNF_MEMBER_CACHE(jm_handleAction, jc_CMenuItem, "handleAction", "(JI)V"); // AWT_THREADING Safe (event)
-                
-                NSUInteger modifiers = [currEvent modifierFlags];
-                jint javaModifiers = NsKeyModifiersToJavaModifiers(modifiers, NO);
-                
-                JNFCallVoidMethod(env, fPeer, jm_handleAction, UTC(currEvent), javaModifiers); // AWT_THREADING Safe (event)
-            }
+        }
+        else {
+            static JNF_CLASS_CACHE(jc_CMenuItem, "sun/lwawt/macosx/CMenuItem");
+            static JNF_MEMBER_CACHE(jm_handleAction, jc_CMenuItem, "handleAction", "(JI)V"); // AWT_THREADING Safe (event)
+            
+            NSUInteger modifiers = [currEvent modifierFlags];
+            jint javaModifiers = NsKeyModifiersToJavaModifiers(modifiers, NO);
+            
+            JNFCallVoidMethod(env, fPeer, jm_handleAction, UTC(currEvent), javaModifiers); // AWT_THREADING Safe (event)
         }
     }
     JNF_COCOA_EXIT(env);
--- a/jdk/src/java.desktop/share/classes/com/sun/accessibility/internal/resources/accessibility_de.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/accessibility/internal/resources/accessibility_de.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -17,7 +17,7 @@
 awtcomponent=AWT-Komponente
 checkbox=Kontrollk\u00E4stchen
 colorchooser=Farbauswahl
-columnheader=Spalten-Header
+columnheader=Spaltenheader
 combobox=Kombinationsfeld
 canvas=Leinwand
 desktopicon=Desktopsymbol
@@ -46,7 +46,7 @@
 pushbutton=Schaltfl\u00E4che
 radiobutton=Optionsfeld
 rootpane=Root-Bereich
-rowheader=Zeilen-Header
+rowheader=Zeilenheader
 scrollbar=Bildlaufleiste
 scrollpane=Bildlaufbereich
 separator=Trennzeichen
--- a/jdk/src/java.desktop/share/classes/com/sun/accessibility/internal/resources/accessibility_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/accessibility/internal/resources/accessibility_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -88,7 +88,7 @@
 modal=modal
 multiline=flera rader
 multiselectable=flerval
-opaque=t\u00E4ckande
+opaque=ogenomskinlig
 pressed=nedtryckt
 resizable=storleks\u00E4ndringsbar
 selectable=valbar
--- a/jdk/src/java.desktop/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_TW.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/accessibility/internal/resources/accessibility_zh_TW.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -44,7 +44,7 @@
 popupmenu=\u5373\u73FE\u5F0F\u529F\u80FD\u8868
 progressbar=\u9032\u5EA6\u5217
 pushbutton=\u4E0B\u58D3\u6309\u9215
-radiobutton=\u55AE\u9078\u9215
+radiobutton=\u5713\u9215
 rootpane=root \u7A97\u683C
 rowheader=\u5217\u6A19\u984C
 scrollbar=\u6372\u8EF8
--- a/jdk/src/java.desktop/share/classes/com/sun/beans/introspect/MethodInfo.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/beans/introspect/MethodInfo.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
 package com.sun.beans.introspect;
 
 import com.sun.beans.TypeResolver;
@@ -31,7 +32,9 @@
 import java.lang.reflect.Modifier;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 
 final class MethodInfo {
@@ -87,8 +90,60 @@
                 }
             }
         }
-        return (list != null)
-                ? Collections.unmodifiableList(list)
-                : Collections.emptyList();
+        if (list != null) {
+            list.sort(MethodOrder.instance);
+            return Collections.unmodifiableList(list);
+        }
+        return Collections.emptyList();
+    }
+
+    /**
+     * A comparator that defines a total order so that methods have the same
+     * name and identical signatures appear next to each others. The methods are
+     * sorted in such a way that methods which override each other will sit next
+     * to each other, with the overridden method last - e.g. is Integer getFoo()
+     * placed before Object getFoo().
+     **/
+    private static final class MethodOrder implements Comparator<Method> {
+
+        /*
+         * Code particularly was copied from com.sun.jmx.mbeanserver.MethodOrder
+         */
+        @Override
+        public int compare(final Method a, final Method b) {
+            int cmp = a.getName().compareTo(b.getName());
+            if (cmp != 0) {
+                return cmp;
+            }
+            final Class<?>[] aparams = a.getParameterTypes();
+            final Class<?>[] bparams = b.getParameterTypes();
+            if (aparams.length != bparams.length) {
+                return aparams.length - bparams.length;
+            }
+            for (int i = 0; i < aparams.length; ++i) {
+                final Class<?> aparam = aparams[i];
+                final Class<?> bparam = bparams[i];
+                if (aparam == bparam) {
+                    continue;
+                }
+                cmp = aparam.getName().compareTo(bparam.getName());
+                if (cmp != 0) {
+                    return cmp;
+                }
+            }
+            final Class<?> aret = a.getReturnType();
+            final Class<?> bret = b.getReturnType();
+            if (aret == bret) {
+                return 0;
+            }
+
+            // Super type comes last: Integer, Number, Object
+            if (aret.isAssignableFrom(bret)) {
+                return 1;
+            }
+            return -1;
+        }
+
+        static final MethodOrder instance = new MethodOrder();
     }
 }
--- a/jdk/src/java.desktop/share/classes/com/sun/beans/introspect/PropertyInfo.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/beans/introspect/PropertyInfo.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
 package com.sun.beans.introspect;
 
 import java.beans.BeanProperty;
@@ -40,7 +41,11 @@
 import static com.sun.beans.finder.ClassFinder.findClass;
 
 public final class PropertyInfo {
-    public enum Name {bound, expert, hidden, preferred, required, visualUpdate, description, enumerationValues}
+
+    public enum Name {
+        bound, expert, hidden, preferred, required, visualUpdate, description,
+        enumerationValues
+    }
 
     private static final String VETO_EXCEPTION_NAME = "java.beans.PropertyVetoException";
     private static final Class<?> VETO_EXCEPTION;
@@ -107,12 +112,14 @@
         if ((this.type == null) && (this.indexed == null)) {
             return false;
         }
-        initialize(this.write);
-        initialize(this.read);
+        boolean done = initialize(this.read);
+        if (!done) {
+            initialize(this.write);
+        }
         return true;
     }
 
-    private void initialize(MethodInfo info) {
+    private boolean initialize(MethodInfo info) {
         if (info != null) {
             BeanProperty annotation = info.method.getAnnotation(BeanProperty.class);
             if (annotation != null) {
@@ -157,8 +164,10 @@
                 } catch (Exception ignored) {
                     ignored.printStackTrace();
                 }
+                return true;
             }
         }
+        return false;
     }
 
     public Class<?> getPropertyType() {
--- a/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFFieldNode.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFFieldNode.java	Wed Jul 05 21:51:13 2017 +0200
@@ -38,9 +38,14 @@
  * wherein the child node is procedural rather than buffered.
  */
 public class TIFFFieldNode extends IIOMetadataNode {
+    private static boolean isIFD(TIFFField f) {
+        int type = f.getType();
+        return f.hasDirectory() &&
+            (type == TIFFTag.TIFF_LONG || type == TIFFTag.TIFF_IFD_POINTER);
+    }
+
     private static String getNodeName(TIFFField f) {
-        return (f.hasDirectory() || f.getData() instanceof TIFFDirectory) ?
-            "TIFFIFD" : "TIFFField";
+        return isIFD(f) ? "TIFFIFD" : "TIFFField";
     }
 
     private boolean isIFD;
@@ -52,8 +57,7 @@
     public TIFFFieldNode(TIFFField field) {
         super(getNodeName(field));
 
-        isIFD = field.hasDirectory() ||
-            field.getData() instanceof TIFFDirectory;
+        isIFD = isIFD(field);
 
         this.field = field;
 
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_ko.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -39,7 +39,7 @@
 FileChooser.openButton.textAndMnemonic=\uD655\uC778
 FileChooser.saveDialogTitle.textAndMnemonic=\uC800\uC7A5
 FileChooser.openDialogTitle.textAndMnemonic=\uC5F4\uAE30
-FileChooser.pathLabel.textAndMnemonic=\uC120\uD0DD \uC0AC\uD56D(&S):
+FileChooser.pathLabel.textAndMnemonic=\uC120\uD0DD\uC0AC\uD56D(&S):
 FileChooser.filterLabel.textAndMnemonic=\uD544\uD130:
 FileChooser.foldersLabel.textAndMnemonic=\uD3F4\uB354(&D)
 FileChooser.filesLabel.textAndMnemonic=\uD30C\uC77C(&F)
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -44,11 +44,11 @@
 FileChooser.foldersLabel.textAndMnemonic=Map&par
 FileChooser.filesLabel.textAndMnemonic=&Filer
 
-FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt dialogrutan Filv\u00E4ljare.
+FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt dialogrutan f\u00F6r filval.
 FileChooser.saveButtonToolTip.textAndMnemonic=Spara vald fil.
 FileChooser.openButtonToolTip.textAndMnemonic=\u00D6ppna vald fil.
 
-FileChooser.renameFileDialog.textAndMnemonic=Namn\u00E4ndra fil "{0}" till
+FileChooser.renameFileDialog.textAndMnemonic=\u00C4ndra namn p\u00E5 fil "{0}" till
 FileChooser.renameFileError.titleAndMnemonic=Fel
 FileChooser.renameFileError.textAndMnemonic=Fel vid namn\u00E4ndring av fil "{0}" till "{1}"
 
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/resources/motif_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/resources/motif_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -33,8 +33,8 @@
 FileChooser.enterFileNameLabel.textAndMnemonic=A&nge filnamn:
 FileChooser.enterFolderNameLabel.textAndMnemonic=Ange ett mappnamn:
 
-FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt dialogrutan Filv\u00E4ljare.
+FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt dialogrutan f\u00F6r filval.
 FileChooser.saveButtonToolTip.textAndMnemonic=Spara vald fil.
 FileChooser.openButtonToolTip.textAndMnemonic=\u00D6ppna vald fil.
 FileChooser.updateButtonToolTip.textAndMnemonic=Uppdatera kataloglistan.
-FileChooser.helpButtonToolTip.textAndMnemonic=Hj\u00E4lp - Filv\u00E4ljare.
+FileChooser.helpButtonToolTip.textAndMnemonic=Hj\u00E4lp f\u00F6r val av fil.
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
 import java.lang.ref.*;
 import javax.swing.*;
 import javax.swing.plaf.*;
+import sun.awt.AppContext;
 
 /**
  * Wrapper for a value from the desktop. The value is lazily looked up, and
@@ -41,10 +42,8 @@
 // NOTE: Don't rely on this class staying in this location. It is likely
 // to move to a different package in the future.
 public class DesktopProperty implements UIDefaults.ActiveValue {
-    /**
-     * Indicates if an updateUI call is pending.
-     */
-    private static boolean updatePending;
+    private static final StringBuilder DESKTOP_PROPERTY_UPDATE_PENDING_KEY =
+            new StringBuilder("DesktopPropertyUpdatePending");
 
     /**
      * ReferenceQueue of unreferenced WeakPCLs.
@@ -86,14 +85,16 @@
      * Sets whether or not an updateUI call is pending.
      */
     private static synchronized void setUpdatePending(boolean update) {
-        updatePending = update;
+        AppContext.getAppContext()
+                .put(DESKTOP_PROPERTY_UPDATE_PENDING_KEY, update);
     }
 
     /**
      * Returns true if a UI update is pending.
      */
     private static synchronized boolean isUpdatePending() {
-        return updatePending;
+        return Boolean.TRUE.equals(AppContext.getAppContext()
+                .get(DESKTOP_PROPERTY_UPDATE_PENDING_KEY));
     }
 
     /**
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1085,6 +1085,8 @@
               }),
             "FormattedTextField.inactiveBackground", ReadOnlyTextBackground,
             "FormattedTextField.disabledBackground", DisabledTextBackground,
+            "FormattedTextField.background", TextBackground,
+            "FormattedTextField.foreground", WindowTextColor,
 
             // *** Panel
             "Panel.font", ControlFont,
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_fr.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -25,8 +25,8 @@
 FileChooser.filesOfTypeLabel.textAndMnemonic=&Type de fichier :
 FileChooser.upFolderToolTip.textAndMnemonic=Remonte d'un niveau.
 FileChooser.upFolderAccessibleName=Monter
-FileChooser.homeFolderToolTip.textAndMnemonic=R\u00E9pertoire d'origine
-FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine
+FileChooser.homeFolderToolTip.textAndMnemonic=R\u00E9pertoire de base
+FileChooser.homeFolderAccessibleName=R\u00E9pertoire de base
 FileChooser.newFolderToolTip.textAndMnemonic=Cr\u00E9e un dossier.
 FileChooser.newFolderAccessibleName=Nouveau dossier
 FileChooser.newFolderActionLabel.textAndMnemonic=Nouveau dossier
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_ko.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -33,11 +33,11 @@
 FileChooser.listViewButtonToolTip.textAndMnemonic=\uBAA9\uB85D
 FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D
 FileChooser.listViewActionLabel.textAndMnemonic=\uBAA9\uB85D
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=\uC138\uBD80 \uC815\uBCF4
-FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=\uC138\uBD80\uC815\uBCF4
+FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80\uC815\uBCF4
 FileChooser.viewMenuButtonToolTipText = \uBCF4\uAE30 \uBA54\uB274
 FileChooser.viewMenuButtonAccessibleName = \uBCF4\uAE30 \uBA54\uB274
-FileChooser.detailsViewActionLabel.textAndMnemonic=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewActionLabel.textAndMnemonic=\uC138\uBD80\uC815\uBCF4
 FileChooser.refreshActionLabel.textAndMnemonic=\uC0C8\uB85C \uACE0\uCE68
 FileChooser.viewMenuLabel.textAndMnemonic=\uBCF4\uAE30
 FileChooser.fileNameHeader.textAndMnemonic=\uC774\uB984
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources/windows_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -22,7 +22,7 @@
 FileChooser.saveInLabel.textAndMnemonic=Spara i:
 FileChooser.fileNameLabel.textAndMnemonic=Fil&namn:
 FileChooser.folderNameLabel.textAndMnemonic=Mapp&namn:
-FileChooser.filesOfTypeLabel.textAndMnemonic=Filer av &typ:
+FileChooser.filesOfTypeLabel.textAndMnemonic=Filer av &typen:
 FileChooser.upFolderToolTip.textAndMnemonic=Upp en niv\u00E5
 FileChooser.upFolderAccessibleName=Upp
 FileChooser.homeFolderToolTip.textAndMnemonic=Hem
--- a/jdk/src/java.desktop/share/classes/com/sun/media/sound/AbstractDataLine.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/media/sound/AbstractDataLine.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -59,10 +59,9 @@
     // current buffer size in bytes
     protected int bufferSize;
 
-    protected boolean running = false;
-    private boolean started = false;
-    private boolean active = false;
-
+    private volatile boolean running;
+    private volatile boolean started;
+    private volatile boolean active;
 
     /**
      * Constructs a new AbstractLine.
--- a/jdk/src/java.desktop/share/classes/com/sun/media/sound/AbstractLine.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/media/sound/AbstractLine.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -47,7 +47,7 @@
     protected final Line.Info info;
     protected Control[] controls;
     AbstractMixer mixer;
-    private boolean open     = false;
+    private volatile boolean open;
     private final Vector<Object> listeners = new Vector<>();
 
     /**
--- a/jdk/src/java.desktop/share/classes/com/sun/media/sound/AbstractMidiDevice.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/media/sound/AbstractMidiDevice.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -65,7 +65,7 @@
 
     // DEVICE STATE
 
-    private boolean open          = false;
+    private volatile boolean open;
     private int openRefCount;
 
     /** List of Receivers and Transmitters that opened the device implicitely.
@@ -75,7 +75,7 @@
     /**
      * This is the device handle returned from native code
      */
-    protected long id                   = 0;
+    protected volatile long id;
 
 
 
@@ -479,7 +479,7 @@
         (which opens the device implicitely).
      */
     abstract class AbstractReceiver implements MidiDeviceReceiver {
-        private boolean open = true;
+        private volatile boolean open = true;
 
 
         /** Deliver a MidiMessage.
--- a/jdk/src/java.desktop/share/classes/com/sun/media/sound/AudioSynthesizerPropertyInfo.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/media/sound/AudioSynthesizerPropertyInfo.java	Wed Jul 05 21:51:13 2017 +0200
@@ -32,7 +32,7 @@
 public final class AudioSynthesizerPropertyInfo {
 
     /**
-     * Constructs a {@code AudioSynthesizerPropertyInfo} object with a given
+     * Constructs an {@code AudioSynthesizerPropertyInfo} object with a given
      * name and value. The {@code description} and {@code choices}
      * are initialized by {@code null} values.
      *
--- a/jdk/src/java.desktop/share/classes/com/sun/media/sound/MidiInDevice.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/media/sound/MidiInDevice.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,7 +38,7 @@
  */
 final class MidiInDevice extends AbstractMidiDevice implements Runnable {
 
-    private Thread midiInThread = null;
+    private volatile Thread midiInThread;
 
     // CONSTRUCTOR
 
--- a/jdk/src/java.desktop/share/classes/com/sun/media/sound/RealTimeSequencer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/media/sound/RealTimeSequencer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -106,7 +106,7 @@
     /**
      * True if the sequence is running.
      */
-    private boolean running = false;
+    private volatile boolean running;
 
 
     /** the thread for pushing out the MIDI messages */
@@ -116,7 +116,7 @@
     /**
      * True if we are recording
      */
-    private boolean recording = false;
+    private volatile boolean recording;
 
 
     /**
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_ko.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -71,7 +71,7 @@
 FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\uC120\uD0DD\uB41C \uB514\uB809\uD1A0\uB9AC \uC5F4\uAE30
 
 FileChooser.filesListAccessibleName=\uD30C\uC77C \uBAA9\uB85D
-FileChooser.filesDetailsAccessibleName=\uD30C\uC77C \uC138\uBD80 \uC815\uBCF4
+FileChooser.filesDetailsAccessibleName=\uD30C\uC77C \uC138\uBD80\uC815\uBCF4
 
 ############ COLOR CHOOSER STRINGS #############
 ColorChooser.preview.textAndMnemonic=\uBBF8\uB9AC\uBCF4\uAE30
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -33,7 +33,7 @@
 ############ FILE CHOOSER STRINGS #############
 FileChooser.fileDescription.textAndMnemonic=Generisk fil
 FileChooser.directoryDescription.textAndMnemonic=Katalog
-FileChooser.newFolderError.textAndMnemonic=Fel uppstod n\u00E4r ny mapp skapades
+FileChooser.newFolderError.textAndMnemonic=Kan inte skapa ny mapp
 FileChooser.newFolderErrorSeparator= :
 FileChooser.newFolderParentDoesntExistTitle.textAndMnemonic=Kan inte skapa mappen
 FileChooser.newFolderParentDoesntExist.textAndMnemonic=Kan inte skapa mappen.\n\nSystemet kan inte hitta angiven s\u00F6kv\u00E4g.
@@ -59,15 +59,15 @@
 FileChooser.win32.newFolder=Ny mapp
 FileChooser.win32.newFolder.subsequent=Ny mapp ({0})
 FileChooser.other.newFolder=Ny mapp
-FileChooser.other.newFolder.subsequent=Ny mapp.{0}
+FileChooser.other.newFolder.subsequent=Ny mapp {0}
 
 
 ## file chooser tooltips ###
-FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt filvalsdialogruta
+FileChooser.cancelButtonToolTip.textAndMnemonic=Avbryt dialogrutan f\u00F6r filval
 FileChooser.saveButtonToolTip.textAndMnemonic=Spara vald fil
 FileChooser.openButtonToolTip.textAndMnemonic=\u00D6ppna vald fil
 FileChooser.updateButtonToolTip.textAndMnemonic=Uppdatera kataloglistan
-FileChooser.helpButtonToolTip.textAndMnemonic=Hj\u00E4lp - Filv\u00E4ljare
+FileChooser.helpButtonToolTip.textAndMnemonic=Hj\u00E4lp f\u00F6r val av fil
 FileChooser.directoryOpenButtonToolTip.textAndMnemonic=\u00D6ppna vald katalog
 
 FileChooser.filesListAccessibleName=Fillista
@@ -129,7 +129,7 @@
 
 # The following string will be formatted by a MessageFormat
 # and {0} will be replaced by page number being printed
-PrintingDialog.contentProgress.textAndMnemonic=Utskriven sida {0}...
+PrintingDialog.contentProgress.textAndMnemonic=Skriver ut sida {0}...
 
 PrintingDialog.contentAborting.textAndMnemonic=Utskriften avbryts...
 
@@ -177,8 +177,8 @@
 ProgressMonitor.progress.textAndMnemonic=P\u00E5g\u00E5r...
 
 ############ Split Pane Strings ############
-SplitPane.leftButton.textAndMnemonic=v\u00E4nster knapp
-SplitPane.rightButton.textAndMnemonic=h\u00F6ger knapp
+SplitPane.leftButton.textAndMnemonic=v\u00E4nsterknapp
+SplitPane.rightButton.textAndMnemonic=h\u00F6gerknapp
 # Used for Isindex
 IsindexView.prompt=Detta \u00E4r ett s\u00F6kbart index. Ange s\u00F6kord:
 
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_fr.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -25,8 +25,8 @@
 FileChooser.filesOfTypeLabel.textAndMnemonic=&Type de fichier :
 FileChooser.upFolderToolTip.textAndMnemonic=Remonte d'un niveau.
 FileChooser.upFolderAccessibleName=Monter
-FileChooser.homeFolderToolTip.textAndMnemonic=R\u00E9pertoire d'origine
-FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine
+FileChooser.homeFolderToolTip.textAndMnemonic=R\u00E9pertoire de base
+FileChooser.homeFolderAccessibleName=R\u00E9pertoire de base
 FileChooser.newFolderToolTip.textAndMnemonic=Cr\u00E9e un dossier.
 FileChooser.newFolderAccessibleName=Nouveau dossier
 FileChooser.newFolderActionLabel.textAndMnemonic=Nouveau dossier
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_ko.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -33,9 +33,9 @@
 FileChooser.listViewButtonToolTip.textAndMnemonic=\uBAA9\uB85D
 FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D
 FileChooser.listViewActionLabel.textAndMnemonic=\uBAA9\uB85D
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=\uC138\uBD80 \uC815\uBCF4
-FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4
-FileChooser.detailsViewActionLabel.textAndMnemonic=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=\uC138\uBD80\uC815\uBCF4
+FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80\uC815\uBCF4
+FileChooser.detailsViewActionLabel.textAndMnemonic=\uC138\uBD80\uC815\uBCF4
 FileChooser.refreshActionLabel.textAndMnemonic=\uC0C8\uB85C \uACE0\uCE68
 FileChooser.viewMenuLabel.textAndMnemonic=\uBCF4\uAE30
 FileChooser.fileNameHeader.textAndMnemonic=\uC774\uB984
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources/metal_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -20,9 +20,9 @@
 
 FileChooser.lookInLabel.textAndMnemonic=Leta &i:
 FileChooser.saveInLabel.textAndMnemonic=Spara i:
-FileChooser.fileNameLabel.textAndMnemonic=&Fil:
+FileChooser.fileNameLabel.textAndMnemonic=Fil&namn:
 FileChooser.folderNameLabel.textAndMnemonic=&Mapp:
-FileChooser.filesOfTypeLabel.textAndMnemonic=Mapp&namn:
+FileChooser.filesOfTypeLabel.textAndMnemonic=Filer av &typen:
 FileChooser.upFolderToolTip.textAndMnemonic=Upp en niv\u00E5
 FileChooser.upFolderAccessibleName=Upp
 FileChooser.homeFolderToolTip.textAndMnemonic=Hem
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_fr.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_fr.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -25,8 +25,8 @@
 FileChooser.filesOfTypeLabel.textAndMnemonic=&Type de fichier :
 FileChooser.upFolderToolTip.textAndMnemonic=Remonte d'un niveau.
 FileChooser.upFolderAccessibleName=Monter
-FileChooser.homeFolderToolTip.textAndMnemonic=R\u00E9pertoire d'origine
-FileChooser.homeFolderAccessibleName=R\u00E9pertoire d'origine
+FileChooser.homeFolderToolTip.textAndMnemonic=R\u00E9pertoire de base
+FileChooser.homeFolderAccessibleName=R\u00E9pertoire de base
 FileChooser.newFolderToolTip.textAndMnemonic=Cr\u00E9e un dossier.
 FileChooser.newFolderAccessibleName=Nouveau dossier
 FileChooser.newFolderActionLabel.textAndMnemonic=Nouveau dossier
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ko.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_ko.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -33,9 +33,9 @@
 FileChooser.listViewButtonToolTip.textAndMnemonic=\uBAA9\uB85D
 FileChooser.listViewButtonAccessibleName=\uBAA9\uB85D
 FileChooser.listViewActionLabel.textAndMnemonic=\uBAA9\uB85D
-FileChooser.detailsViewButtonToolTip.textAndMnemonic=\uC138\uBD80 \uC815\uBCF4
-FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80 \uC815\uBCF4
-FileChooser.detailsViewActionLabel.textAndMnemonic=\uC138\uBD80 \uC815\uBCF4
+FileChooser.detailsViewButtonToolTip.textAndMnemonic=\uC138\uBD80\uC815\uBCF4
+FileChooser.detailsViewButtonAccessibleName=\uC138\uBD80\uC815\uBCF4
+FileChooser.detailsViewActionLabel.textAndMnemonic=\uC138\uBD80\uC815\uBCF4
 FileChooser.refreshActionLabel.textAndMnemonic=\uC0C8\uB85C \uACE0\uCE68
 FileChooser.viewMenuLabel.textAndMnemonic=\uBCF4\uAE30
 FileChooser.fileNameHeader.textAndMnemonic=\uC774\uB984
--- a/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/com/sun/swing/internal/plaf/synth/resources/synth_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -22,7 +22,7 @@
 FileChooser.saveInLabel.textAndMnemonic=Spara i:
 FileChooser.fileNameLabel.textAndMnemonic=Fil&namn:
 FileChooser.folderNameLabel.textAndMnemonic=Mapp&namn:
-FileChooser.filesOfTypeLabel.textAndMnemonic=Filer av &typ:
+FileChooser.filesOfTypeLabel.textAndMnemonic=Filer av &typen:
 FileChooser.upFolderToolTip.textAndMnemonic=Upp en niv\u00E5
 FileChooser.upFolderAccessibleName=Upp
 FileChooser.homeFolderToolTip.textAndMnemonic=Hem
--- a/jdk/src/java.desktop/share/classes/java/awt/BorderLayout.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/BorderLayout.java	Wed Jul 05 21:51:13 2017 +0200
@@ -76,7 +76,7 @@
  * orientation is {@code LEFT_TO_RIGHT}, only the
  * {@code PAGE_START} will be laid out.
  * <p>
- * NOTE: Currently (in the Java 2 platform v1.2),
+ * NOTE: Currently,
  * {@code BorderLayout} does not support vertical
  * orientations.  The {@code isVertical} setting on the container's
  * {@code ComponentOrientation} is not respected.
--- a/jdk/src/java.desktop/share/classes/java/awt/DefaultKeyboardFocusManager.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/DefaultKeyboardFocusManager.java	Wed Jul 05 21:51:13 2017 +0200
@@ -148,9 +148,20 @@
         Component toFocus =
             KeyboardFocusManager.getMostRecentFocusOwner(aWindow);
 
-        if (toFocus != null && toFocus != vetoedComponent && doRestoreFocus(toFocus, vetoedComponent, false)) {
-            return true;
-        } else if (clearOnFailure) {
+        if (toFocus != null && toFocus != vetoedComponent) {
+            Component heavyweight = getHeavyweight(aWindow);
+            if (heavyweight != null) {
+                setNativeFocusOwner(heavyweight);
+                Toolkit.getEventQueue().createSecondaryLoop(
+                        () -> getGlobalFocusedWindow() != aWindow, null, 50)
+                        .enter();
+            }
+            if (getGlobalFocusedWindow() == aWindow &&
+                              doRestoreFocus(toFocus, vetoedComponent, false)) {
+                return true;
+            }
+        }
+        if (clearOnFailure) {
             clearGlobalFocusOwnerPriv();
             return true;
         } else {
--- a/jdk/src/java.desktop/share/classes/java/awt/GraphicsConfiguration.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/GraphicsConfiguration.java	Wed Jul 05 21:51:13 2017 +0200
@@ -360,8 +360,7 @@
     public abstract AffineTransform getDefaultTransform();
 
     /**
-     *
-     * Returns a {@code AffineTransform} that can be concatenated
+     * Returns an {@code AffineTransform} that can be concatenated
      * with the default {@code AffineTransform}
      * of a {@code GraphicsConfiguration} so that 72 units in user
      * space equals 1 inch in device space.
--- a/jdk/src/java.desktop/share/classes/java/awt/TextField.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/TextField.java	Wed Jul 05 21:51:13 2017 +0200
@@ -159,6 +159,8 @@
      * @param      text       the text to be displayed. If
      *             {@code text} is {@code null}, the empty
      *             string {@code ""} will be displayed.
+     *             If {@code text} contains EOL character, then
+     *             it will be replaced by space character.
      * @exception HeadlessException if GraphicsEnvironment.isHeadless()
      * returns true.
      * @see java.awt.GraphicsEnvironment#isHeadless
@@ -190,6 +192,8 @@
      * @param      text       the text to be displayed. If
      *             {@code text} is {@code null}, the empty
      *             string {@code ""} will be displayed.
+     *             If {@code text} contains EOL character, then
+     *             it will be replaced by space character.
      * @param      columns     the number of columns.  If
      *             {@code columns} is less than {@code 0},
      *             {@code columns} is set to {@code 0}.
@@ -293,7 +297,11 @@
     /**
      * Sets the text that is presented by this
      * text component to be the specified text.
-     * @param       t   the new text.
+     * @param      t       the new text. If
+     *             {@code t} is {@code null}, the empty
+     *             string {@code ""} will be displayed.
+     *             If {@code t} contains EOL character, then
+     *             it will be replaced by space character.
      * @see         java.awt.TextComponent#getText
      */
     public void setText(String t) {
--- a/jdk/src/java.desktop/share/classes/java/awt/font/TransformAttribute.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/font/TransformAttribute.java	Wed Jul 05 21:51:13 2017 +0200
@@ -74,7 +74,7 @@
 
     /**
      * Returns a copy of the wrapped transform.
-     * @return a {@code AffineTransform} that is a copy of the wrapped
+     * @return an {@code AffineTransform} that is a copy of the wrapped
      * transform of this {@code TransformAttribute}.
      */
     public AffineTransform getTransform() {
--- a/jdk/src/java.desktop/share/classes/java/awt/geom/AffineTransform.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/geom/AffineTransform.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1160,10 +1160,18 @@
     }
 
     /**
-     * Returns the X coordinate scaling element (m00) of the 3x3
-     * affine transformation matrix.
-     * @return a double value that is the X coordinate of the scaling
-     *  element of the affine transformation matrix.
+     * Returns the {@code m00} element of the 3x3 affine transformation matrix.
+     * This matrix factor determines how input X coordinates will affect output
+     * X coordinates and is one element of the scale of the transform.
+     * To measure the full amount by which X coordinates are stretched or
+     * contracted by this transform, use the following code:
+     * <pre>
+     *     Point2D p = new Point2D.Double(1, 0);
+     *     p = tx.deltaTransform(p, p);
+     *     double scaleX = p.distance(0, 0);
+     * </pre>
+     * @return a double value that is {@code m00} element of the
+     *         3x3 affine transformation matrix.
      * @see #getMatrix
      * @since 1.2
      */
@@ -1172,10 +1180,18 @@
     }
 
     /**
-     * Returns the Y coordinate scaling element (m11) of the 3x3
-     * affine transformation matrix.
-     * @return a double value that is the Y coordinate of the scaling
-     *  element of the affine transformation matrix.
+     * Returns the {@code m11} element of the 3x3 affine transformation matrix.
+     * This matrix factor determines how input Y coordinates will affect output
+     * Y coordinates and is one element of the scale of the transform.
+     * To measure the full amount by which Y coordinates are stretched or
+     * contracted by this transform, use the following code:
+     * <pre>
+     *     Point2D p = new Point2D.Double(0, 1);
+     *     p = tx.deltaTransform(p, p);
+     *     double scaleY = p.distance(0, 0);
+     * </pre>
+     * @return a double value that is {@code m11} element of the
+     *         3x3 affine transformation matrix.
      * @see #getMatrix
      * @since 1.2
      */
--- a/jdk/src/java.desktop/share/classes/java/awt/image/renderable/ParameterBlock.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/image/renderable/ParameterBlock.java	Wed Jul 05 21:51:13 2017 +0200
@@ -619,9 +619,9 @@
      *
      * @param index the index of the parameter to be returned.
      * @return the parameter at the specified index
-     *         as a {@code int} value.
+     *         as an {@code int} value.
      * @throws ClassCastException if the parameter at the
-     *         specified index is not a {@code Integer}
+     *         specified index is not an {@code Integer}
      * @throws NullPointerException if the parameter at the specified
      *         index is {@code null}
      * @throws ArrayIndexOutOfBoundsException if {@code index}
--- a/jdk/src/java.desktop/share/classes/java/beans/BeanProperty.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/beans/BeanProperty.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
 package java.beans;
 
 import java.lang.annotation.Documented;
@@ -32,16 +33,16 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
- * An annotation used to specify some property-related information
- * for the automatically generated {@link BeanInfo} classes.
- * This annotation is not used if the annotated class
- * has a corresponding user-defined {@code BeanInfo} class,
- * which does not imply the automatic analysis.
+ * An annotation used to specify some property-related information for the
+ * automatically generated {@link BeanInfo} classes. This annotation is not used
+ * if the annotated class has a corresponding user-defined {@code BeanInfo}
+ * class, which does not imply the automatic analysis. If both the read and the
+ * write methods of the property are annotated, then the read method annotation
+ * will have more priority and replace the write method annotation.
  *
+ * @author Sergey A. Malenkov
  * @see BeanInfo#getPropertyDescriptors
  * @since 9
- *
- * @author Sergey A. Malenkov
  */
 @Documented
 @Target({METHOD})
--- a/jdk/src/java.desktop/share/classes/java/beans/Encoder.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/beans/Encoder.java	Wed Jul 05 21:51:13 2017 +0200
@@ -136,7 +136,7 @@
      * a shared internal persistence delegate is returned
      * that encodes {@code null} value.
      * <li>
-     * If the type is a {@code enum} declaration,
+     * If the type is an {@code enum} declaration,
      * a shared internal persistence delegate is returned
      * that encodes constants of this enumeration
      * by their names.
--- a/jdk/src/java.desktop/share/classes/java/beans/PersistenceDelegate.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/beans/PersistenceDelegate.java	Wed Jul 05 21:51:13 2017 +0200
@@ -89,7 +89,7 @@
 
     /**
      * The {@code writeObject} is a single entry point to the persistence
-     * and is used by a {@code Encoder} in the traditional
+     * and is used by an {@code Encoder} in the traditional
      * mode of delegation. Although this method is not final,
      * it should not need to be subclassed under normal circumstances.
      * <p>
--- a/jdk/src/java.desktop/share/classes/java/beans/Statement.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/java/beans/Statement.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,6 +39,8 @@
 import com.sun.beans.finder.MethodFinder;
 import sun.reflect.misc.MethodUtil;
 
+import static sun.reflect.misc.ReflectUtil.checkPackageAccess;
+
 /**
  * A {@code Statement} object represents a primitive statement
  * in which a single method is applied to a target and
@@ -205,12 +207,22 @@
         Object[] arguments = getArguments();
         if (arguments == null) {
             arguments = emptyArray;
+        } else {
+            arguments = arguments.clone();
         }
-        // Class.forName() won't load classes outside
-        // of core from a class inside core. Special
-        // case this method.
         if (target == Class.class && methodName.equals("forName")) {
-            return ClassFinder.resolveClass((String)arguments[0], this.loader);
+            final String name = (String) arguments[0];
+            if (arguments.length == 1) {
+                // Class.forName(String className) won't load classes outside
+                // of core from a class inside core. Special
+                // case this method.
+                // checkPackageAccess(name) will be called by ClassFinder
+                return ClassFinder.resolveClass(name, this.loader);
+            }
+            // The 3 args Class.forName(String className, boolean, classloader)
+            // requires getClassLoader permission, but we will be stricter and
+            // will require access to the package as well.
+            checkPackageAccess(name);
         }
         Class<?>[] argClasses = new Class<?>[arguments.length];
         for(int i = 0; i < arguments.length; i++) {
--- a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/BaselineTIFFTagSet.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/BaselineTIFFTagSet.java	Wed Jul 05 21:51:13 2017 +0200
@@ -58,7 +58,7 @@
  * @since 9
  * @see   <a href="http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf">  TIFF 6.0 Specification</a>
  */
-public class BaselineTIFFTagSet extends TIFFTagSet {
+public final class BaselineTIFFTagSet extends TIFFTagSet {
 
     private static BaselineTIFFTagSet theInstance = null;
 
--- a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/ExifGPSTagSet.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/ExifGPSTagSet.java	Wed Jul 05 21:51:13 2017 +0200
@@ -38,7 +38,7 @@
  * @since 9
  * @see   ExifTIFFTagSet
  */
-public class ExifGPSTagSet extends TIFFTagSet {
+public final class ExifGPSTagSet extends TIFFTagSet {
     private static ExifGPSTagSet theInstance = null;
 
     /**
--- a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/ExifInteroperabilityTagSet.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/ExifInteroperabilityTagSet.java	Wed Jul 05 21:51:13 2017 +0200
@@ -34,7 +34,7 @@
  * @since 9
  * @see   ExifTIFFTagSet
  */
-public class ExifInteroperabilityTagSet extends TIFFTagSet {
+public final class ExifInteroperabilityTagSet extends TIFFTagSet {
     /**
      * A tag indicating the identification of the Interoperability rule
      * (type ASCII).
--- a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/ExifParentTIFFTagSet.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/ExifParentTIFFTagSet.java	Wed Jul 05 21:51:13 2017 +0200
@@ -36,7 +36,7 @@
  *
  * @since 9
  */
-public class ExifParentTIFFTagSet extends TIFFTagSet {
+public final class ExifParentTIFFTagSet extends TIFFTagSet {
 
     private static ExifParentTIFFTagSet theInstance = null;
 
--- a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/ExifTIFFTagSet.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/ExifTIFFTagSet.java	Wed Jul 05 21:51:13 2017 +0200
@@ -41,7 +41,7 @@
  *
  * @since 9
  */
-public class ExifTIFFTagSet extends TIFFTagSet {
+public final class ExifTIFFTagSet extends TIFFTagSet {
 
     private static ExifTIFFTagSet theInstance = null;
 
--- a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/FaxTIFFTagSet.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/FaxTIFFTagSet.java	Wed Jul 05 21:51:13 2017 +0200
@@ -33,7 +33,7 @@
  *
  * @since 9
  */
-public class FaxTIFFTagSet extends TIFFTagSet {
+public final class FaxTIFFTagSet extends TIFFTagSet {
 
     private static FaxTIFFTagSet theInstance = null;
 
--- a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/GeoTIFFTagSet.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/GeoTIFFTagSet.java	Wed Jul 05 21:51:13 2017 +0200
@@ -41,7 +41,7 @@
  *
  * @since 9
  */
-public class GeoTIFFTagSet extends TIFFTagSet {
+public final class GeoTIFFTagSet extends TIFFTagSet {
 
     private static GeoTIFFTagSet theInstance = null;
 
--- a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/TIFFField.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/TIFFField.java	Wed Jul 05 21:51:13 2017 +0200
@@ -843,10 +843,9 @@
      * Returns the {@code TIFFField} as a node named either
      * <tt>"TIFFField"</tt> or <tt>"TIFFIFD"</tt> as described in the
      * TIFF native image metadata specification. The node will be named
-     * <tt>"TIFFIFD"</tt> if and only if the field's data object is an
-     * instance of {@link TIFFDirectory} or equivalently
-     * {@link TIFFTag#isIFDPointer getTag.isIFDPointer()} returns
-     * {@code true}.
+     * <tt>"TIFFIFD"</tt> if and only if {@link #hasDirectory()} returns
+     * {@code true} and the field's type is either {@link TIFFTag#TIFF_LONG}
+     * or {@link TIFFTag#TIFF_IFD_POINTER}.
      *
      * @return a {@code Node} named <tt>"TIFFField"</tt> or
      * <tt>"TIFFIFD"</tt>.
--- a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/TIFFTagSet.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/TIFFTagSet.java	Wed Jul 05 21:51:13 2017 +0200
@@ -34,14 +34,13 @@
 import java.util.TreeSet;
 
 /**
- * A class representing a set of TIFF tags.  Each tag in the set must
- * have a unique number (this is a limitation of the TIFF
- * specification itself).
+ * A class representing a set of TIFF tags.  Each tag in the set must have
+ * a unique number (this is a limitation of the TIFF specification itself).
  *
  * <p> This class and its subclasses are responsible for mapping
  * between raw tag numbers and {@code TIFFTag} objects, which
  * contain additional information about each tag, such as the tag's
- * name, legal data types, and mnemonic names for some or all of ts
+ * name, legal data types, and mnemonic names for some or all of its
  * data values.
  *
  * @since 9
--- a/jdk/src/java.desktop/share/classes/javax/imageio/spi/ServiceRegistry.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/spi/ServiceRegistry.java	Wed Jul 05 21:51:13 2017 +0200
@@ -770,7 +770,12 @@
         poset.add(provider);
         if (provider instanceof RegisterableService) {
             RegisterableService rs = (RegisterableService)provider;
-            rs.onRegistration(registry, category);
+            try {
+                rs.onRegistration(registry, category);
+            } catch (Throwable t) {
+                System.err.println("Caught and handled this exception :");
+                t.printStackTrace();
+            }
         }
 
         return !present;
--- a/jdk/src/java.desktop/share/classes/javax/imageio/stream/ImageInputStream.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/stream/ImageInputStream.java	Wed Jul 05 21:51:13 2017 +0200
@@ -32,7 +32,7 @@
 
 /**
  * A seekable input stream interface for use by
- * {@code ImageReader}s.  Various input sources, such as
+ * {@code ImageReader}s. Various input sources, such as
  * {@code InputStream}s and {@code File}s,
  * as well as future fast I/O sources may be "wrapped" by a suitable
  * implementation of this interface for use by the Image I/O API.
@@ -469,7 +469,7 @@
      * then a {@code UTFDataFormatException} is thrown.
      *
      * <p> If end of file is encountered at any time during this
-     * entire process, then an {@code java.io.EOFException} is thrown.
+     * entire process, then a {@code java.io.EOFException} is thrown.
      *
      * <p> After every group has been converted to a character by this
      * process, the characters are gathered, in the same order in
@@ -499,7 +499,7 @@
     /**
      * Reads {@code len} bytes from the stream, and stores them
      * into {@code b} starting at index {@code off}.
-     * If the end of the stream is reached, an {@code java.io.EOFException}
+     * If the end of the stream is reached, a {@code java.io.EOFException}
      * will be thrown.
      *
      * <p> The bit offset within the stream is reset to zero before
@@ -523,7 +523,7 @@
     /**
      * Reads {@code b.length} bytes from the stream, and stores them
      * into {@code b} starting at index {@code 0}.
-     * If the end of the stream is reached, an {@code java.io.EOFException}
+     * If the end of the stream is reached, a {@code java.io.EOFException}
      * will be thrown.
      *
      * <p> The bit offset within the stream is reset to zero before
@@ -543,8 +543,8 @@
      * Reads {@code len} shorts (signed 16-bit integers) from the
      * stream according to the current byte order, and
      * stores them into {@code s} starting at index
-     * {@code off}.  If the end of the stream is reached, an
-     * {@code java.io.EOFException} will be thrown.
+     * {@code off}.  If the end of the stream is reached,
+     * a {@code java.io.EOFException} will be thrown.
      *
      * <p> The bit offset within the stream is reset to zero before
      * the read occurs.
@@ -568,8 +568,8 @@
      * Reads {@code len} chars (unsigned 16-bit integers) from the
      * stream according to the current byte order, and
      * stores them into {@code c} starting at index
-     * {@code off}.  If the end of the stream is reached, an
-     * {@code java.io.EOFException} will be thrown.
+     * {@code off}.  If the end of the stream is reached,
+     * a {@code java.io.EOFException} will be thrown.
      *
      * <p> The bit offset within the stream is reset to zero before
      * the read occurs.
@@ -593,8 +593,8 @@
      * Reads {@code len} ints (signed 32-bit integers) from the
      * stream according to the current byte order, and
      * stores them into {@code i} starting at index
-     * {@code off}.  If the end of the stream is reached, an
-     * {@code java.io.EOFException} will be thrown.
+     * {@code off}.  If the end of the stream is reached,
+     * a {@code java.io.EOFException} will be thrown.
      *
      * <p> The bit offset within the stream is reset to zero before
      * the read occurs.
@@ -618,8 +618,8 @@
      * Reads {@code len} longs (signed 64-bit integers) from the
      * stream according to the current byte order, and
      * stores them into {@code l} starting at index
-     * {@code off}.  If the end of the stream is reached, an
-     * {@code java.io.EOFException} will be thrown.
+     * {@code off}.  If the end of the stream is reached,
+     * a {@code java.io.EOFException} will be thrown.
      *
      * <p> The bit offset within the stream is reset to zero before
      * the read occurs.
@@ -644,7 +644,7 @@
      * floats) from the stream according to the current byte order,
      * and stores them into {@code f} starting at
      * index {@code off}.  If the end of the stream is reached,
-     * an {@code java.io.EOFException} will be thrown.
+     * a {@code java.io.EOFException} will be thrown.
      *
      * <p> The bit offset within the stream is reset to zero before
      * the read occurs.
@@ -669,7 +669,7 @@
      * floats) from the stream according to the current byte order,
      * and stores them into {@code d} starting at
      * index {@code off}.  If the end of the stream is reached,
-     * an {@code java.io.EOFException} will be thrown.
+     * a {@code java.io.EOFException} will be thrown.
      *
      * <p> The bit offset within the stream is reset to zero before
      * the read occurs.
@@ -781,7 +781,7 @@
      * byte order is being used (i.e., {@code getByteOrder() == false}).
      *
      * <p> If the end of the stream is encountered before all the bits
-     * have been read, an {@code java.io.EOFException} is thrown.
+     * have been read, a {@code java.io.EOFException} is thrown.
      *
      * @param numBits the number of bits to read, as an {@code int}
      * between 0 and 64, inclusive.
@@ -848,8 +848,8 @@
      * {@code pos} is smaller than the flushed position (as
      * returned by {@code getflushedPosition}).
      *
-     * <p> It is legal to seek past the end of the file; an
-     * {@code java.io.EOFException} will be thrown only if a read is
+     * <p> It is legal to seek past the end of the file;
+     * a {@code java.io.EOFException} will be thrown only if a read is
      * performed.
      *
      * @param pos a {@code long} containing the desired file
--- a/jdk/src/java.desktop/share/classes/javax/imageio/stream/ImageOutputStream.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/imageio/stream/ImageOutputStream.java	Wed Jul 05 21:51:13 2017 +0200
@@ -44,7 +44,7 @@
  * a non-zero bit offset before a byte-aligned read.  When reading bytes,
  * any bit offset is set to 0 before the read; when writing bytes, a
  * non-zero bit offset causes the remaining bits in the byte to be written
- * as 0s.  The byte-aligned write then starts at the next byte position.
+ * as 0s. The byte-aligned write then starts at the next byte position.
  *
  * @see ImageInputStream
  *
@@ -290,7 +290,7 @@
     /**
      * Writes a {@code double} value, which is comprised of four
      * bytes, to the output stream. It does this as if it first
-     * converts this {@code double} value to an {@code long}
+     * converts this {@code double} value to a {@code long}
      * in exactly the manner of the
      * {@code Double.doubleToLongBits} method and then writes the
      * long value in exactly the manner of the {@code writeLong}
--- a/jdk/src/java.desktop/share/classes/javax/print/ServiceUI.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/print/ServiceUI.java	Wed Jul 05 21:51:13 2017 +0200
@@ -134,7 +134,9 @@
      *
      * @param gc used to select screen. null means primary or default screen.
      * @param x location of dialog including border in screen coordinates
+     * relative to the origin of {@code gc}.
      * @param y location of dialog including border in screen coordinates
+     * relative to the origin of {@code gc}.
      * @param services to be browsable, must be non-null.
      * @param defaultService initial PrintService to display.
      * @param flavor the flavor to be printed, or null.
--- a/jdk/src/java.desktop/share/classes/javax/print/package.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/print/package.html	Wed Jul 05 21:51:13 2017 +0200
@@ -122,7 +122,7 @@
 PrintRequestAttributeSet aset = 
 	new HashPrintRequestAttributeSet();
 aset.add(new Copies(5));
-aset.add(MediaSize.A4);
+aset.add(MediaSizeName.ISO_A4);
 aset.add(Sides.DUPLEX);
 PrintService[] services = 
   PrintServiceLookup.lookupPrintServices(psInFormat, aset);
--- a/jdk/src/java.desktop/share/classes/javax/sound/midi/Sequence.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/sound/midi/Sequence.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -266,11 +266,7 @@
      * @see #getTracks
      */
     public boolean deleteTrack(Track track) {
-
-        synchronized(tracks) {
-
-            return tracks.removeElement(track);
-        }
+        return tracks.removeElement(track);
     }
 
     /**
@@ -282,8 +278,8 @@
      * @see #deleteTrack
      */
     public Track[] getTracks() {
-
-        return tracks.toArray(new Track[tracks.size()]);
+        // Creation of the non-empty array will be synchronized inside toArray()
+        return tracks.toArray(new Track[0]);
     }
 
     /**
--- a/jdk/src/java.desktop/share/classes/javax/sound/sampled/AudioFormat.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/sound/sampled/AudioFormat.java	Wed Jul 05 21:51:13 2017 +0200
@@ -633,7 +633,7 @@
          * {@code String} is the same name that was passed to the constructor.
          * For the predefined encodings, the name is similar to the encoding's
          * variable (field) name. For example, {@code PCM_SIGNED.toString()}
-         * returns the name "pcm_signed".
+         * returns the name "PCM_SIGNED".
          *
          * @return the encoding name
          */
--- a/jdk/src/java.desktop/share/classes/javax/sound/sampled/EnumControl.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/sound/sampled/EnumControl.java	Wed Jul 05 21:51:13 2017 +0200
@@ -26,8 +26,8 @@
 package javax.sound.sampled;
 
 /**
- * A {@code EnumControl} provides control over a set of discrete possible values
- * , each represented by an object. In a graphical user interface, such a
+ * An {@code EnumControl} provides control over a set of discrete possible
+ * values, each represented by an object. In a graphical user interface, such a
  * control might be represented by a set of buttons, each of which chooses one
  * value or setting. For example, a reverb control might provide several preset
  * reverberation settings, instead of providing continuously adjustable
--- a/jdk/src/java.desktop/share/classes/javax/sound/sampled/UnsupportedAudioFileException.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/sound/sampled/UnsupportedAudioFileException.java	Wed Jul 05 21:51:13 2017 +0200
@@ -38,16 +38,16 @@
     private static final long serialVersionUID = -139127412623160368L;
 
     /**
-     * Constructs a {@code UnsupportedAudioFileException} that has {@code null}
-     * as its error detail message.
+     * Constructs an {@code UnsupportedAudioFileException} that has
+     * {@code null} as its error detail message.
      */
     public UnsupportedAudioFileException() {
         super();
     }
 
     /**
-     * Constructs a {@code UnsupportedAudioFileException} that has the specified
-     * detail message.
+     * Constructs an {@code UnsupportedAudioFileException} that has the
+     * specified detail message.
      *
      * @param  message a string containing the error detail message
      */
--- a/jdk/src/java.desktop/share/classes/javax/swing/BorderFactory.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/BorderFactory.java	Wed Jul 05 21:51:13 2017 +0200
@@ -52,7 +52,7 @@
 
 //// LineBorder ///////////////////////////////////////////////////////////////
     /**
-     * Creates a line border withe the specified color.
+     * Creates a line border with the specified color.
      *
      * @param color  a <code>Color</code> to use for the line
      * @return the <code>Border</code> object
--- a/jdk/src/java.desktop/share/classes/javax/swing/GroupLayout.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/GroupLayout.java	Wed Jul 05 21:51:13 2017 +0200
@@ -718,10 +718,10 @@
      * <p>
      * Linked {@code Component}s are not be resizable.
      *
-     * @param components the {@code Component}s that are to have the same size
      * @param axis the axis to link the size along; one of
      *             {@code SwingConstants.HORIZONTAL} or
-     *             {@code SwingConstans.VERTICAL}
+     *             {@code SwingConstants.VERTICAL}
+     * @param components the {@code Component}s that are to have the same size
      * @throws IllegalArgumentException if {@code components} is
      *         {@code null}, or contains {@code null}; or {@code axis}
      *          is not {@code SwingConstants.HORIZONTAL} or
--- a/jdk/src/java.desktop/share/classes/javax/swing/InputVerifier.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/InputVerifier.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,108 +28,151 @@
 import java.util.*;
 
 /**
- * The purpose of this class is to help clients support smooth focus
- * navigation through GUIs with text fields. Such GUIs often need
- * to ensure that the text entered by the user is valid (for example,
- * that it's in
- * the proper format) before allowing the user to navigate out of
- * the text field. To do this, clients create a subclass of
- * <code>InputVerifier</code> and, using <code>JComponent</code>'s
- * <code>setInputVerifier</code> method,
- * attach an instance of their subclass to the <code>JComponent</code> whose input they
- * want to validate. Before focus is transfered to another Swing component
- * that requests it, the input verifier's <code>shouldYieldFocus</code> method is
- * called.  Focus is transfered only if that method returns <code>true</code>.
+ * This class provides the validation mechanism for Swing components. GUIs often
+ * need to ensure that the components are in a valid state before allowing the
+ * user to navigate the input focus. To do this, clients create a subclass of
+ * {@code InputVerifier} and, using {@code JComponent}'s
+ * {@code setInputVerifier} method, attach an instance of their subclass to
+ * the {@code JComponent} which is the source of the focus transfer operation.
+ * The {@code InputVerifier} also provides the possibility to validate against
+ * the target of the focus transfer which may reject the focus.
+ * Before focus is transferred from the source Swing component to the target
+ * Swing component, the input verifier's
+ * {@code shouldYieldFocus(source, target)} method is called. Focus is
+ * transferred only if that method returns
+ * {@code true}.
  * <p>
  * The following example has two text fields, with the first one expecting
- * the string "pass" to be entered by the user. If that string is entered in
- * the first text field, then the user can advance to the second text field
- * either by clicking in it or by pressing TAB. However, if another string
- * is entered in the first text field, then the user will be unable to
+ * the string "pass" to be entered by the user. If either that string is entered
+ * in the first text field or the second text field contains "accept" string,
+ * then the user can advance focus to the second text field by clicking in it or
+ * by pressing TAB.
+ * However, if another string is entered in the first text field and the second
+ * text field does not contain "accept", then the user will be unable to
  * transfer focus to the second text field.
  *
  * <pre>
  * import java.awt.*;
- * import java.util.*;
- * import java.awt.event.*;
  * import javax.swing.*;
  *
  * // This program demonstrates the use of the Swing InputVerifier class.
  * // It creates two text fields; the first of the text fields expects the
- * // string "pass" as input, and will allow focus to advance out of it
- * // only after that string is typed in by the user.
+ * // string "pass" as input, and will allow focus to advance to the second text
+ * // field if either that string is typed in by the user or the second
+ * // field contains "accept" string.
  *
  * public class VerifierTest extends JFrame {
+ *
  *     public VerifierTest() {
- *         JTextField tf1 = new JTextField ("Type \"pass\" here");
- *         getContentPane().add (tf1, BorderLayout.NORTH);
- *         tf1.setInputVerifier(new PassVerifier());
+ *         JTextField field1 = new JTextField("Type \"pass\" here");
+ *         JTextField field2 = new JTextField("or \"accept\" here");
+ *         getContentPane().add(field1, BorderLayout.NORTH);
+ *         getContentPane().add(field2, BorderLayout.SOUTH);
  *
- *         JTextField tf2 = new JTextField ("TextField2");
- *         getContentPane().add (tf2, BorderLayout.SOUTH);
+ *         field.setInputVerifier(new InputVerifier() {
+ *             public boolean verify(JComponent input) {
+ *                return "pass".equals(((JTextField) input).getText());
+ *             }
  *
- *         WindowListener l = new WindowAdapter() {
- *             public void windowClosing(WindowEvent e) {
- *                 System.exit(0);
+ *             public boolean verifyTarget(JComponent input) {
+ *                 return "accept".equals(((JTextField) input).getText());
  *             }
- *         };
- *         addWindowListener(l);
- *     }
  *
- *     class PassVerifier extends InputVerifier {
- *         public boolean verify(JComponent input) {
- *             JTextField tf = (JTextField) input;
- *             return "pass".equals(tf.getText());
- *         }
+ *             public boolean shouldYieldFocus(JComponent source,
+ *                                                          JComponent target) {
+ *                 return verify(source) || verifyTarget(target);
+ *             }
+ *         });
+ *
+ *         pack();
+ *         setVisible(true);
  *     }
  *
  *     public static void main(String[] args) {
- *         Frame f = new VerifierTest();
- *         f.pack();
- *         f.setVisible(true);
+ *         SwingUtilities.invokeLater(VerifierTest::new);
  *     }
  * }
  * </pre>
  *
- *  @since 1.3
+ * @since 1.3
  */
-
-
 public abstract class InputVerifier {
 
-  /**
-   * Checks whether the JComponent's input is valid. This method should
-   * have no side effects. It returns a boolean indicating the status
-   * of the argument's input.
-   *
-   * @param input the JComponent to verify
-   * @return <code>true</code> when valid, <code>false</code> when invalid
-   * @see JComponent#setInputVerifier
-   * @see JComponent#getInputVerifier
-   *
-   */
+    /**
+     * Checks whether the JComponent's input is valid. This method should
+     * have no side effects. It returns a boolean indicating the status
+     * of the argument's input.
+     *
+     * @param input the JComponent to verify
+     * @return {@code true} when valid, {@code false} when invalid
+     * @see JComponent#setInputVerifier
+     * @see JComponent#getInputVerifier
+     */
+    public abstract boolean verify(JComponent input);
 
-  public abstract boolean verify(JComponent input);
-
+    /**
+     * Calls {@code verify(input)} to ensure that the input is valid.
+     * This method can have side effects. In particular, this method
+     * is called when the user attempts to advance focus out of the
+     * argument component into another Swing component in this window.
+     * If this method returns {@code true}, then the focus is transferred
+     * normally; if it returns {@code false}, then the focus remains in
+     * the argument component.
+     *
+     * @param input the JComponent to verify
+     * @return {@code true} when valid, {@code false} when invalid
+     * @see JComponent#setInputVerifier
+     * @see JComponent#getInputVerifier
+     *
+     * @deprecated use {@link #shouldYieldFocus(JComponent, JComponent)}
+     * instead.
+     */
+    @Deprecated(since = "9")
+    public boolean shouldYieldFocus(JComponent input) {
+        return verify(input);
+    }
 
-  /**
-   * Calls <code>verify(input)</code> to ensure that the input is valid.
-   * This method can have side effects. In particular, this method
-   * is called when the user attempts to advance focus out of the
-   * argument component into another Swing component in this window.
-   * If this method returns <code>true</code>, then the focus is transfered
-   * normally; if it returns <code>false</code>, then the focus remains in
-   * the argument component.
-   *
-   * @param input the JComponent to verify
-   * @return <code>true</code> when valid, <code>false</code> when invalid
-   * @see JComponent#setInputVerifier
-   * @see JComponent#getInputVerifier
-   *
-   */
+    /**
+     * Checks whether the target JComponent that will be receiving the focus
+     * is ready to accept it. This method should be over-ridden only if it is
+     * necessary to validate the target of the focus transfer.
+     * This method should have no side effects. It returns a boolean
+     * indicating the status of the argument's input.
+     *
+     * @implSpec By default this method returns {@code true}.
+     *
+     * @param target the target JComponent to verify
+     * @return {@code true} when valid, {@code false} when invalid
+     * @see JComponent#setInputVerifier
+     * @see JComponent#getInputVerifier
+     * @since 9
+     */
+    public boolean verifyTarget(JComponent target) {
+        return true;
+    }
 
-  public boolean shouldYieldFocus(JComponent input) {
-    return verify(input);
-  }
-
+    /**
+     * Is called by Swing if this {@code InputVerifier} is assigned to the
+     * {@code source} Swing component to check whether the requested focus
+     * transfer from the {@code source} to {@code target} is allowed.
+     * This method can have side effects.
+     * If this method returns {@code true}, then the focus is transferred
+     * normally; if it returns {@code false}, then the focus remains in
+     * the first argument component.
+     *
+     * @implSpec The basic implementation of this method returns the conjunction
+     * of results obtained from {@code verify(input)} and
+     * {@code verifyTarget(input)} to ensure that both the source and the target
+     * components are in valid state.
+     *
+     * @param source the source JComponent of the focus transfer
+     * @param target the target JComponent of the focus transfer
+     * @return {@code true} when valid, {@code false} when invalid
+     * @see JComponent#setInputVerifier
+     * @see JComponent#getInputVerifier
+     * @since 9
+     */
+    public boolean shouldYieldFocus(JComponent source, JComponent target) {
+        return shouldYieldFocus(source) && verifyTarget(target);
+    }
 }
--- a/jdk/src/java.desktop/share/classes/javax/swing/JComponent.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/JComponent.java	Wed Jul 05 21:51:13 2017 +0200
@@ -3587,7 +3587,7 @@
                     SwingUtilities.appContextPut(INPUT_VERIFIER_SOURCE_KEY,
                                                  jFocusOwner);
                     try {
-                        return iv.shouldYieldFocus(jFocusOwner);
+                        return iv.shouldYieldFocus(jFocusOwner, target);
                     } finally {
                         if (currentSource != null) {
                             // We're already in the InputVerifier for
--- a/jdk/src/java.desktop/share/classes/javax/swing/JEditorPane.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/JEditorPane.java	Wed Jul 05 21:51:13 2017 +0200
@@ -559,10 +559,9 @@
             in = new BufferedInputStream(in, READ_LIMIT);
             in.mark(READ_LIMIT);
         }
-        try {
-            String charset = (String) getClientProperty("charset");
-            Reader r = (charset != null) ? new InputStreamReader(in, charset) :
-                new InputStreamReader(in);
+        String charset = (String) getClientProperty("charset");
+        try(Reader r = (charset != null) ? new InputStreamReader(in, charset) :
+                new InputStreamReader(in)) {
             kit.read(r, doc, 0);
         } catch (BadLocationException e) {
             throw new IOException(e.getMessage());
@@ -1186,7 +1185,7 @@
         if (k == null) {
             // try to dynamically load the support
             String classname = getKitTypeRegistry().get(type);
-            ClassLoader loader = getKitLoaderRegistry().get(type);
+            ClassLoader loader = getKitLoaderRegistry().get(type).orElse(null);
             try {
                 Class<?> c;
                 if (loader != null) {
@@ -1243,7 +1242,7 @@
      */
     public static void registerEditorKitForContentType(String type, String classname, ClassLoader loader) {
         getKitTypeRegistry().put(type, classname);
-        getKitLoaderRegistry().put(type, loader);
+        getKitLoaderRegistry().put(type, Optional.ofNullable(loader));
         getKitRegisty().remove(type);
     }
 
@@ -1268,10 +1267,10 @@
         return tmp;
     }
 
-    private static Hashtable<String, ClassLoader> getKitLoaderRegistry() {
+    private static Hashtable<String, Optional<ClassLoader>> getKitLoaderRegistry() {
         loadDefaultKitsIfNecessary();
         @SuppressWarnings("unchecked")
-        Hashtable<String, ClassLoader> tmp =
+        Hashtable<String,  Optional<ClassLoader>> tmp =
             (Hashtable)SwingUtilities.appContextGet(kitLoaderRegistryKey);
         return tmp;
     }
--- a/jdk/src/java.desktop/share/classes/javax/swing/LookAndFeel.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/LookAndFeel.java	Wed Jul 05 21:51:13 2017 +0200
@@ -346,7 +346,7 @@
     }
 
     /**
-     * Creates a {@code InputMapUIResource} from <code>keys</code>. This is
+     * Creates an {@code InputMapUIResource} from <code>keys</code>. This is
      * a convenience method for creating a new {@code InputMapUIResource},
      * invoking {@code loadKeyBindings(map, keys)}, and returning the
      * {@code InputMapUIResource}.
--- a/jdk/src/java.desktop/share/classes/javax/swing/PopupFactory.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/PopupFactory.java	Wed Jul 05 21:51:13 2017 +0200
@@ -175,12 +175,43 @@
      * @return Popup containing Contents
      */
     public Popup getPopup(Component owner, Component contents,
-                          int x, int y) throws IllegalArgumentException {
+            int x, int y) throws IllegalArgumentException {
+        return getPopup(owner, contents, x, y, false);
+    }
+
+    /**
+     * Creates a {@code Popup} for the Component {@code owner}
+     * containing the Component {@code contents}.
+     * The window containing the component {@code owner}
+     * will be used as the parent window. A null {@code owner} implies there
+     * is no valid parent. {@code x} and {@code y} specify the preferred
+     * initial location to place the {@code Popup} at. Based on screen size,
+     * or other parameters, the {@code Popup} may not display at {@code x} and
+     * {@code y}. {@code isHeavyWeightPopup} specifies if the {@code Popup}
+     * will be heavyweight. Passing {@code true} will force the {@code Popup}
+     * type to be heavyweight, otherwise {@code Popup} type will be selected by
+     * {@code Popup} factory. Lightweight {@code Popup} windows are more
+     * efficient than heavyweight (native peer) windows, but lightweight
+     * and heavyweight components do not mix well in a GUI.
+     * This method is intended to be used only by PopupFactory sub-classes.
+     * @param owner Component mouse coordinates are relative to, may be null
+     * @param contents Contents of the Popup
+     * @param x Initial x screen coordinate
+     * @param y Initial y screen coordinate
+     * @param isHeavyWeightPopup true if Popup should be heavy weight,
+     * otherwise popup type will be selected by popup factory.
+     * @throws IllegalArgumentException if contents is null
+     * @return Popup containing Contents
+     */
+    protected Popup getPopup(Component owner, Component contents, int x, int y,
+            boolean isHeavyWeightPopup) throws IllegalArgumentException {
         if (contents == null) {
             throw new IllegalArgumentException(
-                          "Popup.getPopup must be passed non-null contents");
+                    "Popup.getPopup must be passed non-null contents");
         }
-
+        if (isHeavyWeightPopup) {
+            return getPopup(owner, contents, x, y, HEAVY_WEIGHT_POPUP);
+        }
         int popupType = getPopupType(owner, contents, x, y);
         Popup popup = getPopup(owner, contents, x, y, popupType);
 
@@ -987,3 +1018,4 @@
         }
     }
 }
+
--- a/jdk/src/java.desktop/share/classes/javax/swing/UIManager.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/UIManager.java	Wed Jul 05 21:51:13 2017 +0200
@@ -59,6 +59,7 @@
 import sun.swing.SwingUtilities2;
 import java.lang.reflect.Method;
 import java.util.HashMap;
+import java.util.Objects;
 import sun.awt.AppContext;
 import sun.awt.AWTAccessor;
 
@@ -495,6 +496,48 @@
         return getLAFState().lookAndFeel;
     }
 
+    /**
+     * Creates a supported built-in Java {@code LookAndFeel} specified
+     * by the given {@code L&F name} name.
+     *
+     * @param name a {@code String} specifying the name of the built-in
+     *             look and feel
+     * @return the built-in {@code LookAndFeel} object
+     * @throws NullPointerException if {@code name} is {@code null}
+     * @throws UnsupportedLookAndFeelException if the built-in Java {@code L&F}
+     *         is not found for the given name or it is not supported by the
+     *         underlying platform
+     *
+     * @see LookAndFeel#getName
+     * @see LookAndFeel#isSupportedLookAndFeel
+     *
+     * @since 9
+     */
+    public static LookAndFeel createLookAndFeel(String name)
+            throws UnsupportedLookAndFeelException {
+        Objects.requireNonNull(name);
+
+        if ("GTK look and feel".equals(name)) {
+            name = "GTK+";
+        }
+
+        try {
+            for (LookAndFeelInfo info : installedLAFs) {
+                if (info.getName().equals(name)) {
+                    Class<?> cls = Class.forName(UIManager.class.getModule(),
+                                                 info.getClassName());
+                    LookAndFeel laf = (LookAndFeel) cls.newInstance();
+                    if (!laf.isSupportedLookAndFeel()) {
+                        break;
+                    }
+                    return laf;
+                }
+            }
+        } catch (InstantiationException | IllegalAccessException ignore) {
+        }
+
+        throw new UnsupportedLookAndFeelException(name);
+    }
 
     /**
      * Sets the current look and feel to {@code newLookAndFeel}.
--- a/jdk/src/java.desktop/share/classes/javax/swing/event/AncestorListener.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/event/AncestorListener.java	Wed Jul 05 21:51:13 2017 +0200
@@ -57,7 +57,7 @@
     /**
      * Called when the source or one of its ancestors is made invisible
      * either by setVisible(false) being called or by its being
-     * remove from the component hierarchy.  The method is only called
+     * removed from the component hierarchy.  The method is only called
      * if the source has actually become invisible.  For this to be true
      * at least one of its parents must by invisible or it is not in
      * a hierarchy rooted at a Window
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/BorderUIResource.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/BorderUIResource.java	Wed Jul 05 21:51:13 2017 +0200
@@ -160,7 +160,7 @@
     public static class EmptyBorderUIResource extends EmptyBorder implements UIResource {
 
         /**
-         * Constructs a {@code EmptyBorderUIResource}.
+         * Constructs an {@code EmptyBorderUIResource}.
          * @param top the top inset of the border
          * @param left the left inset of the border
          * @param bottom the bottom inset of the border
@@ -170,7 +170,7 @@
             super(top, left, bottom, right);
         }
         /**
-         * Constructs a {@code EmptyBorderUIResource}.
+         * Constructs an {@code EmptyBorderUIResource}.
          * @param insets the insets of the border
          */
         @ConstructorProperties({"borderInsets"})
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboBoxUI.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -150,8 +150,6 @@
      */
     protected KeyListener popupKeyListener;
 
-    private MouseWheelListener mouseWheelListener;
-
     // This is used for knowing when to cache the minimum preferred size.
     // If the data in the list changes, the cached value get marked for recalc.
     // Added to the current JComboBox model
@@ -415,10 +413,6 @@
                 comboBox.getModel().addListDataListener( listDataListener );
             }
         }
-
-        if ((mouseWheelListener = createMouseWheelListener()) != null) {
-            comboBox.addMouseWheelListener(mouseWheelListener);
-        }
     }
 
     /**
@@ -465,9 +459,6 @@
                 comboBox.getModel().removeListDataListener( listDataListener );
             }
         }
-        if (mouseWheelListener != null) {
-            comboBox.removeMouseWheelListener(mouseWheelListener);
-        }
     }
 
     /**
@@ -581,10 +572,6 @@
         return handler;
     }
 
-    private MouseWheelListener createMouseWheelListener() {
-        return getHandler();
-    }
-
     //
     // end UI Initialization
     //======================
@@ -1737,8 +1724,7 @@
     //
     private class Handler implements ActionListener, FocusListener,
                                      KeyListener, LayoutManager,
-                                     ListDataListener, PropertyChangeListener,
-                                     MouseWheelListener {
+                                     ListDataListener, PropertyChangeListener {
         //
         // PropertyChangeListener
         //
@@ -2026,10 +2012,6 @@
                 }
             }
         }
-
-        public void mouseWheelMoved(MouseWheelEvent e) {
-            e.consume();
-        }
    }
 
     class DefaultKeySelectionManager implements JComboBox.KeySelectionManager, UIResource {
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboPopup.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboPopup.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -379,17 +379,26 @@
     // PopupMenuListeners.
 
     protected void firePopupMenuWillBecomeVisible() {
+        if (scrollerMouseWheelListener != null) {
+            comboBox.addMouseWheelListener(scrollerMouseWheelListener);
+        }
         super.firePopupMenuWillBecomeVisible();
         // comboBox.firePopupMenuWillBecomeVisible() is called from BasicComboPopup.show() method
         // to let the user change the popup menu from the PopupMenuListener.popupMenuWillBecomeVisible()
     }
 
     protected void firePopupMenuWillBecomeInvisible() {
+        if (scrollerMouseWheelListener != null) {
+            comboBox.removeMouseWheelListener(scrollerMouseWheelListener);
+        }
         super.firePopupMenuWillBecomeInvisible();
         comboBox.firePopupMenuWillBecomeInvisible();
     }
 
     protected void firePopupMenuCanceled() {
+        if (scrollerMouseWheelListener != null) {
+            comboBox.removeMouseWheelListener(scrollerMouseWheelListener);
+        }
         super.firePopupMenuCanceled();
         comboBox.firePopupMenuCanceled();
     }
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1050,17 +1050,6 @@
             FileSystemView fs = chooser.getFileSystemView();
             File dir = chooser.getCurrentDirectory();
 
-            if (filename != null) {
-                // Remove whitespaces from end of filename
-                int i = filename.length() - 1;
-
-                while (i >=0 && filename.charAt(i) <= ' ') {
-                    i--;
-                }
-
-                filename = filename.substring(0, i + 1);
-            }
-
             if (filename == null || filename.length() == 0) {
                 // no file selected, multiple selection off, therefore cancel the approve action
                 resetGlobFilter();
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Wed Jul 05 21:51:13 2017 +0200
@@ -228,6 +228,15 @@
             arrowIcon instanceof UIResource) {
             arrowIcon = UIManager.getIcon(prefix + ".arrowIcon");
         }
+        updateCheckIcon();
+    }
+
+    /**
+     * Updates check Icon based on column layout
+     */
+    private void updateCheckIcon() {
+        String prefix = getPropertyPrefix();
+
         if (checkIcon == null ||
             checkIcon instanceof UIResource) {
             checkIcon = UIManager.getIcon(prefix + ".checkIcon");
@@ -238,8 +247,8 @@
                     BasicGraphicsUtils.isLeftToRight(menuItem), menuItem);
             if (isColumnLayout) {
                 MenuItemCheckIconFactory iconFactory =
-                    (MenuItemCheckIconFactory) UIManager.get(prefix
-                        + ".checkIconFactory");
+                        (MenuItemCheckIconFactory) UIManager.get(prefix
+                                + ".checkIconFactory");
                 if (iconFactory != null
                         && MenuItemLayoutHelper.useCheckAndArrow(menuItem)
                         && iconFactory.isCompatible(checkIcon, prefix)) {
@@ -1090,6 +1099,8 @@
                 BasicHTML.updateRenderer(lbl, text);
             } else if (name  == "iconTextGap") {
                 defaultTextIconGap = ((Number)e.getNewValue()).intValue();
+            } else if (name == "horizontalTextPosition") {
+                updateCheckIcon();
             }
         }
     }
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicRootPaneUI.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicRootPaneUI.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -281,7 +281,7 @@
 
             if (sender instanceof JRootPane) {
                 JButton owner = ((JRootPane)sender).getDefaultButton();
-                return (owner != null && owner.getModel().isEnabled());
+                return (owner != null && owner.getModel().isEnabled() && owner.isShowing());
             }
             return true;
         }
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1212,7 +1212,7 @@
             scrollbar.repaint(r.x, r.y, r.width, r.height);
 
             trackHighlight = NO_HIGHLIGHT;
-            isDragging = false;
+            setDragging(false);
             offset = 0;
             scrollTimer.stop();
             useCachedValue = true;
@@ -1256,7 +1256,7 @@
                     offset = currentMouseX - getThumbBounds().x;
                     break;
                 }
-                isDragging = true;
+                setDragging(true);
                 return;
             }
             else if (getSupportsAbsolutePositioning() &&
@@ -1269,11 +1269,11 @@
                     offset = getThumbBounds().width / 2;
                     break;
                 }
-                isDragging = true;
+                setDragging(true);
                 setValueFrom(e);
                 return;
             }
-            isDragging = false;
+            setDragging(false);
 
             Dimension sbSize = scrollbar.getSize();
             direction = +1;
@@ -1636,6 +1636,12 @@
         }
     }
 
+    private void setDragging(boolean dragging) {
+        this.isDragging = dragging;
+        scrollbar.repaint(getThumbBounds());
+    }
+
+
     /** Property change handler */
     public class PropertyChangeHandler implements PropertyChangeListener
     {
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/synth/SynthScrollBarUI.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -201,9 +201,12 @@
     }
 
     private int getComponentState(JComponent c, Region region) {
-        if (region == Region.SCROLL_BAR_THUMB && isThumbRollover() &&
-                                                 c.isEnabled()) {
-            return MOUSE_OVER;
+        if (region == Region.SCROLL_BAR_THUMB && c.isEnabled()) {
+            if (isDragging) {
+                return PRESSED;
+            } else if (isThumbRollover()) {
+                return MOUSE_OVER;
+            }
         }
         return SynthLookAndFeel.getComponentState(c);
     }
--- a/jdk/src/java.desktop/share/classes/javax/swing/text/AbstractDocument.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/text/AbstractDocument.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -702,6 +702,9 @@
         if ((str == null) || (str.length() == 0)) {
             return;
         }
+        if (offs > getLength()) {
+            throw new BadLocationException("Invalid insert", getLength());
+        }
         DocumentFilter filter = getDocumentFilter();
 
         writeLock();
--- a/jdk/src/java.desktop/share/classes/javax/swing/text/html/parser/Parser.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/text/html/parser/Parser.java	Wed Jul 05 21:51:13 2017 +0200
@@ -2084,57 +2084,69 @@
         while (true) {
             int i = 0;
             while (!insideComment && i < SCRIPT_END_TAG.length
-                       && (SCRIPT_END_TAG[i] == ch
-                           || SCRIPT_END_TAG_UPPER_CASE[i] == ch)) {
+                    && (SCRIPT_END_TAG[i] == ch
+                    || SCRIPT_END_TAG_UPPER_CASE[i] == ch)) {
                 charsToAdd[i] = (char) ch;
                 ch = readCh();
                 i++;
             }
             if (i == SCRIPT_END_TAG.length) {
-
-                /*  '</script>' tag detected */
-                /* Here, ch == the first character after </script> */
                 return;
-            } else {
+            }
 
-                /* To account for extra read()'s that happened */
-                for (int j = 0; j < i; j++) {
-                    addString(charsToAdd[j]);
+            if (!insideComment && i == 1 && charsToAdd[0] == START_COMMENT.charAt(0)) {
+                // it isn't end script tag, but may be it's start comment tag?
+                while (i < START_COMMENT.length()
+                        && START_COMMENT.charAt(i) == ch) {
+                    charsToAdd[i] = (char) ch;
+                    ch = readCh();
+                    i++;
                 }
-
-                switch (ch) {
-                case -1:
-                    error("eof.script");
-                    return;
-                case '\n':
-                    ln++;
+                if (i == START_COMMENT.length()) {
+                    insideComment = true;
+                }
+            }
+            if (insideComment) {
+                while (i < END_COMMENT.length()
+                        && END_COMMENT.charAt(i) == ch) {
+                    charsToAdd[i] = (char) ch;
                     ch = readCh();
-                    lfCount++;
-                    addString('\n');
-                    break;
-                case '\r':
-                    ln++;
-                    if ((ch = readCh()) == '\n') {
-                        ch = readCh();
-                        crlfCount++;
-                    } else {
-                        crCount++;
-                    }
-                    addString('\n');
-                    break;
-                default:
-                    addString(ch);
-                    String str = new String(getChars(0, strpos));
-                    if (!insideComment && str.endsWith(START_COMMENT)) {
-                        insideComment = true;
-                    }
-                    if (insideComment && str.endsWith(END_COMMENT)) {
-                        insideComment = false;
-                    }
+                    i++;
+                }
+                if (i == END_COMMENT.length()) {
+                    insideComment = false;
+                }
+            }
+
+            /* To account for extra read()'s that happened */
+            for (int j = 0; j < i; j++) {
+                addString(charsToAdd[j]);
+            }
+            switch (ch) {
+            case -1:
+                error("eof.script");
+                return;
+            case '\n':
+                ln++;
+                ch = readCh();
+                lfCount++;
+                addString('\n');
+                break;
+            case '\r':
+                ln++;
+                if ((ch = readCh()) == '\n') {
                     ch = readCh();
-                    break;
-                } // switch
-            }
+                    crlfCount++;
+                } else {
+                    crCount++;
+                }
+                addString('\n');
+                break;
+            default:
+                addString(ch);
+                ch = readCh();
+                break;
+            } // switch
         } // while
     }
 
--- a/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_de.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_de.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,7 +38,7 @@
             {"appletviewer.menuitem.stop", "Stoppen"},
             {"appletviewer.menuitem.save", "Speichern..."},
             {"appletviewer.menuitem.start", "Starten..."},
-            {"appletviewer.menuitem.clone", "Clonen..."},
+            {"appletviewer.menuitem.clone", "Klonen..."},
             {"appletviewer.menuitem.tag", "Tag..."},
             {"appletviewer.menuitem.info", "Informationen..."},
             {"appletviewer.menuitem.edit", "Bearbeiten"},
@@ -73,7 +73,8 @@
             {"appletviewer.parse.warning.embed.requiresheight", "Warnung: F\u00FCr <embed>-Tag ist ein \"height\"-Attribut erforderlich."},
             {"appletviewer.parse.warning.embed.requireswidth", "Warnung: F\u00FCr <embed>-Tag ist ein \"width\"-Attribut erforderlich."},
             {"appletviewer.parse.warning.appnotLongersupported", "Warnung: <app>-Tag wird nicht mehr unterst\u00FCtzt. Verwenden Sie stattdessen <applet>:"},
-            {"appletviewer.usage", "Verwendung: appletviewer <Optionen> url(s)\n\nwobei die <Optionen> Folgendes umfassen:\n  -debug                  Applet Viewer im Java-Debugger starten\n  -encoding <Codierung>    Zeichencodierung f\u00FCr HTML-Dateien angeben\n  -J<Laufzeitkennzeichen>        Argument an den Java-Interpreter \u00FCbergeben\n\nDie Option \"-J\" ist nicht standardm\u00E4\u00DFig und kann ohne vorherige Ank\u00FCndigung ge\u00E4ndert werden."},
+            {"appletviewer.deprecated", "AppletViewer ist veraltet."},
+            {"appletviewer.usage", "Verwendung: appletviewer <Optionen> url(s)\n\nwobei die <Optionen> Folgendes umfassen:\n  -encoding <Codierung>    Zeichencodierung f\u00FCr HTML-Dateien angeben\n  -J<Laufzeitkennzeichen>        Argument an den Java-Interpreter \u00FCbergeben\n\nDie Option \"-J\" ist nicht standardm\u00E4\u00DFig und kann ohne vorherige Ank\u00FCndigung ge\u00E4ndert werden."},
             {"appletviewer.main.err.unsupportedopt", "Nicht unterst\u00FCtzte Option: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "Unbekanntes Argument: {0}"},
             {"appletviewer.main.err.dupoption", "Doppelte Verwendung von Option: {0}"},
--- a/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_es.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_es.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -73,7 +73,8 @@
             {"appletviewer.parse.warning.embed.requiresheight", "Advertencia: la etiqueta <embed> requiere el atributo height."},
             {"appletviewer.parse.warning.embed.requireswidth", "Advertencia: la etiqueta <embed> requiere el atributo width."},
             {"appletviewer.parse.warning.appnotLongersupported", "Advertencia: la etiqueta <app> ya no est\u00E1 soportada, utilice <applet> en su lugar:"},
-            {"appletviewer.usage", "Sintaxis: appletviewer <opciones> url(s)\n\ndonde <opciones> incluye:\n  -debug                  Iniciar el visor de applet en el depurador Java\n  -encoding <codificaci\u00F3n>    Especificar la codificaci\u00F3n de caracteres utilizada por los archivos HTML\n  -J<indicador de tiempo de ejecuci\u00F3n>        Transferir argumento al int\u00E9rprete de Java\n\nLa opci\u00F3n -J es no est\u00E1ndar y est\u00E1 sujeta a cambios sin previo aviso."},
+            {"appletviewer.deprecated", "AppletViewer est\u00E1 anticuado."},
+            {"appletviewer.usage", "Sintaxis: appletviewer <opciones> url(s)\n\ndonde <opciones> incluye:\n  -encoding <codificaci\u00F3n>    Especificar la codificaci\u00F3n de caracteres utilizada por los archivos HTML\n  -J<indicador de tiempo de ejecuci\u00F3n>        Transferir argumento al int\u00E9rprete de Java\n\nLa opci\u00F3n -J es no est\u00E1ndar y est\u00E1 sujeta a cambios sin previo aviso."},
             {"appletviewer.main.err.unsupportedopt", "Opci\u00F3n no soportada: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "Argumento no reconocido: {0}"},
             {"appletviewer.main.err.dupoption", "Uso duplicado de la opci\u00F3n: {0}"},
--- a/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_fr.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_fr.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -73,7 +73,8 @@
             {"appletviewer.parse.warning.embed.requiresheight", "Avertissement : la balise <embed> requiert un attribut de hauteur."},
             {"appletviewer.parse.warning.embed.requireswidth", "Avertissement : la balise <embed> requiert un attribut de largeur."},
             {"appletviewer.parse.warning.appnotLongersupported", "Avertissement : la balise <app> n'est plus prise en charge, utilisez <applet> \u00E0 la place :"},
-            {"appletviewer.usage", "Syntaxe : appletviewer <options> url(s)\n\no\u00F9 <options> inclut :\n  -debug                  D\u00E9marrer le visualiseur d'applets dans le d\u00E9bogueur Java\n  -encoding <encoding>    Indiquer l'encodage de caract\u00E8res utilis\u00E9 par les fichiers HTML\n  -J<runtime flag>        Transmettre l'argument \u00E0 l'interpr\u00E9teur Java\n\nL'option -J n'est pas standard et elle peut \u00EAtre modifi\u00E9e sans pr\u00E9avis."},
+            {"appletviewer.deprecated", "AppletViewer est en phase d'abandon."},
+            {"appletviewer.usage", "Syntaxe : appletviewer <options> url(s)\n\no\u00F9 <options> inclut :\n  -encoding <encoding>    Indiquer l'encodage de caract\u00E8res utilis\u00E9 par les fichiers HTML\n  -J<runtime flag>        Transmettre l'argument \u00E0 l'interpr\u00E9teur Java\n\nL'option -J n'est pas standard et elle peut \u00EAtre modifi\u00E9e sans pr\u00E9avis."},
             {"appletviewer.main.err.unsupportedopt", "Option non prise en charge : {0}"},
             {"appletviewer.main.err.unrecognizedarg", "Argument non reconnu : {0}"},
             {"appletviewer.main.err.dupoption", "Utilisation en double de l''option : {0}"},
--- a/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_it.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_it.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -73,7 +73,8 @@
             {"appletviewer.parse.warning.embed.requiresheight", "Avvertenza: la tag <embed> richiede un attributo height."},
             {"appletviewer.parse.warning.embed.requireswidth", "Avvertenza: la tag <embed> richiede un attributo width."},
             {"appletviewer.parse.warning.appnotLongersupported", "Avvertenza: la tag <app> non \u00E8 pi\u00F9 supportata. Utilizzare <applet>:"},
-            {"appletviewer.usage", "Uso: appletviewer <opzioni> url(s)\n\ndove <opzioni> includono:\n  -debug                  Avvia il visualizzatore applet nel debugger Java\n  -encoding <codifica>    Specifica la codifica dei caratteri utilizzata dai file HTML\n  -J<flag runtime>        Passa l'argomento all'interpreter Java\n\nL'opzione -J non \u00E8 standard ed \u00E8 soggetta a modifica senza preavviso."},
+            {"appletviewer.deprecated", "AppletViewer non pi\u00F9 valido."},
+            {"appletviewer.usage", "Uso: appletviewer <options> url(s)\n\ndove <options> includono:\n  -encoding <encoding>    Specifica la codifica dei caratteri utilizzata dai file HTML\n  -J<runtime flag>        Passa l'argomento all'interpreter Java\n\nL'opzione -J non \u00E8 standard ed \u00E8 soggetta a modifica senza preavviso."},
             {"appletviewer.main.err.unsupportedopt", "Opzione non supportata: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "Argomento non riconosciuto: {0}"},
             {"appletviewer.main.err.dupoption", "Uso duplicato dell''opzione: {0}"},
--- a/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_ja.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_ja.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -57,9 +57,9 @@
             {"appletviewer.appletinfo.applet", "-- \u30A2\u30D7\u30EC\u30C3\u30C8\u60C5\u5831\u306A\u3057 --"},
             {"appletviewer.appletinfo.param", "-- \u30D1\u30E9\u30E1\u30FC\u30BF\u60C5\u5831\u306A\u3057 --"},
             {"appletviewer.appletinfo.textframe", "\u30A2\u30D7\u30EC\u30C3\u30C8\u60C5\u5831"},
-            {"appletviewer.appletprint.fail", "\u5370\u5237\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"},
-            {"appletviewer.appletprint.finish", "\u5370\u5237\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\u3002"},
-            {"appletviewer.appletprint.cancel", "\u5370\u5237\u304C\u4E2D\u6B62\u3055\u308C\u307E\u3057\u305F\u3002"},
+            {"appletviewer.appletprint.fail", "\u5370\u5237\u304C\u5931\u6557\u3057\u307E\u3057\u305F\u3002"},
+            {"appletviewer.appletprint.finish", "\u5370\u5237\u3092\u7D42\u4E86\u3057\u307E\u3057\u305F\u3002"},
+            {"appletviewer.appletprint.cancel", "\u5370\u5237\u304C\u53D6\u308A\u6D88\u3055\u308C\u307E\u3057\u305F\u3002"},
             {"appletviewer.appletencoding", "\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0: {0}"},
             {"appletviewer.parse.warning.requiresname", "\u8B66\u544A: <param name=... value=...>\u30BF\u30B0\u306Bname\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
             {"appletviewer.parse.warning.paramoutside", "\u8B66\u544A: <param>\u30BF\u30B0\u304C<applet> ... </applet>\u306E\u5916\u5074\u3067\u3059\u3002"},
@@ -73,7 +73,8 @@
             {"appletviewer.parse.warning.embed.requiresheight", "\u8B66\u544A: <embed>\u30BF\u30B0\u306Bheight\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
             {"appletviewer.parse.warning.embed.requireswidth", "\u8B66\u544A: <embed>\u30BF\u30B0\u306Bwidth\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002"},
             {"appletviewer.parse.warning.appnotLongersupported", "\u8B66\u544A: <app>\u30BF\u30B0\u306F\u73FE\u5728\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u304B\u308F\u308A\u306B<applet>\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
-            {"appletviewer.usage", "\u4F7F\u7528\u65B9\u6CD5: appletviewer <options> url(s)\n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059:\n  -debug                  Java\u30C7\u30D0\u30C3\u30AC\u3067\u30A2\u30D7\u30EC\u30C3\u30C8\u30FB\u30D3\u30E5\u30FC\u30A2\u3092\u958B\u59CB\u3059\u308B\n  -encoding <encoding>    HTML\u30D5\u30A1\u30A4\u30EB\u306B\u3088\u3063\u3066\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3059\u308B\n  -J<runtime flag>        \u5F15\u6570\u3092Java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u6E21\u3059\n\n-J\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u3001\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002"},
+            {"appletviewer.deprecated", "AppletViewer\u306F\u975E\u63A8\u5968\u3067\u3059\u3002"},
+            {"appletviewer.usage", "\u4F7F\u7528\u65B9\u6CD5: appletviewer <options> url(s)\n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059:\n  -encoding <encoding>    HTML\u30D5\u30A1\u30A4\u30EB\u306B\u3088\u3063\u3066\u4F7F\u7528\u3055\u308C\u308B\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3059\u308B\n  -J<runtime flag>        \u5F15\u6570\u3092Java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u6E21\u3059\n\n-J\u306F\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3042\u308A\u3001\u4E88\u544A\u306A\u3057\u306B\u5909\u66F4\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002"},
             {"appletviewer.main.err.unsupportedopt", "\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "\u8A8D\u8B58\u3055\u308C\u306A\u3044\u5F15\u6570: {0}"},
             {"appletviewer.main.err.dupoption", "\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4F7F\u7528\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059: {0}"},
@@ -98,7 +99,7 @@
             {"appletioexception.loadclass.throw.notloaded", "\u30AF\u30E9\u30B9\u304C\u30ED\u30FC\u30C9\u3055\u308C\u307E\u305B\u3093: {0}"},
             {"appletclassloader.loadcode.verbose", "{1}\u3092\u53D6\u5F97\u3059\u308B\u305F\u3081\u306E{0}\u3078\u306E\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u958B\u304D\u307E\u3059"},
             {"appletclassloader.filenotfound", "{0}\u306E\u691C\u7D22\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"},
-            {"appletclassloader.fileformat", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u30FB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletclassloader.fileformat", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
             {"appletclassloader.fileioexception", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u5165\u51FA\u529B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
             {"appletclassloader.fileexception", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
             {"appletclassloader.filedeath", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u304C\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3057\u305F"},
@@ -132,7 +133,7 @@
             {"appletpanel.notdisposed", "\u30ED\u30FC\u30C9: \u30A2\u30D7\u30EC\u30C3\u30C8\u304C\u7834\u68C4\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
             {"appletpanel.bail", "\u4E2D\u65AD\u6E08: \u7D42\u4E86\u3057\u3066\u3044\u307E\u3059\u3002"},
             {"appletpanel.filenotfound", "{0}\u306E\u691C\u7D22\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"},
-            {"appletpanel.fileformat", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u30FB\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
+            {"appletpanel.fileformat", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
             {"appletpanel.fileioexception", "{0}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B\u5165\u51FA\u529B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
             {"appletpanel.fileexception", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F"},
             {"appletpanel.filedeath", "{1}\u306E\u30ED\u30FC\u30C9\u4E2D\u306B{0}\u304C\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3057\u305F"},
--- a/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_ko.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_ko.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -73,13 +73,14 @@
             {"appletviewer.parse.warning.embed.requiresheight", "\uACBD\uACE0: <embed> \uD0DC\uADF8\uC5D0\uB294 height \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
             {"appletviewer.parse.warning.embed.requireswidth", "\uACBD\uACE0: <embed> \uD0DC\uADF8\uC5D0\uB294 width \uC18D\uC131\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
             {"appletviewer.parse.warning.appnotLongersupported", "\uACBD\uACE0: <app> \uD0DC\uADF8\uB294 \uB354 \uC774\uC0C1 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB300\uC2E0 <applet>\uC744 \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624."},
-            {"appletviewer.usage", "\uC0AC\uC6A9\uBC95: appletviewer <options> url(s)\n\n\uC5EC\uAE30\uC11C <options>\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n  -debug                  Java \uB514\uBC84\uAC70\uC5D0\uC11C \uC560\uD50C\uB9BF \uBDF0\uC5B4\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4.\n  -encoding <encoding>    HTML \uD30C\uC77C\uC5D0 \uC0AC\uC6A9\uB420 \uBB38\uC790 \uC778\uCF54\uB529\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n  -J<runtime flag>        Java \uC778\uD130\uD504\uB9AC\uD130\uB85C \uC778\uC218\uB97C \uC804\uB2EC\uD569\uB2C8\uB2E4.\n\n-J \uC635\uC158\uC740 \uD45C\uC900\uC774 \uC544\uB2C8\uBA70 \uC608\uACE0 \uC5C6\uC774 \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4."},
+            {"appletviewer.deprecated", "AppletViewer\uB294 \uB354 \uC774\uC0C1 \uC0AC\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
+            {"appletviewer.usage", "\uC0AC\uC6A9\uBC95: appletviewer <options> url(s)\n\n\uC5EC\uAE30\uC11C <options>\uB294 \uB2E4\uC74C\uACFC \uAC19\uC2B5\uB2C8\uB2E4.\n  -encoding <encoding>    HTML \uD30C\uC77C\uC5D0 \uC0AC\uC6A9\uB420 \uBB38\uC790 \uC778\uCF54\uB529\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n  -J<runtime flag>        Java \uC778\uD130\uD504\uB9AC\uD130\uB85C \uC778\uC218\uB97C \uC804\uB2EC\uD569\uB2C8\uB2E4.\n\n-J \uC635\uC158\uC740 \uD45C\uC900\uC774 \uC544\uB2C8\uBA70 \uC608\uACE0 \uC5C6\uC774 \uBCC0\uACBD\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4."},
             {"appletviewer.main.err.unsupportedopt", "\uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uC635\uC158: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "\uC54C \uC218 \uC5C6\uB294 \uC778\uC218: {0}"},
             {"appletviewer.main.err.dupoption", "\uC911\uBCF5\uB41C \uC635\uC158 \uC0AC\uC6A9: {0}"},
             {"appletviewer.main.err.inputfile", "\uC9C0\uC815\uB41C \uC785\uB825 \uD30C\uC77C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},
             {"appletviewer.main.err.badurl", "\uC798\uBABB\uB41C URL: {0}({1})"},
-            {"appletviewer.main.err.io", "\uC77D\uB294 \uC911 I/O \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"},
+            {"appletviewer.main.err.io", "\uC77D\uB294 \uC911 I/O \uC608\uC678\uC0AC\uD56D \uBC1C\uC0DD: {0}"},
             {"appletviewer.main.err.readablefile", "{0}\uC774(\uAC00) \uD30C\uC77C\uC774\uBA70 \uC77D\uAE30 \uAC00\uB2A5\uD55C \uC0C1\uD0DC\uC778\uC9C0 \uD655\uC778\uD558\uC2ED\uC2DC\uC624."},
             {"appletviewer.main.err.correcturl", "{0}\uC774(\uAC00) \uC62C\uBC14\uB978 URL\uC785\uB2C8\uAE4C?"},
             {"appletviewer.main.prop.store", "\uC0AC\uC6A9\uC790 \uAD00\uB828 AppletViewer \uC18D\uC131"},
@@ -88,7 +89,7 @@
             {"appletviewer.main.warn.nosecmgr", "\uACBD\uACE0: \uBCF4\uC548\uC744 \uC0AC\uC6A9 \uC548\uD568\uC73C\uB85C \uC124\uC815\uD558\uB294 \uC911\uC785\uB2C8\uB2E4."},
             {"appletviewer.main.debug.cantfinddebug", "\uB514\uBC84\uAC70\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!"},
             {"appletviewer.main.debug.cantfindmain", "\uB514\uBC84\uAC70\uC5D0\uC11C \uAE30\uBCF8 \uBA54\uC18C\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!"},
-            {"appletviewer.main.debug.exceptionindebug", "\uB514\uBC84\uAC70\uC5D0 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4!"},
+            {"appletviewer.main.debug.exceptionindebug", "\uB514\uBC84\uAC70\uC5D0 \uC608\uC678\uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4!"},
             {"appletviewer.main.debug.cantaccess", "\uB514\uBC84\uAC70\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4!"},
             {"appletviewer.main.nosecmgr", "\uACBD\uACE0: SecurityManager\uAC00 \uC124\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4!"},
             {"appletviewer.main.warning", "\uACBD\uACE0: \uC2DC\uC791\uB41C \uC560\uD50C\uB9BF\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. <applet> \uD0DC\uADF8\uAC00 \uC785\uB825\uB418\uC5C8\uB294\uC9C0 \uD655\uC778\uD558\uC2ED\uC2DC\uC624."},
@@ -98,9 +99,9 @@
             {"appletioexception.loadclass.throw.notloaded", "\uD074\uB798\uC2A4\uAC00 \uB85C\uB4DC\uB418\uC9C0 \uC54A\uC74C: {0}"},
             {"appletclassloader.loadcode.verbose", "{1}\uC744(\uB97C) \uAC00\uC838\uC624\uAE30 \uC704\uD574 {0}\uC5D0 \uB300\uD55C \uC2A4\uD2B8\uB9BC\uC744 \uC5EC\uB294 \uC911"},
             {"appletclassloader.filenotfound", "{0}\uC744(\uB97C) \uAC80\uC0C9\uD558\uB294 \uC911 \uD30C\uC77C\uC744 \uCC3E\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4."},
-            {"appletclassloader.fileformat", "\uB85C\uB4DC \uC911 \uD30C\uC77C \uD615\uC2DD \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"},
-            {"appletclassloader.fileioexception", "\uB85C\uB4DC \uC911 I/O \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"},
-            {"appletclassloader.fileexception", "\uB85C\uB4DC \uC911 {0} \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {1}"},
+            {"appletclassloader.fileformat", "\uB85C\uB4DC \uC911 \uD30C\uC77C \uD615\uC2DD \uC608\uC678\uC0AC\uD56D \uBC1C\uC0DD: {0}"},
+            {"appletclassloader.fileioexception", "\uB85C\uB4DC \uC911 I/O \uC608\uC678\uC0AC\uD56D \uBC1C\uC0DD: {0}"},
+            {"appletclassloader.fileexception", "\uB85C\uB4DC \uC911 {0} \uC608\uC678\uC0AC\uD56D \uBC1C\uC0DD: {1}"},
             {"appletclassloader.filedeath", "\uB85C\uB4DC \uC911 {0}\uC774(\uAC00) \uC885\uB8CC\uB428: {1}"},
             {"appletclassloader.fileerror", "\uB85C\uB4DC \uC911 {0} \uC624\uB958 \uBC1C\uC0DD: {1}"},
             {"appletclassloader.findclass.verbose.openstream", "{1}\uC744(\uB97C) \uAC00\uC838\uC624\uAE30 \uC704\uD574 {0}\uC5D0 \uB300\uD55C \uC2A4\uD2B8\uB9BC\uC744 \uC5EC\uB294 \uC911"},
@@ -108,7 +109,7 @@
             {"appletclassloader.getresource.verbose.found", "\uC2DC\uC2A4\uD15C \uB9AC\uC18C\uC2A4\uB85C {0} \uB9AC\uC18C\uC2A4\uB97C \uCC3E\uC558\uC2B5\uB2C8\uB2E4."},
             {"appletclassloader.getresourceasstream.verbose", "\uC2DC\uC2A4\uD15C \uB9AC\uC18C\uC2A4\uB85C {0} \uB9AC\uC18C\uC2A4\uB97C \uCC3E\uC558\uC2B5\uB2C8\uB2E4."},
             {"appletpanel.runloader.err", "\uAC1D\uCCB4 \uB610\uB294 \uCF54\uB4DC \uB9E4\uAC1C\uBCC0\uC218\uC785\uB2C8\uB2E4!"},
-            {"appletpanel.runloader.exception", "{0}\uC758 \uC9C1\uB82C\uD654\uB97C \uD574\uC81C\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4."},
+            {"appletpanel.runloader.exception", "{0}\uC758 \uC9C1\uB82C\uD654\uB97C \uD574\uC81C\uD558\uB294 \uC911 \uC608\uC678\uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4."},
             {"appletpanel.destroyed", "\uC560\uD50C\uB9BF\uC774 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
             {"appletpanel.loaded", "\uC560\uD50C\uB9BF\uC774 \uB85C\uB4DC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
             {"appletpanel.started", "\uC560\uD50C\uB9BF\uC774 \uC2DC\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},
@@ -120,8 +121,8 @@
             {"appletpanel.nocreate", "\uB85C\uB4DC: {0}\uC744(\uB97C) \uC778\uC2A4\uD134\uC2A4\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
             {"appletpanel.noconstruct", "\uB85C\uB4DC: {0}\uC740(\uB294) \uACF5\uC6A9\uC774 \uC544\uB2C8\uAC70\uB098 \uACF5\uC6A9 \uC0DD\uC131\uC790\uB97C \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
             {"appletpanel.death", "\uC885\uB8CC\uB428"},
-            {"appletpanel.exception", "\uC608\uC678 \uC0AC\uD56D: {0}."},
-            {"appletpanel.exception2", "\uC608\uC678 \uC0AC\uD56D: {0}: {1}."},
+            {"appletpanel.exception", "\uC608\uC678\uC0AC\uD56D: {0}."},
+            {"appletpanel.exception2", "\uC608\uC678\uC0AC\uD56D: {0}: {1}."},
             {"appletpanel.error", "\uC624\uB958: {0}."},
             {"appletpanel.error2", "\uC624\uB958: {0}: {1}."},
             {"appletpanel.notloaded", "\uCD08\uAE30\uD654: \uC560\uD50C\uB9BF\uC774 \uB85C\uB4DC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
@@ -132,9 +133,9 @@
             {"appletpanel.notdisposed", "\uB85C\uB4DC: \uC560\uD50C\uB9BF\uC774 \uBC30\uCE58\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4."},
             {"appletpanel.bail", "\uC911\uB2E8\uB428: \uC911\uB2E8\uD558\uB294 \uC911\uC785\uB2C8\uB2E4."},
             {"appletpanel.filenotfound", "{0}\uC744(\uB97C) \uAC80\uC0C9\uD558\uB294 \uC911 \uD30C\uC77C\uC744 \uCC3E\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4."},
-            {"appletpanel.fileformat", "\uB85C\uB4DC \uC911 \uD30C\uC77C \uD615\uC2DD \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"},
-            {"appletpanel.fileioexception", "\uB85C\uB4DC \uC911 I/O \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}"},
-            {"appletpanel.fileexception", "\uB85C\uB4DC \uC911 {0} \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {1}"},
+            {"appletpanel.fileformat", "\uB85C\uB4DC \uC911 \uD30C\uC77C \uD615\uC2DD \uC608\uC678\uC0AC\uD56D \uBC1C\uC0DD: {0}"},
+            {"appletpanel.fileioexception", "\uB85C\uB4DC \uC911 I/O \uC608\uC678\uC0AC\uD56D \uBC1C\uC0DD: {0}"},
+            {"appletpanel.fileexception", "\uB85C\uB4DC \uC911 {0} \uC608\uC678\uC0AC\uD56D \uBC1C\uC0DD: {1}"},
             {"appletpanel.filedeath", "\uB85C\uB4DC \uC911 {0}\uC774(\uAC00) \uC885\uB8CC\uB428: {1}"},
             {"appletpanel.fileerror", "\uB85C\uB4DC \uC911 {0} \uC624\uB958 \uBC1C\uC0DD: {1}"},
             {"appletpanel.badattribute.exception", "HTML \uAD6C\uBB38 \uBD84\uC11D \uC911: width/height \uC18D\uC131\uC5D0 \uB300\uD55C \uAC12\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."},
@@ -162,36 +163,36 @@
             {"appletprops.button.ok", "\uD655\uC778"},
             /* end 4066432 */
             {"appletprops.prop.store", "\uC0AC\uC6A9\uC790 \uAD00\uB828 AppletViewer \uC18D\uC131"},
-            {"appletsecurityexception.checkcreateclassloader", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD074\uB798\uC2A4 \uB85C\uB354"},
-            {"appletsecurityexception.checkaccess.thread", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC2A4\uB808\uB4DC"},
-            {"appletsecurityexception.checkaccess.threadgroup", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC2A4\uB808\uB4DC \uADF8\uB8F9: {0}"},
-            {"appletsecurityexception.checkexit", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC885\uB8CC: {0}"},
-            {"appletsecurityexception.checkexec", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC2E4\uD589: {0}"},
-            {"appletsecurityexception.checklink", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uB9C1\uD06C: {0}"},
-            {"appletsecurityexception.checkpropsaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC18D\uC131"},
-            {"appletsecurityexception.checkpropsaccess.key", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC18D\uC131 \uC561\uC138\uC2A4 {0}"},
-            {"appletsecurityexception.checkread.exception1", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0}, {1}"},
-            {"appletsecurityexception.checkread.exception2", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: file.read: {0}"},
-            {"appletsecurityexception.checkread", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: file.read: {0} == {1}"},
-            {"appletsecurityexception.checkwrite.exception", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0}, {1}"},
-            {"appletsecurityexception.checkwrite", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: file.write: {0} == {1}"},
-            {"appletsecurityexception.checkread.fd", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: fd.read"},
-            {"appletsecurityexception.checkwrite.fd", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: fd.write"},
-            {"appletsecurityexception.checklisten", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: socket.listen: {0}"},
-            {"appletsecurityexception.checkaccept", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: socket.accept: {0}:{1}"},
-            {"appletsecurityexception.checkconnect.networknone", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: socket.connect: {0}->{1}"},
-            {"appletsecurityexception.checkconnect.networkhost1", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {1}\uC5D0\uC11C {0}\uC5D0 \uC811\uC18D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
-            {"appletsecurityexception.checkconnect.networkhost2", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0} \uD638\uC2A4\uD2B8 \uB610\uB294 {1}\uC5D0 \uB300\uD55C IP\uB97C \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. "},
-            {"appletsecurityexception.checkconnect.networkhost3", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: {0} \uD638\uC2A4\uD2B8\uC5D0 \uB300\uD55C IP\uB97C \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. trustProxy \uC18D\uC131\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624."},
-            {"appletsecurityexception.checkconnect", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uC811\uC18D: {0}->{1}"},
-            {"appletsecurityexception.checkpackageaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD328\uD0A4\uC9C0\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC74C: {0}"},
-            {"appletsecurityexception.checkpackagedefinition", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD328\uD0A4\uC9C0\uB97C \uC815\uC758\uD560 \uC218 \uC5C6\uC74C: {0}"},
-            {"appletsecurityexception.cannotsetfactory", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uD329\uD1A0\uB9AC\uB97C \uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
-            {"appletsecurityexception.checkmemberaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uBA64\uBC84 \uC561\uC138\uC2A4\uB97C \uD655\uC778\uD558\uC2ED\uC2DC\uC624."},
-            {"appletsecurityexception.checkgetprintjob", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: getPrintJob"},
-            {"appletsecurityexception.checksystemclipboardaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: getSystemClipboard"},
-            {"appletsecurityexception.checkawteventqueueaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: getEventQueue"},
-            {"appletsecurityexception.checksecurityaccess", "\uBCF4\uC548 \uC608\uC678 \uC0AC\uD56D: \uBCF4\uC548 \uC791\uC5C5: {0}"},
+            {"appletsecurityexception.checkcreateclassloader", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uD074\uB798\uC2A4 \uB85C\uB354"},
+            {"appletsecurityexception.checkaccess.thread", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uC2A4\uB808\uB4DC"},
+            {"appletsecurityexception.checkaccess.threadgroup", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uC2A4\uB808\uB4DC \uADF8\uB8F9: {0}"},
+            {"appletsecurityexception.checkexit", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uC885\uB8CC: {0}"},
+            {"appletsecurityexception.checkexec", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uC2E4\uD589: {0}"},
+            {"appletsecurityexception.checklink", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uB9C1\uD06C: {0}"},
+            {"appletsecurityexception.checkpropsaccess", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uC18D\uC131"},
+            {"appletsecurityexception.checkpropsaccess.key", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uC18D\uC131 \uC561\uC138\uC2A4 {0}"},
+            {"appletsecurityexception.checkread.exception1", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: {0}, {1}"},
+            {"appletsecurityexception.checkread.exception2", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: file.read: {0}"},
+            {"appletsecurityexception.checkread", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: file.read: {0} == {1}"},
+            {"appletsecurityexception.checkwrite.exception", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: {0}, {1}"},
+            {"appletsecurityexception.checkwrite", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: file.write: {0} == {1}"},
+            {"appletsecurityexception.checkread.fd", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: fd.read"},
+            {"appletsecurityexception.checkwrite.fd", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: fd.write"},
+            {"appletsecurityexception.checklisten", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: socket.listen: {0}"},
+            {"appletsecurityexception.checkaccept", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: socket.accept: {0}:{1}"},
+            {"appletsecurityexception.checkconnect.networknone", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: socket.connect: {0}->{1}"},
+            {"appletsecurityexception.checkconnect.networkhost1", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: {1}\uC5D0\uC11C {0}\uC5D0 \uC811\uC18D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+            {"appletsecurityexception.checkconnect.networkhost2", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: {0} \uD638\uC2A4\uD2B8 \uB610\uB294 {1}\uC5D0 \uB300\uD55C IP\uB97C \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. "},
+            {"appletsecurityexception.checkconnect.networkhost3", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: {0} \uD638\uC2A4\uD2B8\uC5D0 \uB300\uD55C IP\uB97C \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. trustProxy \uC18D\uC131\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624."},
+            {"appletsecurityexception.checkconnect", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uC811\uC18D: {0}->{1}"},
+            {"appletsecurityexception.checkpackageaccess", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uD328\uD0A4\uC9C0\uC5D0 \uC561\uC138\uC2A4\uD560 \uC218 \uC5C6\uC74C: {0}"},
+            {"appletsecurityexception.checkpackagedefinition", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uD328\uD0A4\uC9C0\uB97C \uC815\uC758\uD560 \uC218 \uC5C6\uC74C: {0}"},
+            {"appletsecurityexception.cannotsetfactory", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uD329\uD1A0\uB9AC\uB97C \uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
+            {"appletsecurityexception.checkmemberaccess", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uBA64\uBC84 \uC561\uC138\uC2A4\uB97C \uD655\uC778\uD558\uC2ED\uC2DC\uC624."},
+            {"appletsecurityexception.checkgetprintjob", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: getPrintJob"},
+            {"appletsecurityexception.checksystemclipboardaccess", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: getSystemClipboard"},
+            {"appletsecurityexception.checkawteventqueueaccess", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: getEventQueue"},
+            {"appletsecurityexception.checksecurityaccess", "\uBCF4\uC548 \uC608\uC678\uC0AC\uD56D: \uBCF4\uC548 \uC791\uC5C5: {0}"},
             {"appletsecurityexception.getsecuritycontext.unknown", "\uC54C \uC218 \uC5C6\uB294 \uD074\uB798\uC2A4 \uB85C\uB354 \uC720\uD615\uC785\uB2C8\uB2E4. getContext\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
             {"appletsecurityexception.checkread.unknown", "\uC54C \uC218 \uC5C6\uB294 \uD074\uB798\uC2A4 \uB85C\uB354 \uC720\uD615\uC785\uB2C8\uB2E4. {0} \uC77D\uAE30\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
             {"appletsecurityexception.checkconnect.unknown", "\uC54C \uC218 \uC5C6\uB294 \uD074\uB798\uC2A4 \uB85C\uB354 \uC720\uD615\uC785\uB2C8\uB2E4. \uC811\uC18D\uC744 \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
--- a/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_pt_BR.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_pt_BR.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -73,7 +73,8 @@
             {"appletviewer.parse.warning.embed.requiresheight", "Advert\u00EAncia: a tag <embed> requer um atributo de altura."},
             {"appletviewer.parse.warning.embed.requireswidth", "Advert\u00EAncia: a tag <embed> requer um atributo de largura."},
             {"appletviewer.parse.warning.appnotLongersupported", "Advert\u00EAncia: a tag <app> n\u00E3o \u00E9 mais suportada; use <applet>:"},
-            {"appletviewer.usage", "Uso: appletviewer <op\u00E7\u00F5es> url(s)\n\nem que as <op\u00E7\u00F5es> incluem:\n  -debug                  Inicia o visualizador do applet no depurador Java\n  -encoding <codifica\u00E7\u00E3o>    Especifica a codifica\u00E7\u00E3o de caractere usada pelos arquivos HTML\n  -J<flag de runtime>        Informa o argumento ao intepretador java\n\nA op\u00E7\u00E3o -J n\u00E3o \u00E9 padr\u00E3o e est\u00E1 sujeita \u00E0 altera\u00E7\u00E3o sem notifica\u00E7\u00E3o."},
+            {"appletviewer.deprecated", "O AppletViewer est\u00E1 obsoleto."},
+            {"appletviewer.usage", "Uso: appletviewer <op\u00E7\u00F5es> url(s)\n\nem que as <op\u00E7\u00F5es> incluem:\n  -encoding <codifica\u00E7\u00E3o>    Especifica a codifica\u00E7\u00E3o de caractere usada pelos arquivos HTML\n  -J<flag de runtime>        Informa o argumento ao intepretador java\n\nA op\u00E7\u00E3o -J n\u00E3o \u00E9 padr\u00E3o e est\u00E1 sujeita \u00E0 altera\u00E7\u00E3o sem notifica\u00E7\u00E3o."},
             {"appletviewer.main.err.unsupportedopt", "Op\u00E7\u00E3o n\u00E3o suportada: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "Argumento n\u00E3o reconhecido: {0}"},
             {"appletviewer.main.err.dupoption", "Uso duplicado da op\u00E7\u00E3o: {0}"},
@@ -93,7 +94,7 @@
             {"appletviewer.main.nosecmgr", "Advert\u00EAncia: SecurityManager n\u00E3o instalado!"},
             {"appletviewer.main.warning", "Advert\u00EAncia: Nenhum applet iniciado. Certifique-se de que a entrada contenha uma tag <applet>."},
             {"appletviewer.main.warn.prop.overwrite", "Advert\u00EAncia: Substituindo a propriedade do sistema temporariamente a pedido do usu\u00E1rio: chave: {0} valor antigo: {1} valor novo: {2}"},
-            {"appletviewer.main.warn.cantreadprops", "Advert\u00EAncia: N\u00E3o \u00E9 poss\u00EDvel ler o arquivo de propriedades AppletViewer: {0} Usando defaults."},
+            {"appletviewer.main.warn.cantreadprops", "Advert\u00EAncia: N\u00E3o \u00E9 poss\u00EDvel ler o arquivo de propriedades AppletViewer: {0} Usando padr\u00F5es."},
             {"appletioexception.loadclass.throw.interrupted", "carregamento de classe interrompido: {0}"},
             {"appletioexception.loadclass.throw.notloaded", "classe n\u00E3o carregada: {0}"},
             {"appletclassloader.loadcode.verbose", "Fluxo de abertura para: {0} para obter {1}"},
--- a/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_sv.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_sv.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -73,7 +73,8 @@
             {"appletviewer.parse.warning.embed.requiresheight", "Varning: <embed>-taggen kr\u00E4ver ett h\u00F6jdattribut."},
             {"appletviewer.parse.warning.embed.requireswidth", "Varning: <embed>-taggen kr\u00E4ver ett breddattribut."},
             {"appletviewer.parse.warning.appnotLongersupported", "Varning: <app>-taggen st\u00F6ds inte l\u00E4ngre, anv\u00E4nd <applet> ist\u00E4llet:"},
-            {"appletviewer.usage", "Syntax: appletviewer-<alternativ> url:er \n\nd\u00E4r <alternativ> inkluderar:\n  -debug                  Startar appletvisning i Java-fels\u00F6kningen\n  -encoding <kodning>    Anger teckenkodning  som anv\u00E4nds i HTML-filer\n  -J<k\u00F6rningsflagga>        \u00D6verf\u00F6r argument till Java-tolkningen\n\nAlternativet -J \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande."},
+            {"appletviewer.deprecated", "AppletViewer \u00E4r inaktuellt."},
+            {"appletviewer.usage", "Syntax: appletviewer <options> url(s)\n\nd\u00E4r <options> \u00E4r:\n  -encoding <encoding>    Ange teckenkodning som anv\u00E4nds av HTML-filer\n  -J<runtime flag>        \u00D6verf\u00F6r argument till java-tolken\n\nAlternativet -J \u00E4r inte standard och kan \u00E4ndras utan f\u00F6reg\u00E5ende meddelande."},
             {"appletviewer.main.err.unsupportedopt", "Alternativ som inte st\u00F6ds: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "Ok\u00E4nt argument: {0}"},
             {"appletviewer.main.err.dupoption", "Duplicerat alternativ: {0}"},
@@ -85,17 +86,17 @@
             {"appletviewer.main.prop.store", "Anv\u00E4ndarspecifika egenskaper f\u00F6r AppletViewer"},
             {"appletviewer.main.err.prop.cantread", "Kan inte l\u00E4sa egenskapsfilen: {0}"},
             {"appletviewer.main.err.prop.cantsave", "Kan inte spara egenskapsfilen: {0}"},
-            {"appletviewer.main.warn.nosecmgr", "Varning: s\u00E4kerheten inaktiveras."},
+            {"appletviewer.main.warn.nosecmgr", "Varning! S\u00E4kerheten avaktiveras."},
             {"appletviewer.main.debug.cantfinddebug", "Hittar inte fels\u00F6kningsprogrammet!"},
             {"appletviewer.main.debug.cantfindmain", "Hittar inte huvudmetoden i fels\u00F6kningsprogrammet!"},
             {"appletviewer.main.debug.exceptionindebug", "Undantag i fels\u00F6kningsprogrammet!"},
             {"appletviewer.main.debug.cantaccess", "Det finns ingen \u00E5tkomst till fels\u00F6kningsprogrammet!"},
             {"appletviewer.main.nosecmgr", "Varning: SecurityManager har inte installerats!"},
             {"appletviewer.main.warning", "Varning: Inga appletar har startats. Kontrollera att indata inneh\u00E5ller <applet>-tagg."},
-            {"appletviewer.main.warn.prop.overwrite", "Varning: Skriver tillf\u00E4lligt \u00F6ver systemegenskap enligt beg\u00E4ran fr\u00E5n anv\u00E4ndare: nyckel: {0} gammalt v\u00E4rde: {1} nytt v\u00E4rde: {2}"},
+            {"appletviewer.main.warn.prop.overwrite", "Varning: Skriver tillf\u00E4lligt \u00F6ver systemegenskap enligt beg\u00E4ran fr\u00E5n anv\u00E4ndare: nyckel: {0} tidigare v\u00E4rde: {1} nytt v\u00E4rde: {2}"},
             {"appletviewer.main.warn.cantreadprops", "Varning: Kan inte l\u00E4sa egenskapsfil f\u00F6r AppletViewer: {0} Standardv\u00E4rden anv\u00E4nds."},
-            {"appletioexception.loadclass.throw.interrupted", "klassinl\u00E4sning avbr\u00F6ts: {0}"},
-            {"appletioexception.loadclass.throw.notloaded", "klass inte inl\u00E4st: {0}"},
+            {"appletioexception.loadclass.throw.interrupted", "klassladdning avbr\u00F6ts: {0}"},
+            {"appletioexception.loadclass.throw.notloaded", "klass inte laddad: {0}"},
             {"appletclassloader.loadcode.verbose", "\u00D6ppnar str\u00F6m till: {0} f\u00F6r h\u00E4mtning av {1}"},
             {"appletclassloader.filenotfound", "Hittade inte fil vid s\u00F6kning efter: {0}"},
             {"appletclassloader.fileformat", "Undantag av filformat vid laddning av: {0}"},
@@ -124,7 +125,7 @@
             {"appletpanel.exception2", "undantag: {0}: {1}."},
             {"appletpanel.error", "fel: {0}."},
             {"appletpanel.error2", "fel {0}: {1}."},
-            {"appletpanel.notloaded", "Initiera: applet \u00E4r inte inl\u00E4st."},
+            {"appletpanel.notloaded", "Initiera: applet \u00E4r inte laddad."},
             {"appletpanel.notinited", "Starta: applet \u00E4r inte initierad."},
             {"appletpanel.notstarted", "Stoppa: applet har inte startats."},
             {"appletpanel.notstopped", "Radera: applet har inte stoppats."},
--- a/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_zh_CN.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_zh_CN.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -73,7 +73,8 @@
             {"appletviewer.parse.warning.embed.requiresheight", "\u8B66\u544A: <embed> \u6807\u8BB0\u9700\u8981\u9AD8\u5EA6\u5C5E\u6027\u3002"},
             {"appletviewer.parse.warning.embed.requireswidth", "\u8B66\u544A: <embed> \u6807\u8BB0\u9700\u8981\u5BBD\u5EA6\u5C5E\u6027\u3002"},
             {"appletviewer.parse.warning.appnotLongersupported", "\u8B66\u544A: \u4E0D\u518D\u652F\u6301 <app> \u6807\u8BB0, \u8BF7\u6539\u7528 <applet>:"},
-            {"appletviewer.usage", "\u7528\u6CD5: appletviewer <options> url\n\n\u5176\u4E2D, <options> \u5305\u62EC:\n  -debug                  \u5728 Java \u8C03\u8BD5\u5668\u4E2D\u542F\u52A8\u5C0F\u5E94\u7528\u7A0B\u5E8F\u67E5\u770B\u5668\n  -encoding <encoding>    \u6307\u5B9A HTML \u6587\u4EF6\u4F7F\u7528\u7684\u5B57\u7B26\u7F16\u7801\n  -J<runtime flag>        \u5C06\u53C2\u6570\u4F20\u9012\u5230 java \u89E3\u91CA\u5668\n\n-J \u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002"},
+            {"appletviewer.deprecated", "AppletViewer \u5DF2\u8FC7\u65F6\u3002"},
+            {"appletviewer.usage", "\u7528\u6CD5: appletviewer <options> url(s)\n\n\u5176\u4E2D <options> \u5305\u62EC:\n  -encoding <encoding>    \u6307\u5B9A HTML \u6587\u4EF6\u4F7F\u7528\u7684\u5B57\u7B26\u7F16\u7801\n  -J<runtime flag>        \u5C06\u53C2\u6570\u4F20\u9012\u5230 java \u89E3\u91CA\u5668\n\n-J \u9009\u9879\u662F\u975E\u6807\u51C6\u9009\u9879, \u5982\u6709\u66F4\u6539, \u6055\u4E0D\u53E6\u884C\u901A\u77E5\u3002"},
             {"appletviewer.main.err.unsupportedopt", "\u4E0D\u652F\u6301\u7684\u9009\u9879: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "\u65E0\u6CD5\u8BC6\u522B\u7684\u53C2\u6570: {0}"},
             {"appletviewer.main.err.dupoption", "\u91CD\u590D\u4F7F\u7528\u9009\u9879: {0}"},
--- a/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -73,7 +73,8 @@
             {"appletviewer.parse.warning.embed.requiresheight", "\u8B66\u544A: <embed> \u6A19\u8A18\u9700\u8981\u9AD8\u5EA6\u5C6C\u6027\u3002"},
             {"appletviewer.parse.warning.embed.requireswidth", "\u8B66\u544A: <embed> \u6A19\u8A18\u9700\u8981\u5BEC\u5EA6\u5C6C\u6027\u3002"},
             {"appletviewer.parse.warning.appnotLongersupported", "\u8B66\u544A: \u4E0D\u518D\u652F\u63F4 <app> \u6A19\u8A18\uFF0C\u8ACB\u6539\u7528 <applet>:"},
-            {"appletviewer.usage", "\u7528\u6CD5: appletviewer <options> url(s)\n\n\u5176\u4E2D\u7684 <options> \u5305\u62EC:\n  -debug                  \u5728 Java \u9664\u932F\u7A0B\u5F0F\u4E2D\u555F\u52D5 Applet \u6AA2\u8996\u5668\n  -encoding <encoding>    \u6307\u5B9A HTML \u6A94\u6848\u4F7F\u7528\u7684\u5B57\u5143\u7DE8\u78BC\n  -J<runtime flag>        \u5C07\u5F15\u6578\u50B3\u9001\u81F3 java \u89E3\u8B6F\u5668\n\n -J \u9078\u9805\u4E0D\u662F\u6A19\u6E96\u9078\u9805\uFF0C\u82E5\u6709\u8B8A\u66F4\u4E0D\u53E6\u884C\u901A\u77E5\u3002"},
+            {"appletviewer.deprecated", "AppletViewer \u5DF2\u4E0D\u518D\u4F7F\u7528\u3002"},
+            {"appletviewer.usage", "\u7528\u6CD5: appletviewer <options> url(s)\n\n\u5176\u4E2D\u7684 <options> \u5305\u62EC:\n  -encoding <encoding>    \u6307\u5B9A HTML \u6A94\u6848\u4F7F\u7528\u7684\u5B57\u5143\u7DE8\u78BC\n  -J<runtime flag>        \u5C07\u5F15\u6578\u50B3\u9001\u81F3 Java \u89E3\u8B6F\u5668\n\n-J \u9078\u9805\u4E0D\u662F\u6A19\u6E96\u9078\u9805\uFF0C\u82E5\u6709\u8B8A\u66F4\u4E0D\u53E6\u884C\u901A\u77E5\u3002"},
             {"appletviewer.main.err.unsupportedopt", "\u4E0D\u652F\u63F4\u7684\u9078\u9805: {0}"},
             {"appletviewer.main.err.unrecognizedarg", "\u7121\u6CD5\u8FA8\u8B58\u7684\u5F15\u6578: {0}"},
             {"appletviewer.main.err.dupoption", "\u91CD\u8907\u4F7F\u7528\u9078\u9805: {0}"},
--- a/jdk/src/java.desktop/share/classes/sun/awt/image/OffScreenImageSource.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/image/OffScreenImageSource.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -186,8 +186,21 @@
             theConsumer.setProperties(properties);
             sendPixels();
             theConsumer.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
-            theConsumer.imageComplete(ImageConsumer.STATICIMAGEDONE);
+
+            try {
+                theConsumer.imageComplete(ImageConsumer.STATICIMAGEDONE);
+            } catch (RuntimeException e) {
+                // We did not previously call this method here and
+                // some image consumer filters were not prepared for it to be
+                // called at this time. We allow them to have runtime issues
+                // for this one call only without triggering the IMAGEERROR
+                // condition below.
+                e.printStackTrace();
+            }
+
         } catch (NullPointerException e) {
+            e.printStackTrace();
+
             if (theConsumer != null) {
                 theConsumer.imageComplete(ImageConsumer.IMAGEERROR);
             }
--- a/jdk/src/java.desktop/share/classes/sun/awt/resources/awt_de.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/resources/awt_de.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -44,7 +44,7 @@
 AWT.subtract=NumPad -
 AWT.decimal=NumPad .
 AWT.divide=NumPad /
-AWT.delete=Entf
+AWT.delete=L\u00F6schen
 AWT.numLock=Num
 AWT.scrollLock=Rollen
 AWT.f1=F1
--- a/jdk/src/java.desktop/share/classes/sun/awt/resources/awt_pt_BR.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/resources/awt_pt_BR.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -44,7 +44,7 @@
 AWT.subtract=Teclado Num\u00E9rico -
 AWT.decimal=Teclado Num\u00E9rico .
 AWT.divide=Teclado Num\u00E9rico /
-AWT.delete=Deletar
+AWT.delete=Excluir
 AWT.numLock=Num Lock
 AWT.scrollLock=Scroll Lock
 AWT.f1=F1
@@ -151,7 +151,7 @@
 AWT.undefined=Indefinido
 
 # Predefined cursor names
-AWT.DefaultCursor=Cursor Default
+AWT.DefaultCursor=Cursor Padr\u00E3o
 AWT.CrosshairCursor=Cursor em Forma de Cruz
 AWT.TextCursor=Cursor de Texto
 AWT.WaitCursor=Cursor em Forma de Ampulheta
@@ -165,9 +165,9 @@
 AWT.EResizeCursor=Cursor de Seta Que Aponta \u00E0 Direita
 AWT.HandCursor=Cursor em Forma de M\u00E3o
 AWT.MoveCursor=Cursor de Movimento
-AWT.DefaultDragCursor=Cursor Default de Arrastar
-AWT.DefaultNoDropCursor=Cursor Default sem Arrastar
-AWT.DefaultDropCursor=Cursor Default de Soltar
+AWT.DefaultDragCursor=Cursor Padr\u00E3o de Arrastar
+AWT.DefaultNoDropCursor=Cursor Padr\u00E3o sem Arrastar
+AWT.DefaultDropCursor=Cursor Padr\u00E3o de Soltar
 
 # Input method related strings
 AWT.CompositionWindowTitle=Janela de Entrada
--- a/jdk/src/java.desktop/share/classes/sun/awt/resources/awt_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/awt/resources/awt_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -19,14 +19,14 @@
 AWT.pause=Paus
 AWT.capsLock=Caps Lock
 AWT.escape=Esc
-AWT.space=Mellanslag
-AWT.pgup=Page Up
-AWT.pgdn=Page Down
+AWT.space=Blanksteg
+AWT.pgup=Sida upp
+AWT.pgdn=Sida ned
 AWT.end=End
 AWT.home=Hem
-AWT.left=V\u00E4nsterpil
+AWT.left=V\u00E4nster
 AWT.up=Upp
-AWT.right=H\u00F6gerpil
+AWT.right=H\u00F6ger
 AWT.down=Nedpil
 AWT.begin=Begin
 AWT.comma=Kommatecken
@@ -114,7 +114,7 @@
 AWT.minus=Minus
 AWT.rightParenthesis=H\u00F6gerparentes
 AWT.underscore=Understreck
-AWT.final=Slutgiltig
+AWT.final=Slutlig
 AWT.convert=Konvertera
 AWT.noconvert=Ingen konvertering
 AWT.accept=Acceptera
--- a/jdk/src/java.desktop/share/classes/sun/font/FontFamily.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/font/FontFamily.java	Wed Jul 05 21:51:13 2017 +0200
@@ -335,10 +335,10 @@
         case Font.BOLD|Font.ITALIC:
             if (bolditalic != null) {
                 return bolditalic;
+            } else if (bold != null && bold.canDoStyle(style)) {
+                return bold;
             } else if (italic != null && italic.canDoStyle(style)) {
                     return italic;
-            } else if (bold != null && bold.canDoStyle(style)) {
-                    return italic;
             } else if (plain != null && plain.canDoStyle(style)) {
                     return plain;
             } else {
--- a/jdk/src/java.desktop/share/classes/sun/java2d/HeadlessGraphicsEnvironment.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/HeadlessGraphicsEnvironment.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,27 +31,8 @@
 import java.awt.HeadlessException;
 import java.awt.image.BufferedImage;
 import java.awt.Font;
-import java.text.AttributedCharacterIterator;
-import java.awt.print.PrinterJob;
-import java.util.Map;
-import java.util.Hashtable;
 import java.util.Locale;
-import java.util.Vector;
-import java.util.StringTokenizer;
-import java.util.ResourceBundle;
-import java.util.MissingResourceException;
-import java.io.IOException;
-import java.io.FilenameFilter;
-import java.io.File;
-import java.util.NoSuchElementException;
 import sun.awt.FontConfiguration;
-import java.util.TreeMap;
-import java.util.Set;
-import java.awt.font.TextAttribute;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.BufferedInputStream;
-import java.util.Properties;
 import java.awt.Point;
 import java.awt.Rectangle;
 
--- a/jdk/src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/SunGraphics2D.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1915,8 +1915,7 @@
                 sr.setOutputArea(devClip);
                 sr.appendPath(cpi);
                 sr.getPathBox(box);
-                Region r = Region.getInstance(box);
-                r.appendSpans(sr);
+                Region r = Region.getInstance(box, sr);
                 clipRegion = r;
                 clipState =
                     r.isRectangular() ? CLIP_RECTANGULAR : CLIP_SHAPE;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,6 @@
 import java.awt.image.BufferedImage;
 import java.awt.image.ComponentColorModel;
 import java.awt.image.ComponentSampleModel;
-import java.awt.image.DataBuffer;
 import java.awt.image.ColorModel;
 import java.awt.image.Raster;
 import java.awt.image.SampleModel;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -36,19 +36,14 @@
 package sun.java2d.cmm.lcms;
 
 import java.awt.color.ICC_Profile;
-import java.awt.color.ProfileDataException;
 import java.awt.color.CMMException;
 import java.awt.color.ColorSpace;
 import java.awt.image.BufferedImage;
 import java.awt.image.Raster;
 import java.awt.image.WritableRaster;
 import java.awt.image.ColorModel;
-import java.awt.image.DirectColorModel;
-import java.awt.image.ComponentColorModel;
 import java.awt.image.SampleModel;
 import java.awt.image.DataBuffer;
-import java.awt.image.SinglePixelPackedSampleModel;
-import java.awt.image.ComponentSampleModel;
 import sun.java2d.cmm.*;
 import sun.java2d.cmm.lcms.*;
 import static sun.java2d.cmm.lcms.LCMSImageLayout.ImageLayoutException;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/CompositeType.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/CompositeType.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,6 @@
 
 package sun.java2d.loops;
 
-import java.awt.image.BufferedImage;
 import java.awt.AlphaComposite;
 import java.util.HashMap;
 
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/DrawGlyphListLCD.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/DrawGlyphListLCD.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,6 @@
 package sun.java2d.loops;
 
 import sun.java2d.loops.GraphicsPrimitive;
-import sun.java2d.pipe.Region;
 import sun.java2d.SunGraphics2D;
 import sun.java2d.SurfaceData;
 import sun.font.GlyphList;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/DrawLine.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/DrawLine.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,9 +30,6 @@
 package sun.java2d.loops;
 
 import sun.java2d.loops.GraphicsPrimitive;
-import java.awt.Color;
-import java.awt.image.ColorModel;
-import java.awt.image.Raster;
 import sun.java2d.SunGraphics2D;
 import sun.java2d.SurfaceData;
 
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/DrawRect.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/DrawRect.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,9 +30,6 @@
 package sun.java2d.loops;
 
 import sun.java2d.loops.GraphicsPrimitive;
-import java.awt.Color;
-import java.awt.image.ColorModel;
-import java.awt.image.Raster;
 import sun.java2d.SunGraphics2D;
 import sun.java2d.SurfaceData;
 
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/FillRect.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/FillRect.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,9 +30,6 @@
 package sun.java2d.loops;
 
 import sun.java2d.loops.GraphicsPrimitive;
-import java.awt.Color;
-import java.awt.image.ColorModel;
-import java.awt.image.Raster;
 import sun.java2d.SunGraphics2D;
 import sun.java2d.SurfaceData;
 
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/FillSpans.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/FillSpans.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,9 +32,6 @@
 
 import sun.java2d.loops.GraphicsPrimitive;
 import sun.java2d.pipe.SpanIterator;
-import java.awt.Color;
-import java.awt.image.ColorModel;
-import java.awt.image.Raster;
 import sun.java2d.SunGraphics2D;
 import sun.java2d.SurfaceData;
 
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/FontInfo.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/FontInfo.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,11 +26,9 @@
 package sun.java2d.loops;
 
 import java.awt.Font;
-import java.awt.geom.AffineTransform;
 
 import sun.font.Font2D;
 import sun.font.FontStrike;
-import sun.font.FontStrikeDesc;
 
 /*
  * A FontInfo object holds all calculated or derived data needed
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/GeneralRenderer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/GeneralRenderer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,8 +33,6 @@
 import java.awt.image.DataBuffer;
 import java.awt.image.ColorModel;
 import java.awt.geom.Path2D;
-import java.awt.geom.PathIterator;
-import java.awt.geom.AffineTransform;
 import sun.java2d.pipe.Region;
 import sun.java2d.pipe.SpanIterator;
 import sun.java2d.SunGraphics2D;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/MaskFill.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/MaskFill.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,13 +25,8 @@
 
 package sun.java2d.loops;
 
-import java.awt.Paint;
-import java.awt.PaintContext;
 import java.awt.Composite;
-import java.awt.Rectangle;
-import java.awt.image.ColorModel;
 import java.awt.image.BufferedImage;
-import java.awt.image.WritableRaster;
 import sun.awt.image.BufImgSurfaceData;
 import sun.java2d.loops.GraphicsPrimitive;
 import sun.java2d.SunGraphics2D;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/ScaledBlit.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/ScaledBlit.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,6 @@
 package sun.java2d.loops;
 
 import java.awt.Composite;
-import java.lang.ref.WeakReference;
 import sun.java2d.loops.GraphicsPrimitive;
 import sun.java2d.SurfaceData;
 import sun.java2d.pipe.Region;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/SurfaceType.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/SurfaceType.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,6 @@
 
 package sun.java2d.loops;
 
-import java.awt.image.BufferedImage;
 import java.awt.image.ColorModel;
 import sun.awt.image.PixelConverter;
 import java.util.HashMap;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/TransformBlit.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/TransformBlit.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,6 @@
 
 import java.awt.Composite;
 import java.awt.geom.AffineTransform;
-import java.lang.ref.WeakReference;
 import sun.java2d.SurfaceData;
 import sun.java2d.loops.GraphicsPrimitive;
 import sun.java2d.pipe.Region;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/loops/TransformHelper.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/loops/TransformHelper.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,6 @@
 
 import java.awt.Composite;
 import java.awt.geom.AffineTransform;
-import java.lang.ref.WeakReference;
 import sun.java2d.SurfaceData;
 import sun.java2d.loops.GraphicsPrimitive;
 import sun.java2d.pipe.Region;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/opengl/OGLMaskFill.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/opengl/OGLMaskFill.java	Wed Jul 05 21:51:13 2017 +0200
@@ -26,6 +26,7 @@
 package sun.java2d.opengl;
 
 import java.awt.Composite;
+import sun.java2d.InvalidPipeException;
 import sun.java2d.SunGraphics2D;
 import sun.java2d.loops.GraphicsPrimitive;
 import sun.java2d.loops.GraphicsPrimitiveMgr;
@@ -67,7 +68,14 @@
     protected void validateContext(SunGraphics2D sg2d,
                                    Composite comp, int ctxflags)
     {
-        OGLSurfaceData dstData = (OGLSurfaceData)sg2d.surfaceData;
+        OGLSurfaceData dstData;
+        try {
+            dstData = (OGLSurfaceData) sg2d.surfaceData;
+        } catch (ClassCastException e) {
+            throw new InvalidPipeException("wrong surface data type: " +
+                                           sg2d.surfaceData);
+        }
+
         OGLContext.validateContext(dstData, dstData,
                                    sg2d.getCompClip(), comp,
                                    null, sg2d.paint, sg2d, ctxflags);
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/AATextRenderer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/AATextRenderer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,6 @@
 
 package sun.java2d.pipe;
 
-import java.awt.font.GlyphVector;
 import sun.java2d.SunGraphics2D;
 import sun.font.GlyphList;
 
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/BufferedContext.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/BufferedContext.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,6 +38,8 @@
 import static sun.java2d.pipe.BufferedRenderPipe.BYTES_PER_SPAN;
 
 import java.lang.annotation.Native;
+import java.lang.ref.Reference;
+import java.lang.ref.WeakReference;
 
 /**
  * Base context class for managing state in a single-threaded rendering
@@ -87,11 +89,11 @@
      */
     protected static BufferedContext currentContext;
 
-    private AccelSurface    validatedSrcData;
-    private AccelSurface    validatedDstData;
-    private Region          validatedClip;
-    private Composite       validatedComp;
-    private Paint           validatedPaint;
+    private Reference<AccelSurface> validSrcDataRef = new WeakReference<>(null);
+    private Reference<AccelSurface> validDstDataRef = new WeakReference<>(null);
+    private Reference<Region> validClipRef = new WeakReference<>(null);
+    private Reference<Composite> validCompRef = new WeakReference<>(null);
+    private Reference<Paint> validPaintRef = new WeakReference<>(null);
     // renamed from isValidatedPaintAColor as part of a work around for 6764257
     private boolean         isValidatedPaintJustAColor;
     private int             validatedRGB;
@@ -127,9 +129,9 @@
                                        int flags)
     {
         // assert rq.lock.isHeldByCurrentThread();
-        BufferedContext d3dc = dstData.getContext();
-        d3dc.validate(srcData, dstData,
-                      clip, comp, xform, paint, sg2d, flags);
+        BufferedContext context = dstData.getContext();
+        context.validate(srcData, dstData,
+                         clip, comp, xform, paint, sg2d, flags);
     }
 
     /**
@@ -200,13 +202,15 @@
                 updatePaint = true;
                 isValidatedPaintJustAColor = true;
             }
-        } else if (validatedPaint != paint) {
+        } else if (validPaintRef.get() != paint) {
             updatePaint = true;
             // this should be set when we are switching from paint to color
             // in which case this condition will be true
             isValidatedPaintJustAColor = false;
         }
 
+        final AccelSurface validatedSrcData = validSrcDataRef.get();
+        final AccelSurface validatedDstData = validDstDataRef.get();
         if ((currentContext != this) ||
             (srcData != validatedSrcData) ||
             (dstData != validatedDstData))
@@ -228,11 +232,12 @@
             setSurfaces(srcData, dstData);
 
             currentContext = this;
-            validatedSrcData = srcData;
-            validatedDstData = dstData;
+            validSrcDataRef = new WeakReference<>(srcData);
+            validDstDataRef = new WeakReference<>(dstData);
         }
 
         // validate clip
+        final Region validatedClip = validClipRef.get();
         if ((clip != validatedClip) || updateClip) {
             if (clip != null) {
                 if (updateClip ||
@@ -248,13 +253,13 @@
             } else {
                 resetClip();
             }
-            validatedClip = clip;
+            validClipRef = new WeakReference<>(clip);
         }
 
         // validate composite (note that a change in the context flags
         // may require us to update the composite state, even if the
         // composite has not changed)
-        if ((comp != validatedComp) || (flags != validatedFlags)) {
+        if ((comp != validCompRef.get()) || (flags != validatedFlags)) {
             if (comp != null) {
                 setComposite(comp, flags);
             } else {
@@ -263,7 +268,7 @@
             // the paint state is dependent on the composite state, so make
             // sure we update the color below
             updatePaint = true;
-            validatedComp = comp;
+            validCompRef = new WeakReference<>(comp);
             validatedFlags = flags;
         }
 
@@ -297,7 +302,7 @@
             } else {
                 BufferedPaints.resetPaint(rq);
             }
-            validatedPaint = paint;
+            validPaintRef = new WeakReference<>(paint);
         }
 
         // mark dstData dirty
@@ -315,9 +320,9 @@
      * @see RenderQueue#lock
      * @see RenderQueue#unlock
      */
-    public void invalidateSurfaces() {
-        validatedSrcData = null;
-        validatedDstData = null;
+    private void invalidateSurfaces() {
+        validSrcDataRef.clear();
+        validDstDataRef.clear();
     }
 
     private void setSurfaces(AccelSurface srcData,
@@ -434,9 +439,9 @@
         resetClip();
         BufferedPaints.resetPaint(rq);
         invalidateSurfaces();
-        validatedComp = null;
-        validatedClip = null;
-        validatedPaint = null;
+        validCompRef.clear();
+        validClipRef.clear();
+        validPaintRef.clear();
         isValidatedPaintJustAColor = false;
         xformInUse = false;
     }
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/DrawImage.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/DrawImage.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -401,10 +401,10 @@
         }
 
         Region clip = sg.getCompClip();
-        final int dx1 = Math.max((int) Math.floor(ddx1), clip.lox);
-        final int dy1 = Math.max((int) Math.floor(ddy1), clip.loy);
-        final int dx2 = Math.min((int) Math.ceil(ddx2), clip.hix);
-        final int dy2 = Math.min((int) Math.ceil(ddy2), clip.hiy);
+        final int dx1 = Math.max((int) Math.floor(ddx1), clip.getLoX());
+        final int dy1 = Math.max((int) Math.floor(ddy1), clip.getLoY());
+        final int dx2 = Math.min((int) Math.ceil(ddx2), clip.getHiX());
+        final int dy2 = Math.min((int) Math.ceil(ddy2), clip.getHiY());
         if (dx2 <= dx1 || dy2 <= dy1) {
             // empty destination means no output
             return;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/GlyphListLoopPipe.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/GlyphListLoopPipe.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,6 @@
 
 package sun.java2d.pipe;
 
-import java.awt.font.GlyphVector;
 import sun.awt.SunHints;
 import sun.java2d.SunGraphics2D;
 import sun.font.GlyphList;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/GlyphListPipe.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/GlyphListPipe.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,14 +25,10 @@
 
 package sun.java2d.pipe;
 
-import java.awt.Font;
-import java.awt.Rectangle;
-import java.awt.Shape;
 import java.awt.font.FontRenderContext;
 import java.awt.font.GlyphVector;
 import java.awt.font.TextLayout;
 
-import sun.awt.SunHints;
 import sun.java2d.SunGraphics2D;
 import sun.java2d.SurfaceData;
 import sun.font.GlyphList;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/LoopPipe.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/LoopPipe.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,22 +25,16 @@
 
 package sun.java2d.pipe;
 
-import java.awt.Font;
 import java.awt.Shape;
 import java.awt.BasicStroke;
-import java.awt.Polygon;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.PathIterator;
 import java.awt.geom.RoundRectangle2D;
 import java.awt.geom.Ellipse2D;
 import java.awt.geom.Arc2D;
-import java.awt.geom.IllegalPathStateException;
 import java.awt.geom.Path2D;
-import java.awt.font.GlyphVector;
 import sun.java2d.SunGraphics2D;
 import sun.java2d.SurfaceData;
-import sun.java2d.loops.FontInfo;
-import sun.java2d.loops.DrawPolygons;
 import sun.java2d.loops.FillParallelogram;
 import sun.java2d.loops.DrawParallelogram;
 import sun.awt.SunHints;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/OutlineTextRenderer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/OutlineTextRenderer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,6 @@
 import java.awt.font.GlyphVector;
 import java.awt.font.TextLayout;
 import sun.java2d.SunGraphics2D;
-import sun.font.GlyphList;
 import sun.awt.SunHints;
 
 import java.awt.Shape;
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/Region.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/Region.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -62,37 +62,21 @@
  * bands[rowstart+3+N*2] = ...    // start of next Y row
  * </pre>
  */
-public class Region {
-    static final int INIT_SIZE = 50;
-    static final int GROW_SIZE = 50;
+public final class Region {
+    private static final int INIT_SIZE = 50;
+    private static final int GROW_SIZE = 50;
 
-    /**
-     * Immutable Region.
-     */
-    private static final class ImmutableRegion extends Region {
-        protected ImmutableRegion(int lox, int loy, int hix, int hiy) {
-            super(lox, loy, hix, hiy);
-        }
-
-        // Override all the methods that mutate the object
-        public void appendSpans(sun.java2d.pipe.SpanIterator si) {}
-        public void setOutputArea(java.awt.Rectangle r) {}
-        public void setOutputAreaXYWH(int x, int y, int w, int h) {}
-        public void setOutputArea(int[] box) {}
-        public void setOutputAreaXYXY(int lox, int loy, int hix, int hiy) {}
-    }
-
-    public static final Region EMPTY_REGION = new ImmutableRegion(0, 0, 0, 0);
-    public static final Region WHOLE_REGION = new ImmutableRegion(
+    public static final Region EMPTY_REGION = new Region(0, 0, 0, 0);
+    public static final Region WHOLE_REGION = new Region(
             Integer.MIN_VALUE,
             Integer.MIN_VALUE,
             Integer.MAX_VALUE,
             Integer.MAX_VALUE);
 
-    int lox;
-    int loy;
-    int hix;
-    int hiy;
+    private int lox;
+    private int loy;
+    private int hix;
+    private int hiy;
 
     int endIndex;
     int[] bands;
@@ -155,7 +139,7 @@
         return (int) Math.round(newv);
     }
 
-    protected Region(int lox, int loy, int hix, int hiy) {
+    private Region(int lox, int loy, int hix, int hiy) {
         this.lox = lox;
         this.loy = loy;
         this.hix = hix;
@@ -258,9 +242,7 @@
             sr.setOutputArea(devBounds);
             sr.appendPath(s.getPathIterator(at));
             sr.getPathBox(box);
-            Region r = Region.getInstance(box);
-            r.appendSpans(sr);
-            return r;
+            return Region.getInstance(box, sr);
         } finally {
             sr.dispose();
         }
@@ -349,56 +331,18 @@
     }
 
     /**
-     * Sets the rectangle of interest for storing and returning
-     * region bands.
-     * <p>
-     * This method can also be used to initialize a simple rectangular
-     * region.
-     */
-    public void setOutputArea(Rectangle r) {
-        setOutputAreaXYWH(r.x, r.y, r.width, r.height);
-    }
-
-    /**
-     * Sets the rectangle of interest for storing and returning
-     * region bands.  The rectangle is specified in x, y, width, height
-     * format and appropriate clipping is performed as per the method
-     * {@code dimAdd}.
-     * <p>
-     * This method can also be used to initialize a simple rectangular
-     * region.
+     * Returns a Region object with a rectangle of interest specified by the
+     * indicated rectangular area in lox, loy, hix, hiy format.
+     * <p/>
+     * Appends the list of spans returned from the indicated SpanIterator. Each
+     * span must be at a higher starting Y coordinate than the previous data or
+     * it must have a Y range equal to the highest Y band in the region and a
+     * higher X coordinate than any of the spans in that band.
      */
-    public void setOutputAreaXYWH(int x, int y, int w, int h) {
-        setOutputAreaXYXY(x, y, dimAdd(x, w), dimAdd(y, h));
-    }
-
-    /**
-     * Sets the rectangle of interest for storing and returning
-     * region bands.  The rectangle is specified as a span array.
-     * <p>
-     * This method can also be used to initialize a simple rectangular
-     * region.
-     */
-    public void setOutputArea(int box[]) {
-        this.lox = box[0];
-        this.loy = box[1];
-        this.hix = box[2];
-        this.hiy = box[3];
-    }
-
-    /**
-     * Sets the rectangle of interest for storing and returning
-     * region bands.  The rectangle is specified in lox, loy,
-     * hix, hiy format.
-     * <p>
-     * This method can also be used to initialize a simple rectangular
-     * region.
-     */
-    public void setOutputAreaXYXY(int lox, int loy, int hix, int hiy) {
-        this.lox = lox;
-        this.loy = loy;
-        this.hix = hix;
-        this.hiy = hiy;
+    public static Region getInstance(int box[], SpanIterator si) {
+        Region ret = new Region(box[0], box[1], box[2], box[3]);
+        ret.appendSpans(si);
+        return ret;
     }
 
     /**
@@ -408,7 +352,7 @@
      * Y range equal to the highest Y band in the region and a
      * higher X coordinate than any of the spans in that band.
      */
-    public void appendSpans(SpanIterator si) {
+    private void appendSpans(SpanIterator si) {
         int[] box = new int[6];
 
         while (si.nextSpan(box)) {
@@ -739,9 +683,9 @@
         return ret;
     }
 
-    static final int INCLUDE_A      = 1;
-    static final int INCLUDE_B      = 2;
-    static final int INCLUDE_COMMON = 4;
+    private static final int INCLUDE_A      = 1;
+    private static final int INCLUDE_B      = 2;
+    private static final int INCLUDE_COMMON = 4;
 
     private void filterSpans(Region ra, Region rb, int flags) {
         int abands[] = ra.bands;
@@ -1080,35 +1024,35 @@
     /**
      * Returns the lowest X coordinate in the Region.
      */
-    public final int getLoX() {
+    public int getLoX() {
         return lox;
     }
 
     /**
      * Returns the lowest Y coordinate in the Region.
      */
-    public final int getLoY() {
+    public int getLoY() {
         return loy;
     }
 
     /**
      * Returns the highest X coordinate in the Region.
      */
-    public final int getHiX() {
+    public int getHiX() {
         return hix;
     }
 
     /**
      * Returns the highest Y coordinate in the Region.
      */
-    public final int getHiY() {
+    public int getHiY() {
         return hiy;
     }
 
     /**
      * Returns the width of this Region clipped to the range (0 - MAX_INT).
      */
-    public final int getWidth() {
+    public int getWidth() {
         if (hix < lox) return 0;
         int w;
         if ((w = hix - lox) < 0) {
@@ -1120,7 +1064,7 @@
     /**
      * Returns the height of this Region clipped to the range (0 - MAX_INT).
      */
-    public final int getHeight() {
+    public int getHeight() {
         if (hiy < loy) return 0;
         int h;
         if ((h = hiy - loy) < 0) {
@@ -1325,6 +1269,7 @@
         return si;
     }
 
+    @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
         sb.append("Region[[");
@@ -1335,13 +1280,13 @@
         sb.append(hix);
         sb.append(", ");
         sb.append(hiy);
-        sb.append("]");
+        sb.append(']');
         if (bands != null) {
             int col = 0;
             while (col < endIndex) {
                 sb.append("y{");
                 sb.append(bands[col++]);
-                sb.append(",");
+                sb.append(',');
                 sb.append(bands[col++]);
                 sb.append("}[");
                 int end = bands[col++];
@@ -1351,20 +1296,25 @@
                     sb.append(bands[col++]);
                     sb.append(", ");
                     sb.append(bands[col++]);
-                    sb.append(")");
+                    sb.append(')');
                 }
-                sb.append("]");
+                sb.append(']');
             }
         }
-        sb.append("]");
+        sb.append(']');
         return sb.toString();
     }
 
+    @Override
     public int hashCode() {
         return (isEmpty() ? 0 : (lox * 3 + loy * 5 + hix * 7 + hiy * 9));
     }
 
+    @Override
     public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
         if (!(o instanceof Region)) {
             return false;
         }
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/RegionClipSpanIterator.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/RegionClipSpanIterator.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,8 +25,6 @@
 
 package sun.java2d.pipe;
 
-import java.awt.geom.PathIterator;
-import java.awt.Rectangle;
 
 /**
  * This class clips a SpanIterator to a Region and outputs the
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/RegionIterator.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/RegionIterator.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,6 @@
 
 package sun.java2d.pipe;
 
-import java.awt.Rectangle;
 
 /**
  * This class defines the API for iterating through the bands
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/ShapeSpanIterator.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/ShapeSpanIterator.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -131,7 +131,7 @@
      * span segments to the bounds of the specified Region.
      */
     public void setOutputArea(Region r) {
-        setOutputAreaXYXY(r.lox, r.loy, r.hix, r.hiy);
+        setOutputAreaXYXY(r.getLoX(), r.getLoY(), r.getHiX(), r.getHiY());
     }
 
     /*
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/SolidTextRenderer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/SolidTextRenderer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,8 +25,6 @@
 
 package sun.java2d.pipe;
 
-import java.awt.font.GlyphVector;
-import sun.awt.SunHints;
 import sun.java2d.SunGraphics2D;
 import sun.font.GlyphList;
 
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/SpanClipRenderer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/SpanClipRenderer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,6 @@
 
 import java.awt.Rectangle;
 import java.awt.Shape;
-import java.awt.geom.PathIterator;
 import sun.java2d.SunGraphics2D;
 
 /**
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/TextPipe.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/TextPipe.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,6 @@
 
 import sun.java2d.SunGraphics2D;
 import java.awt.font.GlyphVector;
-import java.awt.font.TextLayout;
 
 /**
  * This interface defines the set of calls that pipeline objects
--- a/jdk/src/java.desktop/share/classes/sun/java2d/pipe/TextRenderer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/pipe/TextRenderer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,10 +27,7 @@
 
 import java.awt.Rectangle;
 import java.awt.Shape;
-import java.awt.Font;
-import java.awt.font.GlyphVector;
 import sun.java2d.SunGraphics2D;
-import sun.java2d.loops.FontInfo;
 import sun.font.GlyphList;
 
 /*
--- a/jdk/src/java.desktop/share/classes/sun/print/PSPrinterJob.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/PSPrinterJob.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1933,6 +1933,14 @@
     protected void deviceFill(PathIterator pathIter, Color color,
                               AffineTransform tx, Shape clip) {
 
+        if (Double.isNaN(tx.getScaleX()) ||
+            Double.isNaN(tx.getScaleY()) ||
+            Double.isNaN(tx.getShearX()) ||
+            Double.isNaN(tx.getShearY()) ||
+            Double.isNaN(tx.getTranslateX()) ||
+            Double.isNaN(tx.getTranslateY())) {
+            return;
+        }
         setTransform(tx);
         setClip(clip);
         setColor(color);
--- a/jdk/src/java.desktop/share/classes/sun/print/ServiceDialog.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/ServiceDialog.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1632,10 +1632,13 @@
             float hgt = mediaSize.getY(units);
             float pax = lm;
             float pay = tm;
+            float par = rm;
+            float pab = bm;
             float paw = wid - lm - rm;
             float pah = hgt - tm - bm;
 
             if (paw <= 0f || pah <= 0f || pax < 0f || pay < 0f ||
+                par <= 0f || pab <= 0f ||
                 pax < mpaMax.getX(units) || paw > mpaMax.getWidth(units) ||
                 pay < mpaMax.getY(units) || pah > mpaMax.getHeight(units)) {
                 return null;
--- a/jdk/src/java.desktop/share/classes/sun/print/resources/serviceui_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/share/classes/sun/print/resources/serviceui_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -28,7 +28,7 @@
 dialog.noprintermsg=Hittade ingen utskriftstj\u00E4nst.
 dialog.writeerror=Kan inte skriva till filen:
 #
-label.info=Information:
+label.info=Info:
 label.jobname=&Utskrift:
 label.numcopies=Antal e&xemplar:
 label.priority=P&rioritet:
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XCheckboxMenuItemPeer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XCheckboxMenuItemPeer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,8 @@
 
 import sun.awt.AWTAccessor;
 
-class XCheckboxMenuItemPeer extends XMenuItemPeer implements CheckboxMenuItemPeer {
+final class XCheckboxMenuItemPeer extends XMenuItemPeer
+        implements CheckboxMenuItemPeer {
 
     /************************************************
      *
@@ -49,6 +50,7 @@
      ************************************************/
 
     //Prom CheckboxMenuItemtPeer
+    @Override
     public void setState(boolean t) {
         repaintIfShowing();
     }
@@ -72,8 +74,10 @@
     /**
      * Toggles state and generates ItemEvent
      */
-    void action(final long when) {
+    @Override
+    void action(long when, int modifiers) {
         XToolkit.executeOnEventHandlerThread((CheckboxMenuItem)getTarget(), new Runnable() {
+                @Override
                 public void run() {
                     doToggleState(when);
                 }
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -174,27 +174,24 @@
 
         cachedFocusableWindow = isFocusableWindow();
 
-        Font f = target.getFont();
-        if (f == null) {
-            f = XWindow.getDefaultFont();
-            target.setFont(f);
-            // we should not call setFont because it will call a repaint
-            // which the peer may not be ready to do yet.
+        if (!target.isFontSet()) {
+               target.setFont(XWindow.getDefaultFont());
+               // we should not call setFont because it will call a repaint
+               // which the peer may not be ready to do yet.
         }
-        Color c = target.getBackground();
-        if (c == null) {
-            Color background = SystemColor.window;
-            target.setBackground(background);
-            // we should not call setBackGround because it will call a repaint
-            // which the peer may not be ready to do yet.
+        if (!target.isBackgroundSet()) {
+               target.setBackground(SystemColor.window);
+               // we should not call setBackGround because it will call a repaint
+               // which the peer may not be ready to do yet.
+
         }
-        c = target.getForeground();
-        if (c == null) {
-            target.setForeground(SystemColor.windowText);
-            // we should not call setForeGround because it will call a repaint
-            // which the peer may not be ready to do yet.
+        if (!target.isForegroundSet()) {
+               target.setForeground(SystemColor.windowText);
+               // we should not call setForeGround because it will call a repaint
+               // which the peer may not be ready to do yet.
         }
 
+
         alwaysOnTop = ((Window)target).isAlwaysOnTop() && ((Window)target).isAlwaysOnTopSupported();
 
         GraphicsConfiguration gc = getGraphicsConfiguration();
--- a/jdk/src/java.desktop/unix/classes/sun/java2d/xr/XRRenderer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/unix/classes/sun/java2d/xr/XRRenderer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -28,6 +28,7 @@
 import java.awt.*;
 import java.awt.geom.*;
 import sun.awt.SunToolkit;
+import sun.java2d.InvalidPipeException;
 import sun.java2d.SunGraphics2D;
 import sun.java2d.loops.*;
 import sun.java2d.pipe.Region;
@@ -69,7 +70,12 @@
      * destination context.
      */
     private final void validateSurface(SunGraphics2D sg2d) {
-        XRSurfaceData xrsd = (XRSurfaceData) sg2d.surfaceData;
+        XRSurfaceData xrsd;
+        try {
+            xrsd = (XRSurfaceData) sg2d.surfaceData;
+        } catch (ClassCastException e) {
+            throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData);
+        }
         xrsd.validateAsDestination(sg2d, sg2d.getCompClip());
         xrsd.maskBuffer.validateCompositeState(sg2d.composite, sg2d.transform,
                                                sg2d.paint, sg2d);
--- a/jdk/src/java.desktop/unix/native/common/awt/CUPSfuncs.c	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/unix/native/common/awt/CUPSfuncs.c	Wed Jul 05 21:51:13 2017 +0200
@@ -371,6 +371,10 @@
     ppd_option_t *option;
     ppd_choice_t *choice;
     ppd_size_t *size;
+    const char *filename = NULL;
+    int i;
+    jobjectArray sizeArray = NULL;
+    jfloat *dims;
 
     const char *name = (*env)->GetStringUTFChars(env, printer, NULL);
     if (name == NULL) {
@@ -378,10 +382,6 @@
         JNU_ThrowOutOfMemoryError(env, "Could not create printer name");
         return NULL;
     }
-    const char *filename;
-    int i;
-    jobjectArray sizeArray = NULL;
-    jfloat *dims;
 
     // NOTE: cupsGetPPD returns a pointer to a filename of a temporary file.
     // unlink() must be called to remove the file after using it.
@@ -470,6 +470,8 @@
     jclass intCls, cls;
     jmethodID intCtr, arrListAddMID;
     int i;
+    const char *name = NULL;
+    const char *filename = NULL;
 
     intCls = (*env)->FindClass(env, "java/lang/Integer");
     CHECK_NULL(intCls);
@@ -481,13 +483,13 @@
         (*env)->GetMethodID(env, cls, "add", "(Ljava/lang/Object;)Z");
     CHECK_NULL(arrListAddMID);
 
-    const char *name = (*env)->GetStringUTFChars(env, printer, NULL);
+    name = (*env)->GetStringUTFChars(env, printer, NULL);
     if (name == NULL) {
         (*env)->ExceptionClear(env);
         JNU_ThrowOutOfMemoryError(env, "Could not create printer name");
         return;
     }
-    const char *filename;
+
 
     // NOTE: cupsGetPPD returns a pointer to a filename of a temporary file.
     // unlink() must be called to remove the file after using it.
--- a/jdk/src/java.desktop/unix/native/common/awt/fontpath.c	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/unix/native/common/awt/fontpath.c	Wed Jul 05 21:51:13 2017 +0200
@@ -1012,17 +1012,20 @@
     jfieldID familyNameID, styleNameID, fullNameID, fontFileID;
     jmethodID fcFontCons;
     char* debugMinGlyphsStr = getenv("J2D_DEBUG_MIN_GLYPHS");
+    jclass fcInfoClass;
+    jclass fcCompFontClass;
+    jclass fcFontClass;
 
     CHECK_NULL(fcInfoObj);
     CHECK_NULL(fcCompFontArray);
 
-    jclass fcInfoClass =
+    fcInfoClass =
         (*env)->FindClass(env, "sun/font/FontConfigManager$FontConfigInfo");
     CHECK_NULL(fcInfoClass);
-    jclass fcCompFontClass =
+    fcCompFontClass =
         (*env)->FindClass(env, "sun/font/FontConfigManager$FcCompFont");
     CHECK_NULL(fcCompFontClass);
-    jclass fcFontClass =
+    fcFontClass =
          (*env)->FindClass(env, "sun/font/FontConfigManager$FontConfigFont");
     CHECK_NULL(fcFontClass);
 
@@ -1146,7 +1149,8 @@
         int fn, j, fontCount, nfonts;
         unsigned int minGlyphs;
         FcChar8 **family, **styleStr, **fullname, **file;
-        jarray fcFontArr;
+        jarray fcFontArr = NULL;
+        FcCharSet *unionCharset = NULL;
 
         fcCompFontObj = (*env)->GetObjectArrayElement(env, fcCompFontArray, i);
         fcNameStr =
@@ -1218,7 +1222,7 @@
                 minGlyphs = val;
             }
         }
-        FcCharSet *unionCharset = NULL;
+
         for (j=0; j<nfonts; j++) {
             FcPattern *fontPattern = fontset->fonts[j];
             FcChar8 *fontformat;
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.c	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.c	Wed Jul 05 21:51:13 2017 +0200
@@ -43,7 +43,7 @@
     gboolean (*check)(const char* lib_name, gboolean load);
 } GtkLib;
 
-static GtkLib libs[] = {
+static GtkLib gtk_libs[] = {
     {
         GTK_2,
         JNI_LIB_NAME("gtk-x11-2.0"),
@@ -57,26 +57,42 @@
         VERSIONED_JNI_LIB_NAME("gtk-3", "0"),
         &gtk3_load,
         &gtk3_check
-    },
-    {
-        0,
-        NULL,
-        NULL,
-        NULL,
-        NULL
     }
 };
 
+static GtkLib** get_libs_order(GtkVersion version) {
+    static GtkLib** load_order;
+    static int n_libs = 0;
+    if (!n_libs) {
+        n_libs = sizeof(gtk_libs) / sizeof(GtkLib);
+        load_order = calloc(n_libs + 1, sizeof(GtkLib *));
+    }
+    int i, first = 0;
+    for (i = 0; i < n_libs; i++) {
+        load_order[i] = &gtk_libs[i];
+        if (load_order[i]->version == version) {
+            first = i;
+        }
+    }
+    if (first) {
+        for (i = first; i > 0; i--) {
+            load_order[i] = load_order[i - 1];
+        }
+        load_order[0] = &gtk_libs[first];
+    }
+    return load_order;
+}
+
 static GtkLib* get_loaded() {
-    GtkLib* lib = libs;
-    while(!gtk && lib->version) {
+    GtkLib** libs = get_libs_order(GTK_ANY);
+    while(!gtk && *libs) {
+        GtkLib* lib = *libs++;
         if (lib->check(lib->vname, /* load = */FALSE)) {
             return lib;
         }
         if (lib->check(lib->name, /* load = */FALSE)) {
             return lib;
         }
-        lib++;
     }
     return NULL;
 }
@@ -85,23 +101,18 @@
     if (gtk == NULL) {
         GtkLib* lib = get_loaded();
         if (lib) {
-            if (version != GTK_ANY && lib->version != version) {
-                if (verbose) {
-                    fprintf(stderr, "WARNING: Cannot load GTK%d library: \
-                         GTK%d has already been loaded\n", version, lib->version);
-                }
-                return FALSE;
-            }
             if (verbose) {
-                fprintf(stderr, "Looking for GTK%d library...\n", version);
+                fprintf(stderr, "Looking for GTK%d library...\n",
+                                                                 lib->version);
             }
             gtk = lib->load(env, lib->vname);
             if (!gtk) {
                 gtk = lib->load(env, lib->name);
             }
         } else {
-            lib = libs;
-            while (!gtk && lib->version) {
+            GtkLib** libs = get_libs_order(version);
+            while (!gtk && *libs) {
+                lib = *libs++;
                 if (version == GTK_ANY || lib->version == version) {
                     if (verbose) {
                         fprintf(stderr, "Looking for GTK%d library...\n",
@@ -115,9 +126,7 @@
                         fprintf(stderr, "Not found.\n");
                     }
                 }
-                lib++;
             }
-            lib--;
         }
         if (verbose) {
             if (gtk) {
@@ -131,23 +140,21 @@
 }
 
 static gboolean check_version(GtkVersion version) {
-    GtkLib* lib = libs;
-    while (lib->version) {
-        if (version == GTK_ANY || lib->version == version) {
-            if (lib->check(lib->vname, /* load = */TRUE)) {
-                return TRUE;
-            }
-            if (lib->check(lib->name, /* load = */TRUE)) {
-                return TRUE;
-            }
+    GtkLib** libs = get_libs_order(version);
+    while (*libs) {
+        GtkLib* lib = *libs++;
+        if (lib->check(lib->vname, /* load = */TRUE)) {
+            return TRUE;
         }
-        lib++;
+        if (lib->check(lib->name, /* load = */TRUE)) {
+            return TRUE;
+        }
     }
     return FALSE;
 }
 
 gboolean gtk_check_version(GtkVersion version) {
-    if (gtk) {
+    if (gtk || get_loaded()) {
         return TRUE;
     }
     return check_version(version);
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WDialogPeer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WDialogPeer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -37,10 +37,6 @@
     // target has none explicitly specified.
     static final Color defaultBackground =  SystemColor.control;
 
-    // If target doesn't have its background color set, we set its
-    // background to platform default.
-    boolean needDefaultBackground;
-
     WDialogPeer(Dialog target) {
         super(target);
 
@@ -67,7 +63,7 @@
         Dialog target = (Dialog)this.target;
         // Need to set target's background to default _before_ a call
         // to super.initialize.
-        if (needDefaultBackground) {
+        if (!target.isBackgroundSet()) {
             target.setBackground(defaultBackground);
         }
 
@@ -133,19 +129,6 @@
         }
     }
 
-    /* Native create() peeks at target's background and if it's null
-     * calls this method to arrage for default background to be set on
-     * target.  Can't make the check in Java, since getBackground will
-     * return owner's background if target has none set.
-     */
-    private void setDefaultColor() {
-        // Can't call target.setBackground directly, since we are
-        // called on toolkit thread.  Can't schedule a Runnable on the
-        // EventHandlerThread because of the race condition.  So just
-        // set a flag and call target.setBackground in initialize.
-        needDefaultBackground = true;
-    }
-
     native void pSetIMMOption(String option);
     void notifyIMMOptionChange(){
       InputMethodManager.getInstance().notifyChangeRequest((Component)target);
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WFileDialogPeer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WFileDialogPeer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -328,4 +328,7 @@
         FileDialog fileDialog = (FileDialog)target;
         return AWTAccessor.getFileDialogAccessor().isMultipleMode(fileDialog);
     }
+
+    @Override
+    public native Point getLocationOnScreen();
 }
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1852,12 +1852,14 @@
             setCollateAttrib(SheetCollate.UNCOLLATED, attributes);
         }
 
-        if ((flags & PD_PAGENUMS) != 0) {
-            attributes.add(SunPageSelection.RANGE);
-        } else if ((flags & PD_SELECTION) != 0) {
-            attributes.add(SunPageSelection.SELECTION);
-        } else {
-            attributes.add(SunPageSelection.ALL);
+        if ((flags & PD_NOSELECTION) != PD_NOSELECTION) {
+            if ((flags & PD_PAGENUMS) != 0) {
+                attributes.add(SunPageSelection.RANGE);
+            } else if ((flags & PD_SELECTION) != 0) {
+                attributes.add(SunPageSelection.SELECTION);
+            } else {
+                attributes.add(SunPageSelection.ALL);
+            }
         }
 
         if ((fields & DM_ORIENTATION) != 0) {
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WWindowPeer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WWindowPeer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -177,12 +177,17 @@
 
         updateInsets(insets_);
 
-        Font f = ((Window)target).getFont();
-        if (f == null) {
-            f = defaultFont;
-            ((Window)target).setFont(f);
-            setFont(f);
+        if (!((Window) target).isFontSet()) {
+            ((Window) target).setFont(defaultFont);
+            setFont(defaultFont);
         }
+        if (!((Window) target).isForegroundSet()) {
+            ((Window) target).setForeground(SystemColor.windowText);
+        }
+        if (!((Window) target).isBackgroundSet()) {
+            ((Window) target).setBackground(SystemColor.window);
+        }
+
         // Express our interest in display changes
         GraphicsConfiguration gc = getGraphicsConfiguration();
         ((Win32GraphicsDevice)gc.getDevice()).addDisplayChangedListener(this);
--- a/jdk/src/java.desktop/windows/classes/sun/java2d/d3d/D3DMaskFill.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/windows/classes/sun/java2d/d3d/D3DMaskFill.java	Wed Jul 05 21:51:13 2017 +0200
@@ -26,6 +26,7 @@
 package sun.java2d.d3d;
 
 import java.awt.Composite;
+import sun.java2d.InvalidPipeException;
 import sun.java2d.SunGraphics2D;
 import sun.java2d.loops.GraphicsPrimitive;
 import sun.java2d.loops.GraphicsPrimitiveMgr;
@@ -67,7 +68,13 @@
     protected void validateContext(SunGraphics2D sg2d,
                                    Composite comp, int ctxflags)
     {
-        D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData;
+        D3DSurfaceData dstData;
+        try {
+            dstData = (D3DSurfaceData) sg2d.surfaceData;
+        } catch (ClassCastException e) {
+            throw new InvalidPipeException("wrong surface data type: " +
+                                           sg2d.surfaceData);
+        }
         D3DContext.validateContext(dstData, dstData,
                                    sg2d.getCompClip(), comp,
                                    null, sg2d.paint, sg2d, ctxflags);
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -3781,7 +3781,10 @@
     HWND hWnd = GetHWnd();
     HWND hTop = GetTopLevelParentForWindow(hWnd);
     ::ClientToScreen(hTop, &p);
-
+    if (!m_bitsCandType) {
+        SetCandidateWindow(m_bitsCandType, x - p.x, y - p.y);
+        return;
+    }
     for (int iCandType=0; iCandType<32; iCandType++, bits<<=1) {
         if ( m_bitsCandType & bits )
             SetCandidateWindow(iCandType, x - p.x, y - p.y);
@@ -3799,7 +3802,7 @@
     HIMC hIMC = ImmGetContext(hwnd);
     CANDIDATEFORM cf;
     cf.dwIndex = iCandType;
-    cf.dwStyle = CFS_CANDIDATEPOS;
+    cf.dwStyle = CFS_POINT;
     cf.ptCurrentPos.x = x;
     cf.ptCurrentPos.y = y;
 
@@ -3831,8 +3834,12 @@
 
 MsgRouting AwtComponent::WmImeNotify(WPARAM subMsg, LPARAM bitsCandType)
 {
-    if (!m_useNativeCompWindow && subMsg == IMN_OPENCANDIDATE) {
-        m_bitsCandType = bitsCandType;
+    if (!m_useNativeCompWindow) {
+        if (subMsg == IMN_OPENCANDIDATE) {
+            m_bitsCandType = subMsg;
+        } else if (subMsg != IMN_SETCANDIDATEPOS) {
+            m_bitsCandType = 0;
+        }
         InquireCandidatePosition();
         return mrConsume;
     }
@@ -4100,12 +4107,7 @@
     if (mr != mrConsume)  {
         HWND proxy = GetProxyFocusOwner();
         if (proxy != NULL && ::IsWindowEnabled(proxy)) {
-            if (proxy != GetHWnd()) {
-                retVal = ::SendMessage(proxy, message, wParam, lParam);
-            } else {
-                retVal = ComCtl32Util::GetInstance().DefWindowProc(NULL,
-                                                proxy, message, wParam, lParam);
-            }
+            retVal = ::DefWindowProc(proxy, message, wParam, lParam);
             mr = mrConsume;
         }
     }
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Dialog.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Dialog.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -100,7 +100,6 @@
 {
     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 
-    jobject background = NULL;
     jobject target = NULL;
     AwtDialog* dialog = NULL;
 
@@ -181,22 +180,13 @@
             }
             dialog->DoUpdateIcon();
 
-
-            background = env->GetObjectField(target,
-                                             AwtComponent::backgroundID);
-            if (background == NULL) {
-                JNU_CallMethodByName(env, NULL,
-                                     peer, "setDefaultColor", "()V");
-            }
         }
     } catch (...) {
-        env->DeleteLocalRef(background);
         env->DeleteLocalRef(target);
         throw;
     }
 
 done:
-    env->DeleteLocalRef(background);
     env->DeleteLocalRef(target);
 
     return dialog;
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_FileDialog.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_FileDialog.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -107,6 +107,9 @@
             }
             break;
         }
+        case WM_SETICON: {
+            return 0;
+        }
     }
 
     WNDPROC lpfnWndProc = (WNDPROC)(::GetProp(hWnd, NativeDialogWndProcProp));
@@ -140,6 +143,11 @@
                 ::SendMessage(parent, WM_SETICON, (WPARAM)ICON_BIG,
                               (LPARAM)AwtToolkit::GetInstance().GetAwtIcon());
             } else {
+                AwtWindow *awtWindow = (AwtWindow *)JNI_GET_PDATA(awtParent);
+                ::SendMessage(parent, WM_SETICON, (WPARAM)ICON_BIG,
+                                               (LPARAM)(awtWindow->GetHIcon()));
+                ::SendMessage(parent, WM_SETICON, (WPARAM)ICON_SMALL,
+                                             (LPARAM)(awtWindow->GetHIconSm()));
                 env->DeleteLocalRef(awtParent);
             }
 
@@ -644,4 +652,72 @@
     CATCH_BAD_ALLOC;
 }
 
+int ScaleDownX(int x, HWND hwnd) {
+    int screen = AwtWin32GraphicsDevice::DeviceIndexForWindow(hwnd);
+    Devices::InstanceAccess devices;
+    AwtWin32GraphicsDevice* device = devices->GetDevice(screen);
+    return device == NULL ? x : device->ScaleDownX(x);
+}
+
+int ScaleDownY(int y, HWND hwnd) {
+    int screen = AwtWin32GraphicsDevice::DeviceIndexForWindow(hwnd);
+    Devices::InstanceAccess devices;
+    AwtWin32GraphicsDevice* device = devices->GetDevice(screen);
+    return device == NULL ? y : device->ScaleDownY(y);
+}
+
+jobject AwtFileDialog::_GetLocationOnScreen(void *param)
+{
+    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
+
+    jobject result = NULL;
+    HWND hwnd = (HWND)env->GetLongField((jobject)param, AwtComponent::hwndID);
+
+    if (::IsWindow(hwnd))
+    {
+        RECT rect;
+        VERIFY(::GetWindowRect(hwnd, &rect));
+        result = JNU_NewObjectByName(env, "java/awt/Point", "(II)V",
+                       ScaleDownX(rect.left, hwnd), ScaleDownY(rect.top, hwnd));
+    }
+
+    if (result != NULL)
+    {
+        jobject resultRef = env->NewGlobalRef(result);
+        env->DeleteLocalRef(result);
+        return resultRef;
+    }
+    else
+    {
+        return NULL;
+    }
+}
+
+/*
+ * Class:     sun_awt_windows_WFileDialogPeer
+ * Method:    getLocationOnScreen
+ * Signature: ()Ljava/awt/Point;
+ */
+JNIEXPORT jobject JNICALL
+Java_sun_awt_windows_WFileDialogPeer_getLocationOnScreen(JNIEnv *env,
+                                                                 jobject peer) {
+    TRY;
+
+    jobject peerRef = env->NewGlobalRef(peer);
+    jobject resultRef = (jobject)AwtToolkit::GetInstance().SyncCall(
+        (void*(*)(void*))AwtFileDialog::_GetLocationOnScreen, (void *)peerRef);
+    env->DeleteLocalRef(peerRef);
+
+    if (resultRef != NULL)
+    {
+        jobject result = env->NewLocalRef(resultRef);
+        env->DeleteGlobalRef(resultRef);
+        return result;
+    }
+
+    return NULL;
+
+    CATCH_BAD_ALLOC_RET(NULL);
+}
+
 } /* extern "C" */
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_FileDialog.h	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_FileDialog.h	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -69,6 +69,7 @@
     static void _DisposeOrHide(void *param);
     static void _ToFront(void *param);
     static void _ToBack(void *param);
+    static jobject _GetLocationOnScreen(void *param);
 
 private:
     static UINT GetBufferLength(LPTSTR buffer, UINT limit);
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsDevice.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsDevice.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -929,6 +929,9 @@
     // Only want to call this once per session
     make_uns_ordered_dither_array(img_oda_alpha, 256);
 
+    // workaround JDK-6477756, ignore return value to keep dll in memory
+    JDK_LoadSystemLibrary("opengl32.dll");
+
     CATCH_BAD_ALLOC;
 }
 
--- a/jdk/src/java.httpclient/share/classes/java/net/http/SSLConnection.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.httpclient/share/classes/java/net/http/SSLConnection.java	Wed Jul 05 21:51:13 2017 +0200
@@ -142,6 +142,9 @@
         // TODO: check for closure
         String s = "Receive) ";
         //debugPrint(s, r.buf);
+        if (r.result.bytesProduced() > 0) {
+            assert buf == r.buf;
+        }
         return r.result.bytesProduced();
     }
 
--- a/jdk/src/java.httpclient/share/classes/java/net/http/SSLDelegate.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.httpclient/share/classes/java/net/http/SSLDelegate.java	Wed Jul 05 21:51:13 2017 +0200
@@ -344,8 +344,8 @@
         /* we wait until some user data arrives */
         int mark = dst.position();
         WrapperResult r = null;
-        assert dst.position() == 0;
-        while (dst.position() == 0) {
+        int pos = dst.position();
+        while (dst.position() == pos) {
             r = wrapper.recvAndUnwrap (dst);
             dst = (r.buf != dst) ? r.buf: dst;
             Status status = r.result.getStatus();
--- a/jdk/src/java.httpclient/share/classes/java/net/http/SSLTunnelConnection.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.httpclient/share/classes/java/net/http/SSLTunnelConnection.java	Wed Jul 05 21:51:13 2017 +0200
@@ -150,6 +150,10 @@
         // TODO: check for closure
         String s = "Receive) ";
         //debugPrint(s, r.buf);
+        if (r.result.bytesProduced() > 0) {
+            assert buf == r.buf;
+        }
+
         return r.result.bytesProduced();
     }
 
--- a/jdk/src/java.management/share/classes/sun/management/resources/agent_de.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.management/share/classes/sun/management/resources/agent_de.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,5 @@
 #
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,9 +23,6 @@
 # questions.
 #
 
-# Localizations for Level names.  For the US locale
-# these are the same as the non-localized level name.
-
 agent.err.error			   = Fehler
 agent.err.exception                = Ausnahme von Agent ausgel\u00F6st 
 agent.err.warning		   = Warnung
@@ -43,7 +39,7 @@
 agent.err.premain.notfound         = premain(String) ist in Agent-Klasse nicht vorhanden
 agent.err.agentclass.access.denied = Zugriff auf premain(String) wurde abgelehnt
 agent.err.invalid.agentclass       = Ung\u00FCltiger Eigenschaftswert f\u00FCr com.sun.management.agent.class
-agent.err.invalid.state            = Ung\u00FCltiger Agent-Zustand
+agent.err.invalid.state            = Ung\u00FCltiger Agent-Zustand: {0}
 agent.err.invalid.jmxremote.port   = Ung\u00FCltige Nummer f\u00FCr com.sun.management.jmxremote.port
 agent.err.invalid.jmxremote.rmi.port = Ung\u00FCltige Nummer f\u00FCr com.sun.management.jmxremote.rmi.port
 
@@ -67,27 +63,9 @@
 agent.err.connector.server.io.error = Fehler bei JMX-Connector-Serverkommunikation
 
 agent.err.invalid.option	   = Ung\u00FCltige Option angegeben
-agent.err.invalid.snmp.port        = Ung\u00FCltige Nummer f\u00FCr com.sun.management.snmp.port
-agent.err.invalid.snmp.trap.port   = Ung\u00FCltige Nummer f\u00FCr com.sun.management.snmp.trap
-agent.err.unknown.snmp.interface   = Unbekannte SNMP-Schnittstelle
-agent.err.acl.file.notset          = Es wurde keine SNMP-ACL-Datei angegeben, obwohl com.sun.management.snmp.acl auf "true" gesetzt ist
-agent.err.acl.file.notfound        = SNMP-ACL-Datei konnte nicht gefunden werden
-agent.err.acl.file.not.readable    = SNMP-ACL-Datei kann nicht gelesen werden
-agent.err.acl.file.read.failed     = SNMP-ACL-Datei konnte nicht gelesen werden
-agent.err.acl.file.access.notrestricted = Lesezugriff auf Kennwortdatei muss eingeschr\u00E4nkt werden
-
-agent.err.snmp.adaptor.start.failed = Fehler beim Starten des SNMP-Adaptors mit Adresse
-agent.err.snmp.mib.init.failed     = Initialisierung von SNMP-MIB nicht erfolgreich mit Fehler
 
 jmxremote.ConnectorBootstrap.starting = JMX-Connector-Server starten:
 jmxremote.ConnectorBootstrap.noAuthentication = Keine Authentifizierung
 jmxremote.ConnectorBootstrap.ready = JMX-Connector bereit unter: {0}
 jmxremote.ConnectorBootstrap.password.readonly = Lesezugriff auf Kennwortdatei muss eingeschr\u00E4nkt werden: {0}
 jmxremote.ConnectorBootstrap.file.readonly = Lesezugriff auf Datei muss eingeschr\u00E4nkt werden: {0}
-
-jmxremote.AdaptorBootstrap.getTargetList.processing = ACL wird verarbeitet
-jmxremote.AdaptorBootstrap.getTargetList.adding = Ziel hinzuf\u00FCgen: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = Adaptor-Server starten:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptor bereit.
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-Adaptor bereit unter: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} beenden
--- a/jdk/src/java.management/share/classes/sun/management/resources/agent_es.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.management/share/classes/sun/management/resources/agent_es.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,5 @@
 #
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,9 +23,6 @@
 # questions.
 #
 
-# Localizations for Level names.  For the US locale
-# these are the same as the non-localized level name.
-
 agent.err.error			   = Error
 agent.err.exception                = Excepci\u00F3n devuelta por el agente 
 agent.err.warning		   = Advertencia
@@ -43,7 +39,7 @@
 agent.err.premain.notfound         = premain(String) no existe en la clase del agente
 agent.err.agentclass.access.denied = Acceso denegado a premain(String)
 agent.err.invalid.agentclass       = Valor de propiedad com.sun.management.agent.class no v\u00E1lido
-agent.err.invalid.state            = Estado del agente no v\u00E1lido
+agent.err.invalid.state            = Estado de agente no v\u00E1lido: {0}
 agent.err.invalid.jmxremote.port   = N\u00FAmero com.sun.management.jmxremote.port no v\u00E1lido
 agent.err.invalid.jmxremote.rmi.port = N\u00FAmero com.sun.management.jmxremote.rmi.port no v\u00E1lido
 
@@ -67,27 +63,9 @@
 agent.err.connector.server.io.error = Error de comunicaci\u00F3n con el servidor de conector JMX
 
 agent.err.invalid.option	   = Opci\u00F3n especificada no v\u00E1lida
-agent.err.invalid.snmp.port        = N\u00FAmero de com.sun.management.snmp.port no v\u00E1lido
-agent.err.invalid.snmp.trap.port   = N\u00FAmero de com.sun.management.snmp.trap no v\u00E1lido
-agent.err.unknown.snmp.interface   = Interfaz SNMP desconocida
-agent.err.acl.file.notset          = No se ha especificado ning\u00FAn archivo ACL de SNMP, pero com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = Archivo ACL de SNMP no encontrado
-agent.err.acl.file.not.readable    = No se puede leer el archivo ACL de SNMP
-agent.err.acl.file.read.failed     = Fallo al leer el archivo ACL de SNMP
-agent.err.acl.file.access.notrestricted = Se debe restringir el acceso de lectura al archivo de contrase\u00F1as
-
-agent.err.snmp.adaptor.start.failed = Fallo al iniciar el adaptador de SNMP con la direcci\u00F3n
-agent.err.snmp.mib.init.failed     = Fallo al inicializar el MIB de SNMP con error
 
 jmxremote.ConnectorBootstrap.starting = Iniciando servidor de conector JMX:
 jmxremote.ConnectorBootstrap.noAuthentication = Sin autenticaci\u00F3n
 jmxremote.ConnectorBootstrap.ready = Conector JMX listo en: {0}
 jmxremote.ConnectorBootstrap.password.readonly = Se debe restringir el acceso de lectura al archivo de contrase\u00F1as: {0}
 jmxremote.ConnectorBootstrap.file.readonly = El acceso de lectura al archivo debe ser restringido: {0}
-
-jmxremote.AdaptorBootstrap.getTargetList.processing = Procesando ACL
-jmxremote.AdaptorBootstrap.getTargetList.adding = Agregando destino: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = Iniciando servidor de adaptador:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptador listo.
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptador SNMP listo en: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = terminar {0}
--- a/jdk/src/java.management/share/classes/sun/management/resources/agent_fr.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.management/share/classes/sun/management/resources/agent_fr.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,5 @@
 #
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,9 +23,6 @@
 # questions.
 #
 
-# Localizations for Level names.  For the US locale
-# these are the same as the non-localized level name.
-
 agent.err.error			   = Erreur
 agent.err.exception                = Exception envoy\u00E9e par l'agent 
 agent.err.warning		   = Avertissement
@@ -43,7 +39,7 @@
 agent.err.premain.notfound         = premain(String) n'existe pas dans la classe d'agents
 agent.err.agentclass.access.denied = Acc\u00E8s \u00E0 premain(String) refus\u00E9
 agent.err.invalid.agentclass       = Valeur de propri\u00E9t\u00E9 com.sun.management.agent.class incorrecte
-agent.err.invalid.state            = Etat de l'agent non valide
+agent.err.invalid.state            = Etat de l''agent non valide : {0}
 agent.err.invalid.jmxremote.port   = Num\u00E9ro com.sun.management.jmxremote.port incorrect
 agent.err.invalid.jmxremote.rmi.port = Num\u00E9ro com.sun.management.jmxremote.rmi.port non valide
 
@@ -67,27 +63,9 @@
 agent.err.connector.server.io.error = Erreur de communication avec le serveur du connecteur JMX
 
 agent.err.invalid.option	   = Option sp\u00E9cifi\u00E9e non valide
-agent.err.invalid.snmp.port        = Num\u00E9ro com.sun.management.snmp.port incorrect
-agent.err.invalid.snmp.trap.port   = Num\u00E9ro com.sun.management.snmp.trap incorrect
-agent.err.unknown.snmp.interface   = Interface SNMP inconnue
-agent.err.acl.file.notset          = Aucun fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP n'est sp\u00E9cifi\u00E9 mais com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = Fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP introuvable
-agent.err.acl.file.not.readable    = Fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP illisible
-agent.err.acl.file.read.failed     = Impossible de lire le fichier de liste de contr\u00F4le d'acc\u00E8s (ACL) SNMP
-agent.err.acl.file.access.notrestricted = L'acc\u00E8s en lecture au fichier de mots de passe doit \u00EAtre limit\u00E9
-
-agent.err.snmp.adaptor.start.failed = Impossible de d\u00E9marrer l'adaptateur SNMP avec l'adresse
-agent.err.snmp.mib.init.failed     = Impossible d'initialiser SNMP MIB avec l'erreur
 
 jmxremote.ConnectorBootstrap.starting = D\u00E9marrage du serveur du connecteur JMX :
 jmxremote.ConnectorBootstrap.noAuthentication = Pas d'authentification
 jmxremote.ConnectorBootstrap.ready = Connecteur JMX pr\u00EAt \u00E0 : {0}
 jmxremote.ConnectorBootstrap.password.readonly = L''acc\u00E8s en lecture au fichier de mots de passe doit \u00EAtre limit\u00E9 : {0}
 jmxremote.ConnectorBootstrap.file.readonly = L''acc\u00E8s en lecture au fichier doit \u00EAtre limit\u00E9 : {0}
-
-jmxremote.AdaptorBootstrap.getTargetList.processing = Traitement de la liste de contr\u00F4le d'acc\u00E8s (ACL)
-jmxremote.AdaptorBootstrap.getTargetList.adding = Ajout de la cible : {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = D\u00E9marrage du serveur de l'adaptateur :
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptateur pr\u00EAt.
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptateur SNMP pr\u00EAt sur : {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = terminer {0}
--- a/jdk/src/java.management/share/classes/sun/management/resources/agent_it.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.management/share/classes/sun/management/resources/agent_it.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,5 @@
 #
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,9 +23,6 @@
 # questions.
 #
 
-# Localizations for Level names.  For the US locale
-# these are the same as the non-localized level name.
-
 agent.err.error			   = Errore
 agent.err.exception                = Eccezione dell'agente 
 agent.err.warning		   = Avvertenza
@@ -43,7 +39,7 @@
 agent.err.premain.notfound         = premain(String) non esiste nella classe agente
 agent.err.agentclass.access.denied = Accesso negato a premain(String)
 agent.err.invalid.agentclass       = Valore propriet\u00E0 com.sun.management.agent.class non valido
-agent.err.invalid.state            = Stato agente non valido
+agent.err.invalid.state            = Stato agente non valido: {0}
 agent.err.invalid.jmxremote.port   = Numero com.sun.management.jmxremote.port non valido
 agent.err.invalid.jmxremote.rmi.port = Numero com.sun.management.jmxremote.rmi.port non valido
 
@@ -67,27 +63,9 @@
 agent.err.connector.server.io.error = Errore di comunicazione server del connettore JMX
 
 agent.err.invalid.option	   = Specificata opzione non valida
-agent.err.invalid.snmp.port        = Numero com.sun.management.snmp.port non valido
-agent.err.invalid.snmp.trap.port   = Numero com.sun.management.snmp.trap non valido
-agent.err.unknown.snmp.interface   = Interfaccia SNMP sconosciuta
-agent.err.acl.file.notset          = Nessun file SNMP ACL specificato ma com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = File SNMP ACL non trovato
-agent.err.acl.file.not.readable    = File SNMP ACL non leggibile
-agent.err.acl.file.read.failed     = Errore di lettura file SNMP ACL
-agent.err.acl.file.access.notrestricted = Limitare l'accesso in lettura al password file
-
-agent.err.snmp.adaptor.start.failed = Impossibile avviare l'adattatore SNMP con indirizzo
-agent.err.snmp.mib.init.failed     = Impossibile inizializzare MIB SNMP con errore
 
 jmxremote.ConnectorBootstrap.starting = Avvio del server connettore JMX:
 jmxremote.ConnectorBootstrap.noAuthentication = Nessuna autenticazione
 jmxremote.ConnectorBootstrap.ready = Connettore JMX pronto in: {0}
 jmxremote.ConnectorBootstrap.password.readonly = Limitare l''accesso in lettura al password file: {0}
 jmxremote.ConnectorBootstrap.file.readonly = Limitare l''accesso in lettura al file: {0}
-
-jmxremote.AdaptorBootstrap.getTargetList.processing = Elaborazione ACL
-jmxremote.AdaptorBootstrap.getTargetList.adding = Aggiunta destinazione: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = Avvio del server adattatore:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adattatore pronto.
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adattatore SNMP pronto in: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = interrompere {0}
--- a/jdk/src/java.management/share/classes/sun/management/resources/agent_ja.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.management/share/classes/sun/management/resources/agent_ja.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,5 @@
 #
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,9 +23,6 @@
 # questions.
 #
 
-# Localizations for Level names.  For the US locale
-# these are the same as the non-localized level name.
-
 agent.err.error			   = \u30A8\u30E9\u30FC
 agent.err.exception                = \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u307E\u3057\u305F 
 agent.err.warning		   = \u8B66\u544A
@@ -36,14 +32,14 @@
 agent.err.configfile.closed.failed = \u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u3092\u9589\u3058\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
 agent.err.configfile.access.denied = \u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F
 
-agent.err.exportaddress.failed	   = JMX\u30B3\u30CD\u30AF\u30BF\u30FB\u30A2\u30C9\u30EC\u30B9\u306E\u8A08\u6E2C\u30D0\u30C3\u30D5\u30A1\u3078\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+agent.err.exportaddress.failed	   = JMX\u30B3\u30CD\u30AF\u30BF\u30FB\u30A2\u30C9\u30EC\u30B9\u306E\u8A08\u6E2C\u30D0\u30C3\u30D5\u30A1\u3078\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u304C\u5931\u6557\u3057\u307E\u3057\u305F
 
 agent.err.agentclass.notfound      = \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
 agent.err.agentclass.failed        = \u7BA1\u7406\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30AF\u30E9\u30B9\u304C\u5931\u6557\u3057\u307E\u3057\u305F 
 agent.err.premain.notfound         = premain(String)\u304C\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30FB\u30AF\u30E9\u30B9\u306B\u5B58\u5728\u3057\u307E\u305B\u3093
 agent.err.agentclass.access.denied = premain(String)\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F
 agent.err.invalid.agentclass       = com.sun.management.agent.class\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u5024\u304C\u7121\u52B9\u3067\u3059
-agent.err.invalid.state            = \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306E\u72B6\u614B\u304C\u7121\u52B9\u3067\u3059
+agent.err.invalid.state            = \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306E\u72B6\u614B\u304C\u7121\u52B9\u3067\u3059: {0}
 agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port\u306E\u756A\u53F7\u304C\u7121\u52B9\u3067\u3059
 agent.err.invalid.jmxremote.rmi.port = com.sun.management.jmxremote.rmi.port\u306E\u756A\u53F7\u304C\u7121\u52B9\u3067\u3059
 
@@ -67,27 +63,9 @@
 agent.err.connector.server.io.error = JMX\u30B3\u30CD\u30AF\u30BF\u30FB\u30B5\u30FC\u30D0\u30FC\u306E\u901A\u4FE1\u30A8\u30E9\u30FC
 
 agent.err.invalid.option	   = \u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F
-agent.err.invalid.snmp.port        = com.sun.management.snmp.port\u306E\u756A\u53F7\u304C\u7121\u52B9\u3067\u3059
-agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap\u306E\u756A\u53F7\u304C\u7121\u52B9\u3067\u3059
-agent.err.unknown.snmp.interface   = \u4E0D\u660E\u306ASNMP\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059
-agent.err.acl.file.notset          = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u304C\u3001com.sun.management.snmp.acl=true\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059
-agent.err.acl.file.notfound        = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-agent.err.acl.file.not.readable    = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093
-agent.err.acl.file.read.failed     = SNMP ACL\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-agent.err.acl.file.access.notrestricted = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
-
-agent.err.snmp.adaptor.start.failed = \u3053\u306E\u30A2\u30C9\u30EC\u30B9\u3067SNMP\u30A2\u30C0\u30D7\u30BF\u3092\u958B\u59CB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
-agent.err.snmp.mib.init.failed     = \u30A8\u30E9\u30FC\u3067SNMP MIB\u3092\u521D\u671F\u5316\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
 
 jmxremote.ConnectorBootstrap.starting = JMX\u30B3\u30CD\u30AF\u30BF\u30FB\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059:
 jmxremote.ConnectorBootstrap.noAuthentication = \u8A8D\u8A3C\u306A\u3057
 jmxremote.ConnectorBootstrap.ready = JMX\u30B3\u30CD\u30AF\u30BF\u306E\u6E96\u5099\u304C\u3067\u304D\u307E\u3057\u305F: {0}
 jmxremote.ConnectorBootstrap.password.readonly = \u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}
 jmxremote.ConnectorBootstrap.file.readonly = \u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u53D6\u308A\u30A2\u30AF\u30BB\u30B9\u306F\u5236\u9650\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}
-
-jmxremote.AdaptorBootstrap.getTargetList.processing = ACL\u3092\u51E6\u7406\u3057\u3066\u3044\u307E\u3059
-jmxremote.AdaptorBootstrap.getTargetList.adding = \u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u8FFD\u52A0\u3057\u3066\u3044\u307E\u3059: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = \u30A2\u30C0\u30D7\u30BF\u30FB\u30B5\u30FC\u30D0\u30FC\u3092\u8D77\u52D5\u3057\u3066\u3044\u307E\u3059:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u30A2\u30C0\u30D7\u30BF\u306E\u6E96\u5099\u304C\u3067\u304D\u307E\u3057\u305F\u3002
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP\u30A2\u30C0\u30D7\u30BF\u306E\u6E96\u5099\u304C\u3067\u304D\u307E\u3057\u305F: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = {0}\u3092\u7D42\u4E86\u3057\u307E\u3059
--- a/jdk/src/java.management/share/classes/sun/management/resources/agent_ko.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.management/share/classes/sun/management/resources/agent_ko.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,5 @@
 #
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,11 +23,8 @@
 # questions.
 #
 
-# Localizations for Level names.  For the US locale
-# these are the same as the non-localized level name.
-
 agent.err.error			   = \uC624\uB958
-agent.err.exception                = \uC5D0\uC774\uC804\uD2B8\uC5D0 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. 
+agent.err.exception                = \uC5D0\uC774\uC804\uD2B8\uC5D0 \uC608\uC678\uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. 
 agent.err.warning		   = \uACBD\uACE0
 
 agent.err.configfile.notfound      = \uAD6C\uC131 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
@@ -43,7 +39,7 @@
 agent.err.premain.notfound         = \uC5D0\uC774\uC804\uD2B8 \uD074\uB798\uC2A4\uC5D0 premain(\uBB38\uC790\uC5F4)\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
 agent.err.agentclass.access.denied = premain(\uBB38\uC790\uC5F4)\uC5D0 \uB300\uD55C \uC561\uC138\uC2A4\uAC00 \uAC70\uBD80\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 agent.err.invalid.agentclass       = com.sun.management.agent.class \uC18D\uC131 \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
-agent.err.invalid.state            = \uBD80\uC801\uD569\uD55C \uC5D0\uC774\uC804\uD2B8 \uC0C1\uD0DC
+agent.err.invalid.state            = \uBD80\uC801\uD569\uD55C \uC5D0\uC774\uC804\uD2B8 \uC0C1\uD0DC: {0}
 agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port \uBC88\uD638\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
 agent.err.invalid.jmxremote.rmi.port = \uBD80\uC801\uD569\uD55C com.sun.management.jmxremote.rmi.port \uBC88\uD638
 
@@ -67,27 +63,9 @@
 agent.err.connector.server.io.error = JMX \uCEE4\uB125\uD130 \uC11C\uBC84 \uD1B5\uC2E0 \uC624\uB958
 
 agent.err.invalid.option	   = \uBD80\uC801\uD569\uD55C \uC635\uC158\uC774 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-agent.err.invalid.snmp.port        = com.sun.management.snmp.port \uBC88\uD638\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
-agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap \uBC88\uD638\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
-agent.err.unknown.snmp.interface   = \uC54C \uC218 \uC5C6\uB294 SNMP \uC778\uD130\uD398\uC774\uC2A4
-agent.err.acl.file.notset          = SNMP ACL \uD30C\uC77C\uC774 \uC9C0\uC815\uB418\uC9C0 \uC54A\uC558\uC9C0\uB9CC com.sun.management.snmp.acl=true\uC785\uB2C8\uB2E4.
-agent.err.acl.file.notfound        = SNMP ACL \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-agent.err.acl.file.not.readable    = SNMP ACL \uD30C\uC77C\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
-agent.err.acl.file.read.failed     = SNMP ACL \uD30C\uC77C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
-agent.err.acl.file.access.notrestricted = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.
-
-agent.err.snmp.adaptor.start.failed = \uC8FC\uC18C\uAC00 \uC788\uB294 SNMP \uC5B4\uB311\uD130 \uC2DC\uC791\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
-agent.err.snmp.mib.init.failed     = \uC624\uB958\uB85C \uC778\uD574 SNMP MIB \uCD08\uAE30\uD654\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
 
 jmxremote.ConnectorBootstrap.starting = JMX \uCEE4\uB125\uD130 \uC11C\uBC84\uB97C \uC2DC\uC791\uD558\uB294 \uC911:
 jmxremote.ConnectorBootstrap.noAuthentication = \uC778\uC99D \uC5C6\uC74C
 jmxremote.ConnectorBootstrap.ready = {0}\uC5D0\uC11C JMX \uCEE4\uB125\uD130\uAC00 \uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 jmxremote.ConnectorBootstrap.password.readonly = \uBE44\uBC00\uBC88\uD638 \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD568: {0}
 jmxremote.ConnectorBootstrap.file.readonly = \uD30C\uC77C \uC77D\uAE30 \uC561\uC138\uC2A4\uB294 \uC81C\uD55C\uB418\uC5B4\uC57C \uD568: {0}
-
-jmxremote.AdaptorBootstrap.getTargetList.processing = ACL\uC744 \uCC98\uB9AC\uD558\uB294 \uC911
-jmxremote.AdaptorBootstrap.getTargetList.adding = \uB300\uC0C1\uC744 \uCD94\uAC00\uD558\uB294 \uC911: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = \uC5B4\uB311\uD130 \uC11C\uBC84\uB97C \uC2DC\uC791\uD558\uB294 \uC911:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \uC5B4\uB311\uD130\uAC00 \uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = {0}:{1}\uC5D0\uC11C SNMP \uC5B4\uB311\uD130\uAC00 \uC900\uBE44\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
-jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} \uC885\uB8CC
--- a/jdk/src/java.management/share/classes/sun/management/resources/agent_pt_BR.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.management/share/classes/sun/management/resources/agent_pt_BR.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,5 @@
 #
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,9 +23,6 @@
 # questions.
 #
 
-# Localizations for Level names.  For the US locale
-# these are the same as the non-localized level name.
-
 agent.err.error			   = Erro
 agent.err.exception                = Exce\u00E7\u00E3o gerada pelo agente 
 agent.err.warning		   = Advert\u00EAncia
@@ -43,7 +39,7 @@
 agent.err.premain.notfound         = premain(String) n\u00E3o existe na classe do agente
 agent.err.agentclass.access.denied = Acesso negado a premain(String)
 agent.err.invalid.agentclass       = Valor inv\u00E1lido da propriedade com.sun.management.agent.class
-agent.err.invalid.state            = Estado de agente inv\u00E1lido
+agent.err.invalid.state            = Estado inv\u00E1lido do agente: {0}
 agent.err.invalid.jmxremote.port   = N\u00FAmero inv\u00E1lido de com.sun.management.jmxremote.port
 agent.err.invalid.jmxremote.rmi.port = N\u00FAmero inv\u00E1lido do com.sun.management.jmxremote.rmi.port
 
@@ -67,27 +63,9 @@
 agent.err.connector.server.io.error = Erro de comunica\u00E7\u00E3o do servidor do conector JMX
 
 agent.err.invalid.option	   = Op\u00E7\u00E3o especificada inv\u00E1lida
-agent.err.invalid.snmp.port        = N\u00FAmero inv\u00E1lido de com.sun.management.snmp.port
-agent.err.invalid.snmp.trap.port   = N\u00FAmero inv\u00E1lido de com.sun.management.snmp.trap
-agent.err.unknown.snmp.interface   = Interface SNMP desconhecida
-agent.err.acl.file.notset          = N\u00E3o h\u00E1 um arquivo ACL SNMP especificado, mas com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = Arquivo ACL SNMP n\u00E3o encontrado
-agent.err.acl.file.not.readable    = Arquivo ACL SNMP ileg\u00EDvel
-agent.err.acl.file.read.failed     = Falha ao ler o arquivo ACL SNMP
-agent.err.acl.file.access.notrestricted = O acesso de leitura do arquivo de senha deve ser limitado
-
-agent.err.snmp.adaptor.start.failed = Falha ao iniciar o adaptador SNMP com endere\u00E7o
-agent.err.snmp.mib.init.failed     = Falha ao inicializar o MIB SNMP com erro
 
 jmxremote.ConnectorBootstrap.starting = Iniciando o Servidor do Conector JMX:
 jmxremote.ConnectorBootstrap.noAuthentication = Sem autentica\u00E7\u00E3o
 jmxremote.ConnectorBootstrap.ready = Conector JMX pronto em: {0}
 jmxremote.ConnectorBootstrap.password.readonly = O acesso de leitura do arquivo de senha deve ser limitado: {0}
 jmxremote.ConnectorBootstrap.file.readonly = O acesso de leitura do arquivo deve ser limitado: {0}
-
-jmxremote.AdaptorBootstrap.getTargetList.processing = Processando ACL
-jmxremote.AdaptorBootstrap.getTargetList.adding = Adicionando destino: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = Iniciando o Servidor do Adaptador:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptador pronto.
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptador SNMP pronto em: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = encerrar {0}
--- a/jdk/src/java.management/share/classes/sun/management/resources/agent_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.management/share/classes/sun/management/resources/agent_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,5 @@
 #
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,9 +23,6 @@
 # questions.
 #
 
-# Localizations for Level names.  For the US locale
-# these are the same as the non-localized level name.
-
 agent.err.error			   = Fel
 agent.err.exception                = Agenten orsakade ett undantag 
 agent.err.warning		   = Varning
@@ -43,7 +39,7 @@
 agent.err.premain.notfound         = premain(String) finns inte i agentklassen
 agent.err.agentclass.access.denied = \u00C5tkomst till premain(String) nekad
 agent.err.invalid.agentclass       = Ogiltigt egenskapsv\u00E4rde f\u00F6r com.sun.management.agent.class
-agent.err.invalid.state            = Ogiltig agentstatus
+agent.err.invalid.state            = Ogiltig agentstatus: {0}
 agent.err.invalid.jmxremote.port   = Ogiltigt com.sun.management.jmxremote.port-nummer
 agent.err.invalid.jmxremote.rmi.port = Ogiltigt com.sun.management.jmxremote.rmi.port-nummer
 
@@ -67,27 +63,9 @@
 agent.err.connector.server.io.error = Serverkommunikationsfel f\u00F6r JMX-anslutning
 
 agent.err.invalid.option	   = Det angivna alternativet \u00E4r ogiltigt
-agent.err.invalid.snmp.port        = Ogiltigt com.sun.management.snmp.port-nummer
-agent.err.invalid.snmp.trap.port   = Ogiltigt com.sun.management.snmp.trap-nummer
-agent.err.unknown.snmp.interface   = Ok\u00E4nt SNMP-gr\u00E4nssnitt
-agent.err.acl.file.notset          = Ingen SNMP ACL-fil har angetts, men com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = SNMP ACL-filen hittades inte
-agent.err.acl.file.not.readable    = SNMP ACL-filen \u00E4r inte l\u00E4sbar
-agent.err.acl.file.read.failed     = Kunde inte l\u00E4sa filen SNMP ACL
-agent.err.acl.file.access.notrestricted = L\u00E4sbeh\u00F6righeten f\u00F6r filen m\u00E5ste begr\u00E4nsas
-
-agent.err.snmp.adaptor.start.failed = Kunde inte starta SNMP-adaptern med adressen
-agent.err.snmp.mib.init.failed     = Kunde inte initiera SNMP MIB. Returnerade felet
 
 jmxremote.ConnectorBootstrap.starting = Startar server f\u00F6r JMX-anslutning:
 jmxremote.ConnectorBootstrap.noAuthentication = Ingen autentisering
 jmxremote.ConnectorBootstrap.ready = JMX-anslutning redo p\u00E5: {0}
 jmxremote.ConnectorBootstrap.password.readonly = L\u00E4sbeh\u00F6righeten f\u00F6r l\u00F6senordsfilen m\u00E5ste begr\u00E4nsas: {0}
 jmxremote.ConnectorBootstrap.file.readonly = Fill\u00E4snings\u00E5tkomst m\u00E5ste begr\u00E4nsas {0}
-
-jmxremote.AdaptorBootstrap.getTargetList.processing = ACL bearbetas
-jmxremote.AdaptorBootstrap.getTargetList.adding = M\u00E5l l\u00E4ggs till: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = Adapterservern startas:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptern redo.
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-adaptern redo p\u00E5: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = avsluta {0}
--- a/jdk/src/java.management/share/classes/sun/management/resources/agent_zh_CN.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.management/share/classes/sun/management/resources/agent_zh_CN.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,5 @@
 #
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,9 +23,6 @@
 # questions.
 #
 
-# Localizations for Level names.  For the US locale
-# these are the same as the non-localized level name.
-
 agent.err.error			   = \u9519\u8BEF
 agent.err.exception                = \u4EE3\u7406\u629B\u51FA\u5F02\u5E38\u9519\u8BEF
 agent.err.warning		   = \u8B66\u544A
@@ -43,7 +39,7 @@
 agent.err.premain.notfound         = \u4EE3\u7406\u7C7B\u4E2D\u4E0D\u5B58\u5728 premain(String)
 agent.err.agentclass.access.denied = \u62D2\u7EDD\u8BBF\u95EE premain(String)
 agent.err.invalid.agentclass       = com.sun.management.agent.class \u5C5E\u6027\u503C\u65E0\u6548
-agent.err.invalid.state            = \u4EE3\u7406\u72B6\u6001\u65E0\u6548
+agent.err.invalid.state            = \u65E0\u6548\u7684\u4EE3\u7406\u72B6\u6001: {0}
 agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port \u7F16\u53F7\u65E0\u6548
 agent.err.invalid.jmxremote.rmi.port = com.sun.management.jmxremote.rmi.port \u7F16\u53F7\u65E0\u6548
 
@@ -67,27 +63,9 @@
 agent.err.connector.server.io.error = JMX \u8FDE\u63A5\u5668\u670D\u52A1\u5668\u901A\u4FE1\u9519\u8BEF
 
 agent.err.invalid.option	   = \u6307\u5B9A\u7684\u9009\u9879\u65E0\u6548
-agent.err.invalid.snmp.port        = com.sun.management.snmp.port number \u65E0\u6548
-agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap number \u65E0\u6548
-agent.err.unknown.snmp.interface   = \u672A\u77E5 SNMP \u63A5\u53E3
-agent.err.acl.file.notset          = \u672A\u6307\u5B9A SNMP ACL \u6587\u4EF6, \u4F46 com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = \u627E\u4E0D\u5230 SNMP ACL \u6587\u4EF6
-agent.err.acl.file.not.readable    = SNMP ACL \u6587\u4EF6\u4E0D\u53EF\u8BFB\u53D6
-agent.err.acl.file.read.failed     = \u672A\u80FD\u8BFB\u53D6 SNMP ACL \u6587\u4EF6
-agent.err.acl.file.access.notrestricted = \u5FC5\u987B\u9650\u5236\u53E3\u4EE4\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650
-
-agent.err.snmp.adaptor.start.failed = \u65E0\u6CD5\u542F\u52A8\u5E26\u6709\u5730\u5740\u7684 SNMP \u9002\u914D\u5668
-agent.err.snmp.mib.init.failed     = \u65E0\u6CD5\u521D\u59CB\u5316\u5E26\u6709\u9519\u8BEF\u7684 SNMP MIB
 
 jmxremote.ConnectorBootstrap.starting = \u6B63\u5728\u542F\u52A8 JMX \u8FDE\u63A5\u5668\u670D\u52A1\u5668: 
 jmxremote.ConnectorBootstrap.noAuthentication = \u65E0\u9A8C\u8BC1
 jmxremote.ConnectorBootstrap.ready = \u4F4D\u4E8E{0}\u7684 JMX \u8FDE\u63A5\u5668\u5DF2\u5C31\u7EEA
 jmxremote.ConnectorBootstrap.password.readonly = \u5FC5\u987B\u9650\u5236\u53E3\u4EE4\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650: {0}
 jmxremote.ConnectorBootstrap.file.readonly = \u5FC5\u987B\u9650\u5236\u6587\u4EF6\u8BFB\u53D6\u8BBF\u95EE\u6743\u9650: {0}
-
-jmxremote.AdaptorBootstrap.getTargetList.processing = \u6B63\u5728\u5904\u7406 ACL
-jmxremote.AdaptorBootstrap.getTargetList.adding = \u6B63\u5728\u6DFB\u52A0\u76EE\u6807: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = \u6B63\u5728\u542F\u52A8\u9002\u914D\u5668\u670D\u52A1\u5668: 
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u9002\u914D\u5668\u5C31\u7EEA\u3002
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = \u4F4D\u4E8E {0}:{1} \u7684 SNMP \u9002\u914D\u5668\u5C31\u7EEA
-jmxremote.AdaptorBootstrap.getTargetList.terminate = \u7EC8\u6B62{0}
--- a/jdk/src/java.management/share/classes/sun/management/resources/agent_zh_TW.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.management/share/classes/sun/management/resources/agent_zh_TW.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,5 @@
 #
-#
-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -24,17 +23,14 @@
 # questions.
 #
 
-# Localizations for Level names.  For the US locale
-# these are the same as the non-localized level name.
-
 agent.err.error			   = \u932F\u8AA4
 agent.err.exception                = \u4EE3\u7406\u7A0B\u5F0F\u767C\u751F\u7570\u5E38 
 agent.err.warning		   = \u8B66\u544A
 
-agent.err.configfile.notfound      = \u627E\u4E0D\u5230\u914D\u7F6E\u6A94\u6848
-agent.err.configfile.failed        = \u7121\u6CD5\u8B80\u53D6\u914D\u7F6E\u6A94\u6848
-agent.err.configfile.closed.failed = \u7121\u6CD5\u95DC\u9589\u914D\u7F6E\u6A94\u6848
-agent.err.configfile.access.denied = \u5B58\u53D6\u914D\u7F6E\u6A94\u6848\u906D\u5230\u62D2\u7D55
+agent.err.configfile.notfound      = \u627E\u4E0D\u5230\u8A2D\u5B9A\u6A94\u6848
+agent.err.configfile.failed        = \u7121\u6CD5\u8B80\u53D6\u8A2D\u5B9A\u6A94\u6848
+agent.err.configfile.closed.failed = \u7121\u6CD5\u95DC\u9589\u8A2D\u5B9A\u6A94\u6848
+agent.err.configfile.access.denied = \u5B58\u53D6\u8A2D\u5B9A\u6A94\u6848\u906D\u5230\u62D2\u7D55
 
 agent.err.exportaddress.failed	   = \u5C07 JMX \u9023\u63A5\u5668\u4F4D\u5740\u532F\u51FA\u81F3\u8A2D\u5099\u7DE9\u885D\u5340\u5931\u6557
 
@@ -43,7 +39,7 @@
 agent.err.premain.notfound         = \u4EE3\u7406\u7A0B\u5F0F\u985E\u5225\u4E2D\u4E0D\u5B58\u5728 premain(String)
 agent.err.agentclass.access.denied = \u5B58\u53D6 premain(String) \u906D\u5230\u62D2\u7D55
 agent.err.invalid.agentclass       = com.sun.management.agent.class \u5C6C\u6027\u503C\u7121\u6548
-agent.err.invalid.state            = \u7121\u6548\u7684\u4EE3\u7406\u7A0B\u5F0F\u72C0\u614B
+agent.err.invalid.state            = \u7121\u6548\u7684\u4EE3\u7406\u7A0B\u5F0F\u72C0\u614B: {0}
 agent.err.invalid.jmxremote.port   = com.sun.management.jmxremote.port \u865F\u78BC\u7121\u6548
 agent.err.invalid.jmxremote.rmi.port = com.sun.management.jmxremote.rmi.port \u865F\u78BC\u7121\u6548
 
@@ -67,27 +63,9 @@
 agent.err.connector.server.io.error = JMX \u9023\u63A5\u5668\u4F3A\u670D\u5668\u901A\u8A0A\u932F\u8AA4
 
 agent.err.invalid.option	   = \u6307\u5B9A\u7684\u9078\u9805\u7121\u6548
-agent.err.invalid.snmp.port        = com.sun.management.snmp.port \u865F\u78BC\u7121\u6548
-agent.err.invalid.snmp.trap.port   = com.sun.management.snmp.trap \u7DE8\u865F\u7121\u6548
-agent.err.unknown.snmp.interface   = \u4E0D\u660E\u7684 SNMP \u4ECB\u9762
-agent.err.acl.file.notset          = \u672A\u6307\u5B9A SNMP ACL \u6A94\u6848\uFF0C\u4F46 com.sun.management.snmp.acl=true
-agent.err.acl.file.notfound        = \u627E\u4E0D\u5230 SNMP ACL \u6A94\u6848
-agent.err.acl.file.not.readable    = SNMP ACL \u6A94\u6848\u7121\u6CD5\u8B80\u53D6
-agent.err.acl.file.read.failed     = \u7121\u6CD5\u8B80\u53D6 SNMP ACL \u6A94\u6848
-agent.err.acl.file.access.notrestricted = \u5FC5\u9808\u9650\u5236\u5BC6\u78BC\u6A94\u6848\u8B80\u53D6\u5B58\u53D6
-
-agent.err.snmp.adaptor.start.failed = \u7121\u6CD5\u4F7F\u7528\u4F4D\u5740\u555F\u52D5 SNMP \u914D\u63A5\u5361
-agent.err.snmp.mib.init.failed     = \u7121\u6CD5\u521D\u59CB\u5316 SNMP MIB\uFF0C\u51FA\u73FE\u932F\u8AA4
 
 jmxremote.ConnectorBootstrap.starting = \u6B63\u5728\u555F\u52D5 JMX \u9023\u63A5\u5668\u4F3A\u670D\u5668:
 jmxremote.ConnectorBootstrap.noAuthentication = \u7121\u8A8D\u8B49
 jmxremote.ConnectorBootstrap.ready = JMX \u9023\u63A5\u5668\u5C31\u7DD2\uFF0C\u4F4D\u65BC: {0}
 jmxremote.ConnectorBootstrap.password.readonly = \u5FC5\u9808\u9650\u5236\u5BC6\u78BC\u6A94\u6848\u8B80\u53D6\u5B58\u53D6: {0}
 jmxremote.ConnectorBootstrap.file.readonly = \u5FC5\u9808\u9650\u5236\u6A94\u6848\u8B80\u53D6\u5B58\u53D6\u6B0A: {0}
-
-jmxremote.AdaptorBootstrap.getTargetList.processing = \u6B63\u5728\u8655\u7406 ACL
-jmxremote.AdaptorBootstrap.getTargetList.adding = \u6B63\u5728\u65B0\u589E\u76EE\u6A19: {0}
-jmxremote.AdaptorBootstrap.getTargetList.starting = \u6B63\u5728\u555F\u52D5\u914D\u63A5\u5361\u4F3A\u670D\u5668:
-jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \u914D\u63A5\u5361\u5C31\u7DD2\u3002
-jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP \u914D\u63A5\u5361\u5C31\u7DD2\uFF0C\u4F4D\u65BC: {0}:{1}
-jmxremote.AdaptorBootstrap.getTargetList.terminate = \u7D42\u6B62 {0}
--- a/jdk/src/java.rmi/share/classes/sun/rmi/server/resources/rmid_ko.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.rmi/share/classes/sun/rmi/server/resources/rmid_ko.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -47,7 +47,7 @@
 
 # {0} = the (string) reason text that came with a thrown exception
 # "Activation.main" should not be translated, because it's a codepoint
-rmid.unexpected.exception=Activation.main: \uC608\uC678 \uC0AC\uD56D \uBC1C\uC0DD: {0}
+rmid.unexpected.exception=Activation.main: \uC608\uC678\uC0AC\uD56D \uBC1C\uC0DD: {0}
 
 # "java.home" should not be translated, because it's a property name
 # "ActivatorImpl" should not be translated, because it's a codepoint
@@ -60,7 +60,7 @@
 rmid.exec.policy.invalid=Activation.main: \uC2E4\uD589 \uC815\uCC45 \uD074\uB798\uC2A4\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
 
 # "rmid" should not be translated
-rmid.exec.policy.exception=rmid: \uC2E4\uD589 \uC815\uCC45\uC744 \uAC00\uC838\uC624\uB824\uB294 \uC2DC\uB3C4\uB85C \uBC1C\uC0DD\uD55C \uC608\uC678 \uC0AC\uD56D:
+rmid.exec.policy.exception=rmid: \uC2E4\uD589 \uC815\uCC45\uC744 \uAC00\uC838\uC624\uB824\uB294 \uC2DC\uB3C4\uB85C \uBC1C\uC0DD\uD55C \uC608\uC678\uC0AC\uD56D:
 
 # "rmid" should not be translated
 rmid.exec.command=rmid: debugExec: "{0}" \uC2E4\uD589 \uC911
--- a/jdk/src/java.rmi/share/classes/sun/rmi/server/resources/rmid_zh_TW.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.rmi/share/classes/sun/rmi/server/resources/rmid_zh_TW.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -71,7 +71,7 @@
 # "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
 # "ExecOptionPermission" should not be translated, since they refer to
 # class/permission names.
-rmid.exec.perms.inadequate=Activation.main: \u8B66\u544A: sun.rmi.activation.execPolicy \u7CFB\u7D71\n\u5C6C\u6027\u672A\u6307\u5B9A\uFF0C\u4E26\u4E14\u672A\u6388\u4E88 ExecPermissions/ExecOptionPermissions; \n\u5F8C\u7E8C\u7684\u555F\u52D5\u5617\u8A66\u53EF\u80FD\u6703\u56E0\u70BA\u672A\u6210\u529F\u7684\nExecPermission/ExecOptionPermission \u6B0A\u9650\u6AA2\u67E5\u800C\u5931\u6557\u3002\u5982\u9700\n\u95DC\u65BC\u5982\u4F55\u914D\u7F6E rmid \u5B89\u5168\u7684\u8AAA\u660E\u6587\u4EF6\uFF0C\u8ACB\u53C3\u8003:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
+rmid.exec.perms.inadequate=Activation.main: \u8B66\u544A: sun.rmi.activation.execPolicy \u7CFB\u7D71\n\u5C6C\u6027\u672A\u6307\u5B9A\uFF0C\u4E26\u4E14\u672A\u6388\u4E88 ExecPermissions/ExecOptionPermissions; \n\u5F8C\u7E8C\u7684\u555F\u52D5\u5617\u8A66\u53EF\u80FD\u6703\u56E0\u70BA\u672A\u6210\u529F\u7684\nExecPermission/ExecOptionPermission \u6B0A\u9650\u6AA2\u67E5\u800C\u5931\u6557\u3002\u5982\u9700\n\u95DC\u65BC\u5982\u4F55\u8A2D\u5B9A rmid \u5B89\u5168\u7684\u8AAA\u660E\u6587\u4EF6\uFF0C\u8ACB\u53C3\u8003:\n\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\nhttp://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n
 
 # "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
 # because they are syntax
--- a/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_de.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,7 @@
 cachedrowsetimpl.accfailed = acceptChanges nicht erfolgreich
 cachedrowsetimpl.invalidcp = Ung\u00FCltige Cursorposition
 cachedrowsetimpl.illegalop = Ung\u00FCltiger Vorgang bei nicht eingef\u00FCgter Zeile
-cachedrowsetimpl.clonefail = Clonen nicht erfolgreich: {0}
+cachedrowsetimpl.clonefail = Klonen nicht erfolgreich: {0}
 cachedrowsetimpl.invalidcol = Ung\u00FCltiger Spaltenindex
 cachedrowsetimpl.invalcolnm = Ung\u00FCltiger Spaltenname
 cachedrowsetimpl.boolfail = getBoolen bei Wert ( {0} ) in Spalte {1} nicht erfolgreich
@@ -140,7 +140,7 @@
 #WebRowSetXmlReader exception
 wrsxmlreader.invalidcp = Ende von RowSet wurde erreicht. Ung\u00FCltige Cursorposition
 wrsxmlreader.readxml = readXML: {0}
-wrsxmlreader.parseerr = ** Parsing-Fehler: {0}, Zeile: {1} , URI: {2}
+wrsxmlreader.parseerr = ** Parsingfehler: {0}, Zeile: {1} , URI: {2}
 
 #WebRowSetXmlWriter exceptions
 wrsxmlwriter.ioex = IOException: {0}
--- a/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_ja.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -51,8 +51,8 @@
 cachedrowsetimpl.last = last: TYPE_FORWARD_ONLY
 cachedrowsetimpl.absolute = absolute: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E
 cachedrowsetimpl.relative = relative: \u7121\u52B9\u306A\u30AB\u30FC\u30BD\u30EB\u4F4D\u7F6E
-cachedrowsetimpl.asciistream = ascii\u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u8AAD\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-cachedrowsetimpl.binstream = \u30D0\u30A4\u30CA\u30EA\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u8AAD\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.asciistream = ascii\u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u8AAD\u8FBC\u307F\u304C\u5931\u6557\u3057\u307E\u3057\u305F
+cachedrowsetimpl.binstream = \u30D0\u30A4\u30CA\u30EA\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u8AAD\u8FBC\u307F\u304C\u5931\u6557\u3057\u307E\u3057\u305F
 cachedrowsetimpl.failedins = \u884C\u306E\u633F\u5165\u306B\u5931\u6557
 cachedrowsetimpl.updateins = \u633F\u5165\u884C\u306B\u304A\u3044\u3066updateRow\u304C\u547C\u3073\u51FA\u3055\u308C\u307E\u3057\u305F
 cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
@@ -101,7 +101,7 @@
 
 #JdbcRowSetImpl exceptions
 jdbcrowsetimpl.invalstate = \u7121\u52B9\u306A\u72B6\u614B
-jdbcrowsetimpl.connect = JdbcRowSet(connect): JNDI\u304C\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093
+jdbcrowsetimpl.connect = JdbcRowSet (connect): JNDI\u304C\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093
 jdbcrowsetimpl.paramtype = \u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30BF\u30A4\u30D7\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093
 jdbcrowsetimpl.matchcols = \u4E00\u81F4\u5217\u304C\u5217\u306E\u30BB\u30C3\u30C8\u3068\u540C\u3058\u3067\u306F\u3042\u308A\u307E\u305B\u3093
 jdbcrowsetimpl.setmatchcols = \u4E00\u81F4\u5217\u3092\u53D6\u5F97\u3059\u308B\u524D\u306B\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044
--- a/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_ko.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -52,11 +52,11 @@
 cachedrowsetimpl.absolute = \uC808\uB300: \uCEE4\uC11C \uC704\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
 cachedrowsetimpl.relative = \uC0C1\uB300: \uCEE4\uC11C \uC704\uCE58\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
 cachedrowsetimpl.asciistream = ASCII \uC2A4\uD2B8\uB9BC\uC5D0 \uB300\uD55C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
-cachedrowsetimpl.binstream = \uC774\uC9C4 \uC2A4\uD2B8\uB9BC\uC5D0\uC11C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.binstream = \uBC14\uC774\uB108\uB9AC \uC2A4\uD2B8\uB9BC\uC5D0\uC11C \uC77D\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
 cachedrowsetimpl.failedins = \uD589 \uC0BD\uC785\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.
 cachedrowsetimpl.updateins = \uD589\uC744 \uC0BD\uC785\uD558\uB294 \uC911 updateRow\uAC00 \uD638\uCD9C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
 cachedrowsetimpl.movetoins = moveToInsertRow: CONCUR_READ_ONLY
-cachedrowsetimpl.movetoins1 = moveToInsertRow: \uBA54\uD0C0 \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
+cachedrowsetimpl.movetoins1 = moveToInsertRow: \uBA54\uD0C0\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.
 cachedrowsetimpl.movetoins2 = moveToInsertRow: \uC5F4 \uC218\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
 cachedrowsetimpl.tablename = \uD14C\uC774\uBE14 \uC774\uB984\uC740 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 cachedrowsetimpl.keycols = \uD0A4 \uC5F4\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4.
@@ -150,7 +150,7 @@
 
 #XmlReaderContentHandler exceptions
 xmlrch.errmap = \uB9F5\uC744 \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
-xmlrch.errmetadata = \uBA54\uD0C0 \uB370\uC774\uD130\uB97C \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
+xmlrch.errmetadata = \uBA54\uD0C0\uB370\uC774\uD130\uB97C \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
 xmlrch.errinsertval = \uAC12\uC744 \uC0BD\uC785\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
 xmlrch.errconstr = \uD589\uC744 \uC0DD\uC131\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
 xmlrch.errdel = \uD589\uC744 \uC0AD\uC81C\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
@@ -160,7 +160,7 @@
 xmlrch.errupdrow = \uD589\uC744 \uC5C5\uB370\uC774\uD2B8\uD558\uB294 \uC911 \uC624\uB958 \uBC1C\uC0DD: {0}
 xmlrch.chars = \uBB38\uC790:
 xmlrch.badvalue = \uC798\uBABB\uB41C \uAC12: \uB110\uC77C \uC218 \uC5C6\uB294 \uC18D\uC131\uC785\uB2C8\uB2E4.
-xmlrch.badvalue1 = \uC798\uBABB\uB41C \uAC12: \uB110\uC77C \uC218 \uC5C6\uB294 \uBA54\uD0C0 \uB370\uC774\uD130\uC785\uB2C8\uB2E4.
+xmlrch.badvalue1 = \uC798\uBABB\uB41C \uAC12: \uB110\uC77C \uC218 \uC5C6\uB294 \uBA54\uD0C0\uB370\uC774\uD130\uC785\uB2C8\uB2E4.
 xmlrch.warning =  ** \uACBD\uACE0: {0}, \uD589: {1}, URI: {2}
 
 #RIOptimisticProvider Exceptions
--- a/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_pt_BR.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_pt_BR.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -153,7 +153,7 @@
 xmlrch.errmetadata = Erro ao definir metadados : {0}
 xmlrch.errinsertval = Erro ao inserir valores : {0}
 xmlrch.errconstr = Erro ao construir a linha : {0}
-xmlrch.errdel = Erro ao deletar a linha : {0}
+xmlrch.errdel = Erro ao excluir a linha : {0}
 xmlrch.errinsert = Erro ao construir a linha de inser\u00E7\u00E3o : {0}
 xmlrch.errinsdel = Erro ao construir a linha insdel : {0}
 xmlrch.errupdate = Erro ao construir a linha de atualiza\u00E7\u00E3o : {0}
--- a/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/RowSetResourceBundle_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -29,11 +29,11 @@
 cachedrowsetimpl.nullhash = Kan inte instansiera CachedRowSetImpl. Null-hashtabell skickades till konstruktor
 cachedrowsetimpl.invalidop = En ogiltig \u00E5tg\u00E4rd utf\u00F6rdes p\u00E5 infogad rad
 cachedrowsetimpl.accfailed = acceptChanges utf\u00F6rdes inte
-cachedrowsetimpl.invalidcp = Mark\u00F6rpositionen \u00E4r ogiltig
+cachedrowsetimpl.invalidcp = Ogiltigt mark\u00F6rl\u00E4ge
 cachedrowsetimpl.illegalop = En otill\u00E5ten \u00E5tg\u00E4rd utf\u00F6rdes p\u00E5 en icke infogad rad
 cachedrowsetimpl.clonefail = Kloningen utf\u00F6rdes inte: {0}
-cachedrowsetimpl.invalidcol = Kolumnindexet \u00E4r ogiltigt
-cachedrowsetimpl.invalcolnm = Kolumnnamnet \u00E4r ogiltigt
+cachedrowsetimpl.invalidcol = Ogiltigt kolumnindex
+cachedrowsetimpl.invalcolnm = Ogiltigt kolumnnamn
 cachedrowsetimpl.boolfail = getBoolen utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}
 cachedrowsetimpl.bytefail = getByte utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}
 cachedrowsetimpl.shortfail = getShort utf\u00F6rdes inte f\u00F6r v\u00E4rdet ({0}) i kolumnen {1}
@@ -60,7 +60,7 @@
 cachedrowsetimpl.movetoins2 = moveToInsertRow: ogiltigt antal kolumner
 cachedrowsetimpl.tablename = Tabellnamnet kan inte vara null
 cachedrowsetimpl.keycols = Ogiltiga nyckelkolumner
-cachedrowsetimpl.invalidcol = Kolumnindexet \u00E4r ogiltigt
+cachedrowsetimpl.invalidcol = Ogiltigt kolumnindex
 cachedrowsetimpl.opnotsupp = Databasen har inte st\u00F6d f\u00F6r denna \u00E5tg\u00E4rd
 cachedrowsetimpl.matchcols = Matchningskolumnerna \u00E4r inte samma som de som st\u00E4llts in
 cachedrowsetimpl.setmatchcols = St\u00E4ll in matchningskolumnerna innan du h\u00E4mtar dem
@@ -77,11 +77,11 @@
 cachedrowsetimpl.fwdonly = ResultSet kan endast g\u00E5 fram\u00E5t
 cachedrowsetimpl.type = Typ: {0}
 cachedrowsetimpl.opnotysupp = Det finns \u00E4nnu inget st\u00F6d f\u00F6r denna \u00E5tg\u00E4rd
-cachedrowsetimpl.featnotsupp = Det finns inget st\u00F6d f\u00F6r denna funktion
+cachedrowsetimpl.featnotsupp = Funktionen st\u00F6ds inte
 
 # WebRowSetImpl exceptions
 webrowsetimpl.nullhash = Kan inte instansiera WebRowSetImpl. Null-hashtabell skickades till konstruktor.
-webrowsetimpl.invalidwr = Ogiltig f\u00F6rfattare
+webrowsetimpl.invalidwr = Ogiltig skrivfunktion
 webrowsetimpl.invalidrd = Ogiltig l\u00E4sare
 
 #FilteredRowSetImpl exceptions
@@ -100,7 +100,7 @@
 joinrowsetimpl.emptyrowset = Tomma radupps\u00E4ttningar kan inte l\u00E4ggas till i denna JoinRowSet
 
 #JdbcRowSetImpl exceptions
-jdbcrowsetimpl.invalstate = Ogiltig status
+jdbcrowsetimpl.invalstate = Ogiltigt tillst\u00E5nd
 jdbcrowsetimpl.connect = JdbcRowSet (anslut) JNDI kan inte anslutas
 jdbcrowsetimpl.paramtype = Kan inte h\u00E4rleda parametertypen
 jdbcrowsetimpl.matchcols = Matchningskolumnerna \u00E4r inte samma som de som st\u00E4llts in
@@ -112,7 +112,7 @@
 jdbcrowsetimpl.usecolid = Anv\u00E4nd kolumn-id som argument f\u00F6r unsetMatchColumn
 jdbcrowsetimpl.resnotupd = ResultSet \u00E4r inte uppdateringsbart
 jdbcrowsetimpl.opnotysupp = Det finns \u00E4nnu inget st\u00F6d f\u00F6r denna \u00E5tg\u00E4rd
-jdbcrowsetimpl.featnotsupp = Det finns inget st\u00F6d f\u00F6r denna funktion
+jdbcrowsetimpl.featnotsupp = Funktionen st\u00F6ds inte
 
 #CachedRowSetReader exceptions
 crsreader.connect = (JNDI) kan inte anslutas
@@ -149,15 +149,15 @@
 wsrxmlwriter.notproper = Ingen riktig typ
 
 #XmlReaderContentHandler exceptions
-xmlrch.errmap = Fel uppstod vid inst\u00E4llning av mappning: {0}
-xmlrch.errmetadata = Fel uppstod vid inst\u00E4llning av metadata: {0}
-xmlrch.errinsertval = Fel uppstod vid infogning av v\u00E4rden: {0}
-xmlrch.errconstr = Fel uppstod vid konstruktion av rad: {0}
-xmlrch.errdel = Fel uppstod vid borttagning av rad: {0}
-xmlrch.errinsert = Fel uppstod vid konstruktion av infogad rad: {0}
-xmlrch.errinsdel = Fel uppstod vid konstruktion av insdel-rad: {0}
-xmlrch.errupdate = Fel uppstod vid konstruktion av uppdateringsrad: {0}
-xmlrch.errupdrow = Fel uppstod vid uppdatering av rad: {0}
+xmlrch.errmap = Ett fel intr\u00E4ffade vid inst\u00E4llning av mappning: {0}
+xmlrch.errmetadata = Ett fel intr\u00E4ffade vid inst\u00E4llning av metadata: {0}
+xmlrch.errinsertval = Ett fel intr\u00E4ffade vid infogning av v\u00E4rden: {0}
+xmlrch.errconstr = Ett fel intr\u00E4ffade vid konstruktion av rad: {0}
+xmlrch.errdel = Ett fel intr\u00E4ffade vid borttagning av rad: {0}
+xmlrch.errinsert = Ett fel intr\u00E4ffade vid konstruktion av infogad rad: {0}
+xmlrch.errinsdel = Ett fel intr\u00E4ffade vid konstruktion av insdel-rad: {0}
+xmlrch.errupdate = Ett fel intr\u00E4ffade vid konstruktion av uppdateringsrad: {0}
+xmlrch.errupdrow = Ett fel intr\u00E4ffade vid uppdatering av rad: {0}
 xmlrch.chars = tecken:
 xmlrch.badvalue = Felaktigt v\u00E4rde; egenskapen kan inte ha ett tomt v\u00E4rde
 xmlrch.badvalue1 = Felaktigt v\u00E4rde; metadatan kan inte ha ett tomt v\u00E4rde
--- a/jdk/src/jdk.compiler/share/classes/sun/tools/serialver/resources/serialver_zh_CN.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.compiler/share/classes/sun/tools/serialver/resources/serialver_zh_CN.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 NotSerializable=\u7C7B{0}\u65E0\u6CD5\u5E8F\u5217\u5316\u3002
 ClassNotFound=\u627E\u4E0D\u5230\u7C7B{0}\u3002
-error.parsing.classpath=\u89E3\u6790\u7C7B\u8DEF\u5F84 {0} \u65F6\u51FA\u9519\u3002
+error.parsing.classpath=\u5BF9\u7C7B\u8DEF\u5F84 {0} \u8FDB\u884C\u89E3\u6790\u65F6\u51FA\u9519\u3002
 error.missing.classpath=\u7F3A\u5C11 -classpath \u9009\u9879\u7684\u53C2\u6570
 invalid.flag=\u65E0\u6548\u6807\u8BB0{0}\u3002
-usage=\u7528\u6CD5: serialver [-classpath \u7C7B\u8DEF\u5F84] [\u7C7B\u540D\u79F0...]
+usage=\u7528\u6CD5: serialver [-classpath classpath] [classname...]
--- a/jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources.java	Wed Jul 05 21:51:13 2017 +0200
@@ -249,7 +249,7 @@
         {"no.timestamp.signing",
                 "No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td)."},
         {"no.timestamp.verifying",
-                "This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (%1$tY-%1$tm-%1$td)."},
+                "This jar contains signatures that do not include a timestamp. Without a timestamp, users may not be able to validate this jar after any of the signer certificates expire (as early as %1$tY-%1$tm-%1$td)."},
         {"Unknown.password.type.", "Unknown password type: "},
         {"Cannot.find.environment.variable.",
                 "Cannot find environment variable: "},
--- a/jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources_ja.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources_ja.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,6 +44,7 @@
         {"signerClass.is.not.a.signing.mechanism", "{0}\u306F\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u3067\u306F\u3042\u308A\u307E\u305B\u3093"},
         {"jarsigner.error.", "jarsigner\u30A8\u30E9\u30FC: "},
         {"Illegal.option.", "\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: "},
+        {"This.option.is.deprecated", "\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u975E\u63A8\u5968\u3067\u3059: "},
         {".keystore.must.be.NONE.if.storetype.is.{0}",
                 "-storetype\u304C{0}\u306E\u5834\u5408\u3001-keystore\u306FNONE\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"},
         {".keypass.can.not.be.specified.if.storetype.is.{0}",
@@ -73,7 +74,7 @@
         {".digestalg.algorithm.name.of.digest.algorithm",
                 "[-digestalg <algorithm>]    \u30C0\u30A4\u30B8\u30A7\u30B9\u30C8\u30FB\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u306E\u540D\u524D"},
         {".sigalg.algorithm.name.of.signature.algorithm",
-                "[-sigalg <algorithm>]       \u30B7\u30B0\u30CD\u30C1\u30E3\u30FB\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u306E\u540D\u524D"},
+                "[-sigalg <algorithm>]       \u7F72\u540D\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0\u306E\u540D\u524D"},
         {".verify.verify.a.signed.JAR.file",
                 "[-verify]                   \u7F72\u540D\u4ED8\u304DJAR\u30D5\u30A1\u30A4\u30EB\u306E\u691C\u8A3C"},
         {".verbose.suboptions.verbose.output.when.signing.verifying.",
@@ -88,12 +89,14 @@
                 "[-tsacert <alias>]          \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306E\u516C\u958B\u9375\u8A3C\u660E\u66F8"},
         {".tsapolicyid.tsapolicyid.for.Timestamping.Authority",
                 "[-tsapolicyid <oid>]        \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u5C40\u306ETSAPolicyID"},
+        {".tsadigestalg.algorithm.of.digest.data.in.timestamping.request",
+                "[-tsadigestalg <algorithm>] \u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u30FB\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u30C0\u30A4\u30B8\u30A7\u30B9\u30C8\u30FB\u30C7\u30FC\u30BF\u306E\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0"},
         {".altsigner.class.class.name.of.an.alternative.signing.mechanism",
-                "[-altsigner <class>]        \u4EE3\u66FF\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u306E\u30AF\u30E9\u30B9\u540D"},
+                "[-altsigner <class>]        \u4EE3\u66FF\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u306E\u30AF\u30E9\u30B9\u540D\n                            (\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u975E\u63A8\u5968\u306B\u306A\u308A\u307E\u3057\u305F\u3002)"},
         {".altsignerpath.pathlist.location.of.an.alternative.signing.mechanism",
-                "[-altsignerpath <pathlist>] \u4EE3\u66FF\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u306E\u5834\u6240"},
+                "[-altsignerpath <pathlist>] \u4EE3\u66FF\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u306E\u5834\u6240\n                            (\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u975E\u63A8\u5968\u306B\u306A\u308A\u307E\u3057\u305F\u3002)"},
         {".internalsf.include.the.SF.file.inside.the.signature.block",
-                "[-internalsf]               \u30B7\u30B0\u30CD\u30C1\u30E3\u30FB\u30D6\u30ED\u30C3\u30AF\u306B.SF\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3081\u308B"},
+                "[-internalsf]               \u7F72\u540D\u30D6\u30ED\u30C3\u30AF\u306B.SF\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3081\u308B"},
         {".sectionsonly.don.t.compute.hash.of.entire.manifest",
                 "[-sectionsonly]             \u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5168\u4F53\u306E\u30CF\u30C3\u30B7\u30E5\u306F\u8A08\u7B97\u3057\u306A\u3044"},
         {".protected.keystore.has.protected.authentication.path",
@@ -106,6 +109,8 @@
                 "  [-providerArg <arg>]] ... \u30DE\u30B9\u30BF\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3068\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u5F15\u6570"},
         {".strict.treat.warnings.as.errors",
                 "[-strict]                   \u8B66\u544A\u3092\u30A8\u30E9\u30FC\u3068\u3057\u3066\u51E6\u7406"},
+        {".conf.url.specify.a.pre.configured.options.file",
+                "[-conf <url>]               \u4E8B\u524D\u69CB\u6210\u6E08\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u6307\u5B9A\u3059\u308B"},
         {"Option.lacks.argument", "\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093"},
         {"Please.type.jarsigner.help.for.usage", "\u4F7F\u7528\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306Fjarsigner -help\u3068\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"},
         {"Please.specify.jarfile.name", "jarfile\u540D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"},
@@ -121,7 +126,7 @@
         {"i", "i"},
         {".and.d.more.", "(\u4ED6\u306B\u3082%d\u500B)"},
         {".s.signature.was.verified.",
-                "  s=\u30B7\u30B0\u30CD\u30C1\u30E3\u304C\u691C\u8A3C\u3055\u308C\u307E\u3057\u305F "},
+                "  s=\u7F72\u540D\u304C\u691C\u8A3C\u3055\u308C\u307E\u3057\u305F "},
         {".m.entry.is.listed.in.manifest",
                 "  m=\u30A8\u30F3\u30C8\u30EA\u304C\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5185\u306B\u30EA\u30B9\u30C8\u3055\u308C\u307E\u3059"},
         {".k.at.least.one.certificate.was.found.in.keystore",
@@ -131,14 +136,17 @@
         {".X.not.signed.by.specified.alias.es.",
                 "  X =\u6307\u5B9A\u3057\u305F\u5225\u540D\u3067\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
         {"no.manifest.", "\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002"},
-        {".Signature.related.entries.","(\u30B7\u30B0\u30CD\u30C1\u30E3\u95A2\u9023\u30A8\u30F3\u30C8\u30EA)"},
+        {".Signature.related.entries.","(\u7F72\u540D\u95A2\u9023\u30A8\u30F3\u30C8\u30EA)"},
         {".Unsigned.entries.", "(\u672A\u7F72\u540D\u306E\u30A8\u30F3\u30C8\u30EA)"},
         {"jar.is.unsigned.signatures.missing.or.not.parsable.",
-                "jar\u306F\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002(\u30B7\u30B0\u30CD\u30C1\u30E3\u304C\u898B\u3064\u304B\u3089\u306A\u3044\u304B\u3001\u69CB\u6587\u89E3\u6790\u3067\u304D\u307E\u305B\u3093)"},
+                "jar\u306F\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002(\u7F72\u540D\u304C\u898B\u3064\u304B\u3089\u306A\u3044\u304B\u3001\u69CB\u6587\u89E3\u6790\u3067\u304D\u307E\u305B\u3093)"},
+        {"jar.signed.", "jar\u306F\u7F72\u540D\u3055\u308C\u307E\u3057\u305F\u3002"},
+        {"jar.signed.with.signer.errors.", "jar\u306F\u7F72\u540D\u3055\u308C\u307E\u3057\u305F - \u7F72\u540D\u8005\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059\u3002"},
         {"jar.verified.", "jar\u304C\u691C\u8A3C\u3055\u308C\u307E\u3057\u305F\u3002"},
+        {"jar.verified.with.signer.errors.", "jar\u306F\u691C\u8A3C\u3055\u308C\u307E\u3057\u305F - \u7F72\u540D\u8005\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059\u3002"},
         {"jarsigner.", "jarsigner: "},
         {"signature.filename.must.consist.of.the.following.characters.A.Z.0.9.or.",
-                "\u30B7\u30B0\u30CD\u30C1\u30E3\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u306B\u4F7F\u7528\u3067\u304D\u308B\u6587\u5B57\u306F\u3001A-Z\u30010-9\u3001_\u3001- \u306E\u307F\u3067\u3059\u3002"},
+                "\u7F72\u540D\u306E\u30D5\u30A1\u30A4\u30EB\u540D\u306B\u4F7F\u7528\u3067\u304D\u308B\u6587\u5B57\u306F\u3001A-Z\u30010-9\u3001_\u3001- \u306E\u307F\u3067\u3059\u3002"},
         {"unable.to.open.jar.file.", "\u6B21\u306Ejar\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093: "},
         {"unable.to.create.", "\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: "},
         {".adding.", "   \u8FFD\u52A0\u4E2D: "},
@@ -179,7 +187,7 @@
         {"certificate.will.expire.on", "\u8A3C\u660E\u66F8\u306F{0}\u306B\u5931\u52B9\u3057\u307E\u3059"},
         {".CertPath.not.validated.", "[CertPath\u304C\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093: "},
         {"requesting.a.signature.timestamp",
-                "\u30B7\u30B0\u30CD\u30C1\u30E3\u30FB\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u306E\u30EA\u30AF\u30A8\u30B9\u30C8"},
+                "\u7F72\u540D\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u306E\u30EA\u30AF\u30A8\u30B9\u30C8"},
         {"TSA.location.", "TSA\u306E\u5834\u6240: "},
         {"TSA.certificate.", "TSA\u8A3C\u660E\u66F8: "},
         {"no.response.from.the.Timestamping.Authority.",
@@ -191,6 +199,7 @@
                 "\u4EE3\u66FF\u7F72\u540D\u30E1\u30AB\u30CB\u30BA\u30E0\u306E\u4F7F\u7528"},
         {"entry.was.signed.on", "\u30A8\u30F3\u30C8\u30EA\u306F{0}\u306B\u7F72\u540D\u3055\u308C\u307E\u3057\u305F"},
         {"Warning.", "\u8B66\u544A: "},
+        {"Error.", "\u30A8\u30E9\u30FC: "},
         {"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.",
                 "\u3053\u306Ejar\u306B\u306F\u3001\u6574\u5408\u6027\u30C1\u30A7\u30C3\u30AF\u3092\u3057\u3066\u3044\u306A\u3044\u672A\u7F72\u540D\u306E\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "},
         {"This.jar.contains.entries.whose.signer.certificate.has.expired.",
@@ -199,6 +208,8 @@
                 "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u304C6\u304B\u6708\u4EE5\u5185\u306B\u671F\u9650\u5207\u308C\u3068\u306A\u308B\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "},
         {"This.jar.contains.entries.whose.signer.certificate.is.not.yet.valid.",
                 "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u304C\u307E\u3060\u6709\u52B9\u306B\u306A\u3063\u3066\u3044\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "},
+        {"This.jar.contains.entries.whose.signer.certificate.is.self.signed.",
+                "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u304C\u81EA\u5DF1\u7F72\u540D\u3055\u308C\u3066\u3044\u308B\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002 "},
         {"Re.run.with.the.verbose.option.for.more.details.",
                 "\u8A73\u7D30\u306F\u3001-verbose\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002"},
         {"Re.run.with.the.verbose.and.certs.options.for.more.details.",
@@ -223,10 +234,18 @@
                  "\u3053\u306Ejar\u306B\u306F\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306ENetscapeCertType\u62E1\u5F35\u6A5F\u80FD\u304C\u30B3\u30FC\u30C9\u7F72\u540D\u3092\u8A31\u53EF\u3057\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002"},
         {".{0}.extension.does.not.support.code.signing.",
                  "[{0}\u62E1\u5F35\u6A5F\u80FD\u306F\u30B3\u30FC\u30C9\u7F72\u540D\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093]"},
-        {"The.signer.s.certificate.chain.is.not.validated.",
-                "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u307E\u3060\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
-        {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.",
-                 "\u3053\u306Ejar\u306B\u306F\u3001\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u307E\u3060\u691C\u8A3C\u3055\u308C\u3066\u3044\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002"},
+        {"The.signer.s.certificate.chain.is.not.validated.reason.1",
+                "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u307E\u3060\u691C\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u7406\u7531: %s"},
+        {"The.signer.s.certificate.is.self.signed.",
+                "\u7F72\u540D\u8005\u306E\u8A3C\u660E\u66F8\u306F\u81EA\u5DF1\u7F72\u540D\u3055\u308C\u3066\u3044\u307E\u3059\u3002"},
+        {"The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk.",
+                "%1$s\u30A2\u30EB\u30B4\u30EA\u30BA\u30E0(%2$s\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u6307\u5B9A)\u306F\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30FB\u30EA\u30B9\u30AF\u3068\u307F\u306A\u3055\u308C\u307E\u3059\u3002"},
+        {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.reason.1",
+                 "\u3053\u306Ejar\u306B\u306F\u3001\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u304C\u307E\u3060\u691C\u8A3C\u3055\u308C\u3066\u3044\u306A\u3044\u30A8\u30F3\u30C8\u30EA\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u7406\u7531: %s"},
+        {"no.timestamp.signing",
+                "-tsa\u307E\u305F\u306F-tsacert\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u3053\u306Ejar\u306B\u306F\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u4ED8\u52A0\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u3068\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306E\u6709\u52B9\u671F\u9650(%1$tY-%1$tm-%1$td)\u5F8C\u307E\u305F\u306F\u5C06\u6765\u306E\u5931\u52B9\u65E5\u5F8C\u306B\u3001\u30E6\u30FC\u30B6\u30FC\u306F\u3053\u306Ejar\u3092\u691C\u8A3C\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002"},
+        {"no.timestamp.verifying",
+                "\u3053\u306Ejar\u306B\u306F\u3001\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u7F72\u540D\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u304C\u306A\u3044\u3068\u3001\u7F72\u540D\u8005\u8A3C\u660E\u66F8\u306E\u6709\u52B9\u671F\u9650(%1$tY-%1$tm-%1$td)\u5F8C\u307E\u305F\u306F\u5C06\u6765\u306E\u5931\u52B9\u65E5\u5F8C\u306B\u3001\u30E6\u30FC\u30B6\u30FC\u306F\u3053\u306Ejar\u3092\u691C\u8A3C\u3067\u304D\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002"},
         {"Unknown.password.type.", "\u4E0D\u660E\u306A\u30D1\u30B9\u30EF\u30FC\u30C9\u30FB\u30BF\u30A4\u30D7: "},
         {"Cannot.find.environment.variable.",
                 "\u74B0\u5883\u5909\u6570\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: "},
--- a/jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources_zh_CN.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Resources_zh_CN.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,6 +44,7 @@
         {"signerClass.is.not.a.signing.mechanism", "{0}\u4E0D\u662F\u7B7E\u540D\u673A\u5236"},
         {"jarsigner.error.", "jarsigner \u9519\u8BEF: "},
         {"Illegal.option.", "\u975E\u6CD5\u9009\u9879: "},
+        {"This.option.is.deprecated", "\u6B64\u9009\u9879\u5DF2\u8FC7\u65F6: "},
         {".keystore.must.be.NONE.if.storetype.is.{0}",
                 "\u5982\u679C -storetype \u4E3A {0}, \u5219 -keystore \u5FC5\u987B\u4E3A NONE"},
         {".keypass.can.not.be.specified.if.storetype.is.{0}",
@@ -65,7 +66,7 @@
         {".keypass.password.password.for.private.key.if.different.",
                 "[-keypass <\u53E3\u4EE4>]           \u79C1\u6709\u5BC6\u94A5\u7684\u53E3\u4EE4 (\u5982\u679C\u4E0D\u540C)"},
         {".certchain.file.name.of.alternative.certchain.file",
-                "[-certchain <\u6587\u4EF6>]         \u66FF\u4EE3 certchain \u6587\u4EF6\u7684\u540D\u79F0"},
+                "[-certchain <\u6587\u4EF6>]         \u66FF\u4EE3\u8BC1\u4E66\u94FE\u6587\u4EF6\u7684\u540D\u79F0"},
         {".sigfile.file.name.of.SF.DSA.file",
                 "[-sigfile <\u6587\u4EF6>]           .SF/.DSA \u6587\u4EF6\u7684\u540D\u79F0"},
         {".signedjar.file.name.of.signed.JAR.file",
@@ -88,10 +89,12 @@
                 "[-tsacert <\u522B\u540D>]           \u65F6\u95F4\u6233\u9881\u53D1\u673A\u6784\u7684\u516C\u5171\u5BC6\u94A5\u8BC1\u4E66"},
         {".tsapolicyid.tsapolicyid.for.Timestamping.Authority",
                 "[-tsapolicyid <oid>]        \u65F6\u95F4\u6233\u9881\u53D1\u673A\u6784\u7684 TSAPolicyID"},
+        {".tsadigestalg.algorithm.of.digest.data.in.timestamping.request",
+                "[-tsadigestalg <\u7B97\u6CD5>]      \u65F6\u95F4\u6233\u8BF7\u6C42\u4E2D\u7684\u6458\u8981\u6570\u636E\u7684\u7B97\u6CD5"},
         {".altsigner.class.class.name.of.an.alternative.signing.mechanism",
-                "[-altsigner <\u7C7B>]           \u66FF\u4EE3\u7684\u7B7E\u540D\u673A\u5236\u7684\u7C7B\u540D"},
+                "[-altsigner <\u7C7B>]           \u66FF\u4EE3\u7684\u7B7E\u540D\u673A\u5236\u7684\u7C7B\u540D\n                            (\u6B64\u9009\u9879\u5DF2\u8FC7\u65F6\u3002)"},
         {".altsignerpath.pathlist.location.of.an.alternative.signing.mechanism",
-                "[-altsignerpath <\u8DEF\u5F84\u5217\u8868>] \u66FF\u4EE3\u7684\u7B7E\u540D\u673A\u5236\u7684\u4F4D\u7F6E"},
+                "[-altsignerpath <\u8DEF\u5F84\u5217\u8868>] \u66FF\u4EE3\u7684\u7B7E\u540D\u673A\u5236\u7684\u4F4D\u7F6E\n                            (\u6B64\u9009\u9879\u5DF2\u8FC7\u65F6\u3002)"},
         {".internalsf.include.the.SF.file.inside.the.signature.block",
                 "[-internalsf]               \u5728\u7B7E\u540D\u5757\u5185\u5305\u542B .SF \u6587\u4EF6"},
         {".sectionsonly.don.t.compute.hash.of.entire.manifest",
@@ -106,6 +109,8 @@
                 "  [-providerArg <\u53C2\u6570>]]... \u4E3B\u7C7B\u6587\u4EF6\u548C\u6784\u9020\u5668\u53C2\u6570"},
         {".strict.treat.warnings.as.errors",
                 "[-strict]                   \u5C06\u8B66\u544A\u89C6\u4E3A\u9519\u8BEF"},
+        {".conf.url.specify.a.pre.configured.options.file",
+                "[-conf <url>]               \u6307\u5B9A\u9884\u914D\u7F6E\u7684\u9009\u9879\u6587\u4EF6"},
         {"Option.lacks.argument", "\u9009\u9879\u7F3A\u5C11\u53C2\u6570"},
         {"Please.type.jarsigner.help.for.usage", "\u8BF7\u952E\u5165 jarsigner -help \u4EE5\u4E86\u89E3\u7528\u6CD5"},
         {"Please.specify.jarfile.name", "\u8BF7\u6307\u5B9A jarfile \u540D\u79F0"},
@@ -134,8 +139,11 @@
         {".Signature.related.entries.","(\u4E0E\u7B7E\u540D\u76F8\u5173\u7684\u6761\u76EE)"},
         {".Unsigned.entries.", "(\u672A\u7B7E\u540D\u6761\u76EE)"},
         {"jar.is.unsigned.signatures.missing.or.not.parsable.",
-                "jar \u672A\u7B7E\u540D\u3002(\u7F3A\u5C11\u7B7E\u540D\u6216\u65E0\u6CD5\u89E3\u6790\u7B7E\u540D)"},
+                "jar \u672A\u7B7E\u540D\u3002(\u7F3A\u5C11\u7B7E\u540D\u6216\u65E0\u6CD5\u5BF9\u7B7E\u540D\u8FDB\u884C\u89E3\u6790)"},
+        {"jar.signed.", "jar \u5DF2\u7B7E\u540D\u3002"},
+        {"jar.signed.with.signer.errors.", "jar \u5DF2\u7B7E\u540D, \u4F46\u51FA\u73B0\u7B7E\u540D\u8005\u9519\u8BEF\u3002"},
         {"jar.verified.", "jar \u5DF2\u9A8C\u8BC1\u3002"},
+        {"jar.verified.with.signer.errors.", "jar \u5DF2\u9A8C\u8BC1, \u4F46\u51FA\u73B0\u7B7E\u540D\u8005\u9519\u8BEF\u3002"},
         {"jarsigner.", "jarsigner: "},
         {"signature.filename.must.consist.of.the.following.characters.A.Z.0.9.or.",
                 "\u7B7E\u540D\u6587\u4EF6\u540D\u5FC5\u987B\u5305\u542B\u4EE5\u4E0B\u5B57\u7B26: A-Z, 0-9, _ \u6216 -"},
@@ -191,6 +199,7 @@
                 "\u6B63\u5728\u4F7F\u7528\u66FF\u4EE3\u7684\u7B7E\u540D\u673A\u5236"},
         {"entry.was.signed.on", "\u6761\u76EE\u7684\u7B7E\u540D\u65E5\u671F\u4E3A {0}"},
         {"Warning.", "\u8B66\u544A: "},
+        {"Error.", "\u9519\u8BEF: "},
         {"This.jar.contains.unsigned.entries.which.have.not.been.integrity.checked.",
                 "\u6B64 jar \u5305\u542B\u5C1A\u672A\u8FDB\u884C\u5B8C\u6574\u6027\u68C0\u67E5\u7684\u672A\u7B7E\u540D\u6761\u76EE\u3002 "},
         {"This.jar.contains.entries.whose.signer.certificate.has.expired.",
@@ -199,6 +208,8 @@
                 "\u6B64 jar \u5305\u542B\u7B7E\u540D\u8005\u8BC1\u4E66\u5C06\u5728\u516D\u4E2A\u6708\u5185\u8FC7\u671F\u7684\u6761\u76EE\u3002 "},
         {"This.jar.contains.entries.whose.signer.certificate.is.not.yet.valid.",
                 "\u6B64 jar \u5305\u542B\u7B7E\u540D\u8005\u8BC1\u4E66\u4ECD\u65E0\u6548\u7684\u6761\u76EE\u3002 "},
+        {"This.jar.contains.entries.whose.signer.certificate.is.self.signed.",
+                "\u6B64 jar \u5305\u542B\u5176\u7B7E\u540D\u8005\u8BC1\u4E66\u4E3A\u81EA\u7B7E\u540D\u8BC1\u4E66\u7684\u6761\u76EE\u3002"},
         {"Re.run.with.the.verbose.option.for.more.details.",
                 "\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u4F7F\u7528 -verbose \u9009\u9879\u91CD\u65B0\u8FD0\u884C\u3002"},
         {"Re.run.with.the.verbose.and.certs.options.for.more.details.",
@@ -223,10 +234,18 @@
                  "\u6B64 jar \u5305\u542B\u7531\u4E8E\u7B7E\u540D\u8005\u8BC1\u4E66\u7684 NetscapeCertType \u6269\u5C55\u800C\u65E0\u6CD5\u8FDB\u884C\u4EE3\u7801\u7B7E\u540D\u7684\u6761\u76EE\u3002"},
         {".{0}.extension.does.not.support.code.signing.",
                  "[{0} \u6269\u5C55\u4E0D\u652F\u6301\u4EE3\u7801\u7B7E\u540D]"},
-        {"The.signer.s.certificate.chain.is.not.validated.",
-                "\u7B7E\u540D\u8005\u7684\u8BC1\u4E66\u94FE\u672A\u9A8C\u8BC1\u3002"},
-        {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.",
-                 "\u6B64 jar \u5305\u542B\u8BC1\u4E66\u94FE\u672A\u9A8C\u8BC1\u7684\u6761\u76EE\u3002"},
+        {"The.signer.s.certificate.chain.is.not.validated.reason.1",
+                "\u7B7E\u540D\u8005\u8BC1\u4E66\u94FE\u672A\u7ECF\u8FC7\u9A8C\u8BC1\u3002\u539F\u56E0: %s"},
+        {"The.signer.s.certificate.is.self.signed.",
+                "\u7B7E\u540D\u8005\u8BC1\u4E66\u4E3A\u81EA\u7B7E\u540D\u8BC1\u4E66\u3002"},
+        {"The.1.algorithm.specified.for.the.2.option.is.considered.a.security.risk.",
+                "\u4E3A %2$s \u9009\u9879\u6307\u5B9A\u7684 %1$s \u7B97\u6CD5\u88AB\u89C6\u4E3A\u5B58\u5728\u5B89\u5168\u98CE\u9669\u3002"},
+        {"This.jar.contains.entries.whose.certificate.chain.is.not.validated.reason.1",
+                 "\u6B64 jar \u5305\u542B\u5176\u8BC1\u4E66\u94FE\u672A\u7ECF\u8FC7\u9A8C\u8BC1\u7684\u6761\u76EE\u3002\u539F\u56E0: %s"},
+        {"no.timestamp.signing",
+                "\u672A\u63D0\u4F9B -tsa \u6216 -tsacert, \u6B64 jar \u6CA1\u6709\u65F6\u95F4\u6233\u3002\u5982\u679C\u6CA1\u6709\u65F6\u95F4\u6233, \u5219\u5728\u7B7E\u540D\u8005\u8BC1\u4E66\u7684\u5230\u671F\u65E5\u671F (%1$tY-%1$tm-%1$td) \u6216\u4EE5\u540E\u7684\u4EFB\u4F55\u64A4\u9500\u65E5\u671F\u4E4B\u540E, \u7528\u6237\u53EF\u80FD\u65E0\u6CD5\u9A8C\u8BC1\u6B64 jar\u3002"},
+        {"no.timestamp.verifying",
+                "\u6B64 jar \u5305\u542B\u7684\u7B7E\u540D\u6CA1\u6709\u65F6\u95F4\u6233\u3002\u5982\u679C\u6CA1\u6709\u65F6\u95F4\u6233, \u5219\u5728\u7B7E\u540D\u8005\u8BC1\u4E66\u7684\u5230\u671F\u65E5\u671F (%1$tY-%1$tm-%1$td) \u6216\u4EE5\u540E\u7684\u4EFB\u4F55\u64A4\u9500\u65E5\u671F\u4E4B\u540E, \u7528\u6237\u53EF\u80FD\u65E0\u6CD5\u9A8C\u8BC1\u6B64 jar\u3002"},
         {"Unknown.password.type.", "\u672A\u77E5\u53E3\u4EE4\u7C7B\u578B: "},
         {"Cannot.find.environment.variable.",
                 "\u627E\u4E0D\u5230\u73AF\u5883\u53D8\u91CF: "},
--- a/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_de.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_de.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,12 @@
 # questions.
 #
 
-error.cant.open=\u00D6ffnen nicht m\u00F6glich: {0} 
+error.multiple.main.operations=Sie k\u00F6nnen nicht mehrere "-cuxti"-Optionen angeben
+error.cant.open=\u00D6ffnen nicht m\u00F6glich: {0}
 error.illegal.option=Ung\u00FCltige Option: {0}
+error.unrecognized.option=Unbekannte Option: {0}
+error.missing.arg=F\u00FCr die Option {0} ist ein Argument erforderlich
+error.bad.file.arg=Fehler beim Parsen der Dateiargumente
 error.bad.option=Eine der Optionen -{ctxu} muss angegeben werden.
 error.bad.cflag=Kennzeichen "c" erfordert Angabe von Manifest oder Eingabedateien.
 error.bad.uflag=Kennzeichen "u" erfordert Angabe von Manifest, Kennzeichen "e" oder Eingabedateien.
@@ -34,8 +38,15 @@
 error.create.dir={0}: Verzeichnis konnte nicht erstellt werden
 error.incorrect.length=Falsche L\u00E4nge bei der Verarbeitung: {0}
 error.create.tempfile=Es konnte keine tempor\u00E4re Datei erstellt werden
+error.hash.dep=Abh\u00E4ngigkeiten bei Hashing-Modul {0}. Modul {1} kann nicht im Modulpfad gefunden werden
+error.module.options.without.info=--module-version oder --hash-dependencies ohne module-info.class
+error.unexpected.module-info=Unerwarteter Moduldeskriptor {0}
+error.module.descriptor.not.found=Moduldeskriptor nicht gefunden
+error.missing.provider=Serviceprovider nicht gefunden: {0}
 out.added.manifest=Manifest wurde hinzugef\u00FCgt
+out.added.module-info=module-info.class hinzugef\u00FCgt
 out.update.manifest=Manifest wurde aktualisiert
+out.update.module-info=module-info.class aktualisiert
 out.ignore.entry=Eintrag {0} wird ignoriert
 out.adding={0} wird hinzugef\u00FCgt
 out.deflated=({0} % verkleinert)
@@ -45,4 +56,33 @@
 out.inflated=\ vergr\u00F6\u00DFert: {0}
 out.size=(ein = {0}) (aus = {1})
 
-usage=Verwendung: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] Dateien ...\nOptionen:\n    -c  Neues Archiv erstellen\n    -t  Inhaltsverzeichnis f\u00FCr Archiv anzeigen\n    -x  Benannte (oder alle) Dateien aus dem Archiv extrahieren\n    -u  Vorhandenes Archiv aktualisieren\n    -v  Ausgabe im Verbose-Modus aus Standard-Ausgabe generieren\n    -f  Dateinamen f\u00FCr Archiv angeben\n    -m  Manifest-Informationen aus angegebener Manifest-Datei einschlie\u00DFen\n    -n  Pack200-Normalisierung nach Erstellung eines neuen Archivs ausf\u00FChren\n    -e  Anwendungs-Einstiegspunkt f\u00FCr alleinstehende Anwendung angeben\n        in einer ausf\u00FChrbaren JAR-Datei geb\u00FCndelt\n    -0  nur speichern; keine ZIP-Komprimierung verwenden\n    -M  keine Manifest-Datei f\u00FCr die Eintr\u00E4ge erstellen\n    -i  Index-Informationen f\u00FCr die angegebenen JAR-Dateien generieren\n    -C  zu angegebenem Verzeichnis wechseln und die folgende Datei einschlie\u00DFen\nDateien, die Verzeichnisse sind, werden rekursiv verarbeitet.\nDie Namen der Manifest-Datei, der Archiv-Datei und des Einstiegspunkts sind\nin derselben Reihenfolge wie die Kennzeichen f\u00FCr "m", "f" und "e" angegeben.\n\nBeispiel 1: Archivieren von zwei Klassendateien in einem Archiv mit dem Namen "classes.jar": \n       jar cvf classes.jar Foo.class Bar.class \nBeispiel 2: Verwenden einer vorhandenen Manifest-Datei mit dem Namen "mymanifest" und Archivieren aller\n           Dateien im Verzeichnis mit dem Namen "foo/" in die Archiv-Datei "classes.jar": \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+usage.compat=Kompatibilit\u00E4tsschnittstelle:\nVerwendung: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] Dateien...\nOptionen:\n    -c  Neues Archiv erstellen\n    -t  Inhaltsverzeichnis f\u00FCr Archiv anzeigen\n    -x  Benannte (oder alle) Dateien aus Archiv extrahieren\n    -u  Vorhandenes Archiv aktualisieren\n    -v  Ausgabe im Verbose-Modus aus Standardausgabe generieren\n    -f  Dateinamen f\u00FCr Archiv angeben\n    -m  Manifestinformationen aus angegebener Manifestdatei einschlie\u00DFen\n    -n  Pack200-Normalisierung nach Erstellung eines neuen Archivs ausf\u00FChren\n    -e  Anwendungseinstiegspunkt f\u00FCr Standalone-Anwendung angeben, \n        die in einer ausf\u00FChrbaren JAR-Datei geb\u00FCndelt ist\n    -0  Nur speichern; keine ZIP-Komprimierung verwenden\n    -P  Komponenten mit vorangestelltem "/" (absoluter Pfad) und ".." (\u00FCbergeordnetes Verzeichnis) aus Dateinamen beibehalten\n    -M  Keine Manifestdatei f\u00FCr die Eintr\u00E4ge erstellen\n    -i  Indexinformationen f\u00FCr die angegebenen JAR-Dateien erstellen\n    -C  Zum angegebenen Verzeichnis wechseln und folgende Datei einschlie\u00DFen\nFalls eine Datei ein Verzeichnis ist, wird dieses rekursiv verarbeitet.\nDer Name der Manifestdatei, der Name der Archivdatei und der Name des Einstiegspunkts werden\nin derselben Reihenfolge wie die Kennzeichen "m", "f" und "e" angegeben.\n\nBeispiel 1: Archivieren Sie zwei Klassendateien in ein Archiv mit Namen "classes.jar": \n       jar cvf classes.jar Foo.class Bar.class \nBeispiel 2: Verwenden Sie die vorhandene Manifestdatei "mymanifest", und archivieren Sie alle\n           Dateien im Verzeichnis foo/ in "classes.jar": \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+
+main.usage.summary=jar: Sie m\u00FCssen eine -ctxui-Option angeben.
+main.usage.summary.try=Verwenden Sie "jar --help", um weitere Informationen anzuzeigen.
+
+main.help.preopt=Verwendung: jar [OPTION...] [-C dir] files ...\njar erstellt ein Archiv f\u00FCr Klassen und Ressourcen und kann individuelle\nKlassen oder Ressourcen aus einem Archiv bearbeiten oder wiederherstellen.\n\n Beispiele:\n # Ein Archiv namens classes.jar mit zwei Klassendateien erstellen:\n jar --create --file classes.jar Foo.class Bar.class\n # Ein Archiv mit einem vorhandenen Manifest mit allen Dateien in foo/ erstellen:\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # Ein modulares JAR-Archiv erstellen, dessen Moduldeskriptor sich in\n # classes/module-info.class befindet:\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # Ein vorhandenes nicht modulares JAR-Archiv in ein modulares JAR-Archiv aktualisieren:\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class
+main.help.opt.main=\ Hauptvorgangsmodus:\n
+main.help.opt.main.create=\  -c, --create               Archiv erstellen
+main.help.opt.main.generate-index=\  -i, --generate-index=FILE  Indexinformationen f\u00FCr die angegebenen JAR-\n                             Archive generieren
+main.help.opt.main.list=\  -t, --list                 Das Inhaltsverzeichnis f\u00FCr das Archiv auflisten
+main.help.opt.main.update=\  -u, --update               Ein vorhandenes JAR-Archiv aktualisieren
+main.help.opt.main.extract=\  -x, --extract              Benannte (oder alle) Dateien aus dem Archiv extrahieren
+main.help.opt.main.print-module-descriptor=\  -p, --print-module-descriptor  Moduldeskriptor drucken
+main.help.opt.any=\ In jedem Modus g\u00FCltige Vorgangsmodifikatoren:\n\n  -C DIR                     Zum angegebenen Verzeichnis wechseln und die folgende\n                             Datei aufnehmen
+main.help.opt.any.file=\  -f, --file=FILE            Der Archivdateiname
+main.help.opt.any.verbose=\  -v, --verbose              Verbose-Ausgabe bei Standardausgabe generieren
+main.help.opt.create.update=\ Vorgangsmodifikatoren, die nur im Erstellungs- und Aktualisierungsmodus g\u00FCltig sind:\n
+main.help.opt.create.update.main-class=\  -e, --main-class=CLASSNAME Der Anwendungseinstiegspunkt f\u00FCr Standalone-\n                             Anwendungen, die in einem modularen oder ausf\u00FChrbaren\n                             JAR-Archiv geb\u00FCndelt sind
+main.help.opt.create.update.manifest=\  -m, --manifest=FILE        Die Manifestinformationen aus der angegebenen\n                             Manifestdatei aufnehmen
+main.help.opt.create.update.no-manifest=\  -M, --no-manifest          Keine Manifestdatei f\u00FCr die Eintr\u00E4ge erstellen
+main.help.opt.create.update.module-version=\      --module-version=VERSION    Die Modulversion beim Erstellen eines modularen\n                             JAR-Archivs oder Aktualisieren eines nicht modularen JAR-Archivs
+main.help.opt.create.update.hash-dependencies=\      --hash-dependencies=PATTERN  Die Hashes von Modulabh\u00E4ngigkeiten\n                             entsprechend dem angegebenen Muster beim Erstellen eines\n                             modularen JAR-Archivs oder Aktualisieren eines nicht modularen\n                             JAR-Archivs berechnen und aufzeichnen
+main.help.opt.create.update.modulepath=\      --modulepath           Ort von Modulabh\u00E4ngigkeit zum Generieren
+\                             des Hash
+main.help.opt.create.update.index=\ Vorgangsmodifikatoren, die nur im Erstellungs-, Aktualisierungs- und Indexgenerierungsmodus g\u00FCltig sind:\n
+main.help.opt.create.update.index.no-compress=\  -0, --no-compress          Nur speichern, keine ZIP-Komprimierung verwenden
+main.help.opt.other=\ Weitere Optionen:\n
+main.help.opt.other.help=\  -?, --help[:compat]        Diese Meldung oder optional die Kompatibilit\u00E4t, Hilfe angeben
+main.help.opt.other.version=\      --version              Programmversion ausgeben
+main.help.postopt=\ Ein Archiv ist ein modulares JAR-Archiv, wenn der Moduldeskriptor "module-info.class"\n in der Root der angegebenen Verzeichnisse oder in der Root des JAR-Archivs selbst\n vorhanden ist. Die folgenden Vorg\u00E4nge sind nur g\u00FCltig, wenn Sie ein modulares JAR-Archiv\n erstellen oder ein vorhandenes nicht modulares JAR-Archiv aktualisieren: "--module-version",\n "--hash-dependencies" und "--modulepath".\n\n Obligatorische oder optionale Argumente zu langen Optionen sind auch f\u00FCr die jeweils\n zugeh\u00F6rigen kurzen Optionen obligatorisch oder optional.
--- a/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_es.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_es.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,12 @@
 # questions.
 #
 
-error.cant.open=no se puede abrir: {0} 
+error.multiple.main.operations=No se puede especificar m\u00E1s de una opci\u00F3n '-cuxti'
+error.cant.open=no se puede abrir: {0}
 error.illegal.option=Opci\u00F3n no permitida: {0}
+error.unrecognized.option=opci\u00F3n no reconocida: {0}
+error.missing.arg=la opci\u00F3n {0} necesita un argumento
+error.bad.file.arg=Error al analizar los argumentos de archivo
 error.bad.option=Se debe especificar una de las opciones -{ctxu}.
 error.bad.cflag=El indicador 'c' necesita la especificaci\u00F3n de archivos de manifiesto o de entrada.
 error.bad.uflag=El indicador 'u' necesita la especificaci\u00F3n de archivos de manifiesto, de entrada o indicador 'e'.
@@ -34,8 +38,15 @@
 error.create.dir={0} : no se ha podido crear el directorio
 error.incorrect.length=longitud incorrecta al procesar: {0}
 error.create.tempfile=No se ha podido crear el archivo temporal
+error.hash.dep=Aplicando hash a las dependencias del m\u00F3dulo {0}, no se ha encontrado el m\u00F3dulo {1} en la ruta del m\u00F3dulo
+error.module.options.without.info=Una de las dependencias --module-version o --hash-dependencies sin module-info.class
+error.unexpected.module-info=Descriptor de m\u00F3dulo inesperado {0}
+error.module.descriptor.not.found=No se ha encontrado el descriptor de m\u00F3dulo
+error.missing.provider=No se ha encontrado el proveedor de servicios: {0}
 out.added.manifest=manifiesto agregado
+out.added.module-info=module-info.class agregado
 out.update.manifest=manifiesto actualizado
+out.update.module-info=module-info.class actualizado
 out.ignore.entry=ignorando entrada {0}
 out.adding=agregando: {0}
 out.deflated=(desinflado {0}%)
@@ -45,4 +56,33 @@
 out.inflated=\ inflado: {0}
 out.size=(entrada = {0}) (salida = {1})
 
-usage=Sintaxis: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] archivos...\nOpciones:\n    -c  crear nuevo archivo\n    -t  crear la tabla de contenido del archivo\n    -x  extraer el archive mencionado (o todos) del archivo\n    -u  actualizar archive existente\n    -v  generar salida detallada de los datos de salida est\u00E1ndar\n    -f  especificar nombre de archive de almacenamiento\n    -m  incluir informaci\u00F3n de manifiesto del archive de manifiesto especificado\n    -n  realizar normalizaci\u00F3n de Pack200 despu\u00E9s de crear un nuevo archivo\n    -e  especificar punto de entrada de la aplicaci\u00F3n para la aplicaci\u00F3n aut\u00F3noma \n        que se incluye dentro de un archive jar ejecutable\n    -0  s\u00F3lo almacenar; no utilizar compresi\u00F3n ZIP\n    -M  no crear un archive de manifiesto para las entradas\n    -i  generar informaci\u00F3n de \u00EDndice para los archives jar especificados\n    -C  cambiar al directorio especificado e incluir el archivo siguiente\nSi alg\u00FAn archivo es un directorio, se procesar\u00E1 de forma recurrente.\nEl nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\nespecifican en el mismo orden que los indicadores 'm', 'f' y 'e'.\n\nEjemplo 1: para archivar archivos de dos clases en un archivo llamado classes.jar: \n       jar cvf classes.jar Foo.class Bar.class \nEjemplo 2: utilice un archivo de manifiesto existente 'mymanifest' y archive todos los\n           archivos del directorio foo/ en 'classes.jar': \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+usage.compat=Interfaz de compatibilidad:\nSintaxis: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\nOpciones:\n    -c  crear nuevo archivo\n    -t  crear la tabla de contenido del archivo\n    -x   extraer el archivo mencionado (o todos) del archivo\n    -u  actualizar archivo existente\n    -v  generar salida detallada de los datos de salida est\u00E1ndar\n    -f  especificar nombre de archivo de almacenamiento\n    -m  incluir informaci\u00F3n de manifiesto del archivo de manifiesto especificado\n    -e  especificar punto de entrada de la aplicaci\u00F3n para la aplicaci\u00F3n aut\u00F3noma \n        que se incluye dentro de un archivo jar ejecutable\n    -0  s\u00F3lo almacenar; no utilizar compresi\u00F3n ZIP\n    -P  conservar componentes iniciales '/' (ruta absoluta) y ".." (directorio principal) en los nombres de archivo\n    -M  no crear un archivo de manifiesto para las entradas\n    -i  generar informaci\u00F3n de \u00EDndice para los archivos jar especificados\n    -C  cambiar al directorio especificado e incluir el archivo siguiente\nSi alg\u00FAn archivo es un directorio, se procesar\u00E1 de forma recurrente.\nEl nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\nespecifican en el mismo orden que los indicadores 'm', 'f' y 'e'.\n\nEjemplo 1: para archivar archivos de dos clases en un archivo llamado classes.jar: \n       jar cvf classes.jar Foo.class Bar.class \nEjemplo 2: utilice un archivo de manifiesto existente 'mymanifest' y archive todos los\n           archivos del directorio foo/ en 'classes.jar': \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+
+main.usage.summary=jar: Debe especificar una de las opciones -ctxui.
+main.usage.summary.try=Intente `jar --help' para obtener m\u00E1s informaci\u00F3n.
+
+main.help.preopt=Sintaxis: archivos jar [OPTION...] [-C dir] ...\njar crea un archivo para las clases y recursos y puede manipular o\nrestaurar clases individuales o recursos de un archivo.\n\n Ejemplos:\n # Crear un archivo denominado classes.jar con dos archivos de clase:\n jar --create --file classes.jar Foo.class Bar.class\n # Crear un archivo con un manifiesto existente, con todos los archivos en foo/:\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # Crear un archivo jar modular, donde el descriptor de m\u00F3dulo est\u00E1 en\n # classes/module-info.class:\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # actualizar un jar no modular en un jar modular:\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class
+main.help.opt.main=\ Modo de operaci\u00F3n principal:\n
+main.help.opt.main.create=\  -c, --create               Crear el archivo
+main.help.opt.main.generate-index=\  -i, --generate-index=FILE  Generar informaci\u00F3n de \u00EDndice para los archivos jar\n                             especificados
+main.help.opt.main.list=\  -t, --list                 Mostrar la tabla de contenido del archivo
+main.help.opt.main.update=\  -u, --update               Actualizar un archivo jar existente
+main.help.opt.main.extract=\  -x, --extract              Extraer determinados (o todos) los archivos del archivo
+main.help.opt.main.print-module-descriptor=\  -p, --print-module-descriptor  Imprimir el descriptor de m\u00F3dulo
+main.help.opt.any=\ Modificadores de operaci\u00F3n v\u00E1lidos en cualquier modo:\n\n  -C DIR                     Cambiar al directorio especificado e incluir el\n                             siguiente archivo
+main.help.opt.any.file=\  -f, --file=FILE            Nombre del archivo
+main.help.opt.any.verbose=\  -v, --verbose              Generar salida verbose en salida est\u00E1ndar
+main.help.opt.create.update=\ Modificadores de operaci\u00F3n v\u00E1lidos solo en el modo de creaci\u00F3n y de actualizaci\u00F3n:\n
+main.help.opt.create.update.main-class=\  -e, --main-class=CLASSNAME Punto de entrada de la aplicaci\u00F3n para aplicaciones\n                             aut\u00F3nomas agrupadas en un archivo jar modular o\n                             ejecutable
+main.help.opt.create.update.manifest=\  -m, --manifest=FILE        Incluir la informaci\u00F3n de manifiesto del archivo\n                             de manifiesto proporcionado
+main.help.opt.create.update.no-manifest=\  -M, --no-manifest          No crear ning\u00FAn archivo de manifiesto para las entradas
+main.help.opt.create.update.module-version=\      --module-version=VERSION    Versi\u00F3n del m\u00F3dulo, si se va a crear un archivo jar modular\n                             o actualizar un archivo jar no modular
+main.help.opt.create.update.hash-dependencies=\      --hash-dependencies=PATTERN  Calcular y registrar los hash de dependencias\n                             de m\u00F3dulo que coinciden con el patr\u00F3n proporcionado, si se va a crear\n                             un archivo jar modular o actualizar un archivo jar no\n                             modular
+main.help.opt.create.update.modulepath=\      --modulepath           Ubicaci\u00F3n de la dependencia de m\u00F3dulo para generaci\u00F3n
+\                             hash
+main.help.opt.create.update.index=\ Modificadores de operaci\u00F3n v\u00E1lidos solo en el modo de creaci\u00F3n, actualizaci\u00F3n y generaci\u00F3n de \u00EDndice:\n
+main.help.opt.create.update.index.no-compress=\  -0, --no-compress          Solo almacenar; no usar compresi\u00F3n ZIP
+main.help.opt.other=\ Otras opciones:\n
+main.help.opt.other.help=\  -?, --help[:compat]        Utilice este valor, u opcionalmente la compatibilidad, ayuda
+main.help.opt.other.version=\      --version              Imprimir versi\u00F3n del programa
+main.help.postopt=\ Un archivo es un jar modular si el descriptor de m\u00F3dulo, 'module-info.class', est\u00E1\n en la ra\u00EDz de los directorios proporcionados o en la ra\u00EDz del archivo jar.\n Las siguientes operaciones solo son v\u00E1lidas si se va a crear un jar modular\n o se va a actualizar un jar existente no modular: '--module-version',\n '--hash-dependencies', y '--modulepath'.\n\n Los argumentos obligatorios u opcionales en las opciones largas tambi\u00E9n son obligatorios u opcionales\n en cualquiera de las opciones cortas.
--- a/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_fr.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_fr.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,12 @@
 # questions.
 #
 
-error.cant.open=impossible d''ouvrir : {0} 
+error.multiple.main.operations=Vous ne pouvez pas sp\u00E9cifier plus d'une option '-cuxti'
+error.cant.open=impossible d''ouvrir : {0}
 error.illegal.option=Option non admise : {0}
+error.unrecognized.option=option non reconnue : {0}
+error.missing.arg=l''option {0} exige un argument
+error.bad.file.arg=Erreur lors de l'analyse des arguments de fichier
 error.bad.option=Une des options -{ctxu} doit \u00EAtre sp\u00E9cifi\u00E9e.
 error.bad.cflag=L'indicateur c requiert la sp\u00E9cification d'un fichier manifeste ou d'un fichier d'entr\u00E9e.
 error.bad.uflag=L'indicateur u requiert la sp\u00E9cification d'un fichier manifeste, d'un fichier d'entr\u00E9e ou d'un indicateur e.
@@ -34,8 +38,15 @@
 error.create.dir={0} : impossible de cr\u00E9er le r\u00E9pertoire
 error.incorrect.length=longueur incorrecte lors du traitement de : {0}
 error.create.tempfile=Impossible de cr\u00E9er un fichier temporaire
+error.hash.dep=Hachage des d\u00E9pendances du module {0}, module {1} introuvable sur le chemin de module
+error.module.options.without.info=Une des options --module-version ou --hash-dependencies sans module-info.class
+error.unexpected.module-info=Descripteur de module {0} inattendu
+error.module.descriptor.not.found=Descripteur de module introuvable
+error.missing.provider=Fournisseur de services introuvable : {0}
 out.added.manifest=manifeste ajout\u00E9
+out.added.module-info=module-info.class ajout\u00E9
 out.update.manifest=manifeste mis \u00E0 jour
+out.update.module-info=module-info.class mis \u00E0 jour
 out.ignore.entry=entr\u00E9e {0} ignor\u00E9e
 out.adding=ajout : {0}
 out.deflated=(compression : {0} %)
@@ -45,4 +56,33 @@
 out.inflated=\ d\u00E9compress\u00E9 : {0}
 out.size=(entr\u00E9e = {0}) (sortie = {1})
 
-usage=Syntaxe : jar {ctxui}[vfmn0Me] [fichier-jar] [fichier-manifeste] [point-entr\u00E9e] [-C r\u00E9p] fichiers...\nOptions :\n    -c  cr\u00E9e une archive\n    -t  affiche la table des mati\u00E8res de l'archive\n    -x  extrait les fichiers nomm\u00E9s (ou tous les fichiers) de l'archive\n    -u  met \u00E0 jour l'archive existante\n    -v  g\u00E9n\u00E8re une version d\u00E9taill\u00E9e d'une sortie standard\n    -f  sp\u00E9cifie le nom du fichier archive\n    -m  inclut les informations de manifeste \u00E0 partir du fichier manifeste sp\u00E9cifi\u00E9\n    -n  effectue une normalisation Pack200 apr\u00E8s la cr\u00E9ation d'une archive\n    -e  sp\u00E9cifie le point d'entr\u00E9e d'une application en mode autonome \n        int\u00E9gr\u00E9e \u00E0 un fichier JAR ex\u00E9cutable\n    -0  stockage uniquement, pas de compression ZIP\n    -M  ne cr\u00E9e pas de fichier manifeste pour les entr\u00E9es\n    -i  g\u00E9n\u00E8re les informations d'index des fichiers JAR sp\u00E9cifi\u00E9s\n    -C  passe au r\u00E9pertoire sp\u00E9cifi\u00E9 et inclut le fichier suivant\nSi l'un des fichiers est un r\u00E9pertoire, celui-ci est trait\u00E9 r\u00E9cursivement.\nLes noms du fichier manifeste, du fichier d'archive et du point d'entr\u00E9e sont\nsp\u00E9cifi\u00E9s dans le m\u00EAme ordre que celui des indicateurs m, f et e.\n\nExemple 1 : pour archiver deux fichiers de classe dans une archive intitul\u00E9e classes.jar : \n       jar cvf classes.jar Foo.class Bar.class \nExemple 2 : pour utiliser un fichier manifeste existant 'monmanifeste', puis archiver tous les\n           fichiers du r\u00E9pertoire foo/ dans 'classes.jar' : \n       jar cvfm classes.jar monmanifeste -C foo/ .\n
+usage.compat=Interface de compatibilit\u00E9 :\nSyntaxe : jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\nOptions :\n    -c  cr\u00E9e une archive\n    -t  affiche la table des mati\u00E8res de l'archive\n    -x  extrait des fichiers nomm\u00E9s (ou tous les fichiers) de l'archive\n    -u  met \u00E0 jour l'archive existante\n    -v  g\u00E9n\u00E8re une sortie en mode verbose d'une sortie standard\n    -f  sp\u00E9cifie le nom de fichier d'archive\n    -m  inclut les informations de manifeste \u00E0 partir du fichier manifeste sp\u00E9cifi\u00E9\n    -n  effectue une normalisation Pack200 apr\u00E8s la cr\u00E9ation d'une archive\n    -e  sp\u00E9cifie le point d'entr\u00E9e d'une application en mode autonome \n        int\u00E9gr\u00E9e \u00E0 un fichier JAR ex\u00E9cutable\n    -0  stockage uniquement, pas de compression ZIP\n    -P  pr\u00E9serve les signes de d\u00E9but '/' (chemin absolu) et ".." (r\u00E9pertoire parent) dans les noms de fichier\n    -M  ne cr\u00E9e pas de fichier manifeste pour les entr\u00E9es\n    -i  g\u00E9n\u00E8re les informations d'index des fichiers JAR sp\u00E9cifi\u00E9s\n    -C  passe au r\u00E9pertoire sp\u00E9cifi\u00E9 et inclut le fichier suivant\nSi l'un des fichiers est un r\u00E9pertoire, celui-ci est trait\u00E9 r\u00E9cursivement.\nLes noms du fichier manifeste, du fichier d'archive et du point d'entr\u00E9e sont\nsp\u00E9cifi\u00E9s dans le m\u00EAme ordre que celui des indicateurs m, f et e.\n\nExemple 1 : pour archiver deux fichiers de classe dans une archive intitul\u00E9e classes.jar : \n       jar cvf classes.jar Foo.class Bar.class \nExemple 2 : pour utiliser un fichier manifeste existant 'mymanifest', puis archiver tous les\n           fichiers du r\u00E9pertoire foo/ dans 'classes.jar' : \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+
+main.usage.summary=jar : vous devez sp\u00E9cifier l'une des options -ctxui.
+main.usage.summary.try=Pour plus d'informations, essayez 'jar --help'.
+
+main.help.preopt=Syntaxe : jar [OPTION...] [-C dir] files ...\njar cr\u00E9e une archive pour les classes et les ressources, et peut manipuler ou\nrestaurer les classes ou ressources individuelles \u00E0 partir d'une archive.\n\n Exemples :\n # Cr\u00E9ation d'une archive nomm\u00E9e classes.jar compos\u00E9e de deux fichiers de classe :\n jar --create --file classes.jar Foo.class Bar.class\n # Cr\u00E9ation d'une archive \u00E0 l'aide d'un manifeste existant, avec tous les fichiers dans foo/ :\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # Cr\u00E9ation d'une archive JAR modulaire, o\u00F9 le descripteur de module est situ\u00E9 dans\n # classes/module-info.class :\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # Mise \u00E0 jour d'un fichier JAR non modulaire existant vers un fichier JAR modulaire :\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class
+main.help.opt.main=\ Mode d'exploitation principal :\n
+main.help.opt.main.create=\  -c, --create               Cr\u00E9e l'archive
+main.help.opt.main.generate-index=\  -i, --generate-index=FILE  G\u00E9n\u00E8re des informations d'index pour les archives JAR\n                             indiqu\u00E9es
+main.help.opt.main.list=\  -t, --list                 Affiche la table des mati\u00E8res de l'archive
+main.help.opt.main.update=\  -u, --update               Met \u00E0 jour une archive JAR existante
+main.help.opt.main.extract=\  -x, --extract              Extrait des fichiers nomm\u00E9s (ou tous les fichiers) de l'archive
+main.help.opt.main.print-module-descriptor=\  -p, --print-module-descriptor  Imprime le descripteur de module
+main.help.opt.any=\ Modificateurs d'op\u00E9ration valides pour tous les modes :\n\n  -C DIR                     Passe au r\u00E9pertoire sp\u00E9cifi\u00E9 et inclut le\n                             fichier suivant
+main.help.opt.any.file=\  -f, --file=FILE            Nom de fichier d'archive
+main.help.opt.any.verbose=\  -v, --verbose              G\u00E9n\u00E8re une sortie en mode verbose d'une sortie standard
+main.help.opt.create.update=\ Modificateurs d'op\u00E9ration valides uniquement en modes create et update :\n
+main.help.opt.create.update.main-class=\  -e, --main-class=CLASSNAME Point d'entr\u00E9e d'une application en mode autonome\n                             int\u00E9gr\u00E9e \u00E0 une archive JAR modulaire\n                             ou ex\u00E9cutable
+main.help.opt.create.update.manifest=\  -m, --manifest=FILE        Inclut les informations de manifeste du fichier\n                             manifeste donn\u00E9
+main.help.opt.create.update.no-manifest=\  -M, --no-manifest          Ne cr\u00E9e pas de fichier manifeste pour les entr\u00E9es
+main.help.opt.create.update.module-version=\      --module-version=VERSION    Version de module lors de la cr\u00E9ation d'un fichier JAR\n                             modulaire ou de la mise \u00E0 jour d'un fichier JAR non modulaire
+main.help.opt.create.update.hash-dependencies=\      --hash-dependencies=PATTERN  Calcule et enregistre les hachages des d\u00E9pendances\n                             de module mises en correspondance d'apr\u00E8s le mod\u00E8le donn\u00E9, lors\n                             de la cr\u00E9ation d'un JAR modulaire ou de la mise \u00E0 jour d'un JAR\n                             non modulaire
+main.help.opt.create.update.modulepath=\      --modulepath           Emplacement d'une d\u00E9pendance de module pour la g\u00E9n\u00E9ration
+\                             du hachage
+main.help.opt.create.update.index=\ Modificateurs d'op\u00E9ration valides uniquement en modes create, update et generate-index :\n
+main.help.opt.create.update.index.no-compress=\  -0, --no-compress          Stocke uniquement ; n'utilise pas de compression ZIP
+main.help.opt.other=\ Autres options :\n
+main.help.opt.other.help=\  -?, --help[:compat]        Affiche l'aide ou \u00E9ventuellement la compatibilit\u00E9
+main.help.opt.other.version=\      --version              Imprime la version de programme
+main.help.postopt=\ Une archive est un fichier JAR modulaire si un descripteur de module, 'module-info.class', se\n trouve dans la racine des r\u00E9pertoires donn\u00E9s ou dans la racine de l'archive JAR\n elle-m\u00EAme. Les op\u00E9rations suivantes sont valides uniquement lors de la cr\u00E9ation d'un fichier JAR modulaire\n ou de la mise \u00E0 jour d'un fichier JAR non modulaire existant : '--module-version',\n '--hash-dependencies' et '--modulepath'.\n\n Les arguments obligatoires ou facultatifs pour les options longues sont \u00E9galement obligatoires ou facultatifs\n pour toute option courte correspondante.
--- a/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_it.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_it.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,12 @@
 # questions.
 #
 
-error.cant.open=impossibile aprire: {0} 
+error.multiple.main.operations=Impossibile specificare pi\u00F9 di un'opzione '-cuxti'
+error.cant.open=impossibile aprire: {0}
 error.illegal.option=Opzione non valida: {0}
+error.unrecognized.option=opzione non riconosciuta: {0}
+error.missing.arg=l''opzione {0} richiede un argomento
+error.bad.file.arg=Errore durante l'analisi degli argomenti del file
 error.bad.option=\u00C8 necessario specificare una delle opzioni -{ctxu}.
 error.bad.cflag=Per il flag 'c' \u00E8 necessario specificare file manifest o di input.
 error.bad.uflag=Per il flag 'u' \u00E8 necessario specificare il flag 'e' oppure file manifest o di input.
@@ -34,8 +38,15 @@
 error.create.dir={0} : impossibile creare la directory
 error.incorrect.length=lunghezza non valida durante l''elaborazione: {0}
 error.create.tempfile=Impossibile creare il file temporaneo.
+error.hash.dep={0} dipendenze del modulo di hashing. Impossibile trovare il modulo {1} nel percorso del modulo
+error.module.options.without.info=Una delle opzioni --module-version o --hash-dependencies non contiene module-info.class
+error.unexpected.module-info=Descrittore di modulo {0} imprevisto
+error.module.descriptor.not.found=Descrittore di modulo non trovato
+error.missing.provider=Provider di servizi non trovato: {0}
 out.added.manifest=aggiunto manifest
+out.added.module-info=module-info.class aggiunto
 out.update.manifest=aggiornato manifest
+out.update.module-info=module-info.class aggiornato
 out.ignore.entry=la voce {0} sar\u00E0 ignorata
 out.adding=aggiunta in corso di: {0}
 out.deflated=(compresso {0}%)
@@ -45,4 +56,33 @@
 out.inflated=\ decompresso: {0}
 out.size=(in = {0}) (out = {1})
 
-usage=Uso: jar {ctxui}[vfmn0Me] [file-jar] [file-manifest] [punto di ingresso] [-C dir] file ...\nOpzioni:\n    -c  crea un nuovo archivio\n    -t  visualizza l'indice dell'archivio\n    -x  estrae i file con nome (o tutti i file) dall'archivio\n    -u  aggiorna l'archivio esistente\n    -v  genera output commentato dall'output standard\n    -f  specifica il nome file dell'archivio\n    -m  include informazioni manifest dal file manifest specificato\n    -n  esegue la normalizzazione Pack200 dopo la creazione di un nuovo archivio\n    -e  specifica il punto di ingresso per l'applicazione standalone \n        inclusa nel file jar eseguibile\n    -0  solo memorizzazione; senza compressione ZIP\n    -M  consente di non creare un file manifest per le voci\n    -i  genera informazioni sull'indice per i file jar specificati\n    -C  imposta la directory specificata e include il file seguente\nSe un file \u00E8 una directory, verr\u00E0 elaborato in modo ricorsivo.\nIl nome del file manifest, del file di archivio e del punto di ingresso devono\nessere specificati nello stesso ordine dei flag 'm', 'f' ed 'e'.\n\nEsempio 1: archiviazione di due file di classe in un archivio con il nome classes.jar: \n       jar cvf classes.jar Foo.class Bar.class \nEsempio 2: utilizzo del file manifest esistente 'mymanifest' e archiviazione di tutti i\n           file della directory foo/ in 'classes.jar': \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+usage.compat=Interfaccia di compatibilit\u00E0:\nUso: jar {ctxui}[vfmn0PMe] [file-jar] [file-manifest] [punto di ingresso] [-C dir] file ...\nOpzioni:\n    -c  crea un nuovo archivio\n    -t  visualizza l'indice dell'archivio\n    -x  estrae i file con nome (o tutti i file) dall'archivio\n    -u  aggiorna l'archivio esistente\n    -v  genera output commentato dall'output standard\n    -f  specifica il nome file dell'archivio\n    -m  include informazioni manifest dal file manifest specificato\n    -n  esegue la normalizzazione Pack200 dopo la creazione di un nuovo archivio\n    -e  specifica il punto di ingresso per l'applicazione stand-alone \n        inclusa nel file jar eseguibile\n    -0  solo memorizzazione; senza compressione ZIP\n    -P  conserva i componenti iniziali '/' (percorso assoluto) e \\"..\\" (directory padre) dai nomi file\n    -M  consente di non creare un file manifest per le voci\n    -i  genera informazioni sull'indice per i file jar specificati\n    -C  imposta la directory specificata e include il file seguente\nSe un file \u00E8 una directory, verr\u00E0 elaborato in modo ricorsivo.\nIl nome del file manifest, del file di archivio e del punto di ingresso devono\nessere specificati nello stesso ordine dei flag 'm', 'f' ed 'e'.\n\nEsempio 1: archiviazione di due file di classe in un archivio con il nome classes.jar: \n       jar cvf classes.jar Foo.class Bar.class \nEsempio 2: utilizzo del file manifest esistente 'mymanifest' e archiviazione di tutti i\n           file della directory foo/ in 'classes.jar': \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+
+main.usage.summary=jar: \u00E8 necessario specificare una delle opzioni -ctxui.
+main.usage.summary.try=Utilizzare 'jar --help' per ulteriori informazioni.
+
+main.help.preopt=Uso: jar [OPTION...] [-C dir] file ...\nil file jar crea un archivio per le classi e le risorse e pu\u00F2 manipolare o\nripristinare le singole classi o risorse da un archivio.\n\n Esempi:\n # Crea un archivio denominato classes.jar con due file di classe:\n jar --create --file classes.jar Foo.class Bar.class\n # Crea un archivio mediante un file manifest esistente, con tutti i file in foo/:\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # Crea un archivio jar modulare, in cui il descrittore di modulo si trova in\n # classes/module-info.class:\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # Aggiorna un file jar non modulare esistente in un file jar modulare:\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class
+main.help.opt.main=\ Modalit\u00E0 di funzionamento principale:\n
+main.help.opt.main.create=\  -c, --create               Crea l'archivio
+main.help.opt.main.generate-index=\  -i, --generate-index=FILE  Genera le informazioni sull'indice per gli archivi\n                             jar specificati
+main.help.opt.main.list=\  -t, --list                 Visualizza l'indice dell'archivio
+main.help.opt.main.update=\  -u, --update               Aggiorna un archivio jar esistente
+main.help.opt.main.extract=\  -x, --extract              Estrae i file con nome (o tutti i file) dall'archivio
+main.help.opt.main.print-module-descriptor=\  -p, --print-module-descriptor  Stampa il descrittore del modulo
+main.help.opt.any=\ Modificatori di funzionamento validi in qualsiasi modalit\u00E0:\n\n  -C DIR                     Passa alla directory specificata e include il\n                              file seguente
+main.help.opt.any.file=\  -f, --file=FILE            Nome del file di archivio
+main.help.opt.any.verbose=\  -v, --verbose              Genera l'output descrittivo nell'output standard
+main.help.opt.create.update=\ Modificatori di funzionamento validi solo nella modalit\u00E0 di creazione e aggiornamento:\n
+main.help.opt.create.update.main-class=\  -e, --main-class=CLASSNAME Punto di ingresso per le applicazioni\n                             stand-alone incluse nell'archivio jar modulare o\n                             eseguibile
+main.help.opt.create.update.manifest=\  -m, --manifest=FILE        Include le informazioni sul file manifest dal file\n                             manifest specificato
+main.help.opt.create.update.no-manifest=\  -M, --no-manifest          Non crea un file manifest per le voci
+main.help.opt.create.update.module-version=\      --module-version=VERSION    Versione del modulo utilizzata durante la creazione di un file\n                             jar modulare o l'aggiornamento di un file jar non modulare
+main.help.opt.create.update.hash-dependencies=\      --hash-dependencies=PATTERN  Calcola e registra gli hash delle dipendenze\n                             del modulo corrispondenti in base al pattern specificato durante\n                             la creazione di un file jar modulare o l'aggiornamento di\n                             un file jar non modulare
+main.help.opt.create.update.modulepath=\      --modulepath           Posizione della dipendenza del modulo per la generazione
+\                             dell'hash
+main.help.opt.create.update.index=\ Modificatori di funzionamento validi solo nella modalit\u00E0 di creazione, aggiornamento e di generazione dell'indice:\n
+main.help.opt.create.update.index.no-compress=\  -0, --no-compress          Solo per la memorizzazione. Non utilizza alcuna compressione ZIP
+main.help.opt.other=\ Altre opzioni:\n
+main.help.opt.other.help=\  -?, --help[:compat]        Fornisce questa Guida o facoltativamente la Guida sulla compatibilit\u00E0
+main.help.opt.other.version=\      --version              Stampa la versione del programma
+main.help.postopt=\ Un archivio \u00E8 un file jar modulare se un descrittore di modulo, 'module-info.class', si trova\n nella directory radice delle directory specificate o nella radice dell'archivio jar\n stesso. Le operazioni seguenti sono valide solo durante la creazione di un jar modulare\n o l'aggiornamento di un file jar non modulare esistente: '--module-version',\n '--hash-dependencies' e '--modulepath'.\n\n Gli argomenti obbligatori o facoltativi per le opzioni lunghe sono obbligatori\n  o facoltativi anche per le opzioni brevi corrispondenti.
--- a/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_ja.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_ja.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,12 @@
 # questions.
 #
 
-error.cant.open={0}\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 
+error.multiple.main.operations=\u8907\u6570\u306E'-cuxti'\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093
+error.cant.open={0}\u3092\u958B\u304F\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093
 error.illegal.option=\u4E0D\u6B63\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
+error.unrecognized.option=\u8A8D\u8B58\u3055\u308C\u306A\u3044\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
+error.missing.arg=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u306B\u306F\u5F15\u6570\u304C\u5FC5\u8981\u3067\u3059\u3002
+error.bad.file.arg=\u30D5\u30A1\u30A4\u30EB\u5F15\u6570\u306E\u89E3\u6790\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
 error.bad.option=\u30AA\u30D7\u30B7\u30E7\u30F3-{ctxu}\u306E\u3046\u3061\u306E1\u3064\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
 error.bad.cflag=\u30D5\u30E9\u30B0'c'\u3067\u306F\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u307E\u305F\u306F\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u6307\u5B9A\u304C\u5FC5\u8981\u3067\u3059\u3002
 error.bad.uflag=\u30D5\u30E9\u30B0'u'\u3067\u306F\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304B'e'\u30D5\u30E9\u30B0\u3001\u307E\u305F\u306F\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u6307\u5B9A\u304C\u5FC5\u8981\u3067\u3059\u3002
@@ -34,8 +38,15 @@
 error.create.dir=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
 error.incorrect.length={0}\u306E\u51E6\u7406\u4E2D\u306B\u4E0D\u6B63\u306A\u9577\u3055\u304C\u3042\u308A\u307E\u3057\u305F
 error.create.tempfile=\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
+error.hash.dep=\u30E2\u30B8\u30E5\u30FC\u30EB{0}\u4F9D\u5B58\u6027\u306E\u30CF\u30C3\u30B7\u30E5\u3067\u30E2\u30B8\u30E5\u30FC\u30EB{1}\u304C\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+error.module.options.without.info=--module-version\u307E\u305F\u306F--hash-dependencies\u306E\u3044\u305A\u308C\u304B\u3067module-info.class\u304C\u3042\u308A\u307E\u305B\u3093
+error.unexpected.module-info=\u4E88\u671F\u3057\u306A\u3044\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF{0}
+error.module.descriptor.not.found=\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+error.missing.provider=\u30B5\u30FC\u30D3\u30B9\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
 out.added.manifest=\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F
+out.added.module-info=module-info.class\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F
 out.update.manifest=\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F
+out.update.module-info=module-info.class\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F
 out.ignore.entry=\u30A8\u30F3\u30C8\u30EA{0}\u3092\u7121\u8996\u3057\u307E\u3059
 out.adding={0}\u3092\u8FFD\u52A0\u4E2D\u3067\u3059
 out.deflated=({0}%\u53CE\u7E2E\u3055\u308C\u307E\u3057\u305F)
@@ -45,4 +56,33 @@
 out.inflated=\ {0}\u304C\u5C55\u958B\u3055\u308C\u307E\u3057\u305F
 out.size=(\u5165={0})(\u51FA={1})
 
-usage=\u4F7F\u7528\u65B9\u6CD5: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u30AA\u30D7\u30B7\u30E7\u30F3:\n    -c  \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u65B0\u898F\u4F5C\u6210\u3059\u308B\n    -t  \u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u5185\u5BB9\u3092\u4E00\u89A7\u8868\u793A\u3059\u308B\n    -x  \u6307\u5B9A\u306E(\u307E\u305F\u306F\u3059\u3079\u3066\u306E)\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u304B\u3089\u62BD\u51FA\u3059\u308B\n    -u  \u65E2\u5B58\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u66F4\u65B0\u3059\u308B\n    -v  \u6A19\u6E96\u51FA\u529B\u306B\u8A73\u7D30\u306A\u51FA\u529B\u3092\u751F\u6210\u3059\u308B\n    -f  \u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3059\u308B\n    -m  \u6307\u5B9A\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u60C5\u5831\u3092\u53D6\u308A\u8FBC\u3080\n    -n  \u65B0\u898F\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u4F5C\u6210\u5F8C\u306BPack200\u6B63\u898F\u5316\u3092\u5B9F\u884C\u3059\u308B\n    -e  \u5B9F\u884C\u53EF\u80FDjar\u30D5\u30A1\u30A4\u30EB\u306B\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305F\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\n        \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u3092\u6307\u5B9A\u3059\u308B\n    -0  \u683C\u7D0D\u306E\u307F\u3002ZIP\u5727\u7E2E\u3092\u4F7F\u7528\u3057\u306A\u3044\n    -M  \u30A8\u30F3\u30C8\u30EA\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3057\u306A\u3044\n    -i  \u6307\u5B9A\u306Ejar\u30D5\u30A1\u30A4\u30EB\u306E\u7D22\u5F15\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n    -C  \u6307\u5B9A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u5909\u66F4\u3057\u3001\u6B21\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u308A\u8FBC\u3080\n\u30D5\u30A1\u30A4\u30EB\u304C\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u5834\u5408\u306F\u518D\u5E30\u7684\u306B\u51E6\u7406\u3055\u308C\u307E\u3059\u3002\n\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3001\u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u304A\u3088\u3073\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u540D\u306F\u3001\n\u30D5\u30E9\u30B0'm'\u3001'f'\u3001'e'\u306E\u6307\u5B9A\u3068\u540C\u3058\u9806\u756A\u3067\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\n\u4F8B1: 2\u3064\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6classes.jar\u306B\u4FDD\u5B58\u3059\u308B: \n       jar cvf classes.jar Foo.class Bar.class \n\u4F8B2: \u65E2\u5B58\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB'mymanifest'\u3092\u4F7F\u7528\u3057\u3001foo/\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\n           \u5168\u30D5\u30A1\u30A4\u30EB\u3092'classes.jar'\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3059\u308B: \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+usage.compat=\u4E92\u63DB\u6027\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9:\n\u4F7F\u7528\u65B9\u6CD5: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u30AA\u30D7\u30B7\u30E7\u30F3:\n    -c  \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u65B0\u898F\u4F5C\u6210\u3059\u308B\n    -t  \u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u5185\u5BB9\u3092\u4E00\u89A7\u8868\u793A\u3059\u308B\n    -x  \u6307\u5B9A\u306E(\u307E\u305F\u306F\u3059\u3079\u3066\u306E)\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u304B\u3089\u62BD\u51FA\u3059\u308B\n    -u  \u65E2\u5B58\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u66F4\u65B0\u3059\u308B\n    -v  \u6A19\u6E96\u51FA\u529B\u306B\u8A73\u7D30\u306A\u51FA\u529B\u3092\u751F\u6210\u3059\u308B\n    -f  \u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3092\u6307\u5B9A\u3059\u308B\n    -m  \u6307\u5B9A\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u60C5\u5831\u3092\u53D6\u308A\u8FBC\u3080\n    -n  \u65B0\u898F\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u4F5C\u6210\u5F8C\u306BPack200\u6B63\u898F\u5316\u3092\u5B9F\u884C\u3059\u308B\n    -e  \u5B9F\u884C\u53EF\u80FDjar\u30D5\u30A1\u30A4\u30EB\u306B\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305F\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\n        \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u3092\u6307\u5B9A\u3059\u308B\n    -0  \u683C\u7D0D\u306E\u307F\u3002ZIP\u5727\u7E2E\u3092\u4F7F\u7528\u3057\u306A\u3044\n    -P  \u30D5\u30A1\u30A4\u30EB\u540D\u306E\u5148\u982D\u306E'/' (\u7D76\u5BFE\u30D1\u30B9)\u304A\u3088\u3073\\"..\\" (\u89AA\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA)\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u4FDD\u6301\u3059\u308B\n    -M  \u30A8\u30F3\u30C8\u30EA\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3057\u306A\u3044\n    -i  \u6307\u5B9A\u306Ejar\u30D5\u30A1\u30A4\u30EB\u306E\u7D22\u5F15\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n    -C  \u6307\u5B9A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u5909\u66F4\u3057\u3001\u6B21\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u53D6\u308A\u8FBC\u3080\n\u30D5\u30A1\u30A4\u30EB\u304C\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u5834\u5408\u306F\u518D\u5E30\u7684\u306B\u51E6\u7406\u3055\u308C\u307E\u3059\u3002\n\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u3001\u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D\u304A\u3088\u3073\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8\u540D\u306F\u3001\n\u30D5\u30E9\u30B0'm'\u3001'f'\u3001'e'\u306E\u6307\u5B9A\u3068\u540C\u3058\u9806\u756A\u3067\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n\n\u4F8B1: 2\u3064\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6classes.jar\u306B\u4FDD\u5B58\u3059\u308B: \n       jar cvf classes.jar Foo.class Bar.class \n\u4F8B2: \u65E2\u5B58\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB'mymanifest'\u3092\u4F7F\u7528\u3057\u3001foo/\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\n           \u5168\u30D5\u30A1\u30A4\u30EB\u3092'classes.jar'\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3059\u308B: \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+
+main.usage.summary=jar: \u3044\u305A\u308C\u304B\u306E-ctxui\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
+main.usage.summary.try=\u8A73\u7D30\u306F\u3001`jar --help'\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002
+
+main.help.preopt=\u4F7F\u7528\u65B9\u6CD5: jar [OPTION...] [-C dir] files ...\njar\u306F\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30EA\u30BD\u30FC\u30B9\u306E\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u3057\u3001\u30A2\u30FC\u30AB\u30A4\u30D6\u304B\u3089\u500B\u3005\u306E\u30AF\u30E9\u30B9\u307E\u305F\u306F\n\u30EA\u30BD\u30FC\u30B9\u3092\u64CD\u4F5C\u307E\u305F\u306F\u5FA9\u5143\u3067\u304D\u307E\u3059\u3002\n\n \u4F8B:\n # 2\u3064\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3080classes.jar\u3068\u3044\u3046\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u3059\u308B:\n jar --create --file classes.jar Foo.class Bar.class\n # foo/\u306E\u3059\u3079\u3066\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3080\u3001\u65E2\u5B58\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u3092\u4F7F\u7528\u3057\u305F\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u3059\u308B:\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # \u30E2\u30B8\u30E5\u30E9jar\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u3059\u308B\u3002\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u306Fclasses/module-info.class\u306B\n # \u3042\u308B:\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # \u65E2\u5B58\u306E\u975E\u30E2\u30B8\u30E5\u30E9jar\u3092\u30E2\u30B8\u30E5\u30E9jar\u306B\u66F4\u65B0\u3059\u308B:\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class
+main.help.opt.main=\ \u30E1\u30A4\u30F3\u64CD\u4F5C\u30E2\u30FC\u30C9:\n
+main.help.opt.main.create=\  -c\u3001--create               \u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u3057\u307E\u3059
+main.help.opt.main.generate-index=\  -i,\u3001--generate-index=FILE  \u6307\u5B9A\u306Ejar\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u7D22\u5F15\u60C5\u5831\u3092\n                             \u751F\u6210\u3057\u307E\u3059
+main.help.opt.main.list=\  -t\u3001--list                 \u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u5185\u5BB9\u3092\u4E00\u89A7\u8868\u793A\u3057\u307E\u3059
+main.help.opt.main.update=\  -u\u3001--update               \u65E2\u5B58\u306Ejar\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u66F4\u65B0\u3057\u307E\u3059
+main.help.opt.main.extract=\  -x\u3001--extract              \u6307\u5B9A\u306E(\u307E\u305F\u306F\u3059\u3079\u3066\u306E)\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u304B\u3089\u62BD\u51FA\u3057\u307E\u3059
+main.help.opt.main.print-module-descriptor=\  -p, --print-module-descriptor  \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u3092\u51FA\u529B\u3057\u307E\u3059
+main.help.opt.any=\ \u3069\u306E\u30E2\u30FC\u30C9\u3067\u3082\u6709\u52B9\u306A\u64CD\u4F5C\u4FEE\u98FE\u5B50:\n\n  -C DIR                     \u6307\u5B9A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u5909\u66F4\u3057\u3001\u6B21\u306E\u30D5\u30A1\u30A4\u30EB\u3092\n                             \u53D6\u308A\u8FBC\u307F\u307E\u3059
+main.help.opt.any.file=\  -f\u3001--file=FILE            \u30A2\u30FC\u30AB\u30A4\u30D6\u30FB\u30D5\u30A1\u30A4\u30EB\u540D
+main.help.opt.any.verbose=\  -v\u3001--verbose              \u6A19\u6E96\u51FA\u529B\u306B\u8A73\u7D30\u306A\u51FA\u529B\u3092\u751F\u6210\u3057\u307E\u3059
+main.help.opt.create.update=\ \u4F5C\u6210\u307E\u305F\u306F\u66F4\u65B0\u30E2\u30FC\u30C9\u3067\u306E\u307F\u6709\u52B9\u306A\u64CD\u4F5C\u4FEE\u98FE\u5B50:\n
+main.help.opt.create.update.main-class=\  -e\u3001--main-class=CLASSNAME \u30E2\u30B8\u30E5\u30E9\u307E\u305F\u306F\u5B9F\u884C\u53EF\u80FD\u306Ajar\u30A2\u30FC\u30AB\u30A4\u30D6\u306B\n                             \u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305F\u30B9\u30BF\u30F3\u30C9\u30A2\u30ED\u30F3\u30FB\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\n                             \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A8\u30F3\u30C8\u30EA\u30FB\u30DD\u30A4\u30F3\u30C8
+main.help.opt.create.update.manifest=\  -m\u3001--manifest=FILE        \u6307\u5B9A\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u60C5\u5831\u3092\n                             \u53D6\u308A\u8FBC\u307F\u307E\u3059
+main.help.opt.create.update.no-manifest=\  -M\u3001--no-manifest          \u30A8\u30F3\u30C8\u30EA\u306E\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3057\u307E\u305B\u3093
+main.help.opt.create.update.module-version=\      --module-version=VERSION    \u30E2\u30B8\u30E5\u30E9jar\u306E\u4F5C\u6210\u6642\u307E\u305F\u306F\u975E\u30E2\u30B8\u30E5\u30E9jar\u306E\u66F4\u65B0\u6642\u306E\n                             \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3
+main.help.opt.create.update.hash-dependencies=\      --hash-dependencies=PATTERN  \u30E2\u30B8\u30E5\u30E9jar\u306E\u4F5C\u6210\u6642\u307E\u305F\u306F\n                             \u975E\u30E2\u30B8\u30E5\u30E9jar\u306E\u66F4\u65B0\u6642\u306B\u3001\u6307\u5B9A\u306E\u30D1\u30BF\u30FC\u30F3\u3067\n                             \u4E00\u81F4\u3057\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u4F9D\u5B58\u6027\u306E\u30CF\u30C3\u30B7\u30E5\u3092\n                             \u8A08\u7B97\u304A\u3088\u3073\u8A18\u9332\u3057\u307E\u3059
+main.help.opt.create.update.modulepath=\      --modulepath           \u751F\u6210\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u4F9D\u5B58\u6027\u306E\u5834\u6240
+\                             \u30CF\u30C3\u30B7\u30E5
+main.help.opt.create.update.index=\ \u4F5C\u6210\u3001\u66F4\u65B0\u304A\u3088\u3073\u7D22\u5F15\u751F\u6210\u30E2\u30FC\u30C9\u3067\u306E\u307F\u6709\u52B9\u306A\u64CD\u4F5C\u4FEE\u98FE\u5B50:\n
+main.help.opt.create.update.index.no-compress=\  -0, --no-compress          \u683C\u7D0D\u306E\u307F\u3002ZIP\u5727\u7E2E\u3092\u4F7F\u7528\u3057\u307E\u305B\u3093
+main.help.opt.other=\ \u305D\u306E\u4ED6\u306E\u30AA\u30D7\u30B7\u30E7\u30F3:\n
+main.help.opt.other.help=\  -?, --help[:compat]        \u3053\u308C(\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u4E92\u63DB\u6027)\u3092help\u306B\u6307\u5B9A\u3057\u307E\u3059
+main.help.opt.other.version=\      --version              \u30D7\u30ED\u30B0\u30E9\u30E0\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u307E\u3059
+main.help.postopt=\ \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF'module-info.class'\u304C\u6307\u5B9A\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30EB\u30FC\u30C8\u307E\u305F\u306F\n jar\u30A2\u30FC\u30AB\u30A4\u30D6\u81EA\u4F53\u306E\u30EB\u30FC\u30C8\u306B\u3042\u308B\u5834\u5408\u3001\u30A2\u30FC\u30AB\u30A4\u30D6\u306F\u30E2\u30B8\u30E5\u30E9jar\u3067\u3059\u3002\n \u6B21\u306E\u64CD\u4F5C\u306F\u3001\u30E2\u30B8\u30E5\u30E9jar\u306E\u4F5C\u6210\u6642\u307E\u305F\u306F\u65E2\u5B58\u306E\u975E\u30E2\u30B8\u30E5\u30E9jar\u306E\u66F4\u65B0\u6642\u306B\n \u306E\u307F\u6709\u52B9\u3067\u3059:  '--module-version'\u3001\n '--hash-dependencies'\u304A\u3088\u3073'--modulepath'\u3002\n\n \u30ED\u30F3\u30B0\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3078\u306E\u5FC5\u9808\u307E\u305F\u306F\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570\u306F\u3001\u5BFE\u5FDC\u3059\u308B\u30B7\u30E7\u30FC\u30C8\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\n \u306B\u5BFE\u3057\u3066\u3082\u5FC5\u9808\u307E\u305F\u306F\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306A\u308A\u307E\u3059\u3002
--- a/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_ko.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_ko.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,12 @@
 # questions.
 #
 
-error.cant.open=\uC5F4 \uC218 \uC5C6\uC74C: {0} 
+error.multiple.main.operations='-cuxti' \uC635\uC158\uC744 \uC5EC\uB7EC \uAC1C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+error.cant.open=\uC5F4 \uC218 \uC5C6\uC74C: {0}
 error.illegal.option=\uC798\uBABB\uB41C \uC635\uC158: {0}
+error.unrecognized.option=\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uC635\uC158: {0}
+error.missing.arg={0} \uC635\uC158\uC5D0 \uC778\uC218\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4.
+error.bad.file.arg=\uD30C\uC77C \uC778\uC218 \uAD6C\uBB38\uC744 \uBD84\uC11D\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.
 error.bad.option=\uC635\uC158 -{ctxu} \uC911 \uD558\uB098\uB97C \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.
 error.bad.cflag='c' \uD50C\uB798\uADF8\uB97C \uC0AC\uC6A9\uD558\uB824\uBA74 Manifest \uB610\uB294 \uC785\uB825 \uD30C\uC77C\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4!
 error.bad.uflag='u' \uD50C\uB798\uADF8\uB97C \uC0AC\uC6A9\uD558\uB824\uBA74 Manifest, 'e' \uD50C\uB798\uADF8 \uB610\uB294 \uC785\uB825 \uD30C\uC77C\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4!
@@ -34,8 +38,15 @@
 error.create.dir={0}: \uB514\uB809\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
 error.incorrect.length=\uCC98\uB9AC \uC911 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC740 \uAE38\uC774\uAC00 \uBC1C\uACAC\uB428: {0}
 error.create.tempfile=\uC784\uC2DC \uD30C\uC77C\uC744 \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+error.hash.dep=\uBAA8\uB4C8 {0} \uC885\uC18D\uC131\uC744 \uD574\uC2DC\uD558\uB294 \uC911 \uBAA8\uB4C8 \uACBD\uB85C\uC5D0\uC11C {1} \uBAA8\uB4C8\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.
+error.module.options.without.info=module-info.class \uC5C6\uC774 --module-version \uB610\uB294 --hash-dependencies \uC911 \uD558\uB098
+error.unexpected.module-info=\uC608\uC0C1\uCE58 \uC54A\uC740 \uBAA8\uB4C8 \uAE30\uC220\uC790 {0}
+error.module.descriptor.not.found=\uBAA8\uB4C8 \uAE30\uC220\uC790\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C
+error.missing.provider=\uC11C\uBE44\uC2A4 \uC81C\uACF5\uC790\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: {0}
 out.added.manifest=Manifest\uB97C \uCD94\uAC00\uD568
+out.added.module-info=module-info.class\uB97C \uCD94\uAC00\uD568
 out.update.manifest=Manifest\uB97C \uC5C5\uB370\uC774\uD2B8\uD568
+out.update.module-info=module-info.class\uB97C \uC5C5\uB370\uC774\uD2B8\uD568
 out.ignore.entry={0} \uD56D\uBAA9\uC744 \uBB34\uC2DC\uD558\uB294 \uC911
 out.adding=\uCD94\uAC00\uD558\uB294 \uC911: {0}
 out.deflated=({0}%\uB97C \uAC10\uC18C\uD568)
@@ -45,4 +56,33 @@
 out.inflated=\ \uC99D\uAC00\uB428: {0}
 out.size=(\uC785\uB825 = {0}) (\uCD9C\uB825 = {1})
 
-usage=\uC0AC\uC6A9\uBC95: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\uC635\uC158:\n    -c  \uC0C8 \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n    -t  \uC544\uCE74\uC774\uBE0C\uC5D0 \uB300\uD55C \uBAA9\uCC28\uB97C \uB098\uC5F4\uD569\uB2C8\uB2E4.\n    -x  \uBA85\uBA85\uB41C(\uB610\uB294 \uBAA8\uB4E0) \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uC5D0\uC11C \uCD94\uCD9C\uD569\uB2C8\uB2E4.\n    -u  \uAE30\uC874 \uC544\uCE74\uC774\uBE0C\uB97C \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4.\n    -v  \uD45C\uC900 \uCD9C\uB825\uC5D0 \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4.\n    -f  \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n    -m  \uC9C0\uC815\uB41C Manifest \uD30C\uC77C\uC758 Manifest \uC815\uBCF4\uB97C \uD3EC\uD568\uD569\uB2C8\uB2E4.\n    -n  \uC0C8 \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD55C \uD6C4 Pack200 \uC815\uADDC\uD654\uB97C \uC218\uD589\uD569\uB2C8\uB2E4.\n    -e  jar \uC2E4\uD589 \uD30C\uC77C\uC5D0 \uBC88\uB4E4\uB85C \uC81C\uACF5\uB41C \uB3C5\uB9BD\uD615 \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8\uC758 \n        \uC751\uC6A9 \uD504\uB85C\uADF8\uB7A8 \uC2DC\uC791 \uC9C0\uC810\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n    -0  \uC800\uC7A5 \uC804\uC6A9: ZIP \uC555\uCD95\uC744 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n    -M  \uD56D\uBAA9\uC5D0 \uB300\uD574 Manifest \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n    -i  \uC9C0\uC815\uB41C jar \uD30C\uC77C\uC5D0 \uB300\uD55C \uC778\uB371\uC2A4 \uC815\uBCF4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n    -C  \uC9C0\uC815\uB41C \uB514\uB809\uD1A0\uB9AC\uB85C \uBCC0\uACBD\uD558\uACE0 \uB2E4\uC74C \uD30C\uC77C\uC744 \uD3EC\uD568\uD569\uB2C8\uB2E4.\n\uD2B9\uC815 \uD30C\uC77C\uC774 \uB514\uB809\uD1A0\uB9AC\uC77C \uACBD\uC6B0 \uC21C\uD658\uC801\uC73C\uB85C \uCC98\uB9AC\uB429\uB2C8\uB2E4.\nManifest \uD30C\uC77C \uC774\uB984, \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984 \uBC0F \uC2DC\uC791 \uC9C0\uC810 \uC774\uB984\uC740\n'm', 'f' \uBC0F 'e' \uD50C\uB798\uADF8\uC640 \uB3D9\uC77C\uD55C \uC21C\uC11C\uB85C \uC9C0\uC815\uB429\uB2C8\uB2E4.\n\n\uC608 1: classes.jar\uB77C\uB294 \uC544\uCE74\uC774\uBE0C\uC5D0 \uB450 \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n       jar cvf classes.jar Foo.class Bar.class \n\uC608 2: \uAE30\uC874 Manifest \uD30C\uC77C 'mymanifest'\uB97C \uC0AC\uC6A9\uD558\uC5EC\n           foo/ \uB514\uB809\uD1A0\uB9AC\uC758 \uBAA8\uB4E0 \uD30C\uC77C\uC744 'classes.jar'\uB85C \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n       jar cvfm classes.jar mymanifest -C foo/ .
+usage.compat=\uD638\uD658\uC131 \uC778\uD130\uD398\uC774\uC2A4:\n\uC0AC\uC6A9\uBC95: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\uC635\uC158:\n    -c  \uC0C8 \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n    -t  \uC544\uCE74\uC774\uBE0C\uC5D0 \uB300\uD55C \uBAA9\uCC28\uB97C \uB098\uC5F4\uD569\uB2C8\uB2E4.\n    -x  \uBA85\uBA85\uB41C(\uB610\uB294 \uBAA8\uB4E0) \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uC5D0\uC11C \uCD94\uCD9C\uD569\uB2C8\uB2E4.\n    -u  \uAE30\uC874 \uC544\uCE74\uC774\uBE0C\uB97C \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4.\n    -v  \uD45C\uC900 \uCD9C\uB825\uC5D0 \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4.\n    -f  \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n    -m  \uC9C0\uC815\uB41C Manifest \uD30C\uC77C\uC758 Manifest \uC815\uBCF4\uB97C \uD3EC\uD568\uD569\uB2C8\uB2E4.\n    -n  \uC0C8 \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD55C \uD6C4 Pack200 \uC815\uADDC\uD654\uB97C \uC218\uD589\uD569\uB2C8\uB2E4.\n    -e  jar \uC2E4\uD589 \uD30C\uC77C\uC5D0 \uBC88\uB4E4\uB85C \uC81C\uACF5\uB41C \uB3C5\uB9BD\uD615 \uC560\uD50C\uB9AC\uCF00\uC774\uC158\uC758 \n        \uC560\uD50C\uB9AC\uCF00\uC774\uC158 \uC2DC\uC791 \uC9C0\uC810\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4.\n    -0  \uC800\uC7A5 \uC804\uC6A9\uC774\uBA70 ZIP \uC555\uCD95\uC744 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n    -P  \uD30C\uC77C \uC774\uB984\uC5D0\uC11C \uC120\uD589 '/'(\uC808\uB300 \uACBD\uB85C) \uBC0F ".."(\uC0C1\uC704 \uB514\uB809\uD1A0\uB9AC) \uAD6C\uC131 \uC694\uC18C\uB97C \uC720\uC9C0\uD569\uB2C8\uB2E4.\n    -M  \uD56D\uBAA9\uC5D0 \uB300\uD574 Manifest \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n    -i  \uC9C0\uC815\uB41C jar \uD30C\uC77C\uC5D0 \uB300\uD55C \uC778\uB371\uC2A4 \uC815\uBCF4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.\n    -C  \uC9C0\uC815\uB41C \uB514\uB809\uD1A0\uB9AC\uB85C \uBCC0\uACBD\uD558\uACE0 \uB2E4\uC74C \uD30C\uC77C\uC744 \uD3EC\uD568\uD569\uB2C8\uB2E4.\n\uD2B9\uC815 \uD30C\uC77C\uC774 \uB514\uB809\uD1A0\uB9AC\uC77C \uACBD\uC6B0 \uC21C\uD658\uC801\uC73C\uB85C \uCC98\uB9AC\uB429\uB2C8\uB2E4.\nManifest \uD30C\uC77C \uC774\uB984, \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984 \uBC0F \uC2DC\uC791 \uC9C0\uC810 \uC774\uB984\uC740\n'm', 'f' \uBC0F 'e' \uD50C\uB798\uADF8\uC640 \uB3D9\uC77C\uD55C \uC21C\uC11C\uB85C \uC9C0\uC815\uB429\uB2C8\uB2E4.\n\n\uC608 1: classes.jar\uB77C\uB294 \uC544\uCE74\uC774\uBE0C\uC5D0 \uB450 \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n       jar cvf classes.jar Foo.class Bar.class \n\uC608 2: \uAE30\uC874 Manifest \uD30C\uC77C 'mymanifest'\uB97C \uC0AC\uC6A9\uD558\uC5EC\n           foo/ \uB514\uB809\uD1A0\uB9AC\uC758 \uBAA8\uB4E0 \uD30C\uC77C\uC744 'classes.jar'\uB85C \uC544\uCE74\uC774\uBE0C\uD558\uB294 \uBC29\uBC95: \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+
+main.usage.summary=jar: -ctxui \uC635\uC158 \uC911 \uD558\uB098\uB97C \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4.
+main.usage.summary.try=\uC790\uC138\uD55C \uB0B4\uC6A9\uC744 \uBCF4\uB824\uBA74 'jar --help'\uB97C \uC2E4\uD589\uD558\uC2ED\uC2DC\uC624.
+
+main.help.preopt=\uC0AC\uC6A9\uBC95: jar [OPTION...] [-C dir] files ...\njar\uB294 \uD074\uB798\uC2A4 \uBC0F \uB9AC\uC18C\uC2A4\uC5D0 \uB300\uD55C \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4. \uC544\uCE74\uC774\uBE0C\uC5D0\uC11C\n\uAC1C\uBCC4 \uD074\uB798\uC2A4\uB098 \uB9AC\uC18C\uC2A4\uB97C \uC870\uC791\uD558\uAC70\uB098 \uBCF5\uC6D0\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\n \uC608\uC81C:\n # \uB450 \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uC0AC\uC6A9\uD558\uC5EC classes.jar\uB77C\uB294 \uC544\uCE74\uC774\uBE0C \uC0DD\uC131:\n jar --create --file classes.jar Foo.class Bar.class\n # \uAE30\uC874 Manifest\uB97C \uC0AC\uC6A9\uD558\uC5EC \uBAA8\uB4E0 \uD30C\uC77C\uC774 foo/\uC5D0 \uD3EC\uD568\uB41C \uC544\uCE74\uC774\uBE0C \uC0DD\uC131:\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # \uBAA8\uB4C8 \uAE30\uC220\uC790\uAC00 classes/module-info.class\uC5D0 \uC704\uCE58\uD55C\n # \uBAA8\uB4C8\uD615 jar \uC544\uCE74\uC774\uBE0C \uC0DD\uC131:\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # \uAE30\uC874 \uBE44\uBAA8\uB4C8 jar\uB97C \uBAA8\uB4C8\uD615 jar\uB85C \uC5C5\uB370\uC774\uD2B8:\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class
+main.help.opt.main=\ \uAE30\uBCF8 \uC791\uC5C5 \uBAA8\uB4DC:\n
+main.help.opt.main.create=\  -c, --create               \uC544\uCE74\uC774\uBE0C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4.
+main.help.opt.main.generate-index=\  -i, --generate-index=FILE  \uC9C0\uC815\uB41C jar \uC544\uCE74\uC774\uBE0C\uC5D0 \uB300\uD55C \uC778\uB371\uC2A4 \uC815\uBCF4\uB97C\n                             \uC0DD\uC131\uD569\uB2C8\uB2E4.
+main.help.opt.main.list=\  -t, --list                 \uC544\uCE74\uC774\uBE0C\uC5D0 \uB300\uD55C \uBAA9\uCC28\uB97C \uB098\uC5F4\uD569\uB2C8\uB2E4.
+main.help.opt.main.update=\  -u, --update               \uAE30\uC874 jar \uC544\uCE74\uC774\uBE0C\uB97C \uC5C5\uB370\uC774\uD2B8\uD569\uB2C8\uB2E4.
+main.help.opt.main.extract=\  -x, --extract              \uBA85\uBA85\uB41C(\uB610\uB294 \uBAA8\uB4E0) \uD30C\uC77C\uC744 \uC544\uCE74\uC774\uBE0C\uC5D0\uC11C \uCD94\uCD9C\uD569\uB2C8\uB2E4.
+main.help.opt.main.print-module-descriptor=\  -p, --print-module-descriptor  \uBAA8\uB4C8 \uAE30\uC220\uC790\uB97C \uC778\uC1C4\uD569\uB2C8\uB2E4.
+main.help.opt.any=\ \uBAA8\uB4E0 \uBAA8\uB4DC\uC5D0\uC11C \uC801\uD569\uD55C \uC791\uC5C5 \uC218\uC815\uC790:\n\n  -C DIR                     \uC9C0\uC815\uB41C \uB514\uB809\uD1A0\uB9AC\uB85C \uBCC0\uACBD\uD558\uACE0 \uB2E4\uC74C \uD30C\uC77C\uC744\n                             \uD3EC\uD568\uD569\uB2C8\uB2E4.
+main.help.opt.any.file=\  -f, --file=FILE            \uC544\uCE74\uC774\uBE0C \uD30C\uC77C \uC774\uB984\uC785\uB2C8\uB2E4.
+main.help.opt.any.verbose=\  -v, --verbose              \uD45C\uC900 \uCD9C\uB825\uC5D0 \uC0C1\uC138 \uC815\uBCF4 \uCD9C\uB825\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4.
+main.help.opt.create.update=\ \uC0DD\uC131 \uBC0F \uC5C5\uB370\uC774\uD2B8 \uBAA8\uB4DC\uC5D0\uC11C\uB9CC \uC801\uD569\uD55C \uC791\uC5C5 \uC218\uC815\uC790:\n
+main.help.opt.create.update.main-class=\  -e, --main-class=CLASSNAME \uBAA8\uB4C8\uD615 \uB610\uB294 \uC2E4\uD589\uD615 jar \uC544\uCE74\uC774\uBE0C\uC5D0 \uBC88\uB4E4\uB85C\n                             \uC81C\uACF5\uB41C \uB3C5\uB9BD\uD615 \uC560\uD50C\uB9AC\uCF00\uC774\uC158\uC758 \uC560\uD50C\uB9AC\uCF00\uC774\uC158\n                             \uC2DC\uC791 \uC9C0\uC810\uC785\uB2C8\uB2E4.
+main.help.opt.create.update.manifest=\  -m, --manifest=FILE        \uC9C0\uC815\uB41C Manifest \uD30C\uC77C\uC758 Manifest \uC815\uBCF4\uB97C\n                             \uD3EC\uD568\uD569\uB2C8\uB2E4.
+main.help.opt.create.update.no-manifest=\  -M, --no-manifest          \uD56D\uBAA9\uC5D0 \uB300\uD574 Manifest \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+main.help.opt.create.update.module-version=\      --module-version=VERSION    \uBAA8\uB4C8\uD615 jar\uB97C \uC0DD\uC131\uD558\uAC70\uB098 \uBE44\uBAA8\uB4C8 jar\uB97C\n                             \uC5C5\uB370\uC774\uD2B8\uD560 \uB54C \uBAA8\uB4C8 \uBC84\uC804\uC785\uB2C8\uB2E4.
+main.help.opt.create.update.hash-dependencies=\      --hash-dependencies=PATTERN  \uBAA8\uB4C8\uD615 jar\uB97C \uC0DD\uC131\uD558\uAC70\uB098 \uBE44\uBAA8\uB4C8 jar\uB97C\n                             \uC5C5\uB370\uC774\uD2B8\uD560 \uB54C \uC8FC\uC5B4\uC9C4 \uD328\uD134\uACFC \uC77C\uCE58\uD558\uB294\n                             \uBAA8\uB4C8 \uC885\uC18D\uC131\uC758 \uD574\uC2DC\uB97C \uCEF4\uD4E8\uD2B8\uD558\uACE0\n                             \uAE30\uB85D\uD569\uB2C8\uB2E4.
+main.help.opt.create.update.modulepath=\      --modulepath           \uD574\uC2DC\uB97C \uC0DD\uC131\uD558\uAE30 \uC704\uD55C \uBAA8\uB4C8 \uC885\uC18D\uC131\uC758
+\                             \uC704\uCE58\uC785\uB2C8\uB2E4.
+main.help.opt.create.update.index=\ \uC0DD\uC131, \uC5C5\uB370\uC774\uD2B8 \uBC0F generate-index \uBAA8\uB4DC\uC5D0\uC11C\uB9CC \uC801\uD569\uD55C \uC791\uC5C5 \uC218\uC815\uC790:\n
+main.help.opt.create.update.index.no-compress=\  -0, --no-compress          \uC800\uC7A5 \uC804\uC6A9\uC774\uBA70 ZIP \uC555\uCD95\uC744 \uC0AC\uC6A9\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
+main.help.opt.other=\ \uAE30\uD0C0 \uC635\uC158:\n
+main.help.opt.other.help=\  -?, --help[:compat]        \uC774 \uB3C4\uC6C0\uB9D0(\uB610\uB294 \uC120\uD0DD\uC801\uC73C\uB85C \uD638\uD658\uC131)\uC744 \uC81C\uACF5\uD569\uB2C8\uB2E4.
+main.help.opt.other.version=\      --version              \uD504\uB85C\uADF8\uB7A8 \uBC84\uC804\uC744 \uC778\uC1C4\uD569\uB2C8\uB2E4.
+main.help.postopt=\ \uC544\uCE74\uC774\uBE0C\uB294 \uBAA8\uB4C8 \uAE30\uC220\uC790 'module-info.class'\uAC00 \uC8FC\uC5B4\uC9C4 \uB514\uB809\uD1A0\uB9AC\uC758\n \uB8E8\uD2B8 \uB610\uB294 jar \uC544\uCE74\uC774\uBE0C \uC790\uCCB4\uC758 \uB8E8\uD2B8\uC5D0 \uC704\uCE58\uD55C \uACBD\uC6B0 \uBAA8\uB4C8\uD615 jar\uC785\uB2C8\uB2E4.\n \uB2E4\uC74C \uC791\uC5C5\uC740 \uBAA8\uB4C8\uD615 jar\uB97C \uC0DD\uC131\uD558\uAC70\uB098 \uAE30\uC874 \uBE44\uBAA8\uB4C8 jar\uB97C\n \uC5C5\uB370\uC774\uD2B8\uD560 \uB54C\uB9CC \uC801\uD569\uD569\uB2C8\uB2E4. '--module-version',\n '--hash-dependencies', '--modulepath'.\n\n long \uC635\uC158\uC758 \uD544\uC218 \uB610\uB294 \uC120\uD0DD\uC801 \uC778\uC218\uB294 \uD574\uB2F9\uD558\uB294 short \uC635\uC158\uC5D0 \uB300\uD574\uC11C\uB3C4\n \uD544\uC218 \uB610\uB294 \uC120\uD0DD\uC801\uC785\uB2C8\uB2E4.
--- a/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_pt_BR.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_pt_BR.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,12 @@
 # questions.
 #
 
-error.cant.open=n\u00E3o \u00E9 poss\u00EDvel abrir: {0} 
+error.multiple.main.operations=Voc\u00EA n\u00E3o pode especificar mais de uma das op\u00E7\u00F5es '-cuxti'
+error.cant.open=n\u00E3o \u00E9 poss\u00EDvel abrir: {0}
 error.illegal.option=Op\u00E7\u00E3o inv\u00E1lida: {0}
+error.unrecognized.option=op\u00E7\u00E3o n\u00E3o reconhecida : {0}
+error.missing.arg=a op\u00E7\u00E3o {0}  exige um argumento
+error.bad.file.arg=Erro ao fazer parsing dos argumentos de arquivo
 error.bad.option=Uma das op\u00E7\u00F5es -{ctxu} deve ser especificada.
 error.bad.cflag=flag 'c' requer que os arquivos de manifesto ou entrada sejam especificados!
 error.bad.uflag=o flag 'u' requer que arquivos de manifesto, o flag 'e' ou arquivos de entrada sejam especificados!
@@ -34,8 +38,15 @@
 error.create.dir={0} : n\u00E3o foi poss\u00EDvel criar o diret\u00F3rio
 error.incorrect.length=largura incorreta durante o processamento: {0}
 error.create.tempfile=N\u00E3o foi poss\u00EDvel criar um arquivo tempor\u00E1rio
+error.hash.dep=M\u00F3dulo de hashing com {0} depend\u00EAncias. N\u00E3o \u00E9 poss\u00EDvel localizar o m\u00F3dulo {1} no caminho do m\u00F3dulo
+error.module.options.without.info=Um dentre --module-version ou --hash-dependencies est\u00E1 sem module-info.class
+error.unexpected.module-info=Descritor de m\u00F3dulo inesperado {0}
+error.module.descriptor.not.found=Descritor de m\u00F3dulo n\u00E3o encontrado
+error.missing.provider=Prestador de servi\u00E7os  n\u00E3o encontrado: {0}
 out.added.manifest=manifesto adicionado
+out.added.module-info=module-info.class adicionado
 out.update.manifest=manifesto atualizado
+out.update.module-info=module-info.class atualizado
 out.ignore.entry=ignorando entrada {0}
 out.adding=adicionando: {0}
 out.deflated=(compactado {0}%)
@@ -45,4 +56,33 @@
 out.inflated=\ inflado: {0}
 out.size=(entrada = {0}) (sa\u00EDda= {1})
 
-usage=Uso: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] arquivos ...\nOp\u00E7\u00F5es:\n    -c  cria novo arquivo compactado\n    -t  lista o sum\u00E1rio do arquivo compactado\n    -x  extrai arquivos com o nome (ou todos) do arquivo compactado\n    -u  atualiza o arquivo compactado existente\n    -v  gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n    -f  especifica o nome do arquivo do arquivo compactado\n    -m  inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n    -n   executa a normaliza\u00E7\u00E3o Pack200 ap\u00F3s a cria\u00E7\u00E3o de um novo arquivo compactado\n    -e  especifica o ponto de entrada da aplica\u00E7\u00E3o para aplica\u00E7\u00E3o stand-alone \n        empacotada em um arquivo jar execut\u00E1vel\n    -0  armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n    -M  n\u00E3o cria um arquivo de manifesto para as entradas\n    -i  gera informa\u00E7\u00F5es de \u00EDndice para os arquivos especificados\n    -C  passa para o diret\u00F3rio especificado e inclui o arquivo a seguir\nSe um arquivo tamb\u00E9m for um diret\u00F3rio, ele ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo compactado e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo compactado denominado classes.jar: \n       jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n           arquivos no diret\u00F3rio foo/ na 'classes.jar': \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+usage.compat=Interface de Compatibilidade:\nUso: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] arquivos ...\nOp\u00E7\u00F5es:\n    -c  cria novo arquivo compactado\n    -t  lista o sum\u00E1rio do arquivo compactado\n    -x  extrai arquivos com o nome (ou todos) do arquivo compactado\n    -u  atualiza o arquivo compactado existente\n    -v  gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n    -f  especifica o nome do arquivo do arquivo compactado\n    -m  inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n    -n   executa a normaliza\u00E7\u00E3o Pack200 ap\u00F3s a cria\u00E7\u00E3o de um novo arquivo compactado\n    -e  especifica o ponto de entrada da aplicativo para aplicativo stand-alone \n        empacotada em um arquivo jar execut\u00E1vel\n    -0  armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n    -P  preserva os componentes '/' inicial (caminho absoluto) e ".." (diret\u00F3rio pai) nos nomes dos arquivos\n    -M  n\u00E3o cria um arquivo de manifesto para as entradas\n    -i  gera informa\u00E7\u00F5es de \u00EDndice para os arquivos especificados\n    -C  passa para o diret\u00F3rio especificado e inclui o arquivo a seguir\nSe um arquivo tamb\u00E9m for um diret\u00F3rio, ele ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo compactado e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo compactado denominado classes.jar: \n       jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n           arquivos no diret\u00F3rio foo/ na 'classes.jar': \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+
+main.usage.summary=jar: Voc\u00EA deve especificar uma das op\u00E7\u00F5es -ctxui.
+main.usage.summary.try=Tente `jar --ajuda' para obter mais informa\u00E7\u00F5es.
+
+main.help.preopt=Uso: jar [OPTION...] [-C dir] arquivos...\njar cria um arquivo compactado para classes e recursos, e pode manipular ou\nrestaurar classes ou recursos individuais de um arquivo compactado.\n\n Exemplos:\n # Cria um arquivo compactado chamado classes.jar com dois arquivos de classe:\n jar --create --file classes.jar Foo.class Bar.class\n # Cria um arquivo compactado usando um manifesto existente, com todos os arquivos em foo/:\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # Cria um arquivo compactado jar modular, em que o descritor do m\u00F3dulo se localize em\n # classes/module-info.class:\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # Atualiza um arquivo jar n\u00E3o modular existente para um jar modular:\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class
+main.help.opt.main=\ Modo de opera\u00E7\u00E3o principal:\n
+main.help.opt.main.create=\  -c, --create               Cria o arquivo compactado
+main.help.opt.main.generate-index=\  -i, --generate-index=FILE  Gera informa\u00E7\u00F5es de \u00EDndice para os arquivos compactados jar \n                             especificados
+main.help.opt.main.list=\  -t, --list                 Lista o conte\u00FAdo do arquivo compactado
+main.help.opt.main.update=\  -u, --update               Atualiza um arquivo compactado jar existente
+main.help.opt.main.extract=\  -x, --extract              Extrai arquivos nomeados (ou todos) do arquivo compactado
+main.help.opt.main.print-module-descriptor=\  -p, --print-module-descriptor  Imprime o descritor do m\u00F3dulo
+main.help.opt.any=\ Modificadores de opera\u00E7\u00E3o v\u00E1lidos em qualquer modo:\n\n  -C DIR                     Altera para o diret\u00F3rio especificado e inclui o\n                             seguinte arquivo:
+main.help.opt.any.file=\  -f, --file=FILE            O nome do arquivo compactado
+main.help.opt.any.verbose=\  -v, --verbose              Gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o
+main.help.opt.create.update=\ Modificadores de opera\u00E7\u00E3o v\u00E1lidos somente no modo de cria\u00E7\u00E3o e atualiza\u00E7\u00E3o:\n
+main.help.opt.create.update.main-class=\  -e, --main-class=CLASSNAME O ponto de entrada do aplicativo para aplicativos\n                             stand-alone empacotados em um arquivo compactado jar modular\n                             ou execut\u00E1vel
+main.help.opt.create.update.manifest=\  -m, --manifest=FILE        Inclui as informa\u00E7\u00F5es de manifesto provenientes do arquivo de\n                             manifesto em quest\u00E3o
+main.help.opt.create.update.no-manifest=\  -M, --no-manifest          N\u00E3o cria um arquivo de manifesto para as entradas
+main.help.opt.create.update.module-version=\      --module-version=VERSION    A vers\u00E3o do m\u00F3dulo, ao criar um arquivo jar\n                             modular, ou atualizar um arquivo jar n\u00E3o modular
+main.help.opt.create.update.hash-dependencies=\      --hash-dependencies=PATTERN  Calcula e registra os hashes das depend\u00EAncias do\n                             m\u00F3dulo correlacionadas pelo padr\u00E3o fornecido, ao\n                             criar um arquivo jar modular ou atualizar um arquivo jar n\u00E3o\n                             modular
+main.help.opt.create.update.modulepath=\      --modulepath           Localiza\u00E7\u00E3o da depend\u00EAncia de m\u00F3dulo para gerar
+\                             o hash
+main.help.opt.create.update.index=\ Modificadores de opera\u00E7\u00E3o v\u00E1lidos somente no modo de cria\u00E7\u00E3o, atualiza\u00E7\u00E3o e gera\u00E7\u00E3o de \u00EDndice:\n
+main.help.opt.create.update.index.no-compress=\  -0, --no-compress          Somente armazenamento; n\u00E3o use compacta\u00E7\u00E3o ZIP
+main.help.opt.other=\ Outras op\u00E7\u00F5es:\n
+main.help.opt.other.help=\  -?, --help[:compat]        Fornece esta ajuda ou, opcionalmente, a ajuda de compatibilidade
+main.help.opt.other.version=\      --version              Imprime a vers\u00E3o do programa
+main.help.postopt=\ Um arquivo compactado \u00E9 um arquivo jar modular se um descritor de m\u00F3dulo, 'module-info.class', estiver\n localizado na raiz dos diret\u00F3rios fornecidos, ou na raiz do arquivo compactado jar\n propriamente dito. As seguintes opera\u00E7\u00F5es s\u00F3 s\u00E3o v\u00E1lidas ao criar um arquivo jar modular,\n ou atualizar um arquivo jar n\u00E3o modular existente: '--module-version',\n '--hash-dependencies', e '--modulepath'.\n\n Argumentos obrigat\u00F3rios ou opcionais para op\u00E7\u00F5es longas tamb\u00E9m s\u00E3o obrigat\u00F3rios ou opcionais\n para quaisquer op\u00E7\u00F5es curtas correspondentes.
--- a/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_sv.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_sv.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,12 @@
 # questions.
 #
 
-error.cant.open=kan inte \u00F6ppna: {0} 
+error.multiple.main.operations=Du kan inte ange flera -cuxti-alternativ
+error.cant.open=kan inte \u00F6ppna: {0}
 error.illegal.option=Otill\u00E5tet alternativ: {0}
+error.unrecognized.option=ok\u00E4nt alternativ: {0}
+error.missing.arg=alternativet {0} kr\u00E4ver ett argument
+error.bad.file.arg=Fel vid tolkning av filargument
 error.bad.option=Ett av alternativen -{ctxu} m\u00E5ste anges.
 error.bad.cflag=f\u00F6r c-flaggan m\u00E5ste manifest- eller indatafiler anges.
 error.bad.uflag=f\u00F6r u-flaggan m\u00E5ste manifest-, e-flagg- eller indatafiler anges.
@@ -34,8 +38,15 @@
 error.create.dir={0} : kunde inte skapa n\u00E5gon katalog
 error.incorrect.length=ogiltig l\u00E4ngd vid bearbetning: {0}
 error.create.tempfile=Kunde inte skapa en tillf\u00E4llig fil
+error.hash.dep={0}-beroenden f\u00F6r hashningsmodulen, kan inte hitta modulen {1} p\u00E5 moduls\u00F6kv\u00E4gen
+error.module.options.without.info=--module-version eller --hash-dependencies utan module-info.class
+error.unexpected.module-info=Ov\u00E4ntad moduldeskriptor, {0}
+error.module.descriptor.not.found=Moduldeskriptorn hittades inte
+error.missing.provider=Tj\u00E4nsteleverant\u00F6ren hittades inte: {0}
 out.added.manifest=tillagt manifestfil
+out.added.module-info=lade till module-info.class
 out.update.manifest=uppdaterat manifest
+out.update.module-info=uppdaterade module-info.class
 out.ignore.entry=ignorerar posten {0}
 out.adding=l\u00E4gger till: {0}
 out.deflated=({0}% packat)
@@ -45,4 +56,33 @@
 out.inflated=\ uppackat: {0}
 out.size=(in = {0}) (ut = {1})
 
-usage=Syntax: jar {ctxui}[vfmn0Me] [jar-fil] [manifestfil] [startpunkt] [-C katalog] filer ...\nAlternativ:\n    -c  skapa nytt arkiv\n    -t  lista inneh\u00E5llsf\u00F6rteckning f\u00F6r arkiv\n    -x  extrahera namngivna (eller alla) filer fr\u00E5n arkiv\n    -u  uppdatera befintligt arkiv\n    -v  generera utf\u00F6rliga utdata vid standardutmatning\n    -f  ange arkivfilens namn\n    -m  inkludera manifestinformation fr\u00E5n angivet manifest\n    -n  utf\u00F6r Pack200-normalisering efter att ha skapat ett nytt arkiv\n    -e  ange programstartpunkt f\u00F6r frist\u00E5ende applikation \n        som medf\u00F6ljer i en jar-programfil\n    -0  endast lagra  (ingen zip-komprimering)\n    -M  skapa inte n\u00E5gon manifestfil f\u00F6r posterna\n    -i  generera indexinformation f\u00F6r de angivna jar-filerna\n    -C  \u00E4ndra till den angivna katalogen och inkludera f\u00F6ljande fil\nOm en fil \u00E4r en katalog bearbetas den rekursivt.\nNamnen p\u00E5 manifestfilen, arkivfilen och startpunkten anges\ni samma ordning som m-, f- och e-flaggorna.\n\nExempel 1: S\u00E5 h\u00E4r arkiverar du tv\u00E5 klassfiler i ett arkiv med namnet classes.jar: \n       jar cvf classes.jar Foo.class Bar.class \nExempel 2: Anv\u00E4nd en befintlig manifestfil (mymanifest) och arkivera alla\n           filer fr\u00E5n katalogen foo/ i classes.jar: \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+usage.compat=Kompatibilitetsgr\u00E4nssnitt:\nSyntax: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\nAlternativ:\n    -c  skapa nytt arkiv\n    -t  lista inneh\u00E5llsf\u00F6rteckning f\u00F6r arkiv\n    -x  extrahera namngivna (eller alla) filer fr\u00E5n arkivet\n    -u  uppdatera befintligt arkiv\n    -v  generera utf\u00F6rliga utdata till standardutdata\n    -f  ange namnet p\u00E5 arkivfilen\n    -m  inkludera manifestinformation fr\u00E5n den angivna manifestfilen\n    -n  utf\u00F6r Pack200-normalisering n\u00E4r ett nytt arkiv har skapats\n    -e  ange applikationsing\u00E5ngspunkt f\u00F6r frist\u00E5ende applikation \n        som medf\u00F6ljer i en jar-programfil\n    -0  lagra endast, anv\u00E4nd inte ZIP-komprimering\n    -P  beh\u00E5ll komponenter f\u00F6r inledande '/' (absolut s\u00F6kv\u00E4g) och ".." (\u00F6verordnad  katalog) fr\u00E5n filnamn\n    -M  skapa inte en manifestfil f\u00F6r posterna\n    -i  generera indexinformation f\u00F6r de angivna jar-filerna\n    -C  \u00E4ndra till den angivna katalogen och inkludera f\u00F6ljande fil\nOm en fil \u00E4r en katalog bearbetas den rekursivt.\nNamnen p\u00E5 manifestfilen, arkivfilen och ing\u00E5ngspunkten anges med samma\nordning som flaggorna 'm', 'f' och 'e'.\n\nExempel 1: arkivera tv\u00E5 klassfiler i ett arkiv med namnet classes.jar: \n       jar cvf classes.jar Foo.class Bar.class \nExempel 2: anv\u00E4nd den befintliga manifestfilen 'mymanifest' och arkivera alla\n           filer i katalogen 'foo/' till 'classes.jar': \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+
+main.usage.summary=jar: du m\u00E5ste ange ett av -ctxui-alternativen.
+main.usage.summary.try=F\u00F6rs\u00F6k med 'jar --help' f\u00F6r mer information.
+
+main.help.preopt=Syntax: jar [OPTION...] [-C dir] files ...\njar skapar ett arkiv f\u00F6r klasser och resurser och kan \u00E4ndra eller \n\u00E5terst\u00E4lla enskilda klasser och resurser i/fr\u00E5n ett arkiv.\n\n Exempel:\n # Skapa ett arkiv med namnet classes.jar med tv\u00E5 klassfiler:\n jar --create --file classes.jar Foo.class Bar.class\n # Skapa ett arkiv med ett befintligt manifest med alla filerna i foo/:\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # Skapa ett modul\u00E4rt jar-arkiv d\u00E4r moduldeskriptorn finns i\n # classes/module-info.class:\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # Uppdatera ett befintligt icke-modul\u00E4rt jar-arkiv till ett modul\u00E4rt jar-arkiv:\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class
+main.help.opt.main=\ Huvudfunktionsl\u00E4ge:\n
+main.help.opt.main.create=\  -c, --create               Skapa arkivet
+main.help.opt.main.generate-index=\  -i, --generate-index=FILE  Generera indexinformation f\u00F6r de angivna jar-\n                             arkiven
+main.help.opt.main.list=\  -t, --list                 Listar inneh\u00E5llsf\u00F6rteckningen f\u00F6r arkivet
+main.help.opt.main.update=\  -u, --update               Uppdatera ett befintligt jar-arkiv
+main.help.opt.main.extract=\  -x, --extract              Extrahera namngivna (eller alla) filer fr\u00E5n arkivet
+main.help.opt.main.print-module-descriptor=\  -p, --print-module-descriptor  Skriv ut moduldeskriptorn
+main.help.opt.any=\ \u00C5tg\u00E4rdsmodifierare som \u00E4r giltiga i alla l\u00E4gen:\n\n  -C DIR                     \u00C4ndra till den angivna katalogen och inkludera\n                             f\u00F6ljande fil
+main.help.opt.any.file=\  -f, --file=FILE            Arkivfilnamnet
+main.help.opt.any.verbose=\  -v, --verbose              Generera utf\u00F6rliga utdata till standardutdata
+main.help.opt.create.update=\ \u00C5tg\u00E4rdsmodifierare som endast \u00E4r giltiga i l\u00E4gena create och update:\n
+main.help.opt.create.update.main-class=\  -e, --main-class=CLASSNAME Applikationsing\u00E5ngspunkten f\u00F6r frist\u00E5ende\n                             applikationer paketerad i ett modul\u00E4rt, eller k\u00F6rbart,\n                             jar-arkiv
+main.help.opt.create.update.manifest=\  -m, --manifest=FILE        Inkludera manifestinformationen fr\u00E5n den angivna\n                             manifestfilen
+main.help.opt.create.update.no-manifest=\  -M, --no-manifest          Skapa inte en manifestfil f\u00F6r posterna
+main.help.opt.create.update.module-version=\      --module-version=VERSION    Modulversionen vid skapande av ett modul\u00E4rt\n                             jar-arkiv eller vid uppdatering av ett icke-modul\u00E4rt jar-arkiv
+main.help.opt.create.update.hash-dependencies=\      --hash-dependencies=PATTERN  Ber\u00E4kna och registrera hashningarna f\u00F6r\n                             modulberoenden som matchar det angivna m\u00F6nstret vid skapande\n                             att ett modul\u00E4rt jar-arkiv eller vid uppdatering av ett\n                             icke-modul\u00E4rt jar-arkiv
+main.help.opt.create.update.modulepath=\      --modulepath           Plats f\u00F6r modulberoende f\u00F6r att generera
+\                             hashningen
+main.help.opt.create.update.index=\ \u00C5tg\u00E4rdsmodifierare som endast \u00E4r giltiga i l\u00E4gena create, update och generate-index:\n
+main.help.opt.create.update.index.no-compress=\  -0, --no-compress          Endast lagring, anv\u00E4nd ingen ZIP-komprimering
+main.help.opt.other=\ \u00D6vriga alternativ:\n
+main.help.opt.other.help=\  -?, --help[:compat]        Visa den h\u00E4r hj\u00E4lpen eller kompatibilitetshj\u00E4lpen (valfritt)
+main.help.opt.other.version=\      --version              Skriv ut programversion
+main.help.postopt=\ Ett arkiv \u00E4r ett modul\u00E4rt jar-arkiv om en moduldeskriptor, 'module-info.class',\n finns i roten av de angivna katalogerna eller det angivna jar-arkivet.\n F\u00F6ljande \u00E5tg\u00E4rder \u00E4r endast giltiga vid skapande av ett modul\u00E4rt jar-arkiv och\n vid uppdatering av ett befintligt icke-modul\u00E4rt jar-arkiv: '--module-version',\n '--hash-dependencies' och '--modulepath'.\n\n Obligatoriska och valfria alternativ f\u00F6r l\u00E5nga alternativ \u00E4r \u00E4ven obligatoriska\n respektive valfria f\u00F6r alla motsvarande korta alternativ.
--- a/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_zh_CN.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_zh_CN.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,12 @@
 # questions.
 #
 
-error.cant.open=\u65E0\u6CD5\u6253\u5F00: {0} 
+error.multiple.main.operations=\u4E0D\u80FD\u6307\u5B9A\u591A\u4E2A '-cuxti' \u9009\u9879
+error.cant.open=\u65E0\u6CD5\u6253\u5F00: {0}
 error.illegal.option=\u975E\u6CD5\u9009\u9879: {0}
+error.unrecognized.option=\u65E0\u6CD5\u8BC6\u522B\u7684\u9009\u9879: {0}
+error.missing.arg=\u9009\u9879{0}\u9700\u8981\u53C2\u6570
+error.bad.file.arg=\u89E3\u6790\u6587\u4EF6\u53C2\u6570\u65F6\u51FA\u9519
 error.bad.option=\u5FC5\u987B\u6307\u5B9A {ctxu} \u4E2D\u7684\u4EFB\u4E00\u9009\u9879\u3002
 error.bad.cflag='c' \u6807\u8BB0\u8981\u6C42\u6307\u5B9A\u6E05\u5355\u6216\u8F93\u5165\u6587\u4EF6!
 error.bad.uflag='u' \u6807\u8BB0\u8981\u6C42\u6307\u5B9A\u6E05\u5355, 'e' \u6807\u8BB0\u6216\u8F93\u5165\u6587\u4EF6!
@@ -34,8 +38,15 @@
 error.create.dir={0}: \u65E0\u6CD5\u521B\u5EFA\u76EE\u5F55
 error.incorrect.length=\u5904\u7406\u65F6\u9047\u5230\u4E0D\u6B63\u786E\u7684\u957F\u5EA6: {0}
 error.create.tempfile=\u65E0\u6CD5\u521B\u5EFA\u4E34\u65F6\u6587\u4EF6
+error.hash.dep=\u6B63\u5728\u5BF9\u6A21\u5757 {0} \u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\u6267\u884C\u6563\u5217\u5904\u7406, \u5728\u6A21\u5757\u8DEF\u5F84\u4E2D\u627E\u4E0D\u5230\u6A21\u5757 {1}
+error.module.options.without.info=--module-version \u6216 --hash-dependencies \u4E4B\u4E00\u6CA1\u6709 module-info.class
+error.unexpected.module-info=\u610F\u5916\u7684\u6A21\u5757\u63CF\u8FF0\u7B26 {0}
+error.module.descriptor.not.found=\u627E\u4E0D\u5230\u6A21\u5757\u63CF\u8FF0\u7B26
+error.missing.provider=\u672A\u627E\u5230\u670D\u52A1\u63D0\u4F9B\u65B9: {0}
 out.added.manifest=\u5DF2\u6DFB\u52A0\u6E05\u5355
+out.added.module-info=\u5DF2\u6DFB\u52A0 module-info.class
 out.update.manifest=\u5DF2\u66F4\u65B0\u6E05\u5355
+out.update.module-info=\u5DF2\u66F4\u65B0 module-info.class
 out.ignore.entry=\u6B63\u5728\u5FFD\u7565\u6761\u76EE{0}
 out.adding=\u6B63\u5728\u6DFB\u52A0: {0}
 out.deflated=(\u538B\u7F29\u4E86 {0}%)
@@ -45,4 +56,33 @@
 out.inflated=\  \u5DF2\u89E3\u538B: {0}
 out.size=(\u8F93\u5165 = {0}) (\u8F93\u51FA = {1})
 
-usage=\u7528\u6CD5: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u9009\u9879:\n    -c  \u521B\u5EFA\u65B0\u6863\u6848\n    -t  \u5217\u51FA\u6863\u6848\u76EE\u5F55\n    -x  \u4ECE\u6863\u6848\u4E2D\u63D0\u53D6\u6307\u5B9A\u7684 (\u6216\u6240\u6709) \u6587\u4EF6\n    -u  \u66F4\u65B0\u73B0\u6709\u6863\u6848\n    -v  \u5728\u6807\u51C6\u8F93\u51FA\u4E2D\u751F\u6210\u8BE6\u7EC6\u8F93\u51FA\n    -f  \u6307\u5B9A\u6863\u6848\u6587\u4EF6\u540D\n    -m  \u5305\u542B\u6307\u5B9A\u6E05\u5355\u6587\u4EF6\u4E2D\u7684\u6E05\u5355\u4FE1\u606F\n    -n  \u521B\u5EFA\u65B0\u6863\u6848\u540E\u6267\u884C Pack200 \u89C4\u8303\u5316\n    -e  \u4E3A\u7ED1\u5B9A\u5230\u53EF\u6267\u884C jar \u6587\u4EF6\u7684\u72EC\u7ACB\u5E94\u7528\u7A0B\u5E8F\n        \u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u5165\u53E3\u70B9\n    -0  \u4EC5\u5B58\u50A8; \u4E0D\u4F7F\u7528\u4EFB\u4F55 ZIP \u538B\u7F29\n    -M  \u4E0D\u521B\u5EFA\u6761\u76EE\u7684\u6E05\u5355\u6587\u4EF6\n    -i  \u4E3A\u6307\u5B9A\u7684 jar \u6587\u4EF6\u751F\u6210\u7D22\u5F15\u4FE1\u606F\n    -C  \u66F4\u6539\u4E3A\u6307\u5B9A\u7684\u76EE\u5F55\u5E76\u5305\u542B\u4EE5\u4E0B\u6587\u4EF6\n\u5982\u679C\u4EFB\u4F55\u6587\u4EF6\u4E3A\u76EE\u5F55, \u5219\u5BF9\u5176\u8FDB\u884C\u9012\u5F52\u5904\u7406\u3002\n\u6E05\u5355\u6587\u4EF6\u540D, \u6863\u6848\u6587\u4EF6\u540D\u548C\u5165\u53E3\u70B9\u540D\u79F0\u7684\u6307\u5B9A\u987A\u5E8F\n\u4E0E 'm', 'f' \u548C 'e' \u6807\u8BB0\u7684\u6307\u5B9A\u987A\u5E8F\u76F8\u540C\u3002\n\n\u793A\u4F8B 1: \u5C06\u4E24\u4E2A\u7C7B\u6587\u4EF6\u5F52\u6863\u5230\u4E00\u4E2A\u540D\u4E3A classes.jar \u7684\u6863\u6848\u4E2D: \n       jar cvf classes.jar Foo.class Bar.class \n\u793A\u4F8B 2: \u4F7F\u7528\u73B0\u6709\u7684\u6E05\u5355\u6587\u4EF6 'mymanifest' \u5E76\n           \u5C06 foo/ \u76EE\u5F55\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u5F52\u6863\u5230 'classes.jar' \u4E2D: \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+usage.compat=\u517C\u5BB9\u6027\u63A5\u53E3:\n\u7528\u6CD5: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n\u9009\u9879:\n    -c  \u521B\u5EFA\u65B0\u6863\u6848\n    -t  \u5217\u51FA\u6863\u6848\u76EE\u5F55\n    -x  \u4ECE\u6863\u6848\u4E2D\u63D0\u53D6\u6307\u5B9A\u7684 (\u6216\u6240\u6709) \u6587\u4EF6\n    -u  \u66F4\u65B0\u73B0\u6709\u6863\u6848\n    -v  \u5728\u6807\u51C6\u8F93\u51FA\u4E2D\u751F\u6210\u8BE6\u7EC6\u8F93\u51FA\n    -f  \u6307\u5B9A\u6863\u6848\u6587\u4EF6\u540D\n    -m  \u5305\u542B\u6307\u5B9A\u6E05\u5355\u6587\u4EF6\u4E2D\u7684\u6E05\u5355\u4FE1\u606F\n    -n  \u521B\u5EFA\u65B0\u6863\u6848\u540E\u6267\u884C Pack200 \u89C4\u8303\u5316\n    -e  \u4E3A\u6346\u7ED1\u5230\u53EF\u6267\u884C jar \u6587\u4EF6\u7684\u72EC\u7ACB\u5E94\u7528\u7A0B\u5E8F\n        \u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u5165\u53E3\u70B9\n    -0  \u4EC5\u5B58\u50A8; \u4E0D\u4F7F\u7528 ZIP \u538B\u7F29\n    -P  \u4FDD\u7559\u6587\u4EF6\u540D\u4E2D\u7684\u524D\u5BFC '/' (\u7EDD\u5BF9\u8DEF\u5F84) \u548C ".." (\u7236\u76EE\u5F55) \u7EC4\u4EF6\n    -M  \u4E0D\u521B\u5EFA\u6761\u76EE\u7684\u6E05\u5355\u6587\u4EF6\n    -i  \u4E3A\u6307\u5B9A\u7684 jar \u6587\u4EF6\u751F\u6210\u7D22\u5F15\u4FE1\u606F\n    -C  \u66F4\u6539\u4E3A\u6307\u5B9A\u7684\u76EE\u5F55\u5E76\u5305\u542B\u4EE5\u4E0B\u6587\u4EF6\n\u5982\u679C\u4EFB\u4F55\u6587\u4EF6\u4E3A\u76EE\u5F55, \u5219\u5BF9\u5176\u8FDB\u884C\u9012\u5F52\u5904\u7406\u3002\n\u6E05\u5355\u6587\u4EF6\u540D, \u6863\u6848\u6587\u4EF6\u540D\u548C\u5165\u53E3\u70B9\u540D\u79F0\u7684\u6307\u5B9A\u987A\u5E8F\n\u4E0E 'm', 'f' \u548C 'e' \u6807\u8BB0\u7684\u6307\u5B9A\u987A\u5E8F\u76F8\u540C\u3002\n\n\u793A\u4F8B 1: \u5C06\u4E24\u4E2A\u7C7B\u6587\u4EF6\u5F52\u6863\u5230\u4E00\u4E2A\u540D\u4E3A classes.jar \u7684\u6863\u6848\u4E2D: \n       jar cvf classes.jar Foo.class Bar.class \n\u793A\u4F8B 2: \u4F7F\u7528\u73B0\u6709\u7684\u6E05\u5355\u6587\u4EF6 'mymanifest' \u5E76\n           \u5C06 foo/ \u76EE\u5F55\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u5F52\u6863\u5230 'classes.jar' \u4E2D: \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+
+main.usage.summary=jar: \u5FC5\u987B\u6307\u5B9A\u5176\u4E2D\u4E00\u4E2A -ctxui \u9009\u9879\u3002
+main.usage.summary.try=\u5C1D\u8BD5\u4F7F\u7528 `jar --help' \u83B7\u53D6\u8BE6\u7EC6\u4FE1\u606F\u3002
+
+main.help.preopt=\u7528\u6CD5: jar [OPTION...] [-C dir] files ...\njar \u521B\u5EFA\u7C7B\u548C\u8D44\u6E90\u7684\u6863\u6848, \u5E76\u4E14\u53EF\u4EE5\u5904\u7406\u6863\u6848\u4E2D\u7684\n\u5355\u4E2A\u7C7B\u6216\u8D44\u6E90\u6216\u8005\u4ECE\u6863\u6848\u4E2D\u8FD8\u539F\u5355\u4E2A\u7C7B\u6216\u8D44\u6E90\u3002\n\n \u793A\u4F8B:\n # \u521B\u5EFA\u5305\u542B\u4E24\u4E2A\u7C7B\u6587\u4EF6\u7684\u540D\u4E3A classes.jar \u7684\u6863\u6848:\n jar --create --file classes.jar Foo.class Bar.class\n # \u4F7F\u7528\u73B0\u6709\u7684\u6E05\u5355\u521B\u5EFA\u6863\u6848, \u5176\u4E2D\u5305\u542B foo/ \u4E2D\u7684\u6240\u6709\u6587\u4EF6:\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # \u521B\u5EFA\u6A21\u5757\u5316 jar \u6863\u6848, \u5176\u4E2D\u6A21\u5757\u63CF\u8FF0\u7B26\u4F4D\u4E8E\n # classes/module-info.class:\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # \u5C06\u73B0\u6709\u7684\u975E\u6A21\u5757\u5316 jar \u66F4\u65B0\u4E3A\u6A21\u5757\u5316 jar:\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class
+main.help.opt.main=\ \u4E3B\u64CD\u4F5C\u6A21\u5F0F:\n
+main.help.opt.main.create=\  -c, --create               \u521B\u5EFA\u6863\u6848
+main.help.opt.main.generate-index=\  -i, --generate-index=FILE  \u4E3A\u6307\u5B9A\u7684 jar \u6863\u6848\u751F\u6210\n                             \u7D22\u5F15\u4FE1\u606F
+main.help.opt.main.list=\  -t, --list                 \u5217\u51FA\u6863\u6848\u7684\u76EE\u5F55
+main.help.opt.main.update=\  -u, --update               \u66F4\u65B0\u73B0\u6709 jar \u6863\u6848
+main.help.opt.main.extract=\  -x, --extract              \u4ECE\u6863\u6848\u4E2D\u63D0\u53D6\u6307\u5B9A\u7684 (\u6216\u5168\u90E8) \u6587\u4EF6
+main.help.opt.main.print-module-descriptor=\  -p, --print-module-descriptor  \u8F93\u51FA\u6A21\u5757\u63CF\u8FF0\u7B26
+main.help.opt.any=\ \u5728\u4EFB\u610F\u6A21\u5F0F\u4E0B\u6709\u6548\u7684\u64CD\u4F5C\u4FEE\u9970\u7B26:\n\n  -C DIR                     \u66F4\u6539\u4E3A\u6307\u5B9A\u7684\u76EE\u5F55\u5E76\u5305\u542B\n                             \u4EE5\u4E0B\u6587\u4EF6
+main.help.opt.any.file=\  -f, --file=FILE            \u6863\u6848\u6587\u4EF6\u540D
+main.help.opt.any.verbose=\  -v, --verbose              \u5728\u6807\u51C6\u8F93\u51FA\u4E2D\u751F\u6210\u8BE6\u7EC6\u8F93\u51FA
+main.help.opt.create.update=\ \u5728\u521B\u5EFA\u548C\u66F4\u65B0\u6A21\u5F0F\u4E0B\u6709\u6548\u7684\u64CD\u4F5C\u4FEE\u9970\u7B26:\n
+main.help.opt.create.update.main-class=\  -e, --main-class=CLASSNAME \u6346\u7ED1\u5230\u6A21\u5757\u5316\u6216\u53EF\u6267\u884C \n                             jar \u6863\u6848\u7684\u72EC\u7ACB\u5E94\u7528\u7A0B\u5E8F\n                             \u7684\u5E94\u7528\u7A0B\u5E8F\u5165\u53E3\u70B9
+main.help.opt.create.update.manifest=\  -m, --manifest=FILE        \u5305\u542B\u6307\u5B9A\u6E05\u5355\u6587\u4EF6\u4E2D\u7684\n                             \u6E05\u5355\u4FE1\u606F
+main.help.opt.create.update.no-manifest=\  -M, --no-manifest          \u4E0D\u4E3A\u6761\u76EE\u521B\u5EFA\u6E05\u5355\u6587\u4EF6
+main.help.opt.create.update.module-version=\      --module-version=VERSION    \u521B\u5EFA\u6A21\u5757\u5316 jar \u6216\u66F4\u65B0\n                             \u975E\u6A21\u5757\u5316 jar \u65F6\u7684\u6A21\u5757\u7248\u672C
+main.help.opt.create.update.hash-dependencies=\      --hash-dependencies=PATTERN  \u521B\u5EFA\u6A21\u5757\u5316 jar \u6216\u66F4\u65B0\n                             \u975E\u6A21\u5757\u5316 jar \u65F6\u8BA1\u7B97\u548C\u8BB0\u5F55\n                             \u6309\u6307\u5B9A\u6A21\u5F0F\u5339\u914D\u7684\u6A21\u5757\u88AB\u4F9D\u8D56\n                             \u5BF9\u8C61\u7684\u6563\u5217
+main.help.opt.create.update.modulepath=\      --modulepath           \u6A21\u5757\u88AB\u4F9D\u8D56\u5BF9\u8C61\u7684\u4F4D\u7F6E, \u7528\u4E8E\u751F\u6210
+\                             \u6563\u5217
+main.help.opt.create.update.index=\ \u53EA\u5728\u521B\u5EFA, \u66F4\u65B0\u548C\u751F\u6210\u7D22\u5F15\u6A21\u5F0F\u4E0B\u6709\u6548\u7684\u64CD\u4F5C\u4FEE\u9970\u7B26:\n
+main.help.opt.create.update.index.no-compress=\  -0, --no-compress          \u4EC5\u5B58\u50A8; \u4E0D\u4F7F\u7528 ZIP \u538B\u7F29
+main.help.opt.other=\ \u5176\u4ED6\u9009\u9879:\n
+main.help.opt.other.help=\  -?, --help[:compat]        \u63D0\u4F9B\u6B64\u5E2E\u52A9, \u4E5F\u53EF\u4EE5\u9009\u62E9\u6027\u5730\u63D0\u4F9B\u517C\u5BB9\u6027\u5E2E\u52A9
+main.help.opt.other.version=\      --version              \u8F93\u51FA\u7A0B\u5E8F\u7248\u672C
+main.help.postopt=\ \u5982\u679C\u6A21\u5757\u63CF\u8FF0\u7B26 'module-info.class' \u4F4D\u4E8E\u6307\u5B9A\u76EE\u5F55\u7684\n \u6839\u76EE\u5F55\u4E2D, \u6216\u8005\u4F4D\u4E8E jar \u6863\u6848\u672C\u8EAB\u7684\u6839\u76EE\u5F55\u4E2D, \u5219\n \u8BE5\u6863\u6848\u662F\u4E00\u4E2A\u6A21\u5757\u5316 jar\u3002\u4EE5\u4E0B\u64CD\u4F5C\u53EA\u5728\u521B\u5EFA\u6A21\u5757\u5316 jar\n \u6216\u66F4\u65B0\u73B0\u6709\u7684\u975E\u6A21\u5757\u5316 jar \u65F6\u6709\u6548: '--module-version',\n '--hash-dependencies' \u548C '--modulepath'\u3002\n\n \u5982\u679C\u4E3A\u957F\u9009\u9879\u63D0\u4F9B\u4E86\u5FC5\u9700\u53C2\u6570\u6216\u53EF\u9009\u53C2\u6570, \u5219\u5B83\u4EEC\u5BF9\u4E8E\n \u4EFB\u4F55\u5BF9\u5E94\u7684\u77ED\u9009\u9879\u4E5F\u662F\u5FC5\u9700\u6216\u53EF\u9009\u7684\u3002
--- a/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_zh_TW.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jartool/share/classes/sun/tools/jar/resources/jar_zh_TW.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -23,8 +23,12 @@
 # questions.
 #
 
-error.cant.open=\u7121\u6CD5\u958B\u555F: {0} 
+error.multiple.main.operations=\u60A8\u4E0D\u80FD\u6307\u5B9A\u591A\u500B '-cuxti' \u9078\u9805
+error.cant.open=\u7121\u6CD5\u958B\u555F: {0}
 error.illegal.option=\u7121\u6548\u7684\u9078\u9805: {0}
+error.unrecognized.option=\u7121\u6CD5\u8FA8\u8B58\u7684\u9078\u9805 : {0}
+error.missing.arg=\u9078\u9805 {0} \u9700\u8981\u4E00\u500B\u5F15\u6578
+error.bad.file.arg=\u5256\u6790\u6A94\u6848\u5F15\u6578\u6642\u767C\u751F\u932F\u8AA4
 error.bad.option=\u5176\u4E2D\u4E00\u500B\u9078\u9805 -{ctxu} \u5FC5\u9808\u52A0\u4EE5\u6307\u5B9A\u3002
 error.bad.cflag='c' \u65D7\u6A19\u8981\u6C42\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u6216\u8F38\u5165\u6A94\u6848\uFF01
 error.bad.uflag='u' \u65D7\u6A19\u8981\u6C42\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u3001'e' \u65D7\u6A19\u6216\u8F38\u5165\u6A94\u6848\uFF01
@@ -34,8 +38,15 @@
 error.create.dir={0} : \u7121\u6CD5\u5EFA\u7ACB\u76EE\u9304
 error.incorrect.length=\u8655\u7406 {0} \u6642\u9577\u5EA6\u4E0D\u6B63\u78BA
 error.create.tempfile=\u7121\u6CD5\u5EFA\u7ACB\u66AB\u5B58\u6A94\u6848
+error.hash.dep=\u96DC\u6E4A\u6A21\u7D44 {0} \u76F8\u4F9D\u6027\uFF0C\u5728\u6A21\u7D44\u8DEF\u5F91\u4E0A\u627E\u4E0D\u5230\u6A21\u7D44 {1}
+error.module.options.without.info=--module-version \u6216 --hash-dependencies \u5176\u4E2D\u4E00\u500B\u6C92\u6709 module-info.class
+error.unexpected.module-info=\u672A\u9810\u671F\u7684\u6A21\u7D44\u63CF\u8FF0\u5340 {0}
+error.module.descriptor.not.found=\u627E\u4E0D\u5230\u6A21\u7D44\u63CF\u8FF0\u5340
+error.missing.provider=\u627E\u4E0D\u5230\u670D\u52D9\u63D0\u4F9B\u8005: {0}
 out.added.manifest=\u5DF2\u65B0\u589E\u8CC7\u8A0A\u6E05\u55AE
+out.added.module-info=\u5DF2\u65B0\u589E module-info.class
 out.update.manifest=\u5DF2\u66F4\u65B0\u8CC7\u8A0A\u6E05\u55AE
+out.update.module-info=\u5DF2\u66F4\u65B0 module-info.class
 out.ignore.entry=\u5FFD\u7565\u9805\u76EE {0}
 out.adding=\u65B0\u589E: {0}
 out.deflated=(\u58D3\u7E2E {0}%)
@@ -45,4 +56,33 @@
 out.inflated=\ \u64F4\u5C55: {0}
 out.size=\ (\u8B80={0})(\u5BEB={1})
 
-usage=\u7528\u6CD5: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] \u6A94\u6848 ...\n\u9078\u9805:\n    -c  \u5EFA\u7ACB\u65B0\u7684\u6B78\u6A94\n    -t  \u5217\u51FA\u6B78\u6A94\u7684\u76EE\u9304\n    -x  \u5F9E\u6B78\u6A94\u4E2D\u64F7\u53D6\u5DF2\u547D\u540D\u7684 (\u6216\u6240\u6709) \u6A94\u6848\n    -u  \u66F4\u65B0\u73FE\u6709\u6B78\u6A94\n    -v  \u5728\u6A19\u6E96\u8F38\u51FA\u4E2D\u7522\u751F\u8A73\u7D30\u8F38\u51FA\n    -f  \u6307\u5B9A\u6B78\u6A94\u6A94\u6848\u540D\u7A31\n    -m  \u5305\u542B\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u4E2D\u7684\u8CC7\u8A0A\u6E05\u55AE\u8CC7\u8A0A\n    -n  \u5728\u5EFA\u7ACB\u65B0\u6B78\u6A94\u4E4B\u5F8C\u57F7\u884C Pack200 \u6B63\u898F\u5316\n    -e  \u70BA\u5DF2\u96A8\u9644\u65BC\u53EF\u57F7\u884C jar \u6A94\u6848\u4E2D\u7684\u7368\u7ACB\u61C9\u7528\u7A0B\u5F0F\n        \u6307\u5B9A\u61C9\u7528\u7A0B\u5F0F\u9032\u5165\u9EDE\n    -0  \u50C5\u5132\u5B58; \u4E0D\u4F7F\u7528 ZIP \u58D3\u7E2E\u65B9\u5F0F\n    -M  \u4E0D\u70BA\u9805\u76EE\u5EFA\u7ACB\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848\n    -i  \u70BA\u6307\u5B9A\u7684 jar \u6A94\u6848\u7522\u751F\u7D22\u5F15\u8CC7\u8A0A\n    -C  \u8B8A\u66F4\u81F3\u6307\u5B9A\u76EE\u9304\u4E26\u5305\u542B\u5F8C\u9762\u6240\u5217\u7684\u6A94\u6848\n\u5982\u679C\u6709\u4EFB\u4F55\u6A94\u6848\u662F\u76EE\u9304\uFF0C\u5247\u6703\u5C0D\u5176\u9032\u884C\u905E\u8FF4\u8655\u7406\u3002\n\u6E05\u55AE\u6A94\u6848\u540D\u7A31\u3001\u6B78\u6A94\u6A94\u6848\u540D\u7A31\u548C\u9032\u5165\u9EDE\u540D\u7A31\n\u7684\u6307\u5B9A\u9806\u5E8F\u8207\u6307\u5B9A 'm' \u65D7\u6A19\u3001'f' \u65D7\u6A19\u548C 'e' \u65D7\u6A19\u7684\u9806\u5E8F\u76F8\u540C\u3002\n\n\u7BC4\u4F8B 1: \u5C07\u5169\u500B\u985E\u5225\u6A94\u6848\u6B78\u6A94\u81F3\u540D\u70BA classes.jar \u7684\u6B78\u6A94\u4E2D: \n       jar cvf classes.jar Foo.class Bar.class\n\u7BC4\u4F8B 2: \u4F7F\u7528\u73FE\u6709\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848 'mymanifest' \u4E26\u5C07\n           foo/ \u76EE\u9304\u4E2D\u7684\u6240\u6709\u6A94\u6848\u6B78\u6A94\u81F3 'classes.jar' \u4E2D: \n       jar cvfm classes.jar mymanifest -C foo/ .\n
+usage.compat=\u76F8\u5BB9\u6027\u4ECB\u9762:\n\u7528\u6CD5: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] \u6A94\u6848 ...\n\u9078\u9805:\n    -c  \u5EFA\u7ACB\u65B0\u5B58\u6A94\n    -t  \u5217\u51FA\u5B58\u6A94\u7684\u76EE\u9304\n    -x  \u5F9E\u5B58\u6A94\u4E2D\u64F7\u53D6\u6307\u5B9A (\u6216\u6240\u6709) \u6A94\u6848\n    -u  \u66F4\u65B0\u73FE\u6709\u5B58\u6A94\n    -v  \u5728\u6A19\u6E96\u8F38\u51FA\u4E2D\u7522\u751F\u8A73\u7D30\u8F38\u51FA\n    -f  \u6307\u5B9A\u5B58\u6A94\u6A94\u6848\u540D\u7A31\n    -m  \u5305\u542B\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848\u4E2D\u7684\u8CC7\u8A0A\u6E05\u55AE\u8CC7\u8A0A\n    -n  \u5728\u5EFA\u7ACB\u65B0\u5B58\u6A94\u4E4B\u5F8C\u57F7\u884C Pack200 \u6B63\u898F\u5316\n    -e  \u70BA\u5DF2\u96A8\u9644\u65BC\u53EF\u57F7\u884C jar \u6A94\u6848\u4E2D\u7684\u7368\u7ACB\u61C9\u7528\u7A0B\u5F0F \n        \u6307\u5B9A\u61C9\u7528\u7A0B\u5F0F\u9032\u5165\u9EDE\n    -0  \u50C5\u5132\u5B58; \u4E0D\u4F7F\u7528 ZIP \u58D3\u7E2E\u65B9\u5F0F\n    -P  \u4FDD\u7559\u6A94\u6848\u540D\u7A31\u524D\u9762\u7684 '/' (\u7D55\u5C0D\u8DEF\u5F91) \u548C ".." (\u4E0A\u5C64\u76EE\u9304) \u5143\u4EF6\n    -M  \u4E0D\u70BA\u9805\u76EE\u5EFA\u7ACB\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848\n    -i  \u70BA\u6307\u5B9A\u7684 jar \u6A94\u6848\u7522\u751F\u7D22\u5F15\u8CC7\u8A0A\n    -C  \u8B8A\u66F4\u81F3\u6307\u5B9A\u76EE\u9304\u4E26\u5305\u542B\u5F8C\u9762\u6240\u5217\u7684\u6A94\u6848\n\u5982\u679C\u6709\u4EFB\u4F55\u6A94\u6848\u662F\u76EE\u9304\uFF0C\u5247\u6703\u5C0D\u5176\u9032\u884C\u905E\u8FF4\u8655\u7406\u3002\n\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848\u540D\u7A31\u3001\u5B58\u6A94\u6A94\u6848\u540D\u7A31\u548C\u9032\u5165\u9EDE\u540D\u7A31\n\u7684\u6307\u5B9A\u9806\u5E8F\u8207\u6307\u5B9A 'm' \u65D7\u6A19\u3001'f' \u65D7\u6A19\u548C 'e' \u65D7\u6A19\u7684\u9806\u5E8F\u76F8\u540C\u3002\n\n\u7BC4\u4F8B 1:  \u5C07\u5169\u500B\u985E\u5225\u6A94\u6848\u5B58\u6A94\u81F3\u540D\u70BA classes.jar \u7684\u5B58\u6A94\u4E2D: \n       jar cvf classes.jar Foo.class Bar.class \n\u7BC4\u4F8B 2: \u4F7F\u7528\u73FE\u6709\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848 'mymanifest' \u4E26\u5C07\n           foo/ \u76EE\u9304\u4E2D\u7684\u6240\u6709\u6A94\u6848\u5B58\u6A94\u81F3 'classes.jar' \u4E2D: \n       jar cvfm classes.jar mymanifest -C foo/\u3002\n
+
+main.usage.summary=jar: \u60A8\u5FC5\u9808\u6307\u5B9A\u5176\u4E2D\u4E00\u500B -ctxui \u9078\u9805\u3002
+main.usage.summary.try=\u8ACB\u4F7F\u7528 'jar --help' \u4EE5\u53D6\u5F97\u66F4\u591A\u7684\u8CC7\u8A0A\u3002
+
+main.help.preopt=\u7528\u6CD5: jar [OPTION...] [-C dir] \u6A94\u6848 ...\njar \u6703\u5EFA\u7ACB\u985E\u5225\u548C\u8CC7\u6E90\u7684\u5B58\u6A94\uFF0C\u4E26\u53EF\u64CD\u63A7\u6216\n\u56DE\u5FA9\u5B58\u6A94\u4E2D\u7684\u500B\u5225\u985E\u5225\u6216\u8CC7\u6E90\u3002\n\n \u7BC4\u4F8B:\n # \u4F7F\u7528\u5169\u500B\u985E\u5225\u6A94\u6848\u5EFA\u7ACB\u540D\u70BA classes.jar \u7684\u5B58\u6A94:\n jar --create --file classes.jar Foo.class Bar.class\n # \u4F7F\u7528\u73FE\u6709\u7684\u8CC7\u8A0A\u6E05\u55AE\u548C foo/ \u4E2D\u7684\u6240\u6709\u6A94\u6848\u5EFA\u7ACB\u5B58\u6A94:\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # \u5EFA\u7ACB\u6A21\u7D44\u5316 jar \u5B58\u6A94\uFF0C\u5176\u4E2D\u7684\u6A21\u7D44\u6558\u8FF0\u5340\u4F4D\u65BC\n # classes/module-info.class:\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # \u5C07\u73FE\u6709\u7684\u975E\u6A21\u7D44\u5316 jar \u66F4\u65B0\u70BA\u6A21\u7D44\u5316 jar:\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class
+main.help.opt.main=\ \u4E3B\u8981\u4F5C\u696D\u6A21\u5F0F:\n
+main.help.opt.main.create=\  -c, --create               \u5EFA\u7ACB\u5B58\u6A94
+main.help.opt.main.generate-index=\  -i, --generate-index=FILE  \u70BA\u6307\u5B9A\u7684 jar \u5B58\u6A94\u7522\u751F\u7D22\u5F15\n                             \u8CC7\u8A0A
+main.help.opt.main.list=\  -t, --list                 \u5217\u51FA\u5B58\u6A94\u7684\u76EE\u9304
+main.help.opt.main.update=\  -u, --update               \u66F4\u65B0\u73FE\u6709\u7684 jar \u5B58\u6A94
+main.help.opt.main.extract=\  -x, --extract              \u5F9E\u5B58\u6A94\u4E2D\u64F7\u53D6\u6307\u5B9A (\u6216\u6240\u6709) \u6A94\u6848
+main.help.opt.main.print-module-descriptor=\  -p, --print-module-descriptor  \u5217\u5370\u6A21\u7D44\u63CF\u8FF0\u5340
+main.help.opt.any=\ \u53EF\u5728\u4EFB\u4F55\u6A21\u5F0F\u4E0B\u4F7F\u7528\u7684\u4F5C\u696D\u4FEE\u98FE\u689D\u4EF6:\n\n  -C DIR                     \u8B8A\u66F4\u70BA\u6307\u5B9A\u76EE\u9304\u4E26\u5305\u542B\n                             \u4E0B\u5217\u6A94\u6848
+main.help.opt.any.file=\  -f, --file=FILE            \u5B58\u6A94\u6A94\u6848\u540D\u7A31
+main.help.opt.any.verbose=\  -v, --verbose              \u5728\u6A19\u6E96\u8F38\u51FA\u4E2D\u7522\u751F\u8A73\u7D30\u8F38\u51FA
+main.help.opt.create.update=\ \u53EA\u80FD\u5728\u5EFA\u7ACB\u548C\u66F4\u65B0\u6A21\u5F0F\u4E0B\u4F7F\u7528\u7684\u4F5C\u696D\u4FEE\u98FE\u689D\u4EF6:\n
+main.help.opt.create.update.main-class=\  -e, --main-class=CLASSNAME \u96A8\u9644\u65BC\u6A21\u7D44\u5316\u6216\u53EF\u57F7\u884C\n                             jar \u5B58\u6A94\u4E2D\u7368\u7ACB\u61C9\u7528\u7A0B\u5F0F\u7684\n                             \u61C9\u7528\u7A0B\u5F0F\u9032\u5165\u9EDE
+main.help.opt.create.update.manifest=\  -m, --manifest=FILE        \u5305\u542B\u6307\u5B9A\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848\u4E2D\u7684\u8CC7\u8A0A\u6E05\u55AE\n                             \u8CC7\u8A0A
+main.help.opt.create.update.no-manifest=\  -M, --no-manifest          \u4E0D\u70BA\u9805\u76EE\u5EFA\u7ACB\u8CC7\u8A0A\u6E05\u55AE\u6A94\u6848
+main.help.opt.create.update.module-version=\      --module-version=VERSION    \u5EFA\u7ACB\u6A21\u7D44\u5316 jar \u6216\u66F4\u65B0\u975E\u6A21\u7D44\u5316 jar \u6642\n                             \u4F7F\u7528\u7684\u6A21\u7D44\u7248\u672C
+main.help.opt.create.update.hash-dependencies=\      --hash-dependencies=PATTERN  \u5EFA\u7ACB\u6A21\u7D44\u5316 jar \u6216\u66F4\u65B0\n                             \u975E\u6A21\u7D44\u5316 jar \u6642\uFF0C\u904B\u7B97\u53CA\u8A18\u9304\n                             \u8207\u6307\u5B9A\u6A23\u5F0F\u76F8\u7B26\u7684\u6A21\u7D44\u76F8\u4F9D\u6027\n                             \u96DC\u6E4A
+main.help.opt.create.update.modulepath=\      --modulepath           \u6A21\u7D44\u76F8\u4F9D\u6027\u7684\u4F4D\u7F6E\uFF0C\u7528\u65BC\u7522\u751F
+\                             \u96DC\u6E4A
+main.help.opt.create.update.index=\ \u53EA\u80FD\u5728\u5EFA\u7ACB\u3001\u66F4\u65B0\u53CA\u7522\u751F\u7D22\u5F15\u6A21\u5F0F\u4E0B\u4F7F\u7528\u7684\u4F5C\u696D\u4FEE\u98FE\u689D\u4EF6:\n
+main.help.opt.create.update.index.no-compress=\  -0, --no-compress          \u50C5\u5132\u5B58; \u4E0D\u4F7F\u7528 ZIP \u58D3\u7E2E\u65B9\u5F0F
+main.help.opt.other=\ \u5176\u4ED6\u9078\u9805:\n
+main.help.opt.other.help=\  -?, --help[:compat]        \u63D0\u4F9B\u6B64\u8AAA\u660E\u6216\u9078\u64C7\u6027\u986F\u793A\u76F8\u5BB9\u6027\u8AAA\u660E
+main.help.opt.other.version=\      --version              \u5217\u5370\u7A0B\u5F0F\u7248\u672C
+main.help.postopt=\ \u5982\u679C\u6A21\u7D44\u63CF\u8FF0\u5340 ('module-info.class') \u4F4D\u65BC\u6307\u5B9A\u76EE\u9304\u7684\u6839\n \u6216 jar \u5B58\u6A94\u672C\u8EAB\u7684\u6839\uFF0C\u5247\u5B58\u6A94\u6703\u662F\n \u6A21\u7D44\u5316\u7684 jar\u3002\u4E0B\u5217\u4F5C\u696D\u53EA\u80FD\u5728\u5EFA\u7ACB\u6A21\u7D44\u5316 jar \u6216\u66F4\u65B0\n \u73FE\u6709\u975E\u6A21\u7D44\u5316 jar \u6642\u9032\u884C: '--module-version'\u3001\n '--hash-dependencies' \u548C '--modulepath'\u3002\n\n \u9577\u9078\u9805\u7684\u5F37\u5236\u6027\u6216\u9078\u64C7\u6027\u5F15\u6578\u4E5F\u6703\u662F\u4EFB\u4F55\u5C0D\u61C9\u77ED\u9078\u9805\u7684\n \u5F37\u5236\u6027\u6216\u9078\u64C7\u6027\u5F15\u6578\u3002
--- a/jdk/src/jdk.jcmd/share/classes/sun/tools/common/ProcessArgumentMatcher.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jcmd/share/classes/sun/tools/common/ProcessArgumentMatcher.java	Wed Jul 05 21:51:13 2017 +0200
@@ -25,6 +25,7 @@
 
 package sun.tools.common;
 
+import java.lang.reflect.Module;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -45,13 +46,10 @@
  * the process identifiers.
  */
 public class ProcessArgumentMatcher {
-    private String excludeCls;
-    private String matchClass = null;
-    private String singlePid = null;
-    private boolean matchAll = false;
+    private String matchClass;
+    private String singlePid;
 
-    public ProcessArgumentMatcher(String pidArg, Class<?> excludeClass) {
-        excludeCls = excludeClass.getName();
+    public ProcessArgumentMatcher(String pidArg) {
         if (pidArg == null || pidArg.isEmpty()) {
             throw new IllegalArgumentException("Pid string is invalid");
         }
@@ -60,9 +58,7 @@
         }
         try {
             long pid = Long.parseLong(pidArg);
-            if (pid == 0) {
-                matchAll = true;
-            } else {
+            if (pid != 0) {
                 singlePid = String.valueOf(pid);
             }
         } catch (NumberFormatException nfe) {
@@ -70,7 +66,18 @@
         }
     }
 
-    private boolean check(VirtualMachineDescriptor vmd) {
+    private static String getExcludeStringFrom(Class<?> excludeClass) {
+        if (excludeClass == null) {
+            return "";
+        }
+        Module m = excludeClass.getModule();
+        if (m.isNamed()) {
+            return m.getName() + "/" + excludeClass.getName();
+        }
+        return excludeClass.getName();
+    }
+
+    private static boolean check(VirtualMachineDescriptor vmd, String excludeClass, String partialMatch) {
         String mainClass = null;
         try {
             VmIdentifier vmId = new VmIdentifier(vmd.id());
@@ -87,42 +94,55 @@
             // Handle this gracefully....
             return false;
         } catch (MonitorException | URISyntaxException e) {
-            if (e.getMessage() != null) {
-                System.err.println(e.getMessage());
-            } else {
-                Throwable cause = e.getCause();
-                if ((cause != null) && (cause.getMessage() != null)) {
-                    System.err.println(cause.getMessage());
-                } else {
-                    e.printStackTrace();
-                }
-            }
             return false;
         }
 
-        if (mainClass.equals(excludeCls)) {
+        if (excludeClass != null && mainClass.equals(excludeClass)) {
+            return false;
+        }
+
+        if (partialMatch != null && mainClass.indexOf(partialMatch) == -1) {
             return false;
         }
 
-        if (matchAll || mainClass.indexOf(matchClass) != -1) {
-            return true;
+        return true;
+    }
+
+    private static Collection<VirtualMachineDescriptor> getSingleVMD(String pid) {
+        Collection<VirtualMachineDescriptor> vids = new ArrayList<>();
+        List<VirtualMachineDescriptor> vmds = VirtualMachine.list();
+        for (VirtualMachineDescriptor vmd : vmds) {
+            if (check(vmd, null, null)) {
+                if (pid.equals(vmd.id())) {
+                    vids.add(vmd);
+                }
+            }
         }
-
-        return false;
+        return vids;
     }
 
-    public Collection<String> getPids() {
-        Collection<String> pids = new ArrayList<>();
-        if (singlePid != null) {
-            pids.add(singlePid);
-            return pids;
-        }
+    private static Collection<VirtualMachineDescriptor> getVMDs(Class<?> excludeClass, String partialMatch) {
+        String excludeCls = getExcludeStringFrom(excludeClass);
+        Collection<VirtualMachineDescriptor> vids = new ArrayList<>();
         List<VirtualMachineDescriptor> vmds = VirtualMachine.list();
         for (VirtualMachineDescriptor vmd : vmds) {
-            if (check(vmd)) {
-                pids.add(vmd.id());
+            if (check(vmd, excludeCls, partialMatch)) {
+                vids.add(vmd);
             }
         }
-        return pids;
+        return vids;
     }
+
+    public Collection<VirtualMachineDescriptor> getVirtualMachineDescriptors(Class<?> excludeClass) {
+        if (singlePid != null) {
+            return getSingleVMD(singlePid);
+        } else {
+            return getVMDs(excludeClass, matchClass);
+        }
+    }
+
+    public Collection<VirtualMachineDescriptor> getVirtualMachineDescriptors() {
+        return this.getVirtualMachineDescriptors(null);
+    }
+
 }
--- a/jdk/src/jdk.jcmd/share/classes/sun/tools/jcmd/Arguments.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jcmd/share/classes/sun/tools/jcmd/Arguments.java	Wed Jul 05 21:51:13 2017 +0200
@@ -45,6 +45,8 @@
     public Arguments(String[] args) {
         if (args.length == 0 || args[0].equals("-l")) {
             listProcesses = true;
+            /* list all processes */
+            processString = "0";
             return;
         }
 
--- a/jdk/src/jdk.jcmd/share/classes/sun/tools/jcmd/JCmd.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jcmd/share/classes/sun/tools/jcmd/JCmd.java	Wed Jul 05 21:51:13 2017 +0200
@@ -65,36 +65,37 @@
             System.exit(1);
         }
 
+        ProcessArgumentMatcher ap = null;
+        try {
+            ap = new ProcessArgumentMatcher(arg.getProcessString());
+        } catch (IllegalArgumentException iae) {
+            System.err.println("Invalid pid '" + arg.getProcessString()  + "' specified");
+            System.exit(1);
+        }
+
         if (arg.isListProcesses()) {
-            List<VirtualMachineDescriptor> vmds = VirtualMachine.list();
-            for (VirtualMachineDescriptor vmd : vmds) {
+            for (VirtualMachineDescriptor vmd : ap.getVirtualMachineDescriptors(/* include jcmd in listing */)) {
                 System.out.println(vmd.id() + " " + vmd.displayName());
             }
             System.exit(0);
         }
 
-        Collection<String> pids = Collections.emptyList();
-        try {
-            ProcessArgumentMatcher ap = new ProcessArgumentMatcher(arg.getProcessString(), JCmd.class);
-            pids = ap.getPids();
-        } catch (IllegalArgumentException iae) {
-            System.err.println("Invalid pid specified");
-            System.exit(1);
-        }
-        if (pids.isEmpty()) {
+        Collection<VirtualMachineDescriptor> vids = ap.getVirtualMachineDescriptors(JCmd.class);
+
+        if (vids.isEmpty()) {
             System.err.println("Could not find any processes matching : '"
                                + arg.getProcessString() + "'");
             System.exit(1);
         }
 
         boolean success = true;
-        for (String pid : pids) {
-            System.out.println(pid + ":");
+        for (VirtualMachineDescriptor vid : vids) {
+            System.out.println(vid.id() + ":");
             if (arg.isListCounters()) {
-                listCounters(pid);
+                listCounters(vid.id());
             } else {
                 try {
-                    executeCommandForPid(pid, arg.getCommand());
+                    executeCommandForPid(vid.id(), arg.getCommand());
                 } catch(AttachOperationFailedException ex) {
                     System.err.println(ex.getMessage());
                     success = false;
--- a/jdk/src/jdk.jcmd/share/classes/sun/tools/jinfo/JInfo.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jcmd/share/classes/sun/tools/jinfo/JInfo.java	Wed Jul 05 21:51:13 2017 +0200
@@ -30,6 +30,7 @@
 import java.util.Collection;
 
 import com.sun.tools.attach.VirtualMachine;
+import com.sun.tools.attach.VirtualMachineDescriptor;
 
 import sun.tools.attach.HotSpotVirtualMachine;
 import sun.tools.common.ProcessArgumentMatcher;
@@ -50,6 +51,7 @@
         boolean doFlag = false;
         boolean doFlags = false;
         boolean doSysprops = false;
+        int flag = -1;
 
         // Parse the options (arguments starting with "-" )
         int optionCount = 0;
@@ -67,65 +69,64 @@
 
             if (arg.equals("-flag")) {
                 doFlag = true;
-                continue;
+                // Consume the flag
+                if (optionCount < args.length) {
+                    flag = optionCount++;
+                    break;
+                }
+                usage(1);
             }
 
             if (arg.equals("-flags")) {
                 doFlags = true;
-                continue;
+                break;
             }
 
             if (arg.equals("-sysprops")) {
                 doSysprops = true;
-                continue;
+                break;
             }
         }
 
-        // Next we check the parameter count. -flag allows extra parameters
         int paramCount = args.length - optionCount;
-        if ((doFlag && paramCount != 2) || ((!doFlag && paramCount != 1))) {
+        if (paramCount != 1) {
             usage(1);
         }
 
-        if (!doFlag && !doFlags && !doSysprops) {
-            // Print flags and sysporps if no options given
-            ProcessArgumentMatcher ap = new ProcessArgumentMatcher(args[optionCount], JInfo.class);
-            Collection<String> pids = ap.getPids();
-            for (String pid : pids) {
-                if (pids.size() > 1) {
-                    System.out.println("Pid:" + pid);
-                }
-                sysprops(pid);
-                System.out.println();
-                flags(pid);
-                System.out.println();
-                commandLine(pid);
-            }
+        String parg = args[optionCount];
+
+        ProcessArgumentMatcher ap = new ProcessArgumentMatcher(parg);
+        Collection<VirtualMachineDescriptor> vids = ap.getVirtualMachineDescriptors(JInfo.class);
+
+        if (vids.isEmpty()) {
+            System.err.println("Could not find any processes matching : '" + parg + "'");
+            System.exit(1);
         }
 
-        if (doFlag) {
-            ProcessArgumentMatcher ap = new ProcessArgumentMatcher(args[optionCount+1], JInfo.class);
-            Collection<String> pids = ap.getPids();
-            for (String pid : pids) {
-                if (pids.size() > 1) {
-                    System.out.println("Pid:" + pid);
-                }
-                flag(pid, args[optionCount]);
+        for (VirtualMachineDescriptor vid : vids) {
+            if (vids.size() > 1) {
+                System.out.println("Pid:" + vid.id());
+            }
+            if (!doFlag && !doFlags && !doSysprops) {
+                // Print flags and sysporps if no options given
+                sysprops(vid.id());
+                System.out.println();
+                flags(vid.id());
+                System.out.println();
+                commandLine(vid.id());
             }
-        }
-        else if (doFlags || doSysprops) {
-            ProcessArgumentMatcher ap = new ProcessArgumentMatcher(args[optionCount], JInfo.class);
-            Collection<String> pids = ap.getPids();
-            for (String pid : pids) {
-                if (pids.size() > 1) {
-                    System.out.println("Pid:" + pid);
+            if (doFlag) {
+                if (flag < 0) {
+                    System.err.println("Missing flag");
+                    usage(1);
                 }
-                if (doFlags) {
-                    flags(pid);
-                }
-                else if (doSysprops) {
-                    sysprops(pid);
-                }
+                flag(vid.id(), args[flag]);
+            }
+            if (doFlags) {
+                flags(vid.id());
+            }
+            if (doSysprops) {
+                sysprops(vid.id());
             }
         }
     }
--- a/jdk/src/jdk.jcmd/share/classes/sun/tools/jmap/JMap.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jcmd/share/classes/sun/tools/jmap/JMap.java	Wed Jul 05 21:51:13 2017 +0200
@@ -32,6 +32,7 @@
 import java.util.Collection;
 
 import com.sun.tools.attach.VirtualMachine;
+import com.sun.tools.attach.VirtualMachineDescriptor;
 import com.sun.tools.attach.AttachNotSupportedException;
 import sun.tools.attach.HotSpotVirtualMachine;
 import sun.tools.common.ProcessArgumentMatcher;
@@ -89,10 +90,17 @@
         // Here we handle the built-in options
         // As more options are added we should create an abstract tool class and
         // have a table to map the options
-        ProcessArgumentMatcher ap = new ProcessArgumentMatcher(pidArg, JMap.class);
-        Collection<String> pids = ap.getPids();
-        for (String pid : pids) {
-            if (pids.size() > 1) {
+        ProcessArgumentMatcher ap = new ProcessArgumentMatcher(pidArg);
+        Collection<VirtualMachineDescriptor> vids = ap.getVirtualMachineDescriptors(JMap.class);
+
+        if (vids.isEmpty()) {
+            System.err.println("Could not find any processes matching : '" + pidArg + "'");
+            System.exit(1);
+        }
+
+        for (VirtualMachineDescriptor vid : vids) {
+            String pid = vid.id();
+            if (vids.size() > 1) {
                 System.out.println("Pid:" + pid);
             }
             if (option.equals("-histo")) {
--- a/jdk/src/jdk.jcmd/share/classes/sun/tools/jstack/JStack.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jcmd/share/classes/sun/tools/jstack/JStack.java	Wed Jul 05 21:51:13 2017 +0200
@@ -29,6 +29,7 @@
 import java.util.Collection;
 
 import com.sun.tools.attach.VirtualMachine;
+import com.sun.tools.attach.VirtualMachineDescriptor;
 import sun.tools.attach.HotSpotVirtualMachine;
 import sun.tools.common.ProcessArgumentMatcher;
 
@@ -82,13 +83,19 @@
         } else {
             params = new String[0];
         }
-        ProcessArgumentMatcher ap = new ProcessArgumentMatcher(pidArg, JStack.class);
-        Collection<String> pids = ap.getPids();
-        for (String pid : pids) {
-            if (pids.size() > 1) {
-                System.out.println("Pid:" + pid);
+        ProcessArgumentMatcher ap = new ProcessArgumentMatcher(pidArg);
+        Collection<VirtualMachineDescriptor> vids = ap.getVirtualMachineDescriptors(JStack.class);
+
+        if (vids.isEmpty()) {
+            System.err.println("Could not find any processes matching : '" + pidArg + "'");
+            System.exit(1);
+        }
+
+        for (VirtualMachineDescriptor vid : vids) {
+            if (vids.size() > 1) {
+                System.out.println("Pid:" + vid.id());
             }
-            runThreadDump(pid, params);
+            runThreadDump(vid.id(), params);
         }
     }
 
--- a/jdk/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/messages_ja.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/messages_ja.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -250,7 +250,7 @@
 UNREGISTER=\u767B\u9332\u89E3\u9664
 UPTIME=\u7A3C\u50CD\u6642\u9593
 USAGE_THRESHOLD=\u4F7F\u7528\u3057\u304D\u3044\u5024
-REMOTE_TF_USAGE=<b>\u4F7F\u7528\u65B9\u6CD5</b>: &&lt;hostname&&gt;:&&lt;port&&gt;\u307E\u305F\u306Fservice:jmx:&&lt;protocol&&gt;:&&lt;sap&&gt;
+REMOTE_TF_USAGE=<b>\u4F7F\u7528\u65B9\u6CD5</b>: &&lt;hostname&&gt;:&&lt;port&&gt; OR service:jmx:&&lt;protocol&&gt;:&&lt;sap&&gt;
 USED=\u4F7F\u7528\u6E08
 USERNAME_COLON_=\u30E6\u30FC\u30B6\u30FC\u540D(&U):
 USERNAME_ACCESSIBLE_NAME=\u30E6\u30FC\u30B6\u30FC\u540D
@@ -268,7 +268,7 @@
 WRITABLE=\u66F8\u8FBC\u307F\u53EF\u80FD
 CONNECTION_FAILED1=\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F: \u518D\u8A66\u884C\u3057\u307E\u3059\u304B\u3002
 CONNECTION_FAILED2={0}\u3078\u306E\u63A5\u7D9A\u304C\u6210\u529F\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002<br>\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u307E\u3059\u304B\u3002
-CONNECTION_FAILED_SSL1=\u4FDD\u8B77\u3055\u308C\u305F\u63A5\u7D9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u4FDD\u8B77\u305B\u305A\u306B\u518D\u8A66\u884C\u3057\u307E\u3059\u304B\u3002
+CONNECTION_FAILED_SSL1=\u30BB\u30AD\u30E5\u30A2\u306A\u63A5\u7D9A\u304C\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u975E\u30BB\u30AD\u30E5\u30A2\u3067\u518D\u8A66\u884C\u3057\u307E\u3059\u304B\u3002
 CONNECTION_FAILED_SSL2=SSL\u3092\u4F7F\u7528\u3057\u3066{0}\u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\u3002<br>SSL\u306A\u3057\u3067\u63A5\u7D9A\u3057\u307E\u3059\u304B\u3002<br>(\u30E6\u30FC\u30B6\u30FC\u540D\u304A\u3088\u3073\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u30D7\u30EC\u30FC\u30F3\u30FB\u30C6\u30AD\u30B9\u30C8\u3067\u9001\u4FE1\u3055\u308C\u307E\u3059\u3002)
 CONNECTION_LOST1=\u63A5\u7D9A\u304C\u5931\u308F\u308C\u307E\u3057\u305F: \u518D\u63A5\u7D9A\u3057\u307E\u3059\u304B\u3002
 CONNECTING_TO1={0}\u306B\u63A5\u7D9A\u4E2D
@@ -279,4 +279,4 @@
 KBYTES={0} KB
 PLOT=\u30D7\u30ED\u30C3\u30C8
 VISUALIZE=\u8996\u899A\u5316
-ZZ_USAGE_TEXT=\u4F7F\u7528\u65B9\u6CD5: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]\n\n  -interval   \u66F4\u65B0\u9593\u9694\u3092n\u79D2\u306B\u8A2D\u5B9A\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8\u306F4\u79D2)\n  -notile     \u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u6700\u521D\u306B\u4E26\u3079\u3066\u8868\u793A\u3057\u306A\u3044(2\u3064\u4EE5\u4E0A\u306E\u63A5\u7D9A\u306B\u3064\u3044\u3066)\n  -pluginpath JConsole\u304C\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u53C2\u7167\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u30D1\u30B9\u3092\u6307\u5B9A\u3059\u308B\n  -version    \u30D7\u30ED\u30B0\u30E9\u30E0\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3059\u308B\n\n  connection = pid || host:port || JMX URL (service:jmx:<protocol>://...)\n  pid         \u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9\u306E\u30D7\u30ED\u30BB\u30B9ID\n  host        \u30EA\u30E2\u30FC\u30C8\u30FB\u30DB\u30B9\u30C8\u540D\u307E\u305F\u306FIP\u30A2\u30C9\u30EC\u30B9\n  port        \u30EA\u30E2\u30FC\u30C8\u63A5\u7D9A\u7528\u306E\u30DD\u30FC\u30C8\u756A\u53F7\n\n  -J          JConsole\u304C\u5B9F\u884C\u4E2D\u306EJava\u4EEE\u60F3\u30DE\u30B7\u30F3\u3078\u306E\n              \u5165\u529B\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B
+ZZ_USAGE_TEXT=\u4F7F\u7528\u65B9\u6CD5: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]\n\n  -interval   \u66F4\u65B0\u9593\u9694\u3092n\u79D2\u306B\u8A2D\u5B9A\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8\u306F4\u79D2)\n  -notile     \u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u6700\u521D\u306B\u4E26\u3079\u3066\u8868\u793A\u3057\u306A\u3044(2\u3064\u4EE5\u4E0A\u306E\u63A5\u7D9A\u306B\u3064\u3044\u3066)\n  -pluginpath JConsole\u304C\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u53C2\u7167\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u30D1\u30B9\u3092\u6307\u5B9A\u3059\u308B\n  -version    \u30D7\u30ED\u30B0\u30E9\u30E0\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u5370\u5237\u3059\u308B\n\n  connection = pid || host:port || JMX URL (service:jmx:<protocol>://...)\n  pid         \u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9\u306E\u30D7\u30ED\u30BB\u30B9ID\n  host        \u30EA\u30E2\u30FC\u30C8\u30FB\u30DB\u30B9\u30C8\u540D\u307E\u305F\u306FIP\u30A2\u30C9\u30EC\u30B9\n  port        \u30EA\u30E2\u30FC\u30C8\u63A5\u7D9A\u7528\u306E\u30DD\u30FC\u30C8\u756A\u53F7\n\n  -J          JConsole\u304C\u5B9F\u884C\u4E2D\u306EJava\u4EEE\u60F3\u30DE\u30B7\u30F3\u3078\u306E\n              \u5165\u529B\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B
--- a/jdk/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources_ja.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources_ja.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -129,8 +129,8 @@
         {"Fatal error", "\u81F4\u547D\u7684\u30A8\u30E9\u30FC:"},
         {"Field access encountered before after", "\u30D5\u30A3\u30FC\u30EB\u30C9({0})\u306F{1}\u3067\u3001{2}\u306B\u306A\u308A\u307E\u3059: "},
         {"Field access encountered", "\u30D5\u30A3\u30FC\u30EB\u30C9({0})\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F: "},
-        {"Field to unwatch not specified", "\u76E3\u8996\u3057\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
-        {"Field to watch not specified", "\u76E3\u8996\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"Field to unwatch not specified", "\u30A6\u30A9\u30C3\u30C1\u3057\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
+        {"Field to watch not specified", "\u30A6\u30A9\u30C3\u30C1\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
         {"GC Disabled for", "{0}\u306EGC\u304C\u7121\u52B9\u3067\u3059:"},
         {"GC Enabled for", "{0}\u306EGC\u304C\u6709\u52B9\u3067\u3059:"},
         {"grouping begin character", "{"},
@@ -200,7 +200,7 @@
         {"No class named", "\u540D\u524D''{0}''\u306E\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u305B\u3093"},
         {"No class specified.", "\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
         {"No classpath specified.", "\u30AF\u30E9\u30B9\u30D1\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
-        {"No code at line", "\u884C{0,number,integer} ({1}\u5185)\u306B\u30B3\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093"},
+        {"No code at line", "{1}\u306E\u884C{0,number,integer}\u306B\u30B3\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093"},
         {"No connect specification.", "\u63A5\u7D9A\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"},
         {"No connector named:", "\u540D\u524D{0}\u306E\u30B3\u30CD\u30AF\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"},
         {"No current thread", "\u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u304C\u3042\u308A\u307E\u305B\u3093"},
@@ -321,10 +321,10 @@
         {"vmstartexception", "VM\u304C\u4F8B\u5916\u3092\u958B\u59CB\u3057\u307E\u3057\u305F: {0}"},
         {"Waiting for monitor:", "   \u30E2\u30CB\u30BF\u30FC\u306E\u5F85\u6A5F\u4E2D: {0}"},
         {"Waiting thread:", " \u30B9\u30EC\u30C3\u30C9\u3092\u5F85\u6A5F\u4E2D: {0}"},
-        {"watch accesses of", "{0}.{1}\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u76E3\u8996"},
-        {"watch modification of", "{0}.{1}\u306E\u5909\u66F4\u306E\u76E3\u8996"},
+        {"watch accesses of", "{0}.{1}\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u30A6\u30A9\u30C3\u30C1"},
+        {"watch modification of", "{0}.{1}\u306E\u5909\u66F4\u306E\u30A6\u30A9\u30C3\u30C1"},
         {"zz help text",
-             "** \u30B3\u30DE\u30F3\u30C9\u30FB\u30EA\u30B9\u30C8 **\nconnectors                -- \u3053\u306EVM\u5185\u306E\u4F7F\u7528\u53EF\u80FD\u306A\u30B3\u30CD\u30AF\u30BF\u3068\u30C8\u30E9\u30F3\u30B9\u30DD\u30FC\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\nrun [class [args]]        -- \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u306E\u5B9F\u884C\u3092\u958B\u59CB\u3057\u307E\u3059\n\nthreads [threadgroup]     -- \u30B9\u30EC\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nthread <thread id>        -- \u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B9\u30EC\u30C3\u30C9\u3092\u8A2D\u5B9A\u3057\u307E\u3059\nsuspend [thread id(s)]    -- \u30B9\u30EC\u30C3\u30C9\u3092\u4E2D\u65AD\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8: \u3059\u3079\u3066)\nresume [thread id(s)]     -- \u30B9\u30EC\u30C3\u30C9\u3092\u518D\u958B\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8: \u3059\u3079\u3066)\nwhere [<thread id> | all] -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u30C0\u30F3\u30D7\u3057\u307E\u3059\nwherei [<thread id> | all]-- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092pc\u60C5\u5831\u3068\u3068\u3082\u306B\u30C0\u30F3\u30D7\u3057\u307E\u3059\nup [n frames]             -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u4E0A\u306B\u79FB\u52D5\u3057\u307E\u3059\ndown [n frames]           -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u4E0B\u306B\u79FB\u52D5\u3057\u307E\u3059\nkill <thread id> <expr>   -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u30B9\u30EC\u30C3\u30C9\u3092\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3059\ninterrupt <thread id>     -- \u30B9\u30EC\u30C3\u30C9\u3092\u4E2D\u65AD\u3057\u307E\u3059\n\nprint <expr>              -- \u5F0F\u306E\u5024\u3092\u51FA\u529B\u3057\u307E\u3059\ndump <expr>               -- \u3059\u3079\u3066\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\neval <expr>               -- \u5F0F\u3092\u8A55\u4FA1\u3057\u307E\u3059(print\u3068\u540C\u3058)\nset <lvalue> = <expr>     -- \u65B0\u3057\u3044\u5024\u3092\u30D5\u30A3\u30FC\u30EB\u30C9/\u5909\u6570/\u914D\u5217\u8981\u7D20\u306B\u4EE3\u5165\u3057\u307E\u3059\nlocals                    -- \u73FE\u5728\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30D5\u30EC\u30FC\u30E0\u5185\u306E\u3059\u3079\u3066\u306E\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092\u51FA\u529B\u3057\u307E\u3059\n\nclasses                   -- \u73FE\u5728\u65E2\u77E5\u306E\u30AF\u30E9\u30B9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nclass <class id>          -- \u6307\u5B9A\u3057\u305F\u30AF\u30E9\u30B9\u306E\u8A73\u7D30\u3092\u8868\u793A\u3057\u307E\u3059\nmethods <class id>        -- \u30AF\u30E9\u30B9\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nfields <class id>         -- \u30AF\u30E9\u30B9\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\nthreadgroups              -- \u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nthreadgroup <name>        -- \u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u3092\u8A2D\u5B9A\u3057\u307E\u3059\n\nstop in <class id>.<method>[(argument_type,...)]\n                          -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30E1\u30BD\u30C3\u30C9\u5185\u306B\u8A2D\u5B9A\u3057\u307E\u3059\nstop at <class id>:<line> -- \u884C\u306B\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\nclear <class id>.<method>[(argument_type,...)]\n                          -- \u30E1\u30BD\u30C3\u30C9\u5185\u306E\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30AF\u30EA\u30A2\u3057\u307E\u3059\nclear <class id>:<line>   -- \u884C\u306E\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30AF\u30EA\u30A2\u3057\u307E\u3059\nclear                     -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\ncatch [uncaught|caught|all] <class id>|<class pattern>\n                          -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u304C\u767A\u751F\u3057\u305F\u3068\u304D\u306B\u30D6\u30EC\u30FC\u30AF\u3057\u307E\u3059\nignore [uncaught|caught|all] <class id>|<class pattern>\n                          -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u306E'catch'\u3092\u53D6\u308A\u6D88\u3057\u307E\u3059\nwatch [access|all] <class id>.<field name>\n                          -- \u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u307E\u305F\u306F\u5909\u66F4\u3092\u76E3\u8996\u3057\u307E\u3059\nunwatch [access|all] <class id>.<field name>\n                          -- \u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u307E\u305F\u306F\u5909\u66F4\u306E\u76E3\u8996\u3092\u4E2D\u6B62\u3057\u307E\u3059\ntrace [go] methods [thread]\n                          -- \u30E1\u30BD\u30C3\u30C9\u306E\u5165\u308A\u53E3\u3068\u51FA\u53E3\u3092\u30C8\u30EC\u30FC\u30B9\u3057\u307E\u3059\u3002\n                          -- 'go'\u304C\u6307\u5B9A\u3055\u308C\u308B\u307E\u3067\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3057\u307E\u3059\ntrace [go] method exit | exits [thread]\n                          -- \u73FE\u5728\u306E\u30E1\u30BD\u30C3\u30C9\u306E\u51FA\u53E3\u307E\u305F\u306F\u3059\u3079\u3066\u306E\u30E1\u30BD\u30C3\u30C9\u306E\u51FA\u53E3\u3092\u30C8\u30EC\u30FC\u30B9\u3057\u307E\u3059\n                          -- 'go'\u304C\u6307\u5B9A\u3055\u308C\u308B\u307E\u3067\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3057\u307E\u3059\nuntrace [methods]         -- \u30E1\u30BD\u30C3\u30C9\u306E\u958B\u59CB\u307E\u305F\u306F\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9\u3092\u505C\u6B62\u3057\u307E\u3059\nstep                      -- \u73FE\u5728\u306E\u884C\u3092\u5B9F\u884C\u3057\u307E\u3059\nstep up                   -- \u73FE\u5728\u306E\u30E1\u30BD\u30C3\u30C9\u304C\u30E1\u30BD\u30C3\u30C9\u306E\u547C\u51FA\u3057\u5143\u306B\u623B\u308B\u307E\u3067\u5B9F\u884C\u3057\u307E\u3059\nstepi                     -- \u73FE\u5728\u306E\u547D\u4EE4\u3092\u5B9F\u884C\u3057\u307E\u3059\nnext                      -- 1\u884C\u3092\u30B9\u30C6\u30C3\u30D7\u5B9F\u884C\u3057\u307E\u3059(\u547C\u51FA\u3057\u3092\u30B9\u30C6\u30C3\u30D7\u30AA\u30FC\u30D0\u30FC)\ncont                      -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u304B\u3089\u5B9F\u884C\u3092\u7D9A\u884C\u3057\u307E\u3059\n\nlist [line number|method] -- \u30BD\u30FC\u30B9\u30FB\u30B3\u30FC\u30C9\u3092\u51FA\u529B\u3057\u307E\u3059\nuse (or sourcepath) [source file path]\n                          -- \u30BD\u30FC\u30B9\u30FB\u30D1\u30B9\u3092\u8868\u793A\u307E\u305F\u306F\u5909\u66F4\u3057\u307E\u3059\nexclude [<class pattern>, ... | \"none\"]\n                          -- \u6307\u5B9A\u3057\u305F\u30AF\u30E9\u30B9\u306E\u30B9\u30C6\u30C3\u30D7\u3084\u30E1\u30BD\u30C3\u30C9\u30FB\u30A4\u30D9\u30F3\u30C8\u3092\u5831\u544A\u3057\u307E\u305B\u3093\nclasspath                 -- \u30BF\u30FC\u30B2\u30C3\u30C8VM\u304B\u3089\u30AF\u30E9\u30B9\u30D1\u30B9\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\n\nmonitor <command>         -- \u30D7\u30ED\u30B0\u30E9\u30E0\u304C\u505C\u6B62\u3059\u308B\u305F\u3073\u306B\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u307E\u3059\nmonitor                   -- \u30E2\u30CB\u30BF\u30FC\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nunmonitor <monitor#>      -- \u30E2\u30CB\u30BF\u30FC\u3092\u524A\u9664\u3057\u307E\u3059\nread <filename>           -- \u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u3063\u3066\u5B9F\u884C\u3057\u307E\u3059\n\nlock <expr>               -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30ED\u30C3\u30AF\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\nthreadlocks [thread id]   -- \u30B9\u30EC\u30C3\u30C9\u306E\u30ED\u30C3\u30AF\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\n\npop                       -- \u73FE\u5728\u306E\u30D5\u30EC\u30FC\u30E0\u307E\u3067\u306E\u3059\u3079\u3066\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u30DD\u30C3\u30D7\u3057\u307E\u3059\nreenter                   -- pop\u3068\u540C\u3058\u3067\u3059\u304C\u3001\u73FE\u5728\u306E\u30D5\u30EC\u30FC\u30E0\u304C\u518D\u5165\u529B\u3055\u308C\u307E\u3059\nredefine <class id> <class file name>\n                          -- \u30AF\u30E9\u30B9\u306E\u30B3\u30FC\u30C9\u3092\u518D\u5B9A\u7FA9\u3057\u307E\u3059\n\ndisablegc <expr>          -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u6291\u5236\u3057\u307E\u3059\nenablegc <expr>           -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u8A31\u53EF\u3057\u307E\u3059\n\n!!                        -- \u6700\u5F8C\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u7E70\u308A\u8FD4\u3057\u307E\u3059\n<n> <command>             -- \u30B3\u30DE\u30F3\u30C9\u3092n\u56DE\u7E70\u308A\u8FD4\u3057\u307E\u3059\n# <command>               -- \u7834\u68C4\u3057\u307E\u3059(\u64CD\u4F5C\u306A\u3057)\nhelp (\u307E\u305F\u306F?)               -- \u30B3\u30DE\u30F3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nversion                   -- \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\nexit (\u307E\u305F\u306Fquit)            -- \u30C7\u30D0\u30C3\u30AC\u3092\u7D42\u4E86\u3057\u307E\u3059\n\n<class id>: \u30D1\u30C3\u30B1\u30FC\u30B8\u4FEE\u98FE\u5B50\u3092\u542B\u3080\u5B8C\u5168\u30AF\u30E9\u30B9\u540D\n<class pattern>: \u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306E\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9('*')\u3092\u542B\u3080\u30AF\u30E9\u30B9\u540D\n<thread id>: 'threads'\u30B3\u30DE\u30F3\u30C9\u3067\u5831\u544A\u3055\u308C\u308B\u30B9\u30EC\u30C3\u30C9\u756A\u53F7\n<expr>: Java(TM)\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\u306E\u5F0F\u3002\n\u307B\u3068\u3093\u3069\u306E\u4E00\u822C\u7684\u306A\u69CB\u6587\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n\n\u8D77\u52D5\u30B3\u30DE\u30F3\u30C9\u306F\u3001\"jdb.ini\"\u307E\u305F\u306F\".jdbrc\"\u306B\u914D\u7F6E\u3067\u304D\u307E\u3059\n(user.home\u307E\u305F\u306Fuser.dir\u5185)"},
+             "** \u30B3\u30DE\u30F3\u30C9\u30FB\u30EA\u30B9\u30C8 **\nconnectors                -- \u3053\u306EVM\u5185\u306E\u4F7F\u7528\u53EF\u80FD\u306A\u30B3\u30CD\u30AF\u30BF\u3068\u30C8\u30E9\u30F3\u30B9\u30DD\u30FC\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\nrun [class [args]]        -- \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u306E\u5B9F\u884C\u3092\u958B\u59CB\u3057\u307E\u3059\n\nthreads [threadgroup]     -- \u30B9\u30EC\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nthread <thread id>        -- \u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B9\u30EC\u30C3\u30C9\u3092\u8A2D\u5B9A\u3057\u307E\u3059\nsuspend [thread id(s)]    -- \u30B9\u30EC\u30C3\u30C9\u3092\u4E2D\u65AD\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8: \u3059\u3079\u3066)\nresume [thread id(s)]     -- \u30B9\u30EC\u30C3\u30C9\u3092\u518D\u958B\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8: \u3059\u3079\u3066)\nwhere [<thread id> | all] -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u30C0\u30F3\u30D7\u3057\u307E\u3059\nwherei [<thread id> | all]-- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092pc\u60C5\u5831\u3068\u3068\u3082\u306B\u30C0\u30F3\u30D7\u3057\u307E\u3059\nup [n frames]             -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u4E0A\u306B\u79FB\u52D5\u3057\u307E\u3059\ndown [n frames]           -- \u30B9\u30EC\u30C3\u30C9\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u4E0B\u306B\u79FB\u52D5\u3057\u307E\u3059\nkill <thread id> <expr>   -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u30B9\u30EC\u30C3\u30C9\u3092\u5F37\u5236\u7D42\u4E86\u3057\u307E\u3059\ninterrupt <thread id>     -- \u30B9\u30EC\u30C3\u30C9\u3092\u4E2D\u65AD\u3057\u307E\u3059\n\nprint <expr>              -- \u5F0F\u306E\u5024\u3092\u51FA\u529B\u3057\u307E\u3059\ndump <expr>               -- \u3059\u3079\u3066\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\neval <expr>               -- \u5F0F\u3092\u8A55\u4FA1\u3057\u307E\u3059(print\u3068\u540C\u3058)\nset <lvalue> = <expr>     -- \u65B0\u3057\u3044\u5024\u3092\u30D5\u30A3\u30FC\u30EB\u30C9/\u5909\u6570/\u914D\u5217\u8981\u7D20\u306B\u4EE3\u5165\u3057\u307E\u3059\nlocals                    -- \u73FE\u5728\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30D5\u30EC\u30FC\u30E0\u5185\u306E\u3059\u3079\u3066\u306E\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u3092\u51FA\u529B\u3057\u307E\u3059\n\nclasses                   -- \u73FE\u5728\u65E2\u77E5\u306E\u30AF\u30E9\u30B9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nclass <class id>          -- \u6307\u5B9A\u3057\u305F\u30AF\u30E9\u30B9\u306E\u8A73\u7D30\u3092\u8868\u793A\u3057\u307E\u3059\nmethods <class id>        -- \u30AF\u30E9\u30B9\u306E\u30E1\u30BD\u30C3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nfields <class id>         -- \u30AF\u30E9\u30B9\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\n\nthreadgroups              -- \u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nthreadgroup <name>        -- \u73FE\u5728\u306E\u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u3092\u8A2D\u5B9A\u3057\u307E\u3059\n\nstop in <class id>.<method>[(argument_type,...)]\n                          -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30E1\u30BD\u30C3\u30C9\u5185\u306B\u8A2D\u5B9A\u3057\u307E\u3059\nstop at <class id>:<line> -- \u884C\u306B\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u8A2D\u5B9A\u3057\u307E\u3059\nclear <class id>.<method>[(argument_type,...)]\n                          -- \u30E1\u30BD\u30C3\u30C9\u5185\u306E\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30AF\u30EA\u30A2\u3057\u307E\u3059\nclear <class id>:<line>   -- \u884C\u306E\u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30AF\u30EA\u30A2\u3057\u307E\u3059\nclear                     -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\ncatch [uncaught|caught|all] <class id>|<class pattern>\n                          -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u304C\u767A\u751F\u3057\u305F\u3068\u304D\u306B\u30D6\u30EC\u30FC\u30AF\u3057\u307E\u3059\nignore [uncaught|caught|all] <class id>|<class pattern>\n                          -- \u6307\u5B9A\u3055\u308C\u305F\u4F8B\u5916\u306E'catch'\u3092\u53D6\u308A\u6D88\u3057\u307E\u3059\nwatch [access|all] <class id>.<field name>\n                          -- \u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u307E\u305F\u306F\u5909\u66F4\u3092\u30A6\u30A9\u30C3\u30C1\u3057\u307E\u3059\nunwatch [access|all] <class id>.<field name>\n                          -- \u30D5\u30A3\u30FC\u30EB\u30C9\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u307E\u305F\u306F\u5909\u66F4\u306E\u30A6\u30A9\u30C3\u30C1\u3092\u4E2D\u6B62\u3057\u307E\u3059\ntrace [go] methods [thread]\n                          -- \u30E1\u30BD\u30C3\u30C9\u306E\u5165\u308A\u53E3\u3068\u51FA\u53E3\u3092\u30C8\u30EC\u30FC\u30B9\u3057\u307E\u3059\u3002\n                          -- 'go'\u304C\u6307\u5B9A\u3055\u308C\u308B\u307E\u3067\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3057\u307E\u3059\ntrace [go] method exit | exits [thread]\n                          -- \u73FE\u5728\u306E\u30E1\u30BD\u30C3\u30C9\u306E\u51FA\u53E3\u307E\u305F\u306F\u3059\u3079\u3066\u306E\u30E1\u30BD\u30C3\u30C9\u306E\u51FA\u53E3\u3092\u30C8\u30EC\u30FC\u30B9\u3057\u307E\u3059\n                          -- 'go'\u304C\u6307\u5B9A\u3055\u308C\u308B\u307E\u3067\u3059\u3079\u3066\u306E\u30B9\u30EC\u30C3\u30C9\u306F\u4E2D\u65AD\u3057\u307E\u3059\nuntrace [methods]         -- \u30E1\u30BD\u30C3\u30C9\u306E\u958B\u59CB\u307E\u305F\u306F\u7D42\u4E86\u306E\u30C8\u30EC\u30FC\u30B9\u3092\u505C\u6B62\u3057\u307E\u3059\nstep                      -- \u73FE\u5728\u306E\u884C\u3092\u5B9F\u884C\u3057\u307E\u3059\nstep up                   -- \u73FE\u5728\u306E\u30E1\u30BD\u30C3\u30C9\u304C\u30E1\u30BD\u30C3\u30C9\u306E\u547C\u51FA\u3057\u5143\u306B\u623B\u308B\u307E\u3067\u5B9F\u884C\u3057\u307E\u3059\nstepi                     -- \u73FE\u5728\u306E\u547D\u4EE4\u3092\u5B9F\u884C\u3057\u307E\u3059\nnext                      -- 1\u884C\u3092\u30B9\u30C6\u30C3\u30D7\u5B9F\u884C\u3057\u307E\u3059(\u547C\u51FA\u3057\u3092\u30B9\u30C6\u30C3\u30D7\u30AA\u30FC\u30D0\u30FC)\ncont                      -- \u30D6\u30EC\u30FC\u30AF\u30DD\u30A4\u30F3\u30C8\u304B\u3089\u5B9F\u884C\u3092\u7D9A\u884C\u3057\u307E\u3059\n\nlist [line number|method] -- \u30BD\u30FC\u30B9\u30FB\u30B3\u30FC\u30C9\u3092\u51FA\u529B\u3057\u307E\u3059\nuse (or sourcepath) [source file path]\n                          -- \u30BD\u30FC\u30B9\u30FB\u30D1\u30B9\u3092\u8868\u793A\u307E\u305F\u306F\u5909\u66F4\u3057\u307E\u3059\nexclude [<class pattern>, ... | \"none\"]\n                          -- \u6307\u5B9A\u3057\u305F\u30AF\u30E9\u30B9\u306E\u30B9\u30C6\u30C3\u30D7\u3084\u30E1\u30BD\u30C3\u30C9\u30FB\u30A4\u30D9\u30F3\u30C8\u3092\u5831\u544A\u3057\u307E\u305B\u3093\nclasspath                 -- \u30BF\u30FC\u30B2\u30C3\u30C8VM\u304B\u3089\u30AF\u30E9\u30B9\u30D1\u30B9\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\n\nmonitor <command>         -- \u30D7\u30ED\u30B0\u30E9\u30E0\u304C\u505C\u6B62\u3059\u308B\u305F\u3073\u306B\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u307E\u3059\nmonitor                   -- \u30E2\u30CB\u30BF\u30FC\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nunmonitor <monitor#>      -- \u30E2\u30CB\u30BF\u30FC\u3092\u524A\u9664\u3057\u307E\u3059\nread <filename>           -- \u30B3\u30DE\u30F3\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u53D6\u3063\u3066\u5B9F\u884C\u3057\u307E\u3059\n\nlock <expr>               -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30ED\u30C3\u30AF\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\nthreadlocks [thread id]   -- \u30B9\u30EC\u30C3\u30C9\u306E\u30ED\u30C3\u30AF\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\n\npop                       -- \u73FE\u5728\u306E\u30D5\u30EC\u30FC\u30E0\u307E\u3067\u306E\u3059\u3079\u3066\u306E\u30B9\u30BF\u30C3\u30AF\u3092\u30DD\u30C3\u30D7\u3057\u307E\u3059\nreenter                   -- pop\u3068\u540C\u3058\u3067\u3059\u304C\u3001\u73FE\u5728\u306E\u30D5\u30EC\u30FC\u30E0\u304C\u518D\u5165\u529B\u3055\u308C\u307E\u3059\nredefine <class id> <class file name>\n                          -- \u30AF\u30E9\u30B9\u306E\u30B3\u30FC\u30C9\u3092\u518D\u5B9A\u7FA9\u3057\u307E\u3059\n\ndisablegc <expr>          -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u6291\u5236\u3057\u307E\u3059\nenablegc <expr>           -- \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u30AC\u30D9\u30FC\u30B8\u30FB\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3\u3092\u8A31\u53EF\u3057\u307E\u3059\n\n!!                        -- \u6700\u5F8C\u306E\u30B3\u30DE\u30F3\u30C9\u3092\u7E70\u308A\u8FD4\u3057\u307E\u3059\n<n> <command>             -- \u30B3\u30DE\u30F3\u30C9\u3092n\u56DE\u7E70\u308A\u8FD4\u3057\u307E\u3059\n# <command>               -- \u7834\u68C4\u3057\u307E\u3059(\u64CD\u4F5C\u306A\u3057)\nhelp (\u307E\u305F\u306F?)               -- \u30B3\u30DE\u30F3\u30C9\u3092\u30EA\u30B9\u30C8\u3057\u307E\u3059\nversion                   -- \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u51FA\u529B\u3057\u307E\u3059\nexit (\u307E\u305F\u306Fquit)            -- \u30C7\u30D0\u30C3\u30AC\u3092\u7D42\u4E86\u3057\u307E\u3059\n\n<class id>: \u30D1\u30C3\u30B1\u30FC\u30B8\u4FEE\u98FE\u5B50\u3092\u542B\u3080\u5B8C\u5168\u30AF\u30E9\u30B9\u540D\n<class pattern>: \u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306E\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9('*')\u3092\u542B\u3080\u30AF\u30E9\u30B9\u540D\n<thread id>: 'threads'\u30B3\u30DE\u30F3\u30C9\u3067\u5831\u544A\u3055\u308C\u308B\u30B9\u30EC\u30C3\u30C9\u756A\u53F7\n<expr>: Java(TM)\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E\u306E\u5F0F\u3002\n\u307B\u3068\u3093\u3069\u306E\u4E00\u822C\u7684\u306A\u69CB\u6587\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u3059\u3002\n\n\u8D77\u52D5\u30B3\u30DE\u30F3\u30C9\u306F\u3001\"jdb.ini\"\u307E\u305F\u306F\".jdbrc\"\u306B\u914D\u7F6E\u3067\u304D\u307E\u3059\n(user.home\u307E\u305F\u306Fuser.dir\u5185)"},
         {"zz usage text",
              "\u4F7F\u7528\u65B9\u6CD5: {0} <options> <class> <arguments>\n\n\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u6B21\u306E\u3068\u304A\u308A\u3067\u3059:\n    -help             \u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B\n    -sourcepath <directories separated by \"{1}\">\n                      \u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n    -attach <address>\n                      \u6A19\u6E96\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u6307\u5B9A\u3055\u308C\u305F\u30A2\u30C9\u30EC\u30B9\u3067\u5B9F\u884C\u4E2D\u306EVM\u306B\u63A5\u7D9A\u3059\u308B\n    -listen <address>\n                      \u6A19\u6E96\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u6307\u5B9A\u3055\u308C\u305F\u30A2\u30C9\u30EC\u30B9\u3067\u5B9F\u884C\u4E2D\u306EVM\u306E\u63A5\u7D9A\u3092\u5F85\u6A5F\u3059\u308B\n    -listenany\n                      \u6A19\u6E96\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u4F7F\u7528\u53EF\u80FD\u306A\u4EFB\u610F\u306E\u30A2\u30C9\u30EC\u30B9\u3067\u5B9F\u884C\u4E2D\u306EVM\u306E\u63A5\u7D9A\u3092\u5F85\u6A5F\u3059\u308B\n    -launch\n                      ''run''\u30B3\u30DE\u30F3\u30C9\u3092\u5F85\u6A5F\u305B\u305A\u306BVM\u3092\u5373\u6642\u306B\u8D77\u52D5\u3059\u308B\n    -listconnectors   \u3053\u306EVM\u3067\u4F7F\u7528\u53EF\u80FD\u306A\u30B3\u30CD\u30AF\u30BF\u3092\u30EA\u30B9\u30C8\u3059\u308B\n    -connect <connector-name>:<name1>=<value1>,...\n                      \u6307\u5B9A\u3055\u308C\u305F\u30B3\u30CD\u30AF\u30BF\u3092\u4F7F\u7528\u3057\u3066\u3001\u30EA\u30B9\u30C8\u3055\u308C\u305F\u5F15\u6570\u5024\u3067\u30BF\u30FC\u30B2\u30C3\u30C8VM\u306B\u63A5\u7D9A\u3059\u308B\n    -dbgtrace [flags] {0}\u306E\u30C7\u30D0\u30C3\u30B0\u306E\u60C5\u5831\u3092\u51FA\u529B\u3059\u308B\n    -tclient          \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092HotSpot(TM) Client Compiler\u3067\u5B9F\u884C\u3059\u308B\n    -tserver          \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092HotSpot(TM) Server Compiler\u3067\u5B9F\u884C\u3059\u308B\n\n\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u30C7\u30D0\u30C3\u30B0\u3059\u308B\u30D7\u30ED\u30BB\u30B9\u306B\u8EE2\u9001\u3055\u308C\u307E\u3059:\n    -v -verbose[:class|gc|jni]\n                      \u8A73\u7D30\u30E2\u30FC\u30C9\u3092\u30AA\u30F3\u306B\u3059\u308B\n    -D<name>=<value>  \u30B7\u30B9\u30C6\u30E0\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u3092\u8A2D\u5B9A\u3059\u308B\n    -classpath <directories separated by \"{1}\">\n                      \u30AF\u30E9\u30B9\u3092\u691C\u7D22\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u30EA\u30B9\u30C8\u3059\u308B\n    -X<option>        \u975E\u6A19\u6E96\u306E\u30BF\u30FC\u30B2\u30C3\u30C8VM\u30AA\u30D7\u30B7\u30E7\u30F3\n\n<class>\u306F\u30C7\u30D0\u30C3\u30B0\u3092\u958B\u59CB\u3059\u308B\u30AF\u30E9\u30B9\u306E\u540D\u524D\u3067\u3059\n<arguments>\u306F<class>\u306Emain()\u30E1\u30BD\u30C3\u30C9\u306B\u6E21\u3055\u308C\u308B\u5F15\u6570\u3067\u3059\n\n\u30B3\u30DE\u30F3\u30C9\u306E\u30D8\u30EB\u30D7\u306B\u3064\u3044\u3066\u306F{0}\u30D7\u30ED\u30F3\u30D7\u30C8\u3067''help''\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044"},
         // END OF MATERIAL TO LOCALIZE
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Utils.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Utils.java	Wed Jul 05 21:51:13 2017 +0200
@@ -28,77 +28,85 @@
 import java.net.URI;
 import java.nio.file.FileSystem;
 import java.nio.file.FileSystems;
+import java.nio.file.Path;
 import java.nio.file.PathMatcher;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Comparator;
 import java.util.List;
-import java.util.function.Function;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 import jdk.tools.jlink.plugin.Plugin;
+import jdk.tools.jlink.plugin.Plugin.Category;
 
 public class Utils {
 
     private Utils() {}
 
+    // jrt-fs file system
+    private static FileSystem JRT_FILE_SYSTEM;
+
     // current module
     private static final Module THIS_MODULE = Utils.class.getModule();
 
-    public static final Function<String, String[]> listParser = (argument) -> {
-        String[] arguments = null;
-        if (argument != null) {
-            arguments = argument.split(",");
-            for (int i = 0; i < arguments.length; i++) {
-                arguments[i] = arguments[i].trim();
-            }
-        }
-        return arguments;
-    };
+    public static List<String> parseList(String arguments) {
+        return Arrays.stream(arguments.split(","))
+                     .map((p) -> p.trim())
+                     .filter((p) -> !p.isEmpty())
+                     .collect(Collectors.toList());
+    }
 
-    public static boolean isPostProcessor(Plugin.Category category) {
-        return category.equals(Plugin.Category.VERIFIER)
-                || category.equals(Plugin.Category.PROCESSOR)
-                || category.equals(Plugin.Category.PACKAGER);
+    public static boolean isPostProcessor(Category category) {
+        return category.equals(Category.VERIFIER)
+                || category.equals(Category.PROCESSOR)
+                || category.equals(Category.PACKAGER);
     }
 
-    public static boolean isPreProcessor(Plugin.Category category) {
-        return category.equals(Plugin.Category.COMPRESSOR)
-                || category.equals(Plugin.Category.FILTER)
-                || category.equals(Plugin.Category.MODULEINFO_TRANSFORMER)
-                || category.equals(Plugin.Category.SORTER)
-                || category.equals(Plugin.Category.TRANSFORMER)
-                || category.equals(Plugin.Category.METAINFO_ADDER);
+    public static boolean isPreProcessor(Category category) {
+        return category.equals(Category.COMPRESSOR)
+                || category.equals(Category.FILTER)
+                || category.equals(Category.MODULEINFO_TRANSFORMER)
+                || category.equals(Category.SORTER)
+                || category.equals(Category.TRANSFORMER)
+                || category.equals(Category.METAINFO_ADDER);
     }
 
-    public static boolean isPostProcessor(Plugin prov) {
-        if (prov.getType() != null) {
-            for (Plugin.Category pt : prov.getType()) {
-                if (pt instanceof Plugin.Category) {
-                    return isPostProcessor(pt);
-                }
-            }
+    public static boolean isPostProcessor(Plugin provider) {
+        Set<Category> types = provider.getType();
+        Objects.requireNonNull(types);
+        for (Category pt : types) {
+            return isPostProcessor(pt);
         }
         return false;
     }
 
-    public static boolean isPreProcessor(Plugin prov) {
-        if (prov.getType() != null) {
-            for (Plugin.Category pt : prov.getType()) {
-                if (pt instanceof Plugin.Category) {
-                    return isPreProcessor(pt);
-                }
-            }
+    public static boolean isPreProcessor(Plugin provider) {
+        Set<Category> types = provider.getType();
+        Objects.requireNonNull(types);
+        for (Category pt : types) {
+            return isPreProcessor(pt);
         }
         return false;
     }
 
-    public static Plugin.Category getCategory(Plugin provider) {
-        if (provider.getType() != null) {
-            for (Plugin.Category t : provider.getType()) {
-                if (t instanceof Plugin.Category) {
-                    return t;
-                }
+    public static Category getCategory(Plugin provider) {
+        Set<Category> types = provider.getType();
+        Objects.requireNonNull(types);
+        for (Category t : types) {
+            return t;
+        }
+        return null;
+    }
+
+    public static List<Plugin> getPreProcessors(List<Plugin> plugins) {
+        List<Plugin> res = new ArrayList<>();
+        for (Plugin p : plugins) {
+            if (isPreProcessor(p)) {
+                res.add(p);
             }
         }
-        return null;
+        return res;
     }
 
     public static List<Plugin> getPostProcessors(List<Plugin> plugins) {
@@ -133,16 +141,6 @@
         return res;
     }
 
-    public static List<Plugin> getPreProcessors(List<Plugin> plugins) {
-        List<Plugin> res = new ArrayList<>();
-        for (Plugin p : plugins) {
-            if (isPreProcessor(p)) {
-                res.add(p);
-            }
-        }
-        return res;
-    }
-
     public static boolean isFunctional(Plugin prov) {
         return prov.getState().contains(Plugin.State.FUNCTIONAL);
     }
@@ -161,7 +159,11 @@
     }
 
     public static FileSystem jrtFileSystem() {
-        return FileSystems.getFileSystem(URI.create("jrt:/"));
+        if (JRT_FILE_SYSTEM == null) {
+            JRT_FILE_SYSTEM = FileSystems.getFileSystem(URI.create("jrt:/"));
+        }
+
+        return JRT_FILE_SYSTEM;
     }
 
     public static PathMatcher getPathMatcher(FileSystem fs, String pattern) {
@@ -172,7 +174,11 @@
         return fs.getPathMatcher(pattern);
     }
 
-    public static PathMatcher getPathMatcher(String pattern) {
+    public static PathMatcher getJRTFSPathMatcher(String pattern) {
         return getPathMatcher(jrtFileSystem(), pattern);
     }
+
+    public static Path getJRTFSPath(String first, String... more) {
+        return jrtFileSystem().getPath(first, more);
+    }
 }
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/DefaultCompressPlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/DefaultCompressPlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -24,8 +24,6 @@
  */
 package jdk.tools.jlink.internal.plugins;
 
-import java.io.IOException;
-import java.io.UncheckedIOException;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Map;
@@ -37,7 +35,6 @@
 import jdk.tools.jlink.internal.ImagePluginStack;
 import jdk.tools.jlink.internal.ResourcePrevisitor;
 import jdk.tools.jlink.internal.StringTable;
-import jdk.tools.jlink.internal.Utils;
 
 /**
  *
@@ -103,33 +100,26 @@
 
     @Override
     public void configure(Map<String, String> config) {
-        try {
-            String filter = config.get(FILTER);
-            String[] patterns = filter == null ? null
-                    : Utils.listParser.apply(filter);
-            ResourceFilter resFilter = new ResourceFilter(patterns);
-            String level = config.get(NAME);
-            if (level != null) {
-                switch (level) {
-                    case LEVEL_0:
-                        ss = new StringSharingPlugin(resFilter);
-                        break;
-                    case LEVEL_1:
-                        zip = new ZipPlugin(resFilter);
-                        break;
-                    case LEVEL_2:
-                        ss = new StringSharingPlugin(resFilter);
-                        zip = new ZipPlugin(resFilter);
-                        break;
-                    default:
-                        throw new IllegalArgumentException("Invalid compression level " + level);
-                }
-            } else {
-                ss = new StringSharingPlugin(resFilter);
-                zip = new ZipPlugin(resFilter);
+        ResourceFilter resFilter = ResourceFilter.includeFilter(config.get(FILTER));
+        String level = config.get(NAME);
+        if (level != null) {
+            switch (level) {
+                case LEVEL_0:
+                    ss = new StringSharingPlugin(resFilter);
+                    break;
+                case LEVEL_1:
+                    zip = new ZipPlugin(resFilter);
+                    break;
+                case LEVEL_2:
+                    ss = new StringSharingPlugin(resFilter);
+                    zip = new ZipPlugin(resFilter);
+                    break;
+                default:
+                    throw new IllegalArgumentException("Invalid compression level " + level);
             }
-        } catch (IOException ex) {
-            throw new UncheckedIOException(ex);
+        } else {
+            ss = new StringSharingPlugin(resFilter);
+            zip = new ZipPlugin(resFilter);
         }
     }
 }
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludeFilesPlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludeFilesPlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -24,7 +24,6 @@
  */
 package jdk.tools.jlink.internal.plugins;
 
-import java.io.IOException;
 import java.io.UncheckedIOException;
 import java.util.Collections;
 import java.util.HashSet;
@@ -84,11 +83,6 @@
 
     @Override
     public void configure(Map<String, String> config) {
-        try {
-            String value = config.get(NAME);
-            predicate = new ResourceFilter(Utils.listParser.apply(value), true);
-        } catch (IOException ex) {
-            throw new UncheckedIOException(ex);
-        }
+        predicate = ResourceFilter.excludeFilter(config.get(NAME));
     }
 }
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludePlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludePlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -24,17 +24,14 @@
  */
 package jdk.tools.jlink.internal.plugins;
 
-import java.io.IOException;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.function.Predicate;
-import jdk.tools.jlink.plugin.PluginException;
 import jdk.tools.jlink.plugin.TransformerPlugin;
 import jdk.tools.jlink.plugin.ModuleEntry;
 import jdk.tools.jlink.plugin.ModulePool;
-import jdk.tools.jlink.internal.Utils;
 
 /**
  *
@@ -84,11 +81,6 @@
 
     @Override
     public void configure(Map<String, String> config) {
-        try {
-            String val = config.get(NAME);
-            predicate = new ResourceFilter(Utils.listParser.apply(val), true);
-        } catch (IOException ex) {
-            throw new PluginException(ex);
-        }
+        predicate = ResourceFilter.excludeFilter(config.get(NAME));
     }
 }
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludeVMPlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludeVMPlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -40,9 +40,7 @@
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import jdk.tools.jlink.plugin.TransformerPlugin;
-import jdk.tools.jlink.plugin.ModuleEntry;
 import jdk.tools.jlink.plugin.ModulePool;
-import jdk.tools.jlink.internal.Utils;
 import jdk.tools.jlink.plugin.ModuleEntry;
 import jdk.tools.jlink.plugin.PluginException;
 
@@ -184,38 +182,34 @@
 
     @Override
     public void configure(Map<String, String> config) {
-        try {
-            String value = config.get(NAME);
-            String exclude = "";
-            switch (value) {
-                case ALL: {
-                    // no filter.
-                    keepAll = true;
-                    break;
-                }
-                case CLIENT: {
-                    target = Jvm.CLIENT;
-                    exclude = "/java.base/native*server/*,/java.base/native*minimal/*";
-                    break;
-                }
-                case SERVER: {
-                    target = Jvm.SERVER;
-                    exclude = "/java.base/native*client/*,/java.base/native*minimal/*";
-                    break;
-                }
-                case MINIMAL: {
-                    target = Jvm.MINIMAL;
-                    exclude = "/java.base/native*server/*,/java.base/native*client/*";
-                    break;
-                }
-                default: {
-                    throw new IllegalArgumentException("Unknown exclude VM option: " + value);
-                }
+        String value = config.get(NAME);
+        String exclude = "";
+        switch (value) {
+            case ALL: {
+                // no filter.
+                keepAll = true;
+                break;
+            }
+            case CLIENT: {
+                target = Jvm.CLIENT;
+                exclude = "/java.base/native**server/**,/java.base/native**minimal/**";
+                break;
             }
-            predicate = new ResourceFilter(Utils.listParser.apply(exclude), true);
-        } catch (IOException ex) {
-            throw new UncheckedIOException(ex);
+            case SERVER: {
+                target = Jvm.SERVER;
+                exclude = "/java.base/native**client/**,/java.base/native**minimal/**";
+                break;
+            }
+            case MINIMAL: {
+                target = Jvm.MINIMAL;
+                exclude = "/java.base/native**server/**,/java.base/native**client/**";
+                break;
+            }
+            default: {
+                throw new IllegalArgumentException("Unknown exclude VM option: " + value);
+            }
         }
+        predicate = ResourceFilter.excludeFilter(exclude);
     }
 
     private ModuleEntry handleJvmCfgFile(ModuleEntry orig,
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/FileCopierPlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/FileCopierPlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -196,14 +196,13 @@
 
     @Override
     public void configure(Map<String, String> config) {
-        String val = config.get(NAME);
-        String[] argument = Utils.listParser.apply(val);
-        if (argument == null || argument.length == 0) {
+        List<String> arguments = Utils.parseList(config.get(NAME));
+        if (arguments.isEmpty()) {
             throw new RuntimeException("Invalid argument for " + NAME);
         }
 
         String javahome = System.getProperty("java.home");
-        for (String a : argument) {
+        for (String a : arguments) {
             int i = a.indexOf("=");
             CopiedFile cf = new CopiedFile();
             if (i == -1) {
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/IncludeLocalesPlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/IncludeLocalesPlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -25,8 +25,6 @@
 package jdk.tools.jlink.internal.plugins;
 
 import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.UncheckedIOException;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
@@ -44,7 +42,6 @@
 import jdk.internal.org.objectweb.asm.ClassReader;
 import jdk.tools.jlink.internal.ResourcePrevisitor;
 import jdk.tools.jlink.internal.StringTable;
-import jdk.tools.jlink.internal.Utils;
 import jdk.tools.jlink.plugin.LinkModule;
 import jdk.tools.jlink.plugin.ModuleEntry;
 import jdk.tools.jlink.plugin.PluginException;
@@ -209,14 +206,10 @@
                 String.format(PluginsResourceBundle.getMessage(NAME + ".nomatchinglocales"), userParam));
         }
 
-        try {
-            String value = META_FILES + filtered.stream()
-                .map(s -> includeLocaleFilePatterns(s))
-                .collect(Collectors.joining(","));
-            predicate = new ResourceFilter(Utils.listParser.apply(value), false);
-        } catch (IOException ex) {
-            throw new UncheckedIOException(ex);
-        }
+        String value = META_FILES + filtered.stream()
+            .map(s -> includeLocaleFilePatterns(s))
+            .collect(Collectors.joining(","));
+        predicate = ResourceFilter.includeFilter(value);
     }
 
     private String includeLocaleFilePatterns(String tag) {
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/OrderResourcesPlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/OrderResourcesPlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -167,8 +167,7 @@
 
     @Override
     public void configure(Map<String, String> config) {
-        String val = config.get(NAME);
-        String[] patterns = Utils.listParser.apply(val);
+        List<String> patterns = Utils.parseList(config.get(NAME));
         int ordinal = 0;
 
         for (String pattern : patterns) {
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ReleaseInfoPlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ReleaseInfoPlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -97,10 +97,9 @@
 
             case "del": {
                 // --release-info del:keys=openjdk,java_version
-                String[] keys = Utils.listParser.apply(config.get(KEYS));
-                for (String k : keys) {
+                Utils.parseList(config.get(KEYS)).stream().forEach((k) -> {
                     release.remove(k);
-                }
+                });
             }
             break;
 
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ResourceFilter.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ResourceFilter.java	Wed Jul 05 21:51:13 2017 +0200
@@ -26,12 +26,13 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.nio.file.FileSystem;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.PathMatcher;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.function.Predicate;
 import jdk.tools.jlink.internal.Utils;
 import jdk.tools.jlink.plugin.PluginException;
@@ -41,17 +42,14 @@
  * Filter resource resources using path matcher.
  */
 public class ResourceFilter implements Predicate<String> {
-    private static final FileSystem JRT_FILE_SYSTEM = Utils.jrtFileSystem();
-
-    final boolean negate;
-    final List<PathMatcher> matchers;
+    private final static List<String> EMPTY_LIST = Collections.emptyList();
 
-    public ResourceFilter(String[] patterns) throws IOException {
-        this(patterns, false);
-    }
+    private final List<PathMatcher> matchers;
+    private final boolean include;
+    private final boolean otherwise;
 
-    public ResourceFilter(String[] patterns, boolean negate) throws IOException {
-        this.negate = negate;
+    private ResourceFilter(List<String> patterns, boolean exclude) {
+        Objects.requireNonNull(patterns);
         this.matchers = new ArrayList<>();
 
         for (String pattern : patterns) {
@@ -67,28 +65,59 @@
                         throw new PluginException(ex);
                     }
 
-                    for (String line : lines) {
-                        PathMatcher matcher = Utils.getPathMatcher(JRT_FILE_SYSTEM, line);
-                        matchers.add(matcher);
-                    }
+                    lines.stream().forEach((line) -> {
+                        matchers.add(Utils.getJRTFSPathMatcher(line.trim()));
+                    });
+                } else {
+                    System.err.println("warning - the filter file " + file +
+                                       " is empty or not present.");
                 }
             } else {
-                PathMatcher matcher = Utils.getPathMatcher(JRT_FILE_SYSTEM, pattern);
-                matchers.add(matcher);
+                matchers.add(Utils.getJRTFSPathMatcher(pattern));
             }
         }
+
+        this.include = !exclude;
+        this.otherwise = exclude || this.matchers.isEmpty();
+    }
+
+    public static ResourceFilter includeFilter(List<String> patterns) {
+        Objects.requireNonNull(patterns);
+        return new ResourceFilter(patterns, false);
+    }
+
+    public static ResourceFilter includeFilter(String patterns) {
+        if (patterns == null) {
+            return includeFilter(EMPTY_LIST);
+        }
+
+        return includeFilter(Utils.parseList(patterns));
+    }
+
+    public static ResourceFilter excludeFilter(List<String> patterns) {
+        Objects.requireNonNull(patterns);
+        return new ResourceFilter(patterns, true);
+    }
+
+    public static ResourceFilter excludeFilter(String patterns) {
+        if (patterns == null) {
+            return excludeFilter(EMPTY_LIST);
+        }
+
+        return excludeFilter(Utils.parseList(patterns));
     }
 
     @Override
     public boolean test(String name) {
-        Path path = JRT_FILE_SYSTEM.getPath(name);
+        Objects.requireNonNull(name);
+        Path path = Utils.getJRTFSPath(name);
 
         for (PathMatcher matcher : matchers) {
             if (matcher.matches(path)) {
-                return !negate;
+                return include;
             }
         }
 
-        return negate;
+        return otherwise;
     }
 }
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/StringSharingPlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/StringSharingPlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -63,7 +63,6 @@
 import jdk.tools.jlink.plugin.ModulePool;
 import jdk.tools.jlink.internal.ResourcePrevisitor;
 import jdk.tools.jlink.internal.StringTable;
-import jdk.tools.jlink.internal.Utils;
 
 /**
  *
@@ -335,12 +334,8 @@
 
     private Predicate<String> predicate;
 
-    public StringSharingPlugin() throws IOException {
-        this(new String[0]);
-    }
-
-    StringSharingPlugin(String[] patterns) throws IOException {
-        this(new ResourceFilter(patterns));
+    public StringSharingPlugin() {
+        this((path) -> true);
     }
 
     StringSharingPlugin(Predicate<String> predicate) {
@@ -396,12 +391,7 @@
 
     @Override
     public void configure(Map<String, String> config) {
-        try {
-            String val = config.get(NAME);
-            predicate = new ResourceFilter(Utils.listParser.apply(val));
-        } catch (IOException ex) {
-            throw new PluginException(ex);
-        }
+        predicate = ResourceFilter.includeFilter(config.get(NAME));
     }
 
     @Override
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/StripDebugPlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/StripDebugPlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -25,8 +25,7 @@
 package jdk.tools.jlink.internal.plugins;
 
 import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.UncheckedIOException;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
@@ -42,15 +41,15 @@
  * Strip debug attributes plugin
  */
 public final class StripDebugPlugin implements TransformerPlugin {
-    private static final String[] PATTERNS = {"*.diz"};
     public static final String NAME = "strip-debug";
     private final Predicate<String> predicate;
+
     public StripDebugPlugin() {
-        try {
-            predicate = new ResourceFilter(PATTERNS);
-        } catch (IOException ex) {
-            throw new UncheckedIOException(ex);
-        }
+        this((path) -> false);
+    }
+
+    StripDebugPlugin(Predicate<String> predicate) {
+        this.predicate = predicate;
     }
 
     @Override
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ZipPlugin.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ZipPlugin.java	Wed Jul 05 21:51:13 2017 +0200
@@ -27,18 +27,17 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.function.Predicate;
 import java.util.zip.Deflater;
-import jdk.tools.jlink.plugin.PluginException;
 import jdk.tools.jlink.internal.ModulePoolImpl;
 import jdk.tools.jlink.plugin.ModuleEntry;
 import jdk.tools.jlink.plugin.ModulePool;
 import jdk.tools.jlink.plugin.TransformerPlugin;
-import jdk.tools.jlink.internal.Utils;
 
 /**
  *
@@ -53,8 +52,8 @@
 
     }
 
-    ZipPlugin(String[] patterns) throws IOException {
-        this(new ResourceFilter(patterns));
+    ZipPlugin(String[] patterns) {
+        this(ResourceFilter.includeFilter(Arrays.asList(patterns)));
     }
 
     ZipPlugin(Predicate<String> predicate) {
@@ -90,12 +89,7 @@
 
     @Override
     public void configure(Map<String, String> config) {
-        try {
-            String val = config.get(NAME);
-            predicate = new ResourceFilter(Utils.listParser.apply(val));
-        } catch (IOException ex) {
-            throw new PluginException(ex);
-        }
+        predicate = ResourceFilter.includeFilter(config.get(NAME));
     }
 
     static byte[] compress(byte[] bytesIn) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink_ja.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,54 @@
+main.usage.summary=\u4F7F\u7528\u65B9\u6CD5: {0} <options> --modulepath <modulepath> --addmods <mods> --output <path>\n\u4F7F\u7528\u53EF\u80FD\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30EA\u30B9\u30C8\u306B\u3064\u3044\u3066\u306F\u3001--help\u3092\u4F7F\u7528\u3057\u307E\u3059
+
+main.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> --modulepath <modulepath> --addmods <mods> --output <path>\n\u4F7F\u7528\u53EF\u80FD\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002
+
+error.prefix=\u30A8\u30E9\u30FC:
+warn.prefix=\u8B66\u544A:
+
+main.opt.help=\  --help                            \u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u307E\u3059
+
+main.opt.version=\  --version                         \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831
+
+main.opt.modulepath=\  --modulepath <modulepath>         \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9
+
+main.opt.addmods=\  --addmods <mod>[,<mod>...]        \u89E3\u6C7A\u3059\u308B\u30EB\u30FC\u30C8\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB
+
+main.opt.limitmods=\  --limitmods <mod>[,<mod>...]      \u76E3\u8996\u53EF\u80FD\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30E6\u30CB\u30D0\u30FC\u30B9\u3092\u5236\u9650\u3057\u307E\u3059
+
+main.opt.output=\  --output <path>                   \u51FA\u529B\u30D1\u30B9\u306E\u5834\u6240
+
+main.command.files=\  @<filename>                       \u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8AAD\u307F\u53D6\u308A\u307E\u3059
+
+main.opt.endian=\  --endian <little|big>             \u751F\u6210\u3055\u308C\u305Fjimage (default:native)\u306E\u30D0\u30A4\u30C8\u9806
+
+main.opt.genbom=\  --genbom                          jlink\u60C5\u5831\u3092\u542B\u3080bom\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3057\u307E\u3059
+
+main.opt.saveopts=\  --saveopts <filename>             \u6307\u5B9A\u306E\u30D5\u30A1\u30A4\u30EB\u306Bjlink\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4FDD\u5B58\u3057\u307E\u3059
+
+main.msg.bug=jlink\u3067\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u3067\u91CD\u8907\u304C\u306A\u3044\u304B\u3092\u3054\u78BA\u8A8D\u306E\u3046\u3048\u3001Java Bug Database (http://bugreport.java.com/bugreport/)\u3067bug\u306E\u767B\u9332\u3092\u304A\u9858\u3044\u3044\u305F\u3057\u307E\u3059\u3002\u30EC\u30DD\u30FC\u30C8\u306B\u306F\u3001\u305D\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3068\u6B21\u306E\u8A3A\u65AD\u5185\u5BB9\u3092\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\u3054\u5354\u529B\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002
+
+main.extended.help=\u4F7F\u7528\u53EF\u80FD\u306A\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30EA\u30B9\u30C8:
+
+err.unknown.byte.order:\u4E0D\u660E\u306A\u30D0\u30A4\u30C8\u9806{0}
+err.output.must.be.specified:--output\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+err.modulepath.must.be.specified:--modulepath\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+err.mods.must.be.specified:{0}\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+err.path.not.found=\u30D1\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
+err.path.not.valid=\u7121\u52B9\u306A\u30D1\u30B9: {0}
+err.existing.image.must.exist=\u65E2\u5B58\u306E\u30A4\u30E1\u30FC\u30B8\u304C\u5B58\u5728\u3057\u306A\u3044\u304B\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+err.existing.image.invalid=\u65E2\u5B58\u306E\u30A4\u30E1\u30FC\u30B8\u304C\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093
+err.file.not.found=\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
+err.file.error=\u30D5\u30A1\u30A4\u30EB\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093: {0}
+err.dir.exists={0}\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059
+err.badpattern=\u4E0D\u6B63\u30D1\u30BF\u30FC\u30F3{0}
+err.unknown.option=\u4E0D\u660E\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
+err.missing.arg={0}\u306B\u5024\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+err.internal.error=\u5185\u90E8\u30A8\u30E9\u30FC: {0} {1} {2}
+err.invalid.arg.for.option=\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059: {0}
+err.option.after.class=\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u30AF\u30E9\u30B9\u306E\u524D\u306B\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}
+err.option.unsupported={0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093: {1}
+err.config.defaults=\u30D7\u30ED\u30D1\u30C6\u30A3{0}\u304C\u69CB\u6210\u306B\u3042\u308A\u307E\u305B\u3093
+err.config.defaults.value=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u306E\u5024\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059: {0}
+err.bom.generation=bom\u30D5\u30A1\u30A4\u30EB\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {0}
+warn.invalid.arg=\u7121\u52B9\u306A\u30AF\u30E9\u30B9\u540D\u307E\u305F\u306F\u30D1\u30B9\u540D\u304C\u5B58\u5728\u3057\u307E\u305B\u3093: {0}
+warn.split.package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306F{1} {2}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink_zh_CN.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,54 @@
+main.usage.summary=\u7528\u6CD5: {0} <options> --modulepath <modulepath> --addmods <mods> --output <path>\n\u4F7F\u7528 --help \u53EF\u4EE5\u5217\u51FA\u53EF\u80FD\u7684\u9009\u9879
+
+main.usage=\u7528\u6CD5: {0} <options> --modulepath <modulepath> --addmods <mods> --output <path>\n\u53EF\u80FD\u7684\u9009\u9879\u5305\u62EC:
+
+error.prefix=\u9519\u8BEF:
+warn.prefix=\u8B66\u544A:
+
+main.opt.help=\  --help                            \u8F93\u51FA\u6B64\u5E2E\u52A9\u6D88\u606F
+
+main.opt.version=\  --version                         \u7248\u672C\u4FE1\u606F
+
+main.opt.modulepath=\  --modulepath <modulepath>         \u6A21\u5757\u8DEF\u5F84
+
+main.opt.addmods=\  --addmods <mod>[,<mod>...]        \u8981\u89E3\u6790\u7684\u6839\u6A21\u5757
+
+main.opt.limitmods=\  --limitmods <mod>[,<mod>...]      \u9650\u5236\u53EF\u89C2\u5BDF\u6A21\u5757\u7684\u9886\u57DF
+
+main.opt.output=\  --output <path>                   \u8F93\u51FA\u8DEF\u5F84\u7684\u4F4D\u7F6E
+
+main.command.files=\  @<filename>                       \u4ECE\u6587\u4EF6\u4E2D\u8BFB\u53D6\u9009\u9879
+
+main.opt.endian=\  --endian <little|big>             \u6240\u751F\u6210 jimage \u7684\u5B57\u8282\u987A\u5E8F (\u9ED8\u8BA4\u503C: native)
+
+main.opt.genbom=\  --genbom                          \u751F\u6210\u5305\u542B jlink \u4FE1\u606F\u7684 bom \u6587\u4EF6
+
+main.opt.saveopts=\  --saveopts <filename>             \u5C06 jlink \u9009\u9879\u4FDD\u5B58\u5728\u6307\u5B9A\u6587\u4EF6\u4E2D
+
+main.msg.bug=jlink \u4E2D\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF\u3002\u5982\u679C\u5728 Java Bug Database (http://bugreport.java.com/bugreport/) \u4E2D\u6CA1\u6709\u627E\u5230\u8BE5\u9519\u8BEF, \u8BF7\u5728\u8BE5\u6570\u636E\u5E93\u4E2D\u5EFA\u7ACB Bug\u3002\u8BF7\u5728\u62A5\u544A\u4E2D\u9644\u4E0A\u60A8\u7684\u7A0B\u5E8F\u548C\u4EE5\u4E0B\u8BCA\u65AD\u4FE1\u606F\u3002\u8C22\u8C22\u3002
+
+main.extended.help=\u53EF\u7528\u63D2\u4EF6\u5217\u8868:
+
+err.unknown.byte.order:\u672A\u77E5\u7684\u5B57\u8282\u987A\u5E8F {0}
+err.output.must.be.specified:\u5FC5\u987B\u6307\u5B9A --output
+err.modulepath.must.be.specified:\u5FC5\u987B\u6307\u5B9A --modulepath
+err.mods.must.be.specified:\u6CA1\u6709\u5C06\u4EFB\u4F55\u6A21\u5757\u6307\u5B9A\u5230{0}
+err.path.not.found=\u627E\u4E0D\u5230\u8DEF\u5F84: {0}
+err.path.not.valid=\u65E0\u6548\u8DEF\u5F84: {0}
+err.existing.image.must.exist=\u73B0\u6709\u6620\u50CF\u4E0D\u5B58\u5728\u6216\u8005\u4E0D\u662F\u76EE\u5F55
+err.existing.image.invalid=\u73B0\u6709\u6620\u50CF\u65E0\u6548
+err.file.not.found=\u627E\u4E0D\u5230\u6587\u4EF6: {0}
+err.file.error=\u65E0\u6CD5\u8BBF\u95EE\u6587\u4EF6: {0}
+err.dir.exists={0} \u5DF2\u5B58\u5728
+err.badpattern=\u9519\u8BEF\u7684\u6A21\u5F0F {0}
+err.unknown.option=\u672A\u77E5\u9009\u9879: {0}
+err.missing.arg=\u6CA1\u6709\u4E3A{0}\u6307\u5B9A\u503C
+err.internal.error=\u5185\u90E8\u9519\u8BEF: {0} {1} {2}
+err.invalid.arg.for.option=\u9009\u9879\u7684\u53C2\u6570\u65E0\u6548: {0}
+err.option.after.class=\u5FC5\u987B\u5728\u7C7B\u4E4B\u524D\u6307\u5B9A\u9009\u9879: {0}
+err.option.unsupported=\u4E0D\u652F\u6301{0}: {1}
+err.config.defaults=\u914D\u7F6E\u4E2D\u7F3A\u5C11\u5C5E\u6027 {0}
+err.config.defaults.value=\u9ED8\u8BA4\u5C5E\u6027\u4E2D\u7684\u503C\u9519\u8BEF: {0}
+err.bom.generation=\u672A\u80FD\u751F\u6210 bom \u6587\u4EF6: {0}
+warn.invalid.arg=\u7C7B\u540D\u65E0\u6548\u6216\u8DEF\u5F84\u540D\u4E0D\u5B58\u5728: {0}
+warn.split.package=\u5DF2\u5728{1} {2}\u4E2D\u5B9A\u4E49\u7A0B\u5E8F\u5305{0}
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java	Wed Jul 05 21:51:13 2017 +0200
@@ -103,6 +103,7 @@
 import jdk.internal.module.ConfigurableModuleFinder.Phase;
 import jdk.internal.module.ModuleHashes;
 import jdk.internal.module.ModuleInfoExtender;
+import jdk.tools.jlink.internal.Utils;
 
 import static java.util.stream.Collectors.joining;
 
@@ -1091,13 +1092,7 @@
         @Override
         public PathMatcher convert(String pattern) {
             try {
-                if (!pattern.startsWith("glob:") &&
-                    !pattern.startsWith("regex:")) {
-                    pattern = "glob:" + pattern;
-                }
-
-                return FileSystems.getDefault()
-                                  .getPathMatcher("glob:" + pattern);
+                return Utils.getPathMatcher(FileSystems.getDefault(), pattern);
             } catch (PatternSyntaxException e) {
                 throw new CommandException("err.bad.pattern", pattern);
             }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jmod/resources/jmod_ja.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,52 @@
+main.usage.summary=\u4F7F\u7528\u65B9\u6CD5: {0} (create|list|describe) <OPTIONS> <jmod-file>\n\u4F7F\u7528\u53EF\u80FD\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u30EA\u30B9\u30C8\u306B\u3064\u3044\u3066\u306F\u3001--help\u3092\u4F7F\u7528\u3057\u307E\u3059
+
+main.usage=\u4F7F\u7528\u65B9\u6CD5: {0} (create|list|describe) <OPTIONS> <jmod-file>
+
+error.prefix=\u30A8\u30E9\u30FC:
+warn.prefix=\u8B66\u544A:
+
+main.opt.mode.create=create    - \u65B0\u898F\u306Ejmod\u30A2\u30FC\u30AB\u30A4\u30D6\u3092\u4F5C\u6210\u3057\u307E\u3059
+main.opt.mode.list=list      - \u3059\u3079\u3066\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u540D\u524D\u3092\u51FA\u529B\u3057\u307E\u3059
+main.opt.mode.describe=describe  - \u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u8A73\u7D30\u3092\u51FA\u529B\u3057\u307E\u3059
+
+main.opt.help=\u3053\u306E\u4F7F\u7528\u65B9\u6CD5\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u307E\u3059
+main.opt.version=\u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831
+main.opt.class-path=\u30AF\u30E9\u30B9\u3092\u542B\u3080\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3jar\u30D5\u30A1\u30A4\u30EB|\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
+main.opt.libs=\u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u5834\u6240
+main.opt.cmds=\u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30B3\u30DE\u30F3\u30C9\u306E\u5834\u6240
+main.opt.config=\u30E6\u30FC\u30B6\u30FC\u304C\u7DE8\u96C6\u53EF\u80FD\u306A\u69CB\u6210\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240
+main.opt.exclude=PATTERN\u3068\u3057\u3066\u6307\u5B9A\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u9664\u5916\u3057\u307E\u3059
+main.opt.module-version= \u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3
+main.opt.modulepath=\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9
+main.opt.main-class=\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9
+main.opt.main-class.arg=class-name
+main.opt.os-name=\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30FB\u30B7\u30B9\u30C6\u30E0\u540D
+main.opt.os-name.arg=os-name
+main.opt.os-arch=\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30FB\u30B7\u30B9\u30C6\u30E0\u306E\u30A2\u30FC\u30AD\u30C6\u30AF\u30C1\u30E3
+main.opt.os-arch.arg=os-arch
+main.opt.os-version=\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30FB\u30B7\u30B9\u30C6\u30E0\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3
+main.opt.os-version.arg=os-version
+main.opt.hash-dependencies=\u30D1\u30BF\u30FC\u30F3\u306B\u4E00\u81F4\u3057\u305F\u4F9D\u5B58\u6027\u306E\u30CF\u30C3\u30B7\u30E5\u3092\u8A08\u7B97\u304A\u3088\u3073\u8A18\u9332\u3057\u307E\u3059
+main.opt.cmdfile=\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u8AAD\u307F\u53D6\u308A\u307E\u3059
+
+err.missing.mode=create\u3001list\u307E\u305F\u306Fdescribe\u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+err.invalid.mode=\u30E2\u30FC\u30C9\u306Fcreate\u3001list\u307E\u305F\u306Fdescribe\u306E\u3044\u305A\u308C\u304B\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}
+err.classpath.must.be.specified=--class-path\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+err.jmod.must.be.specified=jmod-file\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+err.invalid.version=\u7121\u52B9\u306A\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3{0}
+err.output.must.be.specified:--output\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+err.mods.must.be.specified:--mods\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+err.modulepath.must.be.specified:\u4F9D\u5B58\u6027\u306E\u30CF\u30C3\u30B7\u30E5\u6642\u306B\u306F--module-path\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059
+err.invalid.main-class:\u7121\u52B9\u306A\u30E1\u30A4\u30F3\u30AF\u30E9\u30B9\u540D: {0}
+err.path.not.found=\u30D1\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
+err.path.not.valid=\u7121\u52B9\u306A\u30D1\u30B9: {0}
+err.path.not.a.dir=\u30D1\u30B9\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059: {0}
+err.invalid.class.path.entry=\u7121\u52B9\u306A\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u30FB\u30A8\u30F3\u30C8\u30EA: {0}
+err.file.already.exists=\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059: {0}
+err.jmod.not.found=jmod\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0}
+err.bad.pattern=\u4E0D\u6B63\u30D1\u30BF\u30FC\u30F3{0}
+err.unknown.option=\u4E0D\u660E\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
+err.missing.arg={0}\u306B\u5024\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
+err.internal.error=\u5185\u90E8\u30A8\u30E9\u30FC: {0} {1} {2}
+err.module.descriptor.not.found=\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
+warn.invalid.arg=\u7121\u52B9\u306A\u30AF\u30E9\u30B9\u540D\u307E\u305F\u306F\u30D1\u30B9\u540D\u304C\u5B58\u5728\u3057\u307E\u305B\u3093: {0}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jmod/resources/jmod_zh_CN.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,52 @@
+main.usage.summary=\u7528\u6CD5: {0} (create|list|describe) <OPTIONS> <jmod-file>\n\u4F7F\u7528 --help \u5217\u51FA\u53EF\u80FD\u7684\u9009\u9879
+
+main.usage=\u7528\u6CD5: {0} (create|list|describe) <OPTIONS> <jmod-file>
+
+error.prefix=\u9519\u8BEF:
+warn.prefix=\u8B66\u544A:
+
+main.opt.mode.create=create    - \u521B\u5EFA\u65B0\u7684 jmod \u6863\u6848
+main.opt.mode.list=list      - \u8F93\u51FA\u6240\u6709\u6761\u76EE\u7684\u540D\u79F0
+main.opt.mode.describe=describe  - \u8F93\u51FA\u6A21\u5757\u8BE6\u7EC6\u4FE1\u606F
+
+main.opt.help=\u8F93\u51FA\u6B64\u7528\u6CD5\u6D88\u606F
+main.opt.version=\u7248\u672C\u4FE1\u606F
+main.opt.class-path=\u5305\u542B\u7C7B\u7684\u5E94\u7528\u7A0B\u5E8F jar \u6587\u4EF6|\u76EE\u5F55
+main.opt.libs=\u672C\u673A\u5E93\u7684\u4F4D\u7F6E
+main.opt.cmds=\u672C\u673A\u547D\u4EE4\u7684\u4F4D\u7F6E
+main.opt.config=\u7528\u6237\u53EF\u7F16\u8F91\u914D\u7F6E\u6587\u4EF6\u7684\u4F4D\u7F6E
+main.opt.exclude=\u6392\u9664\u4EE5\u6A21\u5F0F\u6307\u5B9A\u7684\u6587\u4EF6
+main.opt.module-version= \u6A21\u5757\u7248\u672C
+main.opt.modulepath=\u6A21\u5757\u8DEF\u5F84
+main.opt.main-class=\u4E3B\u7C7B
+main.opt.main-class.arg=class-name
+main.opt.os-name=\u64CD\u4F5C\u7CFB\u7EDF\u540D\u79F0
+main.opt.os-name.arg=os-name
+main.opt.os-arch=\u64CD\u4F5C\u7CFB\u7EDF\u4F53\u7CFB\u7ED3\u6784
+main.opt.os-arch.arg=os-arch
+main.opt.os-version=\u64CD\u4F5C\u7CFB\u7EDF\u7248\u672C
+main.opt.os-version.arg=os-version
+main.opt.hash-dependencies=\u8BA1\u7B97\u548C\u8BB0\u5F55\u6309\u6A21\u5F0F\u5339\u914D\u7684\u88AB\u4F9D\u8D56\u5BF9\u8C61\u7684\u6563\u5217
+main.opt.cmdfile=\u4ECE\u6307\u5B9A\u6587\u4EF6\u8BFB\u53D6\u9009\u9879
+
+err.missing.mode=\u5FC5\u987B\u6307\u5B9A\u521B\u5EFA, \u5217\u51FA\u6216\u63CF\u8FF0\u4E4B\u4E00
+err.invalid.mode=\u6A21\u5F0F\u5FC5\u987B\u4E3A\u521B\u5EFA, \u5217\u51FA\u6216\u63CF\u8FF0\u4E4B\u4E00: {0}
+err.classpath.must.be.specified=\u5FC5\u987B\u6307\u5B9A --class-path
+err.jmod.must.be.specified=\u5FC5\u987B\u6307\u5B9A jmod-file
+err.invalid.version=\u65E0\u6548\u7684\u6A21\u5757\u7248\u672C {0}
+err.output.must.be.specified:\u5FC5\u987B\u6307\u5B9A --output
+err.mods.must.be.specified:\u5FC5\u987B\u6307\u5B9A --mods
+err.modulepath.must.be.specified:\u5BF9\u88AB\u4F9D\u8D56\u5BF9\u8C61\u8FDB\u884C\u6563\u5217\u5904\u7406\u65F6\u5FC5\u987B\u6307\u5B9A --module-path
+err.invalid.main-class:\u65E0\u6548\u7684\u4E3B\u7C7B\u540D\u79F0: {0}
+err.path.not.found=\u627E\u4E0D\u5230\u8DEF\u5F84: {0}
+err.path.not.valid=\u65E0\u6548\u8DEF\u5F84: {0}
+err.path.not.a.dir=\u8DEF\u5F84\u5FC5\u987B\u4E3A\u76EE\u5F55: {0}
+err.invalid.class.path.entry=\u65E0\u6548\u7684\u7C7B\u8DEF\u5F84\u6761\u76EE: {0}
+err.file.already.exists=\u6587\u4EF6\u5DF2\u5B58\u5728: {0}
+err.jmod.not.found=\u627E\u4E0D\u5230 jmod \u6587\u4EF6: {0}
+err.bad.pattern=\u9519\u8BEF\u7684\u6A21\u5F0F {0}
+err.unknown.option=\u672A\u77E5\u9009\u9879: {0}
+err.missing.arg=\u6CA1\u6709\u4E3A{0}\u6307\u5B9A\u503C
+err.internal.error=\u5185\u90E8\u9519\u8BEF: {0} {1} {2}
+err.module.descriptor.not.found=\u627E\u4E0D\u5230\u6A21\u5757\u63CF\u8FF0\u7B26
+warn.invalid.arg=\u7C7B\u540D\u65E0\u6548\u6216\u8DEF\u5F84\u540D\u4E0D\u5B58\u5728: {0}
--- a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredVmUtil.java	Wed Jul 05 21:51:13 2017 +0200
@@ -102,35 +102,42 @@
      */
     public static String mainClass(MonitoredVm vm, boolean fullPath)
                          throws MonitorException {
-        String commandLine = commandLine(vm);
-        String arg0 = commandLine;
-
-        int firstSpace = commandLine.indexOf(' ');
+        String cmdLine = commandLine(vm);
+        int firstSpace = cmdLine.indexOf(' ');
         if (firstSpace > 0) {
-            arg0 = commandLine.substring(0, firstSpace);
+            cmdLine = cmdLine.substring(0, firstSpace);
+        }
+        if (fullPath) {
+            return cmdLine;
         }
-        if (!fullPath) {
+        /*
+         * Can't use File.separator() here because the separator for the target
+         * jvm may be different than the separator for the monitoring jvm.
+         * And we also strip embedded module e.g. "module/MainClass"
+         */
+        int lastSlash = cmdLine.lastIndexOf("/");
+        int lastBackslash = cmdLine.lastIndexOf("\\");
+        int lastSeparator = lastSlash > lastBackslash ? lastSlash : lastBackslash;
+        if (lastSeparator > 0) {
+            cmdLine = cmdLine.substring(lastSeparator + 1);
+        }
+
+        int lastPackageSeparator = cmdLine.lastIndexOf('.');
+        if (lastPackageSeparator > 0) {
+            String lastPart = cmdLine.substring(lastPackageSeparator + 1);
             /*
-             * can't use File.separator() here because the separator
-             * for the target jvm may be different than the separator
-             * for the monitoring jvm.
+             * We could have a relative path "my.module" or
+             * a module called "my.module" and a jar file called "my.jar" or
+             * class named "jar" in package "my", e.g. "my.jar".
+             * We can never be sure here, but we assume *.jar is a jar file
              */
-            int lastFileSeparator = arg0.lastIndexOf('/');
-            if (lastFileSeparator > 0) {
-                 return arg0.substring(lastFileSeparator + 1);
+            if (lastPart.equals("jar")) {
+                return cmdLine; /* presumably a file name without path */
             }
+            return lastPart; /* presumably a class name without package */
+        }
 
-            lastFileSeparator = arg0.lastIndexOf('\\');
-            if (lastFileSeparator > 0) {
-                 return arg0.substring(lastFileSeparator + 1);
-            }
-
-            int lastPackageSeparator = arg0.lastIndexOf('.');
-            if (lastPackageSeparator > 0) {
-                 return arg0.substring(lastPackageSeparator + 1);
-            }
-        }
-        return arg0;
+        return cmdLine;
     }
 
     /**
--- a/jdk/src/jdk.pack200/share/native/unpack200/main.cpp	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.pack200/share/native/unpack200/main.cpp	Wed Jul 05 21:51:13 2017 +0200
@@ -146,14 +146,18 @@
 #define USAGE_OPTIONS \
     "\n" \
     "Unpacking Options\n" \
-    "  -H{h}, --deflate-hint={h}     override transmitted deflate hint: true, false, or keep (default)\n" \
+    "  -H{h}, --deflate-hint={h}     override transmitted deflate hint:\n" \
+    "                                true, false, or keep (default)\n" \
     "  -r, --remove-pack-file        remove input file after unpacking\n" \
     "  -v, --verbose                 increase program verbosity\n" \
     "  -q, --quiet                   set verbosity to lowest level\n" \
-    "  -l{F}, --log-file={F}         output to the given log file, or '-' for standard output (default)\n" \
+    "  -l{F}, --log-file={F}         output to the given log file,\n" \
+    "                                or '-' for standard output (default)\n" \
     "  -?, -h, --help                print this message\n" \
     "  -V, --version                 print program version\n" \
-    "  -J{X}                         Java VM argument (ignored)\n"
+    "\n" \
+    "Exit Status:\n" \
+    "  0 if successful, >0 if an error occurred\n"
 
 static void usage(unpacker* u, const char* progname, bool full = false) {
   // WinMain does not set argv[0] to the progrname
--- a/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_de.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_de.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,16 +44,16 @@
         {"Usage.policytool.options.", "Verwendung: policytool [Optionen]"},
         {".file.file.policy.file.location",
                 " [-file <Datei>]    Policy-Dateiverzeichnis"},
-        {"New", "Neu"},
-        {"Open", "\u00D6ffnen"},
-        {"Save", "Speichern"},
-        {"Save.As", "Speichern unter"},
-        {"View.Warning.Log", "Warnungslog anzeigen"},
-        {"Exit", "Beenden"},
-        {"Add.Policy.Entry", "Policy-Eintrag hinzuf\u00FCgen"},
-        {"Edit.Policy.Entry", "Policy-Eintrag bearbeiten"},
-        {"Remove.Policy.Entry", "Policy-Eintrag entfernen"},
-        {"Edit", "Bearbeiten"},
+        {"New", "&Neu"},
+        {"Open", "&\u00D6ffnen..."},
+        {"Save", "&Speichern"},
+        {"Save.As", "Speichern &unter..."},
+        {"View.Warning.Log", "&Warnungslog anzeigen"},
+        {"Exit", "B&eenden"},
+        {"Add.Policy.Entry", "Policy-Eintrag &hinzuf\u00FCgen"},
+        {"Edit.Policy.Entry", "Policy-Eintrag &bearbeiten"},
+        {"Remove.Policy.Entry", "Policy-Eintrag &entfernen"},
+        {"Edit", "&Bearbeiten"},
         {"Retain", "Beibehalten"},
 
         {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
@@ -61,8 +61,8 @@
 
         {"Add.Public.Key.Alias", "Public Key-Alias hinzuf\u00FCgen"},
         {"Remove.Public.Key.Alias", "Public Key-Alias entfernen"},
-        {"File", "Datei"},
-        {"KeyStore", "KeyStore"},
+        {"File", "&Datei"},
+        {"KeyStore", "&KeyStore"},
         {"Policy.File.", "Policy-Datei:"},
         {"Could.not.open.policy.file.policyFile.e.toString.",
                 "Policy-Datei konnte nicht ge\u00F6ffnet werden: {0}: {1}"},
@@ -84,20 +84,20 @@
         {"OK.to.overwrite.existing.file.filename.",
                 "Vorhandene Datei {0} \u00FCberschreiben?"},
         {"Cancel", "Abbrechen"},
-        {"CodeBase.", "CodeBase:"},
-        {"SignedBy.", "SignedBy:"},
-        {"Add.Principal", "Principal hinzuf\u00FCgen"},
-        {"Edit.Principal", "Principal bearbeiten"},
-        {"Remove.Principal", "Principal entfernen"},
-        {"Principals.", "Principals:"},
-        {".Add.Permission", "  Berechtigung hinzuf\u00FCgen"},
-        {".Edit.Permission", "  Berechtigung bearbeiten"},
-        {"Remove.Permission", "Berechtigung entfernen"},
+        {"CodeBase.", "&CodeBase:"},
+        {"SignedBy.", "&SignedBy:"},
+        {"Add.Principal", "Principal &hinzuf\u00FCgen"},
+        {"Edit.Principal", "Principal &bearbeiten"},
+        {"Remove.Principal", "Principal ent&fernen"},
+        {"Principals.", "&Principals:"},
+        {".Add.Permission", "  B&erechtigung hinzuf\u00FCgen"},
+        {".Edit.Permission", "  Be&rechtigung bearbeiten"},
+        {"Remove.Permission", "Berec&htigung entfernen"},
         {"Done", "Fertig"},
-        {"KeyStore.URL.", "KeyStore-URL:"},
-        {"KeyStore.Type.", "KeyStore-Typ:"},
-        {"KeyStore.Provider.", "KeyStore-Provider:"},
-        {"KeyStore.Password.URL.", "KeyStore-Kennwort-URL:"},
+        {"KeyStore.URL.", "KeyStore-&URL:"},
+        {"KeyStore.Type.", "KeyStore-&Typ:"},
+        {"KeyStore.Provider.", "KeyStore-&Provider:"},
+        {"KeyStore.Password.URL.", "KeyStore-Kenn&wort-URL:"},
         {"Principals", "Principals"},
         {".Edit.Principal.", "  Principal bearbeiten:"},
         {".Add.New.Principal.", "  Neuen Principal hinzuf\u00FCgen:"},
@@ -117,8 +117,8 @@
                 "Policy erfolgreich in {0} geschrieben"},
         {"null.filename", "Null-Dateiname"},
         {"Save.changes.", "\u00C4nderungen speichern?"},
-        {"Yes", "Ja"},
-        {"No", "Nein"},
+        {"Yes", "&Ja"},
+        {"No", "&Nein"},
         {"Policy.Entry", "Policy-Eintrag"},
         {"Save.Changes", "\u00C4nderungen speichern"},
         {"No.Policy.Entry.selected", "Kein Policy-Eintrag ausgew\u00E4hlt"},
--- a/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_es.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_es.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,16 +44,16 @@
         {"Usage.policytool.options.", "Sintaxis: policytool [opciones]"},
         {".file.file.policy.file.location",
                 "  [-file <archivo>]    ubicaci\u00F3n del archivo de normas"},
-        {"New", "Nuevo"},
-        {"Open", "Abrir"},
-        {"Save", "Guardar"},
-        {"Save.As", "Guardar como"},
-        {"View.Warning.Log", "Ver Log de Advertencias"},
-        {"Exit", "Salir"},
-        {"Add.Policy.Entry", "Agregar Entrada de Pol\u00EDtica"},
-        {"Edit.Policy.Entry", "Editar Entrada de Pol\u00EDtica"},
-        {"Remove.Policy.Entry", "Eliminar Entrada de Pol\u00EDtica"},
-        {"Edit", "Editar"},
+        {"New", "&Nueva"},
+        {"Open", "&Abrir..."},
+        {"Save", "&Guardar"},
+        {"Save.As", "Guardar &como..."},
+        {"View.Warning.Log", "Ver &log de advertencias"},
+        {"Exit", "&Salir"},
+        {"Add.Policy.Entry", "Agregar &entrada de pol\u00EDtica"},
+        {"Edit.Policy.Entry", "E&ditar entrada de pol\u00EDtica"},
+        {"Remove.Policy.Entry", "&Eliminar entrada de pol\u00EDtica"},
+        {"Edit", "&Editar"},
         {"Retain", "Mantener"},
 
         {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
@@ -61,8 +61,8 @@
 
         {"Add.Public.Key.Alias", "Agregar Alias de Clave P\u00FAblico"},
         {"Remove.Public.Key.Alias", "Eliminar Alias de Clave P\u00FAblico"},
-        {"File", "Archivo"},
-        {"KeyStore", "Almac\u00E9n de Claves"},
+        {"File", "&Archivo"},
+        {"KeyStore", "Al&mac\u00E9n de claves"},
         {"Policy.File.", "Archivo de Pol\u00EDtica:"},
         {"Could.not.open.policy.file.policyFile.e.toString.",
                 "No se ha podido abrir el archivo de pol\u00EDtica: {0}: {1}"},
@@ -84,20 +84,20 @@
         {"OK.to.overwrite.existing.file.filename.",
                 "\u00BFSobrescribir el archivo existente {0}?"},
         {"Cancel", "Cancelar"},
-        {"CodeBase.", "CodeBase:"},
-        {"SignedBy.", "SignedBy:"},
-        {"Add.Principal", "Agregar Principal"},
-        {"Edit.Principal", "Editar Principal"},
-        {"Remove.Principal", "Eliminar Principal"},
-        {"Principals.", "Principales:"},
-        {".Add.Permission", "  Agregar Permiso"},
-        {".Edit.Permission", "  Editar Permiso"},
-        {"Remove.Permission", "Eliminar Permiso"},
+        {"CodeBase.", "&CodeBase:"},
+        {"SignedBy.", "&SignedBy:"},
+        {"Add.Principal", "&Agregar principal"},
+        {"Edit.Principal", "&Editar principal"},
+        {"Remove.Principal", "Elimina&r principal"},
+        {"Principals.", "&Principales:"},
+        {".Add.Permission", "A&gregar permiso"},
+        {".Edit.Permission", "Ed&itar permiso"},
+        {"Remove.Permission", "Eli&minar permiso"},
         {"Done", "Listo"},
-        {"KeyStore.URL.", "URL de Almac\u00E9n de Claves:"},
-        {"KeyStore.Type.", "Tipo de Almac\u00E9n de Claves:"},
-        {"KeyStore.Provider.", "Proveedor de Almac\u00E9n de Claves:"},
-        {"KeyStore.Password.URL.", "URL de Contrase\u00F1a de Almac\u00E9n de Claves:"},
+        {"KeyStore.URL.", "&URL de almac\u00E9n de claves:"},
+        {"KeyStore.Type.", "&Tipo de almac\u00E9n de claves:"},
+        {"KeyStore.Provider.", "&Proveedor de almac\u00E9n de claves:"},
+        {"KeyStore.Password.URL.", "URL de Contra&se\u00F1a de almac\u00E9n de claves:"},
         {"Principals", "Principales"},
         {".Edit.Principal.", "  Editar Principal:"},
         {".Add.New.Principal.", "  Agregar Nuevo Principal:"},
@@ -117,8 +117,8 @@
                 "Pol\u00EDtica escrita correctamente en {0}"},
         {"null.filename", "nombre de archivo nulo"},
         {"Save.changes.", "\u00BFGuardar los cambios?"},
-        {"Yes", "S\u00ED"},
-        {"No", "No"},
+        {"Yes", "&S\u00ED"},
+        {"No", "&No"},
         {"Policy.Entry", "Entrada de Pol\u00EDtica"},
         {"Save.Changes", "Guardar Cambios"},
         {"No.Policy.Entry.selected", "No se ha seleccionado la entrada de pol\u00EDtica"},
--- a/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_fr.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_fr.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,25 +44,25 @@
         {"Usage.policytool.options.", "Syntaxe : policytool [options]"},
         {".file.file.policy.file.location",
                 "  [-file <file>]    emplacement du fichier de r\u00E8gles"},
-        {"New", "Nouveau"},
-        {"Open", "Ouvrir"},
-        {"Save", "Enregistrer"},
-        {"Save.As", "Enregistrer sous"},
-        {"View.Warning.Log", "Afficher le journal des avertissements"},
-        {"Exit", "Quitter"},
-        {"Add.Policy.Entry", "Ajouter une r\u00E8gle"},
-        {"Edit.Policy.Entry", "Modifier une r\u00E8gle"},
-        {"Remove.Policy.Entry", "Enlever une r\u00E8gle"},
-        {"Edit", "Modifier"},
+        {"New", "&Nouveau"},
+        {"Open", "&Ouvrir..."},
+        {"Save", "Enregi&strer"},
+        {"Save.As", "Enregistrer so&us..."},
+        {"View.Warning.Log", "Affic&her le journal des avertissements"},
+        {"Exit", "&Quitter"},
+        {"Add.Policy.Entry", "&Ajouter une r\u00E8gle"},
+        {"Edit.Policy.Entry", "Modifi&er une r\u00E8gle"},
+        {"Remove.Policy.Entry", "Enlever une &r\u00E8gle"},
+        {"Edit", "Modifi&er"},
         {"Retain", "Conserver"},
 
         {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
-            "Avertissement : il se peut que le nom de fichier contienne des barres obliques inverses avec caract\u00E8re d'\u00E9chappement. Il n'est pas n\u00E9cessaire d'ajouter un caract\u00E8re d'\u00E9chappement aux barres obliques inverses. L'outil proc\u00E8de \u00E0 l'\u00E9chappement si n\u00E9cessaire lorsqu'il \u00E9crit le contenu des r\u00E8gles dans la zone de stockage persistant).\n\nCliquez sur Conserver pour garder le nom saisi ou sur Modifier pour le remplacer."},
+            "Avertissement : il se peut que le nom de fichier contienne des barres obliques inverses avec caract\u00E8re d'\u00E9chappement. Il n'est pas n\u00E9cessaire d'ajouter un caract\u00E8re d'\u00E9chappement aux barres obliques inverses. L'outil proc\u00E8de \u00E0 l'\u00E9chappement si n\u00E9cessaire lorsqu'il \u00E9crit le contenu des r\u00E8gles dans la zone de stockage persistant.\n\nCliquez sur Conserver pour garder le nom saisi ou sur Modifier pour le remplacer."},
 
         {"Add.Public.Key.Alias", "Ajouter un alias de cl\u00E9 publique"},
         {"Remove.Public.Key.Alias", "Enlever un alias de cl\u00E9 publique"},
-        {"File", "Fichier"},
-        {"KeyStore", "Fichier de cl\u00E9s"},
+        {"File", "&Fichier"},
+        {"KeyStore", "Fichier &de cl\u00E9s"},
         {"Policy.File.", "Fichier de r\u00E8gles :"},
         {"Could.not.open.policy.file.policyFile.e.toString.",
                 "Impossible d''ouvrir le fichier de r\u00E8gles\u00A0: {0}: {1}"},
@@ -84,20 +84,20 @@
         {"OK.to.overwrite.existing.file.filename.",
                 "Remplacer le fichier existant {0} ?"},
         {"Cancel", "Annuler"},
-        {"CodeBase.", "Base de code :"},
-        {"SignedBy.", "Sign\u00E9 par :"},
-        {"Add.Principal", "Ajouter un principal"},
-        {"Edit.Principal", "Modifier un principal"},
-        {"Remove.Principal", "Enlever un principal"},
-        {"Principals.", "Principaux :"},
-        {".Add.Permission", "  Ajouter un droit"},
-        {".Edit.Permission", "  Modifier un droit"},
-        {"Remove.Permission", "Enlever un droit"},
+        {"CodeBase.", "Base de &code :"},
+        {"SignedBy.", "&Sign\u00E9 par :"},
+        {"Add.Principal", "&Ajouter un principal"},
+        {"Edit.Principal", "Modifi&er un principal"},
+        {"Remove.Principal", "Enleve&r un principal"},
+        {"Principals.", "&Principaux :"},
+        {".Add.Permission", "  Ajouter un &droit"},
+        {".Edit.Permission", "  Mod&ifier un droit"},
+        {"Remove.Permission", "Enlever un dr&oit"},
         {"Done", "Termin\u00E9"},
-        {"KeyStore.URL.", "URL du fichier de cl\u00E9s :"},
-        {"KeyStore.Type.", "Type du fichier de cl\u00E9s :"},
-        {"KeyStore.Provider.", "Fournisseur du fichier de cl\u00E9s :"},
-        {"KeyStore.Password.URL.", "URL du mot de passe du fichier de cl\u00E9s :"},
+        {"KeyStore.URL.", "&URL du fichier de cl\u00E9s :"},
+        {"KeyStore.Type.", "&Type du fichier de cl\u00E9s :"},
+        {"KeyStore.Provider.", "Four&nisseur du fichier de cl\u00E9s :"},
+        {"KeyStore.Password.URL.", "UR&L du mot de passe du fichier de cl\u00E9s :"},
         {"Principals", "Principaux"},
         {".Edit.Principal.", "  Modifier un principal :"},
         {".Add.New.Principal.", "  Ajouter un principal :"},
@@ -117,8 +117,8 @@
                 "R\u00E8gle \u00E9crite dans {0}"},
         {"null.filename", "nom de fichier NULL"},
         {"Save.changes.", "Enregistrer les modifications ?"},
-        {"Yes", "Oui"},
-        {"No", "Non"},
+        {"Yes", "&Oui"},
+        {"No", "&Non"},
         {"Policy.Entry", "R\u00E8gle"},
         {"Save.Changes", "Enregistrer les modifications"},
         {"No.Policy.Entry.selected", "Aucune r\u00E8gle s\u00E9lectionn\u00E9e"},
--- a/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_it.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_it.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,16 +44,16 @@
         {"Usage.policytool.options.", "Uso: policytool [opzioni]"},
         {".file.file.policy.file.location",
                 "  [-file <file>]    posizione del file dei criteri"},
-        {"New", "Nuovo"},
-        {"Open", "Apri"},
-        {"Save", "Salva"},
-        {"Save.As", "Salva con nome"},
-        {"View.Warning.Log", "Visualizza registro avvertenze"},
-        {"Exit", "Esci"},
-        {"Add.Policy.Entry", "Aggiungi voce dei criteri"},
-        {"Edit.Policy.Entry", "Modifica voce dei criteri"},
-        {"Remove.Policy.Entry", "Rimuovi voce dei criteri"},
-        {"Edit", "Modifica"},
+        {"New", "&Nuovo"},
+        {"Open", "&Apri..."},
+        {"Save", "&Salva"},
+        {"Save.As", "Sal&va con nome..."},
+        {"View.Warning.Log", "Visuali&zza registro avvertenze"},
+        {"Exit", "&Esci"},
+        {"Add.Policy.Entry", "Aggi&ungi voce criteri"},
+        {"Edit.Policy.Entry", "&Modifica voce criteri"},
+        {"Remove.Policy.Entry", "&Rimuovi voce criteri"},
+        {"Edit", "&Modifica"},
         {"Retain", "Mantieni"},
 
         {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
@@ -61,8 +61,8 @@
 
         {"Add.Public.Key.Alias", "Aggiungi alias chiave pubblica"},
         {"Remove.Public.Key.Alias", "Rimuovi alias chiave pubblica"},
-        {"File", "File"},
-        {"KeyStore", "Keystore"},
+        {"File", "&File"},
+        {"KeyStore", "&Keystore"},
         {"Policy.File.", "File dei criteri:"},
         {"Could.not.open.policy.file.policyFile.e.toString.",
                 "Impossibile aprire il file di criteri {0}: {1}"},
@@ -84,20 +84,20 @@
         {"OK.to.overwrite.existing.file.filename.",
                 "OK per sovrascrivere il file {0}?"},
         {"Cancel", "Annulla"},
-        {"CodeBase.", "CodeBase:"},
-        {"SignedBy.", "SignedBy:"},
-        {"Add.Principal", "Aggiungi principal"},
-        {"Edit.Principal", "Modifica principal"},
-        {"Remove.Principal", "Rimuovi principal"},
-        {"Principals.", "Principal:"},
-        {".Add.Permission", "  Aggiungi autorizzazione"},
-        {".Edit.Permission", "  Modifica autorizzazione"},
-        {"Remove.Permission", "Rimuovi autorizzazione"},
+        {"CodeBase.", "&CodeBase:"},
+        {"SignedBy.", "&SignedBy:"},
+        {"Add.Principal", "&Aggiungi principal"},
+        {"Edit.Principal", "&Modifica principal"},
+        {"Remove.Principal", "&Rimuovi principal"},
+        {"Principals.", "&Principal:"},
+        {".Add.Permission", "  Aggiu&ngi autorizzazione"},
+        {".Edit.Permission", "  Mo&difica autorizzazione"},
+        {"Remove.Permission", "R&imuovi autorizzazione"},
         {"Done", "Fine"},
-        {"KeyStore.URL.", "URL keystore:"},
-        {"KeyStore.Type.", "Tipo keystore:"},
-        {"KeyStore.Provider.", "Provider keystore:"},
-        {"KeyStore.Password.URL.", "URL password keystore:"},
+        {"KeyStore.URL.", "&URL keystore:"},
+        {"KeyStore.Type.", "&Tipo keystore:"},
+        {"KeyStore.Provider.", "Pro&vider keystore:"},
+        {"KeyStore.Password.URL.", "URL pass&word keystore:"},
         {"Principals", "Principal:"},
         {".Edit.Principal.", "  Modifica principal:"},
         {".Add.New.Principal.", "  Aggiungi nuovo principal:"},
@@ -117,8 +117,8 @@
                 "I criteri sono stati scritti in {0}"},
         {"null.filename", "nome file nullo"},
         {"Save.changes.", "Salvare le modifiche?"},
-        {"Yes", "S\u00EC"},
-        {"No", "No"},
+        {"Yes", "&S\u00EC"},
+        {"No", "&No"},
         {"Policy.Entry", "Voce dei criteri"},
         {"Save.Changes", "Salva le modifiche"},
         {"No.Policy.Entry.selected", "Nessuna voce dei criteri selezionata"},
--- a/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_ja.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_ja.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,16 +44,16 @@
         {"Usage.policytool.options.", "\u4F7F\u7528\u65B9\u6CD5: policytool [options]"},
         {".file.file.policy.file.location",
                 "  [-file <file>]  \u30DD\u30EA\u30B7\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240"},
-        {"New", "\u65B0\u898F"},
-        {"Open", "\u958B\u304F"},
-        {"Save", "\u4FDD\u5B58"},
-        {"Save.As", "\u5225\u540D\u4FDD\u5B58"},
-        {"View.Warning.Log", "\u8B66\u544A\u30ED\u30B0\u306E\u8868\u793A"},
-        {"Exit", "\u7D42\u4E86"},
-        {"Add.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u8FFD\u52A0"},
-        {"Edit.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u7DE8\u96C6"},
-        {"Remove.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u524A\u9664"},
-        {"Edit", "\u7DE8\u96C6"},
+        {"New", "\u65B0\u898F(&N)"},
+        {"Open", "\u958B\u304F(&O)..."},
+        {"Save", "\u4FDD\u5B58(&S)"},
+        {"Save.As", "\u5225\u540D\u4FDD\u5B58(&A)..."},
+        {"View.Warning.Log", "\u8B66\u544A\u30ED\u30B0\u306E\u8868\u793A(&W)"},
+        {"Exit", "\u7D42\u4E86(&X)"},
+        {"Add.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u8FFD\u52A0(&A)"},
+        {"Edit.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u7DE8\u96C6(&E)"},
+        {"Remove.Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u306E\u524A\u9664(&R)"},
+        {"Edit", "\u7DE8\u96C6(&E)"},
         {"Retain", "\u4FDD\u6301"},
 
         {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
@@ -61,8 +61,8 @@
 
         {"Add.Public.Key.Alias", "\u516C\u958B\u9375\u306E\u5225\u540D\u306E\u8FFD\u52A0"},
         {"Remove.Public.Key.Alias", "\u516C\u958B\u9375\u306E\u5225\u540D\u3092\u524A\u9664"},
-        {"File", "\u30D5\u30A1\u30A4\u30EB"},
-        {"KeyStore", "\u30AD\u30FC\u30B9\u30C8\u30A2"},
+        {"File", "\u30D5\u30A1\u30A4\u30EB(&F)"},
+        {"KeyStore", "\u30AD\u30FC\u30B9\u30C8\u30A2(&K)"},
         {"Policy.File.", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB:"},
         {"Could.not.open.policy.file.policyFile.e.toString.",
                 "\u30DD\u30EA\u30B7\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F: {0}: {1}"},
@@ -84,20 +84,20 @@
         {"OK.to.overwrite.existing.file.filename.",
                 "\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB{0}\u306B\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\u3002"},
         {"Cancel", "\u53D6\u6D88"},
-        {"CodeBase.", "CodeBase:"},
-        {"SignedBy.", "SignedBy:"},
-        {"Add.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u8FFD\u52A0"},
-        {"Edit.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u7DE8\u96C6"},
-        {"Remove.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u524A\u9664"},
-        {"Principals.", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB:"},
-        {".Add.Permission", "  \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0"},
-        {".Edit.Permission", "  \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u7DE8\u96C6"},
-        {"Remove.Permission", "\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u524A\u9664"},
+        {"CodeBase.", "CodeBase(&C):"},
+        {"SignedBy.", "SignedBy(&S):"},
+        {"Add.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u8FFD\u52A0(&A)"},
+        {"Edit.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u7DE8\u96C6(&E)"},
+        {"Remove.Principal", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u524A\u9664(&R)"},
+        {"Principals.", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB(&P):"},
+        {".Add.Permission", "  \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0(&D)"},
+        {".Edit.Permission", "  \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u7DE8\u96C6(&I)"},
+        {"Remove.Permission", "\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u524A\u9664(&M)"},
         {"Done", "\u5B8C\u4E86"},
-        {"KeyStore.URL.", "\u30AD\u30FC\u30B9\u30C8\u30A2URL:"},
-        {"KeyStore.Type.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7:"},
-        {"KeyStore.Provider.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0:"},
-        {"KeyStore.Password.URL.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9URL:"},
+        {"KeyStore.URL.", "\u30AD\u30FC\u30B9\u30C8\u30A2URL(&U):"},
+        {"KeyStore.Type.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30BF\u30A4\u30D7(&T):"},
+        {"KeyStore.Provider.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D7\u30ED\u30D0\u30A4\u30C0(&P):"},
+        {"KeyStore.Password.URL.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D1\u30B9\u30EF\u30FC\u30C9URL(&W):"},
         {"Principals", "\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB"},
         {".Edit.Principal.", "  \u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u7DE8\u96C6:"},
         {".Add.New.Principal.", "  \u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u306E\u65B0\u898F\u8FFD\u52A0:"},
@@ -117,8 +117,8 @@
                 "\u30DD\u30EA\u30B7\u30FC\u306E{0}\u3078\u306E\u66F8\u8FBC\u307F\u306B\u6210\u529F\u3057\u307E\u3057\u305F"},
         {"null.filename", "\u30D5\u30A1\u30A4\u30EB\u540D\u304Cnull\u3067\u3059"},
         {"Save.changes.", "\u5909\u66F4\u3092\u4FDD\u5B58\u3057\u307E\u3059\u304B\u3002"},
-        {"Yes", "\u306F\u3044"},
-        {"No", "\u3044\u3044\u3048"},
+        {"Yes", "\u306F\u3044(&Y)"},
+        {"No", "\u3044\u3044\u3048(&N)"},
         {"Policy.Entry", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA"},
         {"Save.Changes", "\u5909\u66F4\u3092\u4FDD\u5B58\u3057\u307E\u3059"},
         {"No.Policy.Entry.selected", "\u30DD\u30EA\u30B7\u30FC\u30FB\u30A8\u30F3\u30C8\u30EA\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093"},
--- a/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_ko.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_ko.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,16 +44,16 @@
         {"Usage.policytool.options.", "\uC0AC\uC6A9\uBC95: policytool [options]"},
         {".file.file.policy.file.location",
                 "  [-file <file>]    \uC815\uCC45 \uD30C\uC77C \uC704\uCE58"},
-        {"New", "\uC0C8\uB85C \uB9CC\uB4E4\uAE30"},
-        {"Open", "\uC5F4\uAE30"},
-        {"Save", "\uC800\uC7A5"},
-        {"Save.As", "\uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uC800\uC7A5"},
-        {"View.Warning.Log", "\uACBD\uACE0 \uB85C\uADF8 \uBCF4\uAE30"},
-        {"Exit", "\uC885\uB8CC"},
-        {"Add.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uCD94\uAC00"},
-        {"Edit.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uD3B8\uC9D1"},
-        {"Remove.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uC81C\uAC70"},
-        {"Edit", "\uD3B8\uC9D1"},
+        {"New", "\uC0C8\uB85C \uB9CC\uB4E4\uAE30(&N)"},
+        {"Open", "\uC5F4\uAE30(&O)..."},
+        {"Save", "\uC800\uC7A5(&S)"},
+        {"Save.As", "\uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uC800\uC7A5(&A)..."},
+        {"View.Warning.Log", "\uACBD\uACE0 \uB85C\uADF8 \uBCF4\uAE30(&W)"},
+        {"Exit", "\uC885\uB8CC(&X)"},
+        {"Add.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uCD94\uAC00(&A)"},
+        {"Edit.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uD3B8\uC9D1(&E)"},
+        {"Remove.Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9 \uC81C\uAC70(&R)"},
+        {"Edit", "\uD3B8\uC9D1(&E)"},
         {"Retain", "\uC720\uC9C0"},
 
         {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
@@ -61,8 +61,8 @@
 
         {"Add.Public.Key.Alias", "\uACF5\uC6A9 \uD0A4 \uBCC4\uCE6D \uCD94\uAC00"},
         {"Remove.Public.Key.Alias", "\uACF5\uC6A9 \uD0A4 \uBCC4\uCE6D \uC81C\uAC70"},
-        {"File", "\uD30C\uC77C"},
-        {"KeyStore", "\uD0A4 \uC800\uC7A5\uC18C"},
+        {"File", "\uD30C\uC77C(&F)"},
+        {"KeyStore", "\uD0A4 \uC800\uC7A5\uC18C(&K)"},
         {"Policy.File.", "\uC815\uCC45 \uD30C\uC77C:"},
         {"Could.not.open.policy.file.policyFile.e.toString.",
                 "\uC815\uCC45 \uD30C\uC77C\uC744 \uC5F4 \uC218 \uC5C6\uC74C: {0}: {1}"},
@@ -84,20 +84,20 @@
         {"OK.to.overwrite.existing.file.filename.",
                 "\uAE30\uC874 \uD30C\uC77C {0}\uC744(\uB97C) \uACB9\uCCD0 \uC4F0\uACA0\uC2B5\uB2C8\uAE4C?"},
         {"Cancel", "\uCDE8\uC18C"},
-        {"CodeBase.", "CodeBase:"},
-        {"SignedBy.", "SignedBy:"},
-        {"Add.Principal", "\uC8FC\uCCB4 \uCD94\uAC00"},
-        {"Edit.Principal", "\uC8FC\uCCB4 \uD3B8\uC9D1"},
-        {"Remove.Principal", "\uC8FC\uCCB4 \uC81C\uAC70"},
-        {"Principals.", "\uC8FC\uCCB4:"},
-        {".Add.Permission", "  \uAD8C\uD55C \uCD94\uAC00"},
-        {".Edit.Permission", "  \uAD8C\uD55C \uD3B8\uC9D1"},
-        {"Remove.Permission", "\uAD8C\uD55C \uC81C\uAC70"},
+        {"CodeBase.", "CodeBase(&C)"},
+        {"SignedBy.", "SignedBy(&S):"},
+        {"Add.Principal", "\uC8FC\uCCB4 \uCD94\uAC00(&A)"},
+        {"Edit.Principal", "\uC8FC\uCCB4 \uD3B8\uC9D1(&E)"},
+        {"Remove.Principal", "\uC8FC\uCCB4 \uC81C\uAC70(&R)"},
+        {"Principals.", "\uC8FC\uCCB4(&P):"},
+        {".Add.Permission", "  \uAD8C\uD55C \uCD94\uAC00(&D)"},
+        {".Edit.Permission", "  \uAD8C\uD55C \uD3B8\uC9D1(&I)"},
+        {"Remove.Permission", "\uAD8C\uD55C \uC81C\uAC70(&M)"},
         {"Done", "\uC644\uB8CC"},
-        {"KeyStore.URL.", "\uD0A4 \uC800\uC7A5\uC18C URL:"},
-        {"KeyStore.Type.", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615:"},
-        {"KeyStore.Provider.", "\uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790:"},
-        {"KeyStore.Password.URL.", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 URL:"},
+        {"KeyStore.URL.", "\uD0A4 \uC800\uC7A5\uC18C URL(&U):"},
+        {"KeyStore.Type.", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615(&T):"},
+        {"KeyStore.Provider.", "\uD0A4 \uC800\uC7A5\uC18C \uC81C\uACF5\uC790(&P):"},
+        {"KeyStore.Password.URL.", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 URL(&W):"},
         {"Principals", "\uC8FC\uCCB4"},
         {".Edit.Principal.", "  \uC8FC\uCCB4 \uD3B8\uC9D1:"},
         {".Add.New.Principal.", "  \uC0C8 \uC8FC\uCCB4 \uCD94\uAC00:"},
@@ -116,11 +116,11 @@
         {"Policy.successfully.written.to.filename",
                 "{0}\uC5D0 \uC131\uACF5\uC801\uC73C\uB85C \uC815\uCC45\uC744 \uC37C\uC2B5\uB2C8\uB2E4."},
         {"null.filename", "\uB110 \uD30C\uC77C \uC774\uB984"},
-        {"Save.changes.", "\uBCC0\uACBD \uC0AC\uD56D\uC744 \uC800\uC7A5\uD558\uACA0\uC2B5\uB2C8\uAE4C?"},
-        {"Yes", "\uC608"},
-        {"No", "\uC544\uB2C8\uC624"},
+        {"Save.changes.", "\uBCC0\uACBD\uC0AC\uD56D\uC744 \uC800\uC7A5\uD558\uACA0\uC2B5\uB2C8\uAE4C?"},
+        {"Yes", "\uC608(&Y)"},
+        {"No", "\uC544\uB2C8\uC624(&N)"},
         {"Policy.Entry", "\uC815\uCC45 \uD56D\uBAA9"},
-        {"Save.Changes", "\uBCC0\uACBD \uC0AC\uD56D \uC800\uC7A5"},
+        {"Save.Changes", "\uBCC0\uACBD\uC0AC\uD56D \uC800\uC7A5"},
         {"No.Policy.Entry.selected", "\uC120\uD0DD\uB41C \uC815\uCC45 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},
         {"Unable.to.open.KeyStore.ex.toString.",
                 "\uD0A4 \uC800\uC7A5\uC18C\uB97C \uC5F4 \uC218 \uC5C6\uC74C: {0}"},
--- a/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_pt_BR.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_pt_BR.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,16 +44,16 @@
         {"Usage.policytool.options.", "Uso: policytool [op\u00E7\u00F5es]"},
         {".file.file.policy.file.location",
                 "  [-file <arquivo>]    localiza\u00E7\u00E3o do arquivo de pol\u00EDtica"},
-        {"New", "Novo"},
-        {"Open", "Abrir"},
-        {"Save", "Salvar"},
-        {"Save.As", "Salvar Como"},
-        {"View.Warning.Log", "Exibir Log de Advert\u00EAncias"},
-        {"Exit", "Sair"},
-        {"Add.Policy.Entry", "Adicionar Entrada de Pol\u00EDtica"},
-        {"Edit.Policy.Entry", "Editar Entrada de Pol\u00EDtica"},
-        {"Remove.Policy.Entry", "Remover Entrada de Pol\u00EDtica"},
-        {"Edit", "Editar"},
+        {"New", "&Novo"},
+        {"Open", "&Abrir..."},
+        {"Save", "&Salvar"},
+        {"Save.As", "Salvar c&omo..."},
+        {"View.Warning.Log", "E&xibir Log de Advert\u00EAncias"},
+        {"Exit", "S&air"},
+        {"Add.Policy.Entry", "&Adicionar Entrada de Pol\u00EDtica"},
+        {"Edit.Policy.Entry", "&Editar Entrada de Pol\u00EDtica"},
+        {"Remove.Policy.Entry", "&Remover Entrada de Pol\u00EDtica"},
+        {"Edit", "&Editar"},
         {"Retain", "Reter"},
 
         {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
@@ -61,8 +61,8 @@
 
         {"Add.Public.Key.Alias", "Adicionar Alias de Chave P\u00FAblica"},
         {"Remove.Public.Key.Alias", "Remover Alias de Chave P\u00FAblica"},
-        {"File", "Arquivo"},
-        {"KeyStore", "KeyStore"},
+        {"File", "&Arquivo"},
+        {"KeyStore", "&KeyStore"},
         {"Policy.File.", "Arquivo de Pol\u00EDtica:"},
         {"Could.not.open.policy.file.policyFile.e.toString.",
                 "N\u00E3o foi poss\u00EDvel abrir o arquivo de pol\u00EDtica: {0}: {1}"},
@@ -84,20 +84,20 @@
         {"OK.to.overwrite.existing.file.filename.",
                 "Est\u00E1 correto substituir o arquivo existente {0}?"},
         {"Cancel", "Cancelar"},
-        {"CodeBase.", "CodeBase:"},
-        {"SignedBy.", "SignedBy:"},
-        {"Add.Principal", "Adicionar Principal"},
-        {"Edit.Principal", "Editar Principal"},
-        {"Remove.Principal", "Remover Principal"},
-        {"Principals.", "Principais:"},
-        {".Add.Permission", "  Adicionar Permiss\u00E3o"},
-        {".Edit.Permission", "  Editar Permiss\u00E3o"},
-        {"Remove.Permission", "Remover Permiss\u00E3o"},
+        {"CodeBase.", "&CodeBase:"},
+        {"SignedBy.", "&SignedBy:"},
+        {"Add.Principal", "&Adicionar Principal"},
+        {"Edit.Principal", "&Editar Principal"},
+        {"Remove.Principal", "&Remover Principal"},
+        {"Principals.", "&Principais:"},
+        {".Add.Permission", "  A&dicionar Permiss\u00E3o"},
+        {".Edit.Permission", "  Ed&itar Permiss\u00E3o"},
+        {"Remove.Permission", "Re&mover Permiss\u00E3o"},
         {"Done", "Conclu\u00EDdo"},
-        {"KeyStore.URL.", "URL do KeyStore:"},
-        {"KeyStore.Type.", "Tipo de KeyStore:"},
-        {"KeyStore.Provider.", "Fornecedor de KeyStore:"},
-        {"KeyStore.Password.URL.", "URL da Senha do KeyStore:"},
+        {"KeyStore.URL.", "&URL do KeyStore:"},
+        {"KeyStore.Type.", "&Tipo de KeyStore:"},
+        {"KeyStore.Provider.", "&Fornecedor de KeyStore:"},
+        {"KeyStore.Password.URL.", "URL da Senha do Ke&yStore:"},
         {"Principals", "Principais"},
         {".Edit.Principal.", "  Editar Principal:"},
         {".Add.New.Principal.", "  Adicionar Novo Principal:"},
@@ -117,8 +117,8 @@
                 "Pol\u00EDtica gravada com \u00EAxito em {0}"},
         {"null.filename", "nome de arquivo nulo"},
         {"Save.changes.", "Salvar altera\u00E7\u00F5es?"},
-        {"Yes", "Sim"},
-        {"No", "N\u00E3o"},
+        {"Yes", "&Sim"},
+        {"No", "&N\u00E3o"},
         {"Policy.Entry", "Entrada de Pol\u00EDtica"},
         {"Save.Changes", "Salvar Altera\u00E7\u00F5es"},
         {"No.Policy.Entry.selected", "Nenhuma Entrada de Pol\u00EDtica Selecionada"},
--- a/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_sv.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_sv.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,16 +44,16 @@
         {"Usage.policytool.options.", "Syntax: policytool [alternativ]"},
         {".file.file.policy.file.location",
                 "  [-file <fil>]    policyfilens plats"},
-        {"New", "Nytt"},
-        {"Open", "\u00D6ppna"},
-        {"Save", "Spara"},
-        {"Save.As", "Spara som"},
-        {"View.Warning.Log", "Visa varningslogg"},
-        {"Exit", "Avsluta"},
-        {"Add.Policy.Entry", "L\u00E4gg till policypost"},
-        {"Edit.Policy.Entry", "Redigera policypost"},
-        {"Remove.Policy.Entry", "Ta bort policypost"},
-        {"Edit", "Redigera"},
+        {"New", "&Nytt"},
+        {"Open", "&\u00D6ppna..."},
+        {"Save", "S&para"},
+        {"Save.As", "Spara &som..."},
+        {"View.Warning.Log", "Visa varningslo&gg"},
+        {"Exit", "A&vsluta"},
+        {"Add.Policy.Entry", "&L\u00E4gg till policypost"},
+        {"Edit.Policy.Entry", "&Redigera policypost"},
+        {"Remove.Policy.Entry", "&Ta bort policypost"},
+        {"Edit", "&Redigera"},
         {"Retain", "Beh\u00E5ll"},
 
         {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
@@ -61,8 +61,8 @@
 
         {"Add.Public.Key.Alias", "L\u00E4gg till offentligt nyckelalias"},
         {"Remove.Public.Key.Alias", "Ta bort offentligt nyckelalias"},
-        {"File", "Fil"},
-        {"KeyStore", "Nyckellager"},
+        {"File", "&Arkiv"},
+        {"KeyStore", "&KeyStore"},
         {"Policy.File.", "Policyfil:"},
         {"Could.not.open.policy.file.policyFile.e.toString.",
                 "Kan inte \u00F6ppna policyfilen: {0}: {1}"},
@@ -84,24 +84,24 @@
         {"OK.to.overwrite.existing.file.filename.",
                 "Ska den befintliga filen {0} skrivas \u00F6ver?"},
         {"Cancel", "Avbryt"},
-        {"CodeBase.", "Kodbas:"},
-        {"SignedBy.", "Signerad av:"},
-        {"Add.Principal", "L\u00E4gg till identitetshavare"},
-        {"Edit.Principal", "Redigera identitetshavare"},
-        {"Remove.Principal", "Ta bort identitetshavare"},
+        {"CodeBase.", "&CodeBase:"},
+        {"SignedBy.", "&SignedBy:"},
+        {"Add.Principal", "&L\u00E4gg till identitetshavare"},
+        {"Edit.Principal", "&Redigera identitetshavare"},
+        {"Remove.Principal", "&Ta bort identitetshavare"},
         {"Principals.", "Identitetshavare:"},
-        {".Add.Permission", "  L\u00E4gg till beh\u00F6righet"},
-        {".Edit.Permission", "  Redigera beh\u00F6righet"},
-        {"Remove.Permission", "Ta bort beh\u00F6righet"},
+        {".Add.Permission", "  L&\u00E4gg till beh\u00F6righet"},
+        {".Edit.Permission", "  Re&digera beh\u00F6righet"},
+        {"Remove.Permission", "Ta &bort beh\u00F6righet"},
         {"Done", "Utf\u00F6rd"},
-        {"KeyStore.URL.", "URL f\u00F6r nyckellager:"},
-        {"KeyStore.Type.", "Nyckellagertyp:"},
-        {"KeyStore.Provider.", "Nyckellagerleverant\u00F6r:"},
-        {"KeyStore.Password.URL.", "URL f\u00F6r l\u00F6senord till nyckellager:"},
+        {"KeyStore.URL.", "KeyStore-&URL:"},
+        {"KeyStore.Type.", "KeyStore-&typ:"},
+        {"KeyStore.Provider.", "KeyStore-&leverant\u00F6r:"},
+        {"KeyStore.Password.URL.", "KeyStore-l\u00F6sen&ords-URL:"},
         {"Principals", "Identitetshavare"},
         {".Edit.Principal.", "  Redigera identitetshavare:"},
         {".Add.New.Principal.", "  L\u00E4gg till ny identitetshavare:"},
-        {"Permissions", "Beh\u00F6righet"},
+        {"Permissions", "Beh\u00F6righeter"},
         {".Edit.Permission.", "  Redigera beh\u00F6righet:"},
         {".Add.New.Permission.", "  L\u00E4gg till ny beh\u00F6righet:"},
         {"Signed.By.", "Signerad av:"},
@@ -117,8 +117,8 @@
                 "Policy har skrivits till {0}"},
         {"null.filename", "nullfilnamn"},
         {"Save.changes.", "Vill du spara \u00E4ndringarna?"},
-        {"Yes", "Ja"},
-        {"No", "Nej"},
+        {"Yes", "&Ja"},
+        {"No", "&Nej"},
         {"Policy.Entry", "Policyfel"},
         {"Save.Changes", "Spara \u00E4ndringar"},
         {"No.Policy.Entry.selected", "Ingen policypost har valts"},
--- a/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_zh_CN.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_zh_CN.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,16 +44,16 @@
         {"Usage.policytool.options.", "\u7528\u6CD5: policytool [\u9009\u9879]"},
         {".file.file.policy.file.location",
                 "  [-file <file>]    \u7B56\u7565\u6587\u4EF6\u4F4D\u7F6E"},
-        {"New", "\u65B0\u5EFA"},
-        {"Open", "\u6253\u5F00"},
-        {"Save", "\u4FDD\u5B58"},
-        {"Save.As", "\u53E6\u5B58\u4E3A"},
-        {"View.Warning.Log", "\u67E5\u770B\u8B66\u544A\u65E5\u5FD7"},
-        {"Exit", "\u9000\u51FA"},
-        {"Add.Policy.Entry", "\u6DFB\u52A0\u7B56\u7565\u6761\u76EE"},
-        {"Edit.Policy.Entry", "\u7F16\u8F91\u7B56\u7565\u6761\u76EE"},
-        {"Remove.Policy.Entry", "\u5220\u9664\u7B56\u7565\u6761\u76EE"},
-        {"Edit", "\u7F16\u8F91"},
+        {"New", "\u65B0\u5EFA(&N)"},
+        {"Open", "\u6253\u5F00(&O)..."},
+        {"Save", "\u4FDD\u5B58(&S)"},
+        {"Save.As", "\u53E6\u5B58\u4E3A(&A)..."},
+        {"View.Warning.Log", "\u67E5\u770B\u8B66\u544A\u65E5\u5FD7(&W)"},
+        {"Exit", "\u9000\u51FA(&X)"},
+        {"Add.Policy.Entry", "\u6DFB\u52A0\u7B56\u7565\u6761\u76EE(&A)"},
+        {"Edit.Policy.Entry", "\u7F16\u8F91\u7B56\u7565\u6761\u76EE(&E)"},
+        {"Remove.Policy.Entry", "\u5220\u9664\u7B56\u7565\u6761\u76EE(&R)"},
+        {"Edit", "\u7F16\u8F91(&E)"},
         {"Retain", "\u4FDD\u7559"},
 
         {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
@@ -61,8 +61,8 @@
 
         {"Add.Public.Key.Alias", "\u6DFB\u52A0\u516C\u5171\u5BC6\u94A5\u522B\u540D"},
         {"Remove.Public.Key.Alias", "\u5220\u9664\u516C\u5171\u5BC6\u94A5\u522B\u540D"},
-        {"File", "\u6587\u4EF6"},
-        {"KeyStore", "\u5BC6\u94A5\u5E93"},
+        {"File", "\u6587\u4EF6(&F)"},
+        {"KeyStore", "\u5BC6\u94A5\u5E93(&K)"},
         {"Policy.File.", "\u7B56\u7565\u6587\u4EF6:"},
         {"Could.not.open.policy.file.policyFile.e.toString.",
                 "\u65E0\u6CD5\u6253\u5F00\u7B56\u7565\u6587\u4EF6: {0}: {1}"},
@@ -84,20 +84,20 @@
         {"OK.to.overwrite.existing.file.filename.",
                 "\u786E\u8BA4\u8986\u76D6\u73B0\u6709\u7684\u6587\u4EF6{0}?"},
         {"Cancel", "\u53D6\u6D88"},
-        {"CodeBase.", "CodeBase:"},
-        {"SignedBy.", "SignedBy:"},
-        {"Add.Principal", "\u6DFB\u52A0\u4E3B\u7528\u6237"},
-        {"Edit.Principal", "\u7F16\u8F91\u4E3B\u7528\u6237"},
-        {"Remove.Principal", "\u5220\u9664\u4E3B\u7528\u6237"},
-        {"Principals.", "\u4E3B\u7528\u6237:"},
-        {".Add.Permission", "  \u6DFB\u52A0\u6743\u9650"},
-        {".Edit.Permission", "  \u7F16\u8F91\u6743\u9650"},
-        {"Remove.Permission", "\u5220\u9664\u6743\u9650"},
+        {"CodeBase.", "CodeBase(&C):"},
+        {"SignedBy.", "SignedBy(&S):"},
+        {"Add.Principal", "\u6DFB\u52A0\u4E3B\u7528\u6237(&A)"},
+        {"Edit.Principal", "\u7F16\u8F91\u4E3B\u7528\u6237(&E)"},
+        {"Remove.Principal", "\u5220\u9664\u4E3B\u7528\u6237(&R)"},
+        {"Principals.", "\u4E3B\u7528\u6237(&P):"},
+        {".Add.Permission", "  \u6DFB\u52A0\u6743\u9650(&D)"},
+        {".Edit.Permission", "  \u7F16\u8F91\u6743\u9650(&I)"},
+        {"Remove.Permission", "\u5220\u9664\u6743\u9650(&M)"},
         {"Done", "\u5B8C\u6210"},
-        {"KeyStore.URL.", "\u5BC6\u94A5\u5E93 URL:"},
-        {"KeyStore.Type.", "\u5BC6\u94A5\u5E93\u7C7B\u578B:"},
-        {"KeyStore.Provider.", "\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9:"},
-        {"KeyStore.Password.URL.", "\u5BC6\u94A5\u5E93\u53E3\u4EE4 URL:"},
+        {"KeyStore.URL.", "\u5BC6\u94A5\u5E93 URL(&U):"},
+        {"KeyStore.Type.", "\u5BC6\u94A5\u5E93\u7C7B\u578B(&T):"},
+        {"KeyStore.Provider.", "\u5BC6\u94A5\u5E93\u63D0\u4F9B\u65B9(&P):"},
+        {"KeyStore.Password.URL.", "\u5BC6\u94A5\u5E93\u53E3\u4EE4 URL(&W):"},
         {"Principals", "\u4E3B\u7528\u6237"},
         {".Edit.Principal.", "  \u7F16\u8F91\u4E3B\u7528\u6237:"},
         {".Add.New.Principal.", "  \u6DFB\u52A0\u65B0\u4E3B\u7528\u6237:"},
@@ -117,8 +117,8 @@
                 "\u7B56\u7565\u5DF2\u6210\u529F\u5199\u5165\u5230{0}"},
         {"null.filename", "\u7A7A\u6587\u4EF6\u540D"},
         {"Save.changes.", "\u662F\u5426\u4FDD\u5B58\u6240\u505A\u7684\u66F4\u6539?"},
-        {"Yes", "\u662F"},
-        {"No", "\u5426"},
+        {"Yes", "\u662F(&Y)"},
+        {"No", "\u5426(&N)"},
         {"Policy.Entry", "\u7B56\u7565\u6761\u76EE"},
         {"Save.Changes", "\u4FDD\u5B58\u66F4\u6539"},
         {"No.Policy.Entry.selected", "\u6CA1\u6709\u9009\u62E9\u7B56\u7565\u6761\u76EE"},
--- a/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_zh_TW.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool/Resources_zh_TW.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -35,7 +35,7 @@
     private static final Object[][] contents = {
         {"NEWLINE", "\n"},
         {"Warning.A.public.key.for.alias.signers.i.does.not.exist.Make.sure.a.KeyStore.is.properly.configured.",
-                "\u8B66\u544A: \u5225\u540D {0} \u7684\u516C\u958B\u91D1\u9470\u4E0D\u5B58\u5728\u3002\u8ACB\u78BA\u5B9A\u91D1\u9470\u5132\u5B58\u5EAB\u914D\u7F6E\u6B63\u78BA\u3002"},
+                "\u8B66\u544A: \u5225\u540D {0} \u7684\u516C\u958B\u91D1\u9470\u4E0D\u5B58\u5728\u3002\u8ACB\u78BA\u5B9A\u91D1\u9470\u5132\u5B58\u5EAB\u8A2D\u5B9A\u6B63\u78BA\u3002"},
         {"Warning.Class.not.found.class", "\u8B66\u544A: \u627E\u4E0D\u5230\u985E\u5225 {0}"},
         {"Warning.Invalid.argument.s.for.constructor.arg",
                 "\u8B66\u544A: \u7121\u6548\u7684\u5EFA\u69CB\u5B50\u5F15\u6578: {0}"},
@@ -44,16 +44,16 @@
         {"Usage.policytool.options.", "\u7528\u6CD5: policytool [options]"},
         {".file.file.policy.file.location",
                 "  [-file <file>]    \u539F\u5247\u6A94\u6848\u4F4D\u7F6E"},
-        {"New", "\u65B0\u589E"},
-        {"Open", "\u958B\u555F"},
-        {"Save", "\u5132\u5B58"},
-        {"Save.As", "\u53E6\u5B58\u65B0\u6A94"},
-        {"View.Warning.Log", "\u6AA2\u8996\u8B66\u544A\u8A18\u9304"},
-        {"Exit", "\u7D50\u675F"},
-        {"Add.Policy.Entry", "\u65B0\u589E\u539F\u5247\u9805\u76EE"},
-        {"Edit.Policy.Entry", "\u7DE8\u8F2F\u539F\u5247\u9805\u76EE"},
-        {"Remove.Policy.Entry", "\u79FB\u9664\u539F\u5247\u9805\u76EE"},
-        {"Edit", "\u7DE8\u8F2F"},
+        {"New", "\u65B0\u5EFA(&N)"},
+        {"Open", "\u958B\u555F(&O)..."},
+        {"Save", "\u5132\u5B58(&S)"},
+        {"Save.As", "\u53E6\u5B58\u65B0\u6A94(&A)..."},
+        {"View.Warning.Log", "\u6AA2\u8996\u8B66\u544A\u8A18\u9304(&W)"},
+        {"Exit", "\u7D50\u675F(&X)"},
+        {"Add.Policy.Entry", "\u65B0\u589E\u539F\u5247\u9805\u76EE(&A)"},
+        {"Edit.Policy.Entry", "\u7DE8\u8F2F\u539F\u5247\u9805\u76EE(&E)"},
+        {"Remove.Policy.Entry", "\u79FB\u9664\u539F\u5247\u9805\u76EE(&R)"},
+        {"Edit", "\u7DE8\u8F2F(&E)"},
         {"Retain", "\u4FDD\u7559"},
 
         {"Warning.File.name.may.include.escaped.backslash.characters.It.is.not.necessary.to.escape.backslash.characters.the.tool.escapes",
@@ -61,8 +61,8 @@
 
         {"Add.Public.Key.Alias", "\u65B0\u589E\u516C\u958B\u91D1\u9470\u5225\u540D"},
         {"Remove.Public.Key.Alias", "\u79FB\u9664\u516C\u958B\u91D1\u9470\u5225\u540D"},
-        {"File", "\u6A94\u6848"},
-        {"KeyStore", "\u91D1\u9470\u5132\u5B58\u5EAB"},
+        {"File", "\u6A94\u6848(&F)"},
+        {"KeyStore", "\u91D1\u9470\u5132\u5B58\u5EAB(&K)"},
         {"Policy.File.", "\u539F\u5247\u6A94\u6848: "},
         {"Could.not.open.policy.file.policyFile.e.toString.",
                 "\u7121\u6CD5\u958B\u555F\u539F\u5247\u6A94\u6848: {0}: {1}"},
@@ -84,20 +84,20 @@
         {"OK.to.overwrite.existing.file.filename.",
                 "\u78BA\u8A8D\u8986\u5BEB\u73FE\u5B58\u7684\u6A94\u6848 {0}\uFF1F"},
         {"Cancel", "\u53D6\u6D88"},
-        {"CodeBase.", "CodeBase:"},
-        {"SignedBy.", "SignedBy:"},
-        {"Add.Principal", "\u65B0\u589E Principal"},
-        {"Edit.Principal", "\u7DE8\u8F2F Principal"},
-        {"Remove.Principal", "\u79FB\u9664 Principal"},
-        {"Principals.", "Principal:"},
-        {".Add.Permission", "  \u65B0\u589E\u6B0A\u9650"},
-        {".Edit.Permission", "  \u7DE8\u8F2F\u6B0A\u9650"},
-        {"Remove.Permission", "\u79FB\u9664\u6B0A\u9650"},
+        {"CodeBase.", "CodeBase(&C):"},
+        {"SignedBy.", "SignedBy(&S):"},
+        {"Add.Principal", "\u65B0\u589E Principal(&A)"},
+        {"Edit.Principal", "\u7DE8\u8F2F Principal(&E)"},
+        {"Remove.Principal", "\u79FB\u9664 Principal(&R)"},
+        {"Principals.", "Principal(&P):"},
+        {".Add.Permission", "  \u65B0\u589E\u6B0A\u9650(&D)"},
+        {".Edit.Permission", "  \u7DE8\u8F2F\u6B0A\u9650(&I)"},
+        {"Remove.Permission", "\u79FB\u9664\u6B0A\u9650(&M)"},
         {"Done", "\u5B8C\u6210"},
-        {"KeyStore.URL.", "\u91D1\u9470\u5132\u5B58\u5EAB URL: "},
-        {"KeyStore.Type.", "\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B:"},
-        {"KeyStore.Provider.", "\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005:"},
-        {"KeyStore.Password.URL.", "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC URL: "},
+        {"KeyStore.URL.", "\u91D1\u9470\u5132\u5B58\u5EAB URL(&U): "},
+        {"KeyStore.Type.", "\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B(&T):"},
+        {"KeyStore.Provider.", "\u91D1\u9470\u5132\u5B58\u5EAB\u63D0\u4F9B\u8005(&P):"},
+        {"KeyStore.Password.URL.", "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC URL(&W): "},
         {"Principals", "Principal"},
         {".Edit.Principal.", "  \u7DE8\u8F2F Principal: "},
         {".Add.New.Principal.", "  \u65B0\u589E Principal: "},
@@ -117,8 +117,8 @@
                 "\u539F\u5247\u6210\u529F\u5BEB\u5165\u81F3 {0}"},
         {"null.filename", "\u7A7A\u503C\u6A94\u540D"},
         {"Save.changes.", "\u5132\u5B58\u8B8A\u66F4\uFF1F"},
-        {"Yes", "\u662F"},
-        {"No", "\u5426"},
+        {"Yes", "\u662F(&Y)"},
+        {"No", "\u5426(&N)"},
         {"Policy.Entry", "\u539F\u5247\u9805\u76EE"},
         {"Save.Changes", "\u5132\u5B58\u8B8A\u66F4"},
         {"No.Policy.Entry.selected", "\u6C92\u6709\u9078\u53D6\u539F\u5247\u9805\u76EE"},
--- a/jdk/src/jdk.rmic/share/classes/sun/rmi/rmic/resources/rmic_ja.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.rmic/share/classes/sun/rmi/rmic/resources/rmic_ja.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -71,7 +71,7 @@
 generator.env.idl=sun.rmi.rmic.iiop.BatchEnvironment
 generator.env.xprint=sun.rmi.rmic.iiop.BatchEnvironment
 
-rmic.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <class names>\n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -keep      \u4E2D\u9593\u751F\u6210\u3055\u308C\u305F\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u306A\u3044\n -keepgenerated("-keep"\u3068\u540C\u3058)\n -v1.1      1.1\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u7528\u306E\u30B9\u30BF\u30D6/\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u4F5C\u6210\u3059\u308B\n -vcompat   1.1\u30681.2\u306E\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u3068\n                 \u4E92\u63DB\u6027\u306E\u3042\u308B\u30B9\u30BF\u30D6/\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u4F5C\u6210\u3059\u308B\n -v1.2      (\u30C7\u30D5\u30A9\u30EB\u30C8)1.2\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u5C02\u7528\u306E\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\n -iiop      IIOP\u7528\u306E\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\u3002\u6307\u5B9A\u3059\u308B\u3068<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u3082\u542B\u307E\u308C\u307E\u3059\u3002\n\n            -always       \u6700\u65B0\u306E\u5834\u5408\u3067\u3082\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\n            -alwaysgenerate ("-always"\u3068\u540C\u3058)\n            -nolocalstubs   \u540C\u3058\u30D7\u30ED\u30BB\u30B9\u306B\u3064\u3044\u3066\u6700\u9069\u5316\u3055\u308C\u305F\u30B9\u30BF\u30D6\u306F\u4F5C\u6210\u3057\u306A\u3044\n\n -idl      IDL\u3092\u4F5C\u6210\u3059\u308B\u3002\u6307\u5B9A\u3059\u308B\u3068<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u3082\u542B\u307E\u308C\u307E\u3059\u3002\n\n            -noValueMethods valuetypes\u306B\u5BFE\u3057\u3066\u30E1\u30BD\u30C3\u30C9\u3092\u751F\u6210\u3057\u306A\u3044\n            -always       \u6700\u65B0\u306E\u5834\u5408\u3067\u3082IDL\u3092\u751F\u6210\u3059\u308B\n            -alwaysgenerate ("-always"\u3068\u540C\u3058)\n\n -g        \u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n -nowarn     \u8B66\u544A\u3092\u751F\u6210\u3057\u306A\u3044\n -nowrite    \u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u305F\u30AF\u30E9\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u30FB\u30B7\u30B9\u30C6\u30E0\u306B\u66F8\u304D\u8FBC\u307E\u306A\u3044\n -verbose    \u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u52D5\u4F5C\u306B\u95A2\u3059\u308B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n -classpath <path>    \u5165\u529B\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B\n -bootclasspath<path> \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u4F4D\u7F6E\u3092\u7F6E\u304D\u63DB\u3048\u308B\n -extdirs<path>     \u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u62E1\u5F35\u6A5F\u80FD\u306E\u4F4D\u7F6E\u3092\u7F6E\u304D\u63DB\u3048\u308B\n -d <directory>      \u751F\u6210\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u683C\u7D0D\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B\n -J<runtime flag>  java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u5F15\u6570\u3092\u6E21\u3059\n
+rmic.usage=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <class names>\n\n<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n -keep      \u4E2D\u9593\u751F\u6210\u3055\u308C\u305F\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u306A\u3044\n -keepgenerated("-keep"\u3068\u540C\u3058)\n -v1.1      1.1\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u7528\u306E\u30B9\u30BF\u30D6/\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u4F5C\u6210\u3059\u308B(\u975E\u63A8\u5968)\n -vcompat   1.1\u30681.2\u306E\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u3068\n                 \u4E92\u63DB\u6027\u306E\u3042\u308B\u30B9\u30BF\u30D6/\u30B9\u30B1\u30EB\u30C8\u30F3\u3092\u4F5C\u6210\u3059\u308B(\u975E\u63A8\u5968)\n -v1.2      (\u30C7\u30D5\u30A9\u30EB\u30C8)1.2\u30B9\u30BF\u30D6\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u7248\u5C02\u7528\u306E\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B(\u975E\u63A8\u5968)\n -iiop      IIOP\u7528\u306E\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\u3002\u6307\u5B9A\u3059\u308B\u3068<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u3082\u542B\u307E\u308C\u307E\u3059\u3002\n\n            -always       \u6700\u65B0\u306E\u5834\u5408\u3067\u3082\u30B9\u30BF\u30D6\u3092\u4F5C\u6210\u3059\u308B\n            -alwaysgenerate ("-always"\u3068\u540C\u3058)\n            -nolocalstubs   \u540C\u3058\u30D7\u30ED\u30BB\u30B9\u306B\u3064\u3044\u3066\u6700\u9069\u5316\u3055\u308C\u305F\u30B9\u30BF\u30D6\u306F\u4F5C\u6210\u3057\u306A\u3044\n\n -idl      IDL\u3092\u4F5C\u6210\u3059\u308B\u3002\u6307\u5B9A\u3059\u308B\u3068<options>\u306B\u306F\u6B21\u306E\u3082\u306E\u3082\u542B\u307E\u308C\u307E\u3059\u3002\n\n            -noValueMethods valuetypes\u306B\u5BFE\u3057\u3066\u30E1\u30BD\u30C3\u30C9\u3092\u751F\u6210\u3057\u306A\u3044\n            -always       \u6700\u65B0\u306E\u5834\u5408\u3067\u3082IDL\u3092\u751F\u6210\u3059\u308B\n            -alwaysgenerate ("-always"\u3068\u540C\u3058)\n\n -g        \u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u3092\u751F\u6210\u3059\u308B\n -nowarn     \u8B66\u544A\u3092\u751F\u6210\u3057\u306A\u3044\n -nowrite    \u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u305F\u30AF\u30E9\u30B9\u3092\u30D5\u30A1\u30A4\u30EB\u30FB\u30B7\u30B9\u30C6\u30E0\u306B\u66F8\u304D\u8FBC\u307E\u306A\u3044\n -verbose    \u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u52D5\u4F5C\u306B\u95A2\u3059\u308B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B\n -classpath <path>    \u5165\u529B\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n -bootclasspath<path> \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\n -d <directory>      \u751F\u6210\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u683C\u7D0D\u3059\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B\n -J<runtime flag>  java\u30A4\u30F3\u30BF\u30D7\u30EA\u30BF\u306B\u5F15\u6570\u3092\u6E21\u3059\n
 
 #
 # Generic Messages
@@ -111,6 +111,7 @@
 rmic.must.throw.remoteexception={0}\u306F\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9{1}\u306Fjava.rmi.RemoteException\u3092\u30B9\u30ED\u30FC\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
 rmic.must.only.throw.exception=\u30E1\u30BD\u30C3\u30C9{0}\u306F{1}\u3092\u30B9\u30ED\u30FC\u3059\u308B\u306E\u3067\u4E0D\u6B63\u306A\u30EA\u30E2\u30FC\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u5B9F\u88C5\u3067\u3059\u3002\u30EA\u30E2\u30FC\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u306E\u5B9F\u88C5\u304C\u30B9\u30ED\u30FC\u3059\u308B\u306E\u306Fjava.lang.Exception\u304B\u305D\u306E\u30B5\u30D6\u30AF\u30E9\u30B9\u306E\u307F\u3067\u3059\u3002
 warn.rmic.tie.found=IIOP "tie"\u306F\u30AF\u30E9\u30B9{0}\u306E\u305F\u3081\u306B\u3042\u308A\u307E\u3059\u3002\n {1}\nPortableRemoteObject.exportObject\u3092\u4F7F\u7528\u3059\u308B\u5834\u5408\u306F\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u524A\u9664\u3057\u306A\u3044\u3068\u3001\u30B5\u30FC\u30D0\u30FC\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306FJRMP\u3067\u306A\u304FIIOP\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u307E\u3059\u3002
+rmic.jrmp.stubs.deprecated=\u8B66\u544A: JRMP\u306E\u30B9\u30B1\u30EB\u30C8\u30F3\u3068static\u30B9\u30BF\u30D6\u306E\u751F\u6210\u3068\u4F7F\u7528\u306F\n\u975E\u63A8\u5968\u3067\u3059\u3002\u30B9\u30B1\u30EB\u30C8\u30F3\u306F\u4E0D\u8981\u3067\u3001static\u30B9\u30BF\u30D6\u306F\n\u52D5\u7684\u306B\u751F\u6210\u3055\u308C\u308B\u30B9\u30BF\u30D6\u306B\u5DEE\u3057\u66FF\u3048\u3089\u308C\u307E\u3057\u305F\u3002\u30E6\u30FC\u30B6\u30FC\u306F\n\u30B9\u30B1\u30EB\u30C8\u30F3\u3068static\u30B9\u30BF\u30D6\u3092\u751F\u6210\u3059\u308B\u305F\u3081\u306B{0}\u3092\u4F7F\u7528\u305B\u305A\u306B\u79FB\u884C\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\njava.rmi.server.UnicastRemoteObject\u306B\u95A2\u3059\u308B\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
 
 #
 # RMI-IIOP Messages
--- a/jdk/src/jdk.rmic/share/classes/sun/rmi/rmic/resources/rmic_zh_CN.properties	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.rmic/share/classes/sun/rmi/rmic/resources/rmic_zh_CN.properties	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 #
 #
-# Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -71,7 +71,7 @@
 generator.env.idl=sun.rmi.rmic.iiop.BatchEnvironment
 generator.env.xprint=sun.rmi.rmic.iiop.BatchEnvironment
 
-rmic.usage=\u7528\u6CD5: {0} <options> <class names>\n\n\u5176\u4E2D, <options> \u5305\u62EC:\n  -keep          \u4E0D\u5220\u9664\u4E34\u65F6\u751F\u6210\u7684\u6E90\u6587\u4EF6\n  -keepgenerated (\u4E0E "-keep" \u76F8\u540C)\n  -v1.1          \u521B\u5EFA 1.1 \u5B58\u6839\u534F\u8BAE\u7248\u672C\u7684\u5B58\u6839/\u9AA8\u67B6\n  -vcompat       \u521B\u5EFA\u4E0E 1.1 \u548C 1.2 \u5B58\u6839\u534F\u8BAE\u7248\u672C\n                           \u90FD\u517C\u5BB9\u7684\u5B58\u6839/\u9AA8\u67B6\n  -v1.2          (\u9ED8\u8BA4\u503C) \u4EC5\u521B\u5EFA 1.2 \u5B58\u6839\u534F\u8BAE\u7248\u672C\u7684\u5B58\u6839\n  -iiop          \u521B\u5EFA IIOP \u7684\u5B58\u6839\u3002\u5982\u679C\u63D0\u4F9B, <options> \u8FD8\u5305\u62EC:\n\n                   -always           \u521B\u5EFA\u5B58\u6839 (\u5373\u4F7F\u5F53\u524D\u663E\u793A)\n                   -alwaysgenerate   (\u4E0E "-always" \u76F8\u540C)\n                   -nolocalstubs     \u4E0D\u521B\u5EFA\u5BF9\u76F8\u540C\u8FDB\u7A0B\u4F18\u5316\u7684\u5B58\u6839\n\n  -idl           \u521B\u5EFA IDL\u3002\u5982\u679C\u63D0\u4F9B, <options> \u8FD8\u5305\u62EC:\n\n                   -noValueMethods   \u4E0D\u4E3A valuetype \u751F\u6210\u65B9\u6CD5\n                   -always           \u521B\u5EFA IDL (\u5373\u4F7F\u5F53\u524D\u663E\u793A)\n                   -alwaysgenerate   (\u4E0E "-always" \u76F8\u540C)\n\n  -g             \u751F\u6210\u8C03\u8BD5\u4FE1\u606F\n  -nowarn        \u4E0D\u751F\u6210\u4EFB\u4F55\u8B66\u544A\n  -nowrite       \u4E0D\u5C06\u7F16\u8BD1\u7684\u7C7B\u5199\u5165\u6587\u4EF6\u7CFB\u7EDF\n  -verbose       \u8F93\u51FA\u6709\u5173\u7F16\u8BD1\u5668\u6B63\u5728\u6267\u884C\u7684\u64CD\u4F5C\u7684\u6D88\u606F\n  -classpath <path>      \u6307\u5B9A\u67E5\u627E\u8F93\u5165\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n  -bootclasspath <path>  \u8986\u76D6\u5F15\u5BFC\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n  -extdirs <path>        \u8986\u76D6\u6240\u5B89\u88C5\u6269\u5C55\u7684\u4F4D\u7F6E\n  -d <directory>         \u6307\u5B9A\u653E\u7F6E\u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n  -J<runtime flag>       \u5C06\u53C2\u6570\u4F20\u9012\u7ED9 java \u89E3\u91CA\u5668\n
+rmic.usage=\u7528\u6CD5: {0} <options> <class names>\n\n\u5176\u4E2D <options> \u5305\u62EC:\n  -keep          \u4E0D\u5220\u9664\u4E34\u65F6\u751F\u6210\u7684\u6E90\u6587\u4EF6\n  -keepgenerated (\u4E0E "-keep" \u76F8\u540C)\n  -v1.1          \u521B\u5EFA 1.1 \u5B58\u6839\u534F\u8BAE\u7248\u672C\u7684\u5B58\u6839/\u9AA8\u67B6 (\u5DF2\u8FC7\u65F6)\n  -vcompat       \u521B\u5EFA\u4E0E 1.1 \u548C 1.2 \u5B58\u6839\u534F\u8BAE\u7248\u672C\n                           \u90FD\u517C\u5BB9\u7684\u5B58\u6839/\u9AA8\u67B6 (\u5DF2\u8FC7\u65F6)\n  -v1.2          (\u9ED8\u8BA4\u503C) \u4EC5\u521B\u5EFA 1.2 \u5B58\u6839\u534F\u8BAE\u7248\u672C\u7684\u5B58\u6839 (\u5DF2\u8FC7\u65F6)\n  -iiop          \u521B\u5EFA IIOP \u7684\u5B58\u6839\u3002\u5982\u679C\u63D0\u4F9B, <options> \u8FD8\u5305\u62EC:\n\n                   -always           \u521B\u5EFA\u5B58\u6839 (\u5373\u4F7F\u5F53\u524D\u663E\u793A)\n                   -alwaysgenerate   (\u4E0E "-always" \u76F8\u540C)\n                   -nolocalstubs     \u4E0D\u521B\u5EFA\u5BF9\u76F8\u540C\u8FDB\u7A0B\u4F18\u5316\u7684\u5B58\u6839\n\n  -idl           \u521B\u5EFA IDL\u3002\u5982\u679C\u63D0\u4F9B, <options> \u8FD8\u5305\u62EC:\n\n                   -noValueMethods   \u4E0D\u4E3A\u503C\u7C7B\u578B\u751F\u6210\u65B9\u6CD5\n                   -always           \u521B\u5EFA IDL (\u5373\u4F7F\u5F53\u524D\u663E\u793A)\n                   -alwaysgenerate   (\u4E0E "-always" \u76F8\u540C)\n\n  -g             \u751F\u6210\u8C03\u8BD5\u4FE1\u606F\n  -nowarn        \u4E0D\u751F\u6210\u4EFB\u4F55\u8B66\u544A\n  -nowrite       \u4E0D\u5C06\u7F16\u8BD1\u7684\u7C7B\u5199\u5165\u6587\u4EF6\u7CFB\u7EDF\n  -verbose       \u8F93\u51FA\u6709\u5173\u7F16\u8BD1\u5668\u6B63\u5728\u6267\u884C\u7684\u64CD\u4F5C\u7684\u6D88\u606F\n  -classpath <path>      \u6307\u5B9A\u67E5\u627E\u8F93\u5165\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n  -bootclasspath <path>  \u8986\u76D6\u5F15\u5BFC\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n  -d <directory>         \u6307\u5B9A\u653E\u7F6E\u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n  -J<runtime flag>       \u5C06\u53C2\u6570\u4F20\u9012\u7ED9 java \u89E3\u91CA\u5668\n
 
 #
 # Generic Messages
@@ -111,6 +111,7 @@
 rmic.must.throw.remoteexception={0}\u4E0D\u662F\u6709\u6548\u8FDC\u7A0B\u63A5\u53E3: \u65B9\u6CD5{1}\u5FC5\u987B\u629B\u51FA java.rmi.RemoteException\u3002
 rmic.must.only.throw.exception=\u65B9\u6CD5{0}\u4E0D\u662F\u6709\u6548\u7684\u8FDC\u7A0B\u65B9\u6CD5\u5B9E\u73B0, \u56E0\u4E3A\u5B83\u629B\u51FA\u4E86{1}; \u8FDC\u7A0B\u65B9\u6CD5\u5B9E\u73B0\u53EA\u53EF\u80FD\u629B\u51FA java.lang.Exception \u6216\u5176\u5B50\u7C7B\u3002
 warn.rmic.tie.found=\u5BF9\u4E8E\u7C7B{0}, \u5B58\u5728 IIOP "tie":\n  {1}\n\u5982\u679C\u4F7F\u7528 PortableRemoteObject.exportObject, \u5219\u5E94\u8BE5\u5220\u9664\u6B64\u6587\u4EF6, \u5426\u5219, \u60A8\u7684\u670D\u52A1\u5668\u5BF9\u8C61\u5C06\u4F1A\u5BFC\u51FA\u5230 IIOP \u800C\u975E JRMP\u3002
+rmic.jrmp.stubs.deprecated=\u8B66\u544A: \u4E3A JRMP \u751F\u6210\u548C\u4F7F\u7528\u9AA8\u67B6\u53CA\u9759\u6001\u5B58\u6839\n\u5DF2\u8FC7\u65F6\u3002\u9AA8\u67B6\u4E0D\u518D\u5FC5\u8981, \u800C\u9759\u6001\u5B58\u6839\n\u5DF2\u7531\u52A8\u6001\u751F\u6210\u7684\u5B58\u6839\u53D6\u4EE3\u3002\u5EFA\u8BAE\u7528\u6237\n\u4E0D\u518D\u4F7F\u7528{0}\u6765\u751F\u6210\u9AA8\u67B6\u548C\u9759\u6001\u5B58\u6839\u3002\n\u8BF7\u53C2\u9605 java.rmi.server.UnicastRemoteObject \u7684\u6587\u6863\u3002
 
 #
 # RMI-IIOP Messages
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/PolicyFile.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/PolicyFile.java	Wed Jul 05 21:51:13 2017 +0200
@@ -209,13 +209,14 @@
  * @deprecated As of JDK&nbsp;1.4, replaced by
  *             {@code sun.security.provider.PolicyFile}.
  *             This class is entirely deprecated.
+ * This class is subject to removal in a future version of Java SE.
  *
  * @see java.security.CodeSource
  * @see java.security.Permissions
  * @see java.security.ProtectionDomain
  * @see java.security.Security security properties
  */
-@Deprecated
+@Deprecated(since="1.4", forRemoval=true)
 public class PolicyFile extends javax.security.auth.Policy {
 
     private final sun.security.provider.AuthPolicyFile apf;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericGroupPrincipal.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericGroupPrincipal.java	Wed Jul 05 21:51:13 2017 +0200
@@ -41,11 +41,12 @@
  * @deprecated As of JDK&nbsp;1.4, replaced by
  *             {@link UnixNumericGroupPrincipal}.
  *             This class is entirely deprecated.
+ * This class is subject to removal in a future version of Java SE.
  *
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@Deprecated
+@Deprecated(since="1.4", forRemoval=true)
 public class SolarisNumericGroupPrincipal implements
                                         Principal,
                                         java.io.Serializable {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericUserPrincipal.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisNumericUserPrincipal.java	Wed Jul 05 21:51:13 2017 +0200
@@ -40,11 +40,12 @@
  * @deprecated As of JDK&nbsp;1.4, replaced by
  *             {@link UnixNumericUserPrincipal}.
  *             This class is entirely deprecated.
+ * This class is subject to removal in a future version of Java SE.
  *
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@Deprecated
+@Deprecated(since="1.4", forRemoval=true)
 public class SolarisNumericUserPrincipal implements
                                         Principal,
                                         java.io.Serializable {
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisPrincipal.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/SolarisPrincipal.java	Wed Jul 05 21:51:13 2017 +0200
@@ -41,10 +41,11 @@
  * @deprecated As of JDK&nbsp;1.4, replaced by
  *             {@link UnixPrincipal}.
  *             This class is entirely deprecated.
+ * This class is subject to removal in a future version of Java SE.
  * @see java.security.Principal
  * @see javax.security.auth.Subject
  */
-@Deprecated
+@Deprecated(since="1.4", forRemoval=true)
 public class SolarisPrincipal implements Principal, java.io.Serializable {
 
     private static final long serialVersionUID = -7840670002439379038L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/X500Principal.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/X500Principal.java	Wed Jul 05 21:51:13 2017 +0200
@@ -47,9 +47,10 @@
  *             This X500Principal classs is entirely deprecated and
  *             is here to allow for a smooth transition to the new
  *             class.
+ * This class is subject to removal in a future version of Java SE.
  * @see javax.security.auth.x500.X500Principal
 */
-@Deprecated
+@Deprecated(since="1.4", forRemoval=true)
 public class X500Principal implements Principal, java.io.Serializable {
 
     private static final long serialVersionUID = -8222422609431628648L;
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisLoginModule.java	Wed Jul 05 21:51:13 2017 +0200
@@ -50,9 +50,10 @@
  *             This LoginModule is entirely deprecated and
  *             is here to allow for a smooth transition to the new
  *             UnixLoginModule.
+ * This class is subject to removal in a future version of Java SE.
  *
  */
-@Deprecated
+@Deprecated(since="1.4", forRemoval=true)
 public class SolarisLoginModule implements LoginModule {
 
     // initial state
--- a/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisSystem.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/src/jdk.security.auth/share/classes/com/sun/security/auth/module/SolarisSystem.java	Wed Jul 05 21:51:13 2017 +0200
@@ -30,8 +30,9 @@
  * UID/GID/groups information for the current user.
  *
  * @deprecated replaced by {@link UnixSystem}.
+ * This class is subject to removal in a future version of Java SE.
  */
-@Deprecated
+@Deprecated(since="1.4", forRemoval=true)
 public class SolarisSystem {
 
     private native void getSolarisInfo();
--- a/jdk/test/ProblemList.txt	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/ProblemList.txt	Wed Jul 05 21:51:13 2017 +0200
@@ -116,9 +116,6 @@
 
 # jdk_beans
 
-java/beans/XMLDecoder/8028054/TestConstructorFinder.java        8156579 generic-all
-java/beans/XMLDecoder/8028054/TestMethodFinder.java             8156579 generic-all
-
 java/beans/Introspector/8132566/OverridePropertyInfoTest.java   8132565 generic-all
 java/beans/Introspector/8132566/OverrideUserDefPropertyInfoTest.java 8132565 generic-all
 
@@ -275,8 +272,6 @@
 sun/security/pkcs11/tls/TestPRF.java                            8077138,8023434 windows-all
 sun/security/pkcs11/tls/TestPremaster.java                      8077138,8023434 windows-all
 
-sun/security/provider/SecureRandom/StrongSecureRandom.java      8051770 macosx-10.10
-
 sun/security/pkcs11/rsa/TestKeyPairGenerator.java               8074580 generic-all
 
 sun/security/krb5/auto/HttpNegotiateServer.java                 8038079 generic-all
@@ -285,14 +280,10 @@
 
 sun/security/x509/URICertStore/ExtensionsWithLDAP.java          8134577 generic-all
 
-sun/security/provider/SecureRandom/StrongSecureRandom.java      8157387 linux-all
-
 ############################################################################
 
 # jdk_sound
 
-javax/sound/sampled/DirectAudio/bug6400879.java                 8148915 linux-all
-
 ############################################################################
 
 # jdk_imageio
@@ -304,6 +295,8 @@
 
 # jdk_swing
 
+sanity/client/SwingSet/src/ButtonDemoScreenshotTest.java        8157338 generic-all
+
 ############################################################################
 
 # jdk_text
@@ -394,30 +387,8 @@
 
 # core_tools
 
-tools/jlink/plugins/IncludeLocalesPluginTest.java               8158272 generic-all
-
-tools/jlink/basic/BasicTest.java                                8159206 generic-all
-
-tools/jlink/IntegrationTest.java                                8159206 generic-all
-
-tools/jlink/JLinkOptimTest.java                                 8159206 generic-all
-
-tools/jlink/JLinkTest.java                                      8159206 generic-all
-
-tools/jlink/plugins/CompressorPluginTest.java                   8159206 generic-all
+tools/jlink/plugins/IncludeLocalesPluginTest.java               8159781 generic-all
 
-tools/jlink/plugins/ExcludeFilesPluginTest.java                 8159206 generic-all
-
-tools/jlink/plugins/ExcludePluginTest.java                      8159206 generic-all
-
-tools/jlink/plugins/ExcludeVMPluginTest.java                    8159206 generic-all
-
-tools/jlink/plugins/OrderResourcesPluginTest.java               8159206 generic-all
-
-tools/jlink/plugins/ResourceFilterTest.java                     8159206 generic-all
-
-tools/jlink/plugins/StringSharingPluginTest.java                8159206 generic-all
-
-tools/jmod/JmodTest.java                                        8159206 generic-all
+tools/jlink/JLinkOptimTest.java                                 8159264 generic-all
 
 ############################################################################
--- a/jdk/test/com/sun/awt/SecurityWarning/GetSizeShouldNotReturnZero.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/com/sun/awt/SecurityWarning/GetSizeShouldNotReturnZero.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %W% %E%
+  @key headful
   @bug 6818312
   @summary The size returned by SecurityWarning.getSize() should not be zero
   @author anthony.petrov@sun.com: area=awt.toplevel
--- a/jdk/test/com/sun/awt/Translucency/WindowOpacity.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/com/sun/awt/Translucency/WindowOpacity.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %W% %E%
+  @key headful
   @bug 6594131
   @summary Tests the AWTUtilities.get/setWindowOpacity() methods
   @author anthony.petrov@...: area=awt.toplevel
--- a/jdk/test/java/awt/AppContext/ApplicationThreadsStop/ApplicationThreadsStop.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/AppContext/ApplicationThreadsStop/ApplicationThreadsStop.java	Wed Jul 05 21:51:13 2017 +0200
@@ -30,6 +30,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8136858
  * @modules java.desktop/sun.awt
  * @run main/othervm/java.security.policy=java.policy -Djava.security.manager ApplicationThreadsStop
--- a/jdk/test/java/awt/Choice/ChoiceKeyEventReaction/ChoiceKeyEventReaction.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Choice/ChoiceKeyEventReaction/ChoiceKeyEventReaction.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 6252982
   @summary PIT: Keyboard FocusTraversal not working when choice's drop-down is visible, on XToolkit
   @author andrei.dmitriev : area=awt.choice
--- a/jdk/test/java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 7050935
   @summary closed/java/awt/Choice/WheelEventsConsumed/WheelEventsConsumed.html fails on win32
   @library ../../regtesthelpers
--- a/jdk/test/java/awt/Choice/GrabLockTest/GrabLockTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Choice/GrabLockTest/GrabLockTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  */
 /*
   @test
+  @key headful
   @bug 4800638
   @summary Tests that Choice does not lock the Desktop
   @run main GrabLockTest
--- a/jdk/test/java/awt/Choice/ItemStateChangeTest/ItemStateChangeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Choice/ItemStateChangeTest/ItemStateChangeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 7171412
   @summary awt Choice doesn't fire ItemStateChange when selecting item after select() call
   @author Oleg Pekhovskiy: area=awt-choice
--- a/jdk/test/java/awt/Choice/PopdownGeneratesMouseEvents/PopdownGeneratesMouseEvents.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Choice/PopdownGeneratesMouseEvents/PopdownGeneratesMouseEvents.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug 6200670
   @summary MouseMoved events are triggered by Choice when mouse is moved outside the component, XToolkit
   @library ../../regtesthelpers/
--- a/jdk/test/java/awt/Choice/PopupPosTest/PopupPosTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Choice/PopupPosTest/PopupPosTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 5044150
   @summary Tests that pupup doesn't popdown if no space to display under 
   @author ssi@sparc.spb.su
--- a/jdk/test/java/awt/Choice/RemoveAllShrinkTest/RemoveAllShrinkTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Choice/RemoveAllShrinkTest/RemoveAllShrinkTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4851798 8041896
   @summary Tests Choice List shrinks after removeAll
   @run main RemoveAllShrinkTest
--- a/jdk/test/java/awt/Choice/SelectCurrentItemTest/SelectCurrentItemTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Choice/SelectCurrentItemTest/SelectCurrentItemTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test 1.2 01/02/10
+  @key headful
   @bug 4902933
   @summary Test that selecting the current item sends an ItemEvent
   @author bchristi : area= Choice
--- a/jdk/test/java/awt/Clipboard/HTMLTransferTest/HTMLTransferTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Clipboard/HTMLTransferTest/HTMLTransferTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -25,6 +25,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug 6392086 8014725
   @summary Tests basic DnD functionality in an applet
   @author Alexey Utkin, Semyon Sadetsky area=dnd
--- a/jdk/test/java/awt/Component/7097771/bug7097771.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Component/7097771/bug7097771.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
 
 /*
   @test
+  @key headful
   @bug 7097771
   @summary setEnabled does not work for components in disabled containers.
   @author sergey.bylokhov@oracle.com: area=awt.component
--- a/jdk/test/java/awt/Component/CompEventOnHiddenComponent/CompEventOnHiddenComponent.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Component/CompEventOnHiddenComponent/CompEventOnHiddenComponent.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /*
   @test
+  @key headful
   @bug 6383903 8144166
   @summary REGRESSION: componentMoved is now getting called for some hidden components
   @author andrei.dmitriev: area=awt.component
--- a/jdk/test/java/awt/Component/F10TopToplevel/F10TopToplevel.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Component/F10TopToplevel/F10TopToplevel.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 6533175
   @summary Block F10 if closest toplevel to keystroke target is not a Frame.
   @author yuri nesterenko : area= awt.toplevel
--- a/jdk/test/java/awt/Component/NativeInLightShow/NativeInLightShow.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Component/NativeInLightShow/NativeInLightShow.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test 1.0 04/05/20
+  @key headful
   @bug 4140484
   @summary Heavyweight components inside invisible lightweight containers still show
   @author Your Name: art@sparc.spb.su
--- a/jdk/test/java/awt/Component/NoUpdateUponShow/NoUpdateUponShow.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Component/NoUpdateUponShow/NoUpdateUponShow.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6774258
   @summary  api/java_awt/Component/index.html#PaintUpdate fails randomly
   @author dmitry.cherepanov@...: area=awt.painting
--- a/jdk/test/java/awt/Component/PrintAllXcheckJNI/PrintAllXcheckJNI.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Component/PrintAllXcheckJNI/PrintAllXcheckJNI.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6736247
   @summary Component.printAll Invalid local JNI handle
   @author Dmitry Cherepanov: area=awt.component
--- a/jdk/test/java/awt/Component/TreeLockDeadlock/TreeLockDeadlock.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Component/TreeLockDeadlock/TreeLockDeadlock.java	Wed Jul 05 21:51:13 2017 +0200
@@ -30,6 +30,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8138764
  */
 public final class TreeLockDeadlock extends Frame {
--- a/jdk/test/java/awt/Component/isLightweightCrash/IsLightweightCrash.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Component/isLightweightCrash/IsLightweightCrash.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6255653
   @summary REGRESSION: Override isLightweight() causes access violation in awt.dll
   @author Andrei Dmitriev: area=awt-component
--- a/jdk/test/java/awt/ComponentOrientation/BorderTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/ComponentOrientation/BorderTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug     4108453
  * @summary Test ComponentOrientation (Bidi) support in BorderLayout
  */
--- a/jdk/test/java/awt/ComponentOrientation/FlowTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/ComponentOrientation/FlowTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug     4108453
  * @summary Test ComponentOrientation (Bidi) support in FlowLayout
  */
--- a/jdk/test/java/awt/ComponentOrientation/WindowTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/ComponentOrientation/WindowTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug     4108453 4778440 6304785
  * @summary Test Window.applyResourceBundle orientation support
  *
--- a/jdk/test/java/awt/Container/ContainerAIOOBE/ContainerAIOOBE.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Container/ContainerAIOOBE/ContainerAIOOBE.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8059590
  * @summary ArrayIndexOutOfBoundsException occurs when Container with overridden getComponents() is deserialized.
  * @author Alexey Ivanov
--- a/jdk/test/java/awt/Container/isRemoveNotifyNeeded/JInternalFrameTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Container/isRemoveNotifyNeeded/JInternalFrameTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6552803
   @summary moveToFront shouldn't remove peers of HW components
   @author anthony.petrov@...: area=awt.container
--- a/jdk/test/java/awt/Cursor/GetSystemCustomCursor/GetSystemCustomCursor.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Cursor/GetSystemCustomCursor/GetSystemCustomCursor.java	Wed Jul 05 21:51:13 2017 +0200
@@ -26,6 +26,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8039269
  * @author Sergey Bylokhov
  */
--- a/jdk/test/java/awt/Debug/DumpOnKey/DumpOnKey.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Debug/DumpOnKey/DumpOnKey.java	Wed Jul 05 21:51:13 2017 +0200
@@ -31,6 +31,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 4379403
  * @run main/othervm DumpOnKey false
  * @run main/othervm DumpOnKey -Dsun.awt.nativedebug=true true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Dialog/ChildProperties/ChildDialogProperties.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /*
+ @test
+ @bug 8057574
+ @summary Verify that child Dialog does not inherit parent's Properties
+ @run main ChildDialogProperties
+ */
+import java.awt.Color;
+import java.awt.Dialog;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Label;
+
+public class ChildDialogProperties {
+
+    private Dialog parentDialog;
+    private Dialog dialogChild;
+    private Frame parentFrame;
+    private Dialog frameChildDialog;
+    private Label parentLabel;
+    private Font parentFont;
+    private Label childLabel;
+
+    private static final int WIDTH = 200;
+    private static final int HEIGHT = 200;
+
+    public void testChildPropertiesWithDialogAsParent() {
+
+        parentDialog = new Dialog((Dialog) null, "parent Dialog");
+        parentDialog.setSize(WIDTH, HEIGHT);
+        parentDialog.setLocation(100, 100);
+        parentDialog.setBackground(Color.RED);
+
+        parentLabel = new Label("ParentForegroundAndFont");
+        parentFont = new Font("Courier New", Font.ITALIC, 15);
+        parentDialog.setForeground(Color.BLUE);
+        parentDialog.setFont(parentFont);
+
+        parentDialog.add(parentLabel);
+        parentDialog.setVisible(true);
+
+        dialogChild = new Dialog(parentDialog, "Dialog's child");
+        dialogChild.setSize(WIDTH, HEIGHT);
+        dialogChild.setLocation(WIDTH + 200, 100);
+        childLabel = new Label("ChildForegroundAndFont");
+        dialogChild.add(childLabel);
+
+        dialogChild.setVisible(true);
+
+        if (parentDialog.getBackground() == dialogChild.getBackground()) {
+            dispose();
+            throw new RuntimeException("Child Dialog Should NOT Inherit "
+                    + "Parent Dialog's Background Color");
+        }
+
+        if (parentDialog.getForeground() == dialogChild.getForeground()) {
+            dispose();
+            throw new RuntimeException("Child Dialog Should NOT Inherit "
+                    + "Parent Dialog's Foreground Color");
+        }
+
+        if (parentDialog.getFont() == dialogChild.getFont()) {
+            dispose();
+            throw new RuntimeException("Child Dialog Should NOT Inherit "
+                    + "Parent Dialog's Font Style/Color");
+        }
+
+    }
+
+    public void testChildPropertiesWithFrameAsParent() {
+
+        parentFrame = new Frame("parent Frame");
+        parentFrame.setSize(WIDTH, HEIGHT);
+        parentFrame.setLocation(100, 400);
+        parentFrame.setBackground(Color.BLUE);
+        parentLabel = new Label("ParentForegroundAndFont");
+        parentFont = new Font("Courier New", Font.ITALIC, 15);
+        parentFrame.setForeground(Color.RED);
+        parentFrame.setFont(parentFont);
+        parentFrame.add(parentLabel);
+        parentFrame.setVisible(true);
+
+        frameChildDialog = new Dialog(parentFrame, "Frame's child");
+        frameChildDialog.setSize(WIDTH, HEIGHT);
+        frameChildDialog.setLocation(WIDTH + 200, 400);
+        childLabel = new Label("ChildForegroundAndFont");
+        frameChildDialog.add(childLabel);
+        frameChildDialog.setVisible(true);
+
+        if (parentFrame.getBackground() == frameChildDialog.getBackground()) {
+            dispose();
+            throw new RuntimeException("Child Dialog Should NOT Inherit "
+                    + "Parent Frame's Background Color");
+        }
+
+        if (parentFrame.getForeground() == frameChildDialog.getForeground()) {
+            dispose();
+            throw new RuntimeException("Child Dialog Should NOT Inherit "
+                    + "Parent Frame's Foreground Color");
+        }
+
+        if (parentFrame.getFont() == frameChildDialog.getFont()) {
+            dispose();
+            throw new RuntimeException("Child Dialog Should NOT Inherit "
+                    + "Parent Frame's Font Style/Color");
+        }
+    }
+
+    private void dispose() {
+
+        if (parentDialog != null) {
+            parentDialog.dispose();
+        }
+        if (parentFrame != null) {
+            parentFrame.dispose();
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        ChildDialogProperties obj = new ChildDialogProperties();
+        // TestCase1: When Parent is Dialog, Child is Dialog
+        obj.testChildPropertiesWithDialogAsParent();
+        // TestCase2: When Parent is Frame, chis is Dialog
+        obj.testChildPropertiesWithFrameAsParent();
+        obj.dispose();
+    }
+
+}
--- a/jdk/test/java/awt/Dialog/CrashXCheckJni/CrashXCheckJni.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Dialog/CrashXCheckJni/CrashXCheckJni.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6610244
   @library ../../regtesthelpers
   @build Util Sysout AbstractTest
--- a/jdk/test/java/awt/Dialog/DialogOverflowSizeTest/DialogSizeOverflowTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Dialog/DialogOverflowSizeTest/DialogSizeOverflowTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,14 +22,15 @@
  */
 
 /*
-   @test
-   @bug 4904961
-   @summary Test that Dialog with zero sizes won't be created with negative sizes due to overflow in peer code
-   @author Andrei Dmitriev: area=awt.toplevel
-   @library ../../regtesthelpers
-   @build Util
-   @run main DialogSizeOverflowTest
-*/
+ * @test
+ * @key headful
+ * @bug 4904961
+ * @summary Test that Dialog with zero sizes won't be created with negative sizes due to overflow in peer code
+ * @author Andrei Dmitriev: area=awt.toplevel
+ * @library ../../regtesthelpers
+ * @build Util
+ * @run main DialogSizeOverflowTest
+ */
 
 import java.awt.*;
 import java.awt.event.*;
--- a/jdk/test/java/awt/Dialog/ModalDialogPermission/ModalDialogPermission.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Dialog/ModalDialogPermission/ModalDialogPermission.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /*
   @test
+  @key headful
   @bug 7080109
   @summary Dialog.show() lacks doPrivileged() to access system event queue.
   @author sergey.bylokhov@oracle.com: area=awt.dialog
--- a/jdk/test/java/awt/Dialog/NonResizableDialogSysMenuResize/NonResizableDialogSysMenuResize.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Dialog/NonResizableDialogSysMenuResize/NonResizableDialogSysMenuResize.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6494016
   @summary Nonresizable dialogs should not be resized using the Size SystemMenu command
   @author anthony.petrov@...: area=awt.toplevel
--- a/jdk/test/java/awt/EventDispatchThread/HandleExceptionOnEDT/HandleExceptionOnEDT.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/EventDispatchThread/HandleExceptionOnEDT/HandleExceptionOnEDT.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6304473 6727884
   @summary Tests that an exception on EDT is handled with ThreadGroup.uncaughtException()
   @author artem.ananiev: area=awt.eventdispatching
--- a/jdk/test/java/awt/EventDispatchThread/PreserveDispathThread/PreserveDispatchThread.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/EventDispatchThread/PreserveDispathThread/PreserveDispatchThread.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6424157
   @author Artem Ananiev: area=eventqueue
   @run main PreserveDispatchThread
--- a/jdk/test/java/awt/EventDispatchThread/PropertyPermissionOnEDT/PropertyPermissionOnEDT.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/EventDispatchThread/PropertyPermissionOnEDT/PropertyPermissionOnEDT.java	Wed Jul 05 21:51:13 2017 +0200
@@ -34,6 +34,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8080405
  * @run main/othervm/policy=java.policy -Djava.security.manager PropertyPermissionOnEDT
  */
--- a/jdk/test/java/awt/EventQueue/PushPopDeadlock2/PushPopTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/EventQueue/PushPopDeadlock2/PushPopTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4913324
   @author Oleg Sukhodolsky: area=eventqueue
   @modules java.desktop/sun.awt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/FileDialog/FileDialogIconTest/FileDialogIconTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8157163
+ * @summary AWT FileDialog does not inherit icon image from parent Frame
+ * @requires os.family=="windows"
+ * @run main FileDialogIconTest
+ */
+import javax.swing.*;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.lang.reflect.InvocationTargetException;
+
+public class FileDialogIconTest {
+    private static Frame frame;
+    private static Dialog dialog;
+
+    public static void main(final String[] args) throws InterruptedException, InvocationTargetException, AWTException {
+        Robot robot;
+        Point p;
+        try {
+            frame = new Frame();
+            frame.setIconImage(createImage());
+            frame.setVisible(true);
+            robot = new Robot();
+            robot.waitForIdle();
+            robot.delay(200);
+
+            dialog = new FileDialog(frame, "Dialog");
+            dialog.setModal(false);
+            dialog.setVisible(true);
+            robot.waitForIdle();
+            robot.delay(200);
+
+            p = new Point(10, 10);
+            SwingUtilities.convertPointToScreen(p, dialog);
+            Color color = robot.getPixelColor(p.x, p.y);
+            if (!Color.RED.equals(color)) {
+                throw new RuntimeException("Dialog icon was not inherited from " +
+                        "owning window. Wrong color: " + color);
+            }
+        } finally {
+            dialog.dispose();
+            frame.dispose();
+        }
+    }
+
+    private static Image createImage() {
+        BufferedImage image = new BufferedImage(64, 64,
+                                                  BufferedImage.TYPE_INT_ARGB);
+        Graphics g = image.getGraphics();
+        g.setColor(Color.RED);
+        g.fillRect(0, 0, image.getWidth(), image.getHeight());
+        g.dispose();
+        return image;
+    }
+
+}
--- a/jdk/test/java/awt/FileDialog/FilenameFilterTest/FilenameFilterTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FileDialog/FilenameFilterTest/FilenameFilterTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 6448069
   @summary namefilter is not called for file dialog on windows
   @author oleg.sukhodolsky: area= awt.filedialog
--- a/jdk/test/java/awt/FileDialog/ModalFocus/FileDialogModalFocusTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FileDialog/ModalFocus/FileDialogModalFocusTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,3 +1,4 @@
+
 /*
  * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -21,11 +22,13 @@
  * questions.
  */
 
-/* @test
-   @bug 8025815
-   @summary Child FileDialog of modal dialog does not get focus on Gnome
-   @author Semyon Sadetsky
-  */
+/*
+ * @test
+ * @key headful
+ * @bug 8025815
+ * @summary Child FileDialog of modal dialog does not get focus on Gnome
+ * @author Semyon Sadetsky
+ */
 
 import javax.swing.*;
 import java.awt.*;
--- a/jdk/test/java/awt/Focus/6378278/InputVerifierTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/6378278/InputVerifierTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6378278
   @summary Apparent missing key events causing Bugster to break
   @author oleg.sukhodolsky: area=awt.focus
--- a/jdk/test/java/awt/Focus/6382144/EndlessLoopTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/6382144/EndlessLoopTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6382144
   @summary REGRESSION: InputVerifier and JOptionPane
   @author oleg.sukhodolsky: area=awt.focus
--- a/jdk/test/java/awt/Focus/6401036/InputVerifierTest2.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/6401036/InputVerifierTest2.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6401036
   @summary  InputVerifier shouldn't be called when requestFocus() is called on comp from another toplevel
   @author oleg.sukhodolsky: area=awt.focus
--- a/jdk/test/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowBlockingTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowBlockingTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6314575
   @summary   Tests that previosly focused owned window doesn't steal focus when an owner's component requests focus.
   @author    Anton.Tarasov: area=awt.focus
--- a/jdk/test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug 4041703 4096228 4025223 4260929
   @summary Ensures that appletviewer sets a reasonable default focus for an Applet on start
   @author  das area=appletviewer
--- a/jdk/test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug 4411534 4517274
   @summary ensures that user's requestFocus() during applet initialization
            is not ignored
--- a/jdk/test/java/awt/Focus/Cause/FocusCauseTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/Cause/FocusCauseTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8080395
   @summary consider making sun.awt.CausedFocusEvent functionality public
   @run main FocusCauseTest
--- a/jdk/test/java/awt/Focus/ChildWindowFocusTest/ChildWindowFocusTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ChildWindowFocusTest/ChildWindowFocusTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug        5090325
   @summary    Tests that Window's child can be focused on XAWT.
   @author     anton.tarasov@sun.com: area=awt.focus
--- a/jdk/test/java/awt/Focus/ChoiceFocus/ChoiceFocus.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ChoiceFocus/ChoiceFocus.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4053856
   @summary Choice components don't honour key focus
   @library ../../regtesthelpers
--- a/jdk/test/java/awt/Focus/ClearLwQueueBreakTest/ClearLwQueueBreakTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ClearLwQueueBreakTest/ClearLwQueueBreakTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6496958
   @summary   Tests that breaking the proccess of clearing LW requests doesn't break focus.
   @author    anton.tarasov@...: area=awt-focus
--- a/jdk/test/java/awt/Focus/CloseDialogActivateOwnerTest/CloseDialogActivateOwnerTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/CloseDialogActivateOwnerTest/CloseDialogActivateOwnerTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6785058
   @summary   Tests that an owner is activated on closing its owned dialog with the warning icon.
   @author    Anton Tarasov: area=awt.focus
--- a/jdk/test/java/awt/Focus/ConsumeNextKeyTypedOnModalShowTest/ConsumeNextKeyTypedOnModalShowTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ConsumeNextKeyTypedOnModalShowTest/ConsumeNextKeyTypedOnModalShowTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test      %W% %E%
+  @key headful
   @bug       6637607
   @summary   Showing a modal dlg on TAB KEY_PRESS shouldn't consume inappropriate KEY_TYPED.
   @author    Anton Tarasov: area=awt-focus
--- a/jdk/test/java/awt/Focus/ContainerFocusAutoTransferTest/ContainerFocusAutoTransferTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ContainerFocusAutoTransferTest/ContainerFocusAutoTransferTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6607170
   @summary   Tests for focus-auto-transfer.
   @author    Anton Tarasov: area=awt-focus
--- a/jdk/test/java/awt/Focus/DeiconifiedFrameLoosesFocus/DeiconifiedFrameLoosesFocus.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/DeiconifiedFrameLoosesFocus/DeiconifiedFrameLoosesFocus.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6480534
   @summary    A Frame changing its state from ICONIFIED to NORMAL should regain focus.
   @author     anton.tarasov@...: area=awt.focus
--- a/jdk/test/java/awt/Focus/DisposedWindow/DisposeDialogNotActivateOwnerTest/DisposeDialogNotActivateOwnerTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/DisposedWindow/DisposeDialogNotActivateOwnerTest/DisposeDialogNotActivateOwnerTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6386592
   @summary    Tests that disposing a dialog doesn't activate its invisible owner.
   @author     anton.tarasov@sun.com: area=awt.focus
--- a/jdk/test/java/awt/Focus/FocusOwnerFrameOnClick/FocusOwnerFrameOnClick.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/FocusOwnerFrameOnClick/FocusOwnerFrameOnClick.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test      FocusOwnerFrameOnClick.java %W% %E%
+  @key headful
   @bug       6886678
   @summary   Tests that clicking an owner frame switches focus from its owned window.
   @author    Anton Tarasov: area=awt.focus
--- a/jdk/test/java/awt/Focus/FocusSubRequestTest/FocusSubRequestTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/FocusSubRequestTest/FocusSubRequestTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug        5082319
   @summary    Tests that focus request for already focused component doesn't block key events.
   @author     anton.tarasov@sun.com
--- a/jdk/test/java/awt/Focus/FocusTraversalPolicy/ContainerOrderFTPTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/FocusTraversalPolicy/ContainerOrderFTPTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8025001
   @summary Tests java.awt.ContainerOrderFocusTraversalPolicy functionality.
   @run main ContainerOrderFTPTest
--- a/jdk/test/java/awt/Focus/FocusTraversalPolicy/DefaultFTPTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/FocusTraversalPolicy/DefaultFTPTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6463545
   @summary   Tests java.awt.DefaultFocusTraversalPolicy functionality.
   @author    anton.tarasov area=awt.focus
--- a/jdk/test/java/awt/Focus/FocusTraversalPolicy/InitialFTP.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/FocusTraversalPolicy/InitialFTP.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       7125044
   @summary   Tests defaut focus traversal policy in AWT & Swing toplevel windows.
   @author    anton.tarasov@sun.com: area=awt.focus
--- a/jdk/test/java/awt/Focus/FocusTraversalPolicy/LayoutFTPTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/FocusTraversalPolicy/LayoutFTPTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6463545
   @summary   Tests javax.swing.LayoutFocusTraversalPolicy functionality.
   @author    anton.tarasov, oleg.sukhodolsky: area=awt.focus
--- a/jdk/test/java/awt/Focus/FrameJumpingToMouse/FrameJumpingToMouse.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/FrameJumpingToMouse/FrameJumpingToMouse.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,14 +22,15 @@
  */
 
 /*
-    @test
-    @bug        4752312
-    @summary    Tests that after moving non-focusable window it ungrabs mouse pointer
-    @author     Denis Mikhalkin: area=awt.focus
-    @library    ../../regtesthelpers
-    @build      Util
-    @run        main FrameJumpingToMouse
-*/
+ * @test
+ * @key headful
+ * @bug        4752312
+ * @summary    Tests that after moving non-focusable window it ungrabs mouse pointer
+ * @author     Denis Mikhalkin: area=awt.focus
+ * @library    ../../regtesthelpers
+ * @build      Util
+ * @run        main FrameJumpingToMouse
+ */
 
 import java.applet.Applet;
 import java.awt.BorderLayout;
--- a/jdk/test/java/awt/Focus/FrameMinimizeTest/FrameMinimizeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/FrameMinimizeTest/FrameMinimizeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6502358
   @summary focus is not restored after programmatic iconification and restoring
   @author : area=awt.focus
--- a/jdk/test/java/awt/Focus/IconifiedFrameFocusChangeTest/IconifiedFrameFocusChangeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/IconifiedFrameFocusChangeTest/IconifiedFrameFocusChangeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6522725
   @summary   Tests for proper request-focus-back on FOCUS_LOST.
   @author    Anton Tarasov: area=awt-focus
--- a/jdk/test/java/awt/Focus/InputVerifierTest3/InputVerifierTest3.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/InputVerifierTest3/InputVerifierTest3.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6432665
   @summary Inputverifier is not executed when focus owner is removed
   @author oleg.sukhodolsky: area=awt.focus
--- a/jdk/test/java/awt/Focus/ModalBlockedStealsFocusTest/ModalBlockedStealsFocusTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ModalBlockedStealsFocusTest/ModalBlockedStealsFocusTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6426132
   @summary    Modal blocked window shouldn't steal focus when shown, or brought to front.
   @author     anton.tarasov@...: area=awt.focus
--- a/jdk/test/java/awt/Focus/ModalDialogInitialFocusTest/ModalDialogInitialFocusTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ModalDialogInitialFocusTest/ModalDialogInitialFocusTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6382750
   @summary
   @author     anton.tarasov@sun.com: area=awt.focus
--- a/jdk/test/java/awt/Focus/ModalExcludedWindowClickTest/ModalExcludedWindowClickTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ModalExcludedWindowClickTest/ModalExcludedWindowClickTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug        6271849
   @summary    Tests that component in modal excluded Window which parent is blocked responses to mouse clicks.
   @author     anton.tarasov@sun.com: area=awt.focus
--- a/jdk/test/java/awt/Focus/NoAutotransferToDisabledCompTest/NoAutotransferToDisabledCompTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/NoAutotransferToDisabledCompTest/NoAutotransferToDisabledCompTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       4685768
   @summary   Tests that auto-transfering focus doesn't stuck on a disabled component.
   @author    Anton Tarasov: area=awt.focus
--- a/jdk/test/java/awt/Focus/NonFocusableBlockedOwnerTest/NonFocusableBlockedOwnerTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/NonFocusableBlockedOwnerTest/NonFocusableBlockedOwnerTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug        6272324
   @summary    Modal excluded Window which decorated parent is blocked should be non-focusable.
   @author     anton.tarasov@sun.com: area=awt.focus
--- a/jdk/test/java/awt/Focus/NonFocusableResizableTooSmall/NonFocusableResizableTooSmall.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/NonFocusableResizableTooSmall/NonFocusableResizableTooSmall.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6581927
   @summary Non-focusable frame should honor the size of the frame buttons/decorations when resizing
   @library ../../regtesthelpers
--- a/jdk/test/java/awt/Focus/NonFocusableWindowTest/NoEventsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/NonFocusableWindowTest/NoEventsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4452384
   @summary Tests that non-focusable windows doesn't generate any focus events when accessed.
   @author Denis.Mikhalkin: area=awt.focus
--- a/jdk/test/java/awt/Focus/NonFocusableWindowTest/NonfocusableOwnerTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/NonFocusableWindowTest/NonfocusableOwnerTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6182359
   @summary   Tests that Window having non-focusable owner can't be a focus owner.
   @author    Anton.Tarasov: area=awt.focus
--- a/jdk/test/java/awt/Focus/OwnedWindowFocusIMECrashTest/OwnedWindowFocusIMECrashTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/OwnedWindowFocusIMECrashTest/OwnedWindowFocusIMECrashTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6542975
   @summary   Tests that switching focus from an owned window doesn't crash.
   @author    anton.tarasov@sun.com: area=awt-focus
--- a/jdk/test/java/awt/Focus/RequestFocusAndHideTest/RequestFocusAndHideTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/RequestFocusAndHideTest/RequestFocusAndHideTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6562853 6562853 6562853
   @summary   Tests that focus can not be set to removed component.
   @author    Oleg Sukhodolsky: area=awt.focus
--- a/jdk/test/java/awt/Focus/RequestFocusToDisabledCompTest/RequestFocusToDisabledCompTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/RequestFocusToDisabledCompTest/RequestFocusToDisabledCompTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       4685768
   @summary   Tests that it's possible to manually request focus on a disabled component.
   @author    Anton Tarasov: area=awt.focus
--- a/jdk/test/java/awt/Focus/RequestOnCompWithNullParent/RequestOnCompWithNullParent1.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/RequestOnCompWithNullParent/RequestOnCompWithNullParent1.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6418028
   @author oleg.sukhodolsky: area=awt.focus
   @library ../../regtesthelpers
--- a/jdk/test/java/awt/Focus/ResetMostRecentFocusOwnerTest/ResetMostRecentFocusOwnerTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ResetMostRecentFocusOwnerTest/ResetMostRecentFocusOwnerTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug      8013773
   @summary  Tests that disabled component is not retained as most recent focus owner.
   @author   Anton.Tarasov: area=awt.focus
--- a/jdk/test/java/awt/Focus/RestoreFocusOnDisabledComponentTest/RestoreFocusOnDisabledComponentTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/RestoreFocusOnDisabledComponentTest/RestoreFocusOnDisabledComponentTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test      %W% %E%
+  @key headful
   @bug       6598089
   @summary   Tests restoring focus on a single disabled coponent
   @author    Anton Tarasov: area=awt-focus
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Focus/RollbackFocusFromAnotherWindowTest/RollbackFocusFromAnotherWindowTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+  @test
+  @bug       8139218
+  @summary   Dialog that opens and closes quickly changes focus in original
+             focusowner
+  @run       main RollbackFocusFromAnotherWindowTest
+ */
+
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+
+public class RollbackFocusFromAnotherWindowTest extends JFrame
+                                                          implements KeyListener
+{
+    private static RollbackFocusFromAnotherWindowTest tfs;
+    private static Robot robot;
+
+    public static void main(String[] args) throws Exception {
+        robot = new Robot();
+
+        SwingUtilities.invokeAndWait(() -> {
+            tfs = new RollbackFocusFromAnotherWindowTest();
+            tfs.setVisible(true);
+        });
+
+        robot.waitForIdle();
+        robot.delay(200);
+
+        try {
+            for (int i = 0; i < 10; i++) {
+                robot.keyPress(KeyEvent.VK_A);
+                robot.delay(10);
+                robot.keyRelease(KeyEvent.VK_A);
+                robot.waitForIdle();
+                robot.delay(200);
+                SwingUtilities.invokeAndWait(() -> {
+                    String name = tfs.getFocusOwner().getName();
+                    System.out.println(name);
+                    if (!"Comp0".equals(name)) {
+                        throw new RuntimeException(
+                                "Focus is not restored correctly");
+                    }
+                });
+            }
+            System.out.println("ok");
+        } finally {
+            SwingUtilities.invokeLater(() -> tfs.dispose());
+        }
+    }
+
+    public RollbackFocusFromAnotherWindowTest()
+    {
+        setUndecorated(true);
+        Container c = getContentPane();
+        c.setLayout(new FlowLayout());
+        for (int i = 0; i < 10; i++)
+        {
+            JTextField tf = new JTextField("" + i, 10);
+            tf.setName("Comp" + i);
+            c.add(tf);
+            tf.addKeyListener(this);
+        }
+        pack();
+    }
+
+    @Override
+    public void keyTyped(KeyEvent e) {
+
+    }
+
+    @Override
+    public void keyPressed(KeyEvent e) {
+        Frame frame = new Frame();
+        frame.setVisible(true);
+        try {
+            Thread.sleep(2);
+        } catch (InterruptedException e1) {
+            e1.printStackTrace();
+        }
+        frame.dispose();
+    }
+
+    @Override
+    public void keyReleased(KeyEvent e) {
+
+    }
+}
--- a/jdk/test/java/awt/Focus/ShowFrameCheckForegroundTest/ShowFrameCheckForegroundTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ShowFrameCheckForegroundTest/ShowFrameCheckForegroundTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug       6492970
   @summary   Tests that showing a toplvel in a not foreground Java process activates it.
   @library   ../../regtesthelpers
--- a/jdk/test/java/awt/Focus/ToFrontFocusTest/ToFrontFocus.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/ToFrontFocusTest/ToFrontFocus.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4092033 4529626
   @summary Tests that toFront makes window focused unless it is non-focusable
   @author  area=awt.focus
--- a/jdk/test/java/awt/Focus/WindowInitialFocusTest/WindowInitialFocusTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/WindowInitialFocusTest/WindowInitialFocusTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6426132
   @summary    A Window should be focused upon start (XAWT bug).
   @author     anton.tarasov@...: area=awt.focus
--- a/jdk/test/java/awt/Focus/WindowIsFocusableAccessByThreadsTest/WindowIsFocusableAccessByThreadsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/WindowIsFocusableAccessByThreadsTest/WindowIsFocusableAccessByThreadsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug      8047288
   @summary  Tests method isFocusable of Window component. It should be accessed only from EDT
   @author   artem.malinko@oracle.com
--- a/jdk/test/java/awt/Focus/WindowUpdateFocusabilityTest/WindowUpdateFocusabilityTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/WindowUpdateFocusabilityTest/WindowUpdateFocusabilityTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6253913
   @summary    Tests that a Window shown before its owner is focusable.
   @author     anton.tarasov@sun.com: area=awt-focus
--- a/jdk/test/java/awt/Focus/WrongKeyTypedConsumedTest/WrongKeyTypedConsumedTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Focus/WrongKeyTypedConsumedTest/WrongKeyTypedConsumedTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug      4782886
   @summary  FocusManager consumes wrong KEY_TYPED events
   @author   Oleg.Sukhodolsky: area=awt.focus
--- a/jdk/test/java/awt/FontClass/CreateFont/bigfont.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FontClass/CreateFont/bigfont.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 <!--
 
- Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  questions.
 
   @test
+  @key headful
   @bug 6522586
   @run applet bigfont.html
   @summary Enforce limits on font creation
--- a/jdk/test/java/awt/Frame/7024749/bug7024749.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/7024749/bug7024749.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 7024749 8019990
  * @summary JDK7 b131---a crash in: Java_sun_awt_windows_ThemeReader_isGetThemeTransitionDurationDefined+0x75
  * @library ../../regtesthelpers
--- a/jdk/test/java/awt/Frame/DisposeStressTest/DisposeStressTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/DisposeStressTest/DisposeStressTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4051487 4145670
   @summary Tests that disposing of an empty Frame or a Frame with a MenuBar
            while it is being created does not crash the VM.
--- a/jdk/test/java/awt/Frame/DynamicLayout/DynamicLayout.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/DynamicLayout/DynamicLayout.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6500477
   @summary Tests whether DynamicLayout is really off
   @author anthony.petrov@...: area=awt.toplevel
--- a/jdk/test/java/awt/Frame/FrameLocation/FrameLocation.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/FrameLocation/FrameLocation.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6895647
   @summary X11 Frame locations should be what we set them to
   @author anthony.petrov@oracle.com: area=awt.toplevel
--- a/jdk/test/java/awt/Frame/FrameResize/ShowChildWhileResizingTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/FrameResize/ShowChildWhileResizingTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,3 +1,4 @@
+
 /*
  * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -21,11 +22,13 @@
  * questions.
  */
 
-/* @test
-   @bug 8079595
-   @summary Resizing dialog which is JWindow parent makes JVM crash
-   @author Semyon Sadetsky
-  */
+/*
+ * @test
+ * @key headful
+ * @bug 8079595
+ * @summary Resizing dialog which is JWindow parent makes JVM crash
+ * @author Semyon Sadetsky
+ */
 
 import javax.swing.*;
 import java.awt.*;
--- a/jdk/test/java/awt/Frame/FrameSetSizeStressTest/FrameSetSizeStressTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/FrameSetSizeStressTest/FrameSetSizeStressTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /*
   @test
+  @key headful
   @bug 7177173
   @summary setBounds can cause StackOverflow in case of the considerable loading
   @author Sergey Bylokhov
--- a/jdk/test/java/awt/Frame/FrameSize/TestFrameSize.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/FrameSize/TestFrameSize.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 /*
  * Copyright 2009 Red Hat, Inc.  All Rights Reserved.
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 
 /*
   @test
+  @key headful
   @bug 6721088
   @summary X11 Window sizes should be what we set them to
   @author Omair Majid <omajid@redhat.com>: area=awt.toplevel
--- a/jdk/test/java/awt/Frame/HideMaximized/HideMaximized.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/HideMaximized/HideMaximized.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 7177173
   @summary The maximized state shouldn't be reset upon hiding a frame
   @author anthony.petrov@oracle.com: area=awt.toplevel
--- a/jdk/test/java/awt/Frame/HugeFrame/HugeFrame.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/HugeFrame/HugeFrame.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 7160609
   @summary A window with huge dimensions shouldn't crash JVM
   @author anthony.petrov@oracle.com: area=awt.toplevel
--- a/jdk/test/java/awt/Frame/InvisibleOwner/InvisibleOwner.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/InvisibleOwner/InvisibleOwner.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 7154177
   @summary An invisible owner frame should never become visible
   @author anthony.petrov@oracle.com: area=awt.toplevel
--- a/jdk/test/java/awt/Frame/LayoutOnMaximizeTest/LayoutOnMaximizeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/LayoutOnMaximizeTest/LayoutOnMaximizeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6355340
   @summary Test correctness of laying out the contents of a frame on maximize
   @author anthony.petrov@...: area=awt.toplevel
--- a/jdk/test/java/awt/Frame/MaximizedNormalBoundsUndecoratedTest/MaximizedNormalBoundsUndecoratedTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/MaximizedNormalBoundsUndecoratedTest/MaximizedNormalBoundsUndecoratedTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
 import java.awt.Dimension;
 /*
  * @test
+ * @key headful
  * @bug 8066436
  * @summary Set the size of frame. Set extendedState Frame.MAXIMIZED_BOTH and Frame.NORMAL
  *          sequentially for undecorated Frame and .
--- a/jdk/test/java/awt/Frame/MaximizedToIconified/MaximizedToIconified.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/MaximizedToIconified/MaximizedToIconified.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4977491
   @summary State changes should always be reported as events
   @author anthony.petrov@...: area=awt.toplevel
--- a/jdk/test/java/awt/Frame/MaximizedToMaximized/MaximizedToMaximized.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/MaximizedToMaximized/MaximizedToMaximized.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8007219 8146168
  * @author Alexander Scherbatiy
  * @summary Frame size reverts meaning of maximized attribute
--- a/jdk/test/java/awt/Frame/MaximizedToUnmaximized/MaximizedToUnmaximized.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/MaximizedToUnmaximized/MaximizedToUnmaximized.java	Wed Jul 05 21:51:13 2017 +0200
@@ -30,6 +30,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8065739
  * @summary [macosx] Frame warps to lower left of screen when displayed
  * @author Alexandr Scherbatiy
--- a/jdk/test/java/awt/Frame/MaximizedUndecorated/MaximizedUndecorated.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/MaximizedUndecorated/MaximizedUndecorated.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 import java.lang.reflect.InvocationTargetException;
 /*
  * @test
+ * @key headful
  * @bug 8022302
  * @summary Set extendedState Frame.MAXIMIZED_BOTH for undecorated Frame and JFrame.
  *          Check if resulted size is equal to GraphicsEnvironment.getMaximumWindowBounds().
--- a/jdk/test/java/awt/Frame/MiscUndecorated/UndecoratedInitiallyIconified.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/MiscUndecorated/UndecoratedInitiallyIconified.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 import java.awt.FlowLayout;
 /*
  * @test
+ * @key headful
  * @bug 4464710 7102299
  * @summary Recurring bug is, an undecorated JFrame cannot be set iconified
  *          before setVisible(true)
--- a/jdk/test/java/awt/Frame/NonEDT_GUI_DeadlockTest/NonEDT_GUI_Deadlock.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/NonEDT_GUI_DeadlockTest/NonEDT_GUI_Deadlock.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 <html>
 <!--
- Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 
 <!--  
   @test
+  @key headful
   @bug 4828019
   @summary Frame/Window deadlock
   @author yan@sparc.spb.su: area=
--- a/jdk/test/java/awt/Frame/ResizeAfterSetFont/ResizeAfterSetFont.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/ResizeAfterSetFont/ResizeAfterSetFont.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,6 +27,7 @@
 
 /*
  @test
+ @key headful
  @bug 7170655
  @summary Frame size does not change after changing font
  @author Jonathan Lu
--- a/jdk/test/java/awt/Frame/ShownOffScreenOnWin98/ShownOffScreenOnWin98Test.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/ShownOffScreenOnWin98/ShownOffScreenOnWin98Test.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6477497
   @summary Windows drawn off-screen on Win98 if locationByPlatform is true
   @author anthony.petrov@...: area=awt.toplevel
--- a/jdk/test/java/awt/Frame/SlideNotResizableTest/SlideNotResizableTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/SlideNotResizableTest/SlideNotResizableTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8032595
  * @summary setResizable(false) makes a frame slide down
  * @author Petr Pchelko
--- a/jdk/test/java/awt/Frame/UnfocusableMaximizedFrameResizablity/UnfocusableMaximizedFrameResizablity.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Frame/UnfocusableMaximizedFrameResizablity/UnfocusableMaximizedFrameResizablity.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4980161
   @summary Setting focusable window state to false makes the maximized frame resizable
   @author anthony.petrov@...: area=awt.toplevel
--- a/jdk/test/java/awt/FullScreen/8013581/bug8013581.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FullScreen/8013581/bug8013581.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8013581
  * @summary [macosx] Key Bindings break with awt GraphicsEnvironment setFullScreenWindow
  * @author leonid.romanov@oracle.com
--- a/jdk/test/java/awt/FullScreen/AltTabCrashTest/AltTabCrashTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FullScreen/AltTabCrashTest/AltTabCrashTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
  @test
+ @key headful
  @bug 6275887 6429971 6459792
  @summary Test that we don't crash when alt+tabbing in and out of
          fullscreen app
--- a/jdk/test/java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6366813 6459844
  * @summary Tests that no exception is thrown if a frame is resized just
  * before we create a bufferStrategy
--- a/jdk/test/java/awt/FullScreen/DisplayChangeVITest/DisplayChangeVITest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FullScreen/DisplayChangeVITest/DisplayChangeVITest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6366359
  * @summary Test that we don't crash when changing from 8 to 16/32 bit modes
  * @author Dmitri.Trembovetski@Sun.COM area=FullScreen
--- a/jdk/test/java/awt/FullScreen/FullScreenInsets/FullScreenInsets.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FullScreen/FullScreenInsets/FullScreenInsets.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -35,6 +35,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8003173 7019055
  * @summary Full-screen windows should have the proper insets.
  * @author Sergey Bylokhov
--- a/jdk/test/java/awt/FullScreen/MultimonFullscreenTest/MultimonDeadlockTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FullScreen/MultimonFullscreenTest/MultimonDeadlockTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8129116
   @summary Deadlock with multimonitor fullscreen windows.
   @run main/timeout=20 MultimonDeadlockTest
--- a/jdk/test/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  */
 /*
  * @test
+ * @key headful
  * @bug 6646411
  * @summary Tests that full screen window and its children receive resize
             event when display mode changes
--- a/jdk/test/java/awt/FullScreen/NonExistentDisplayModeTest/NonExistentDisplayModeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FullScreen/NonExistentDisplayModeTest/NonExistentDisplayModeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6430607
  * @summary Test that we throw an exception for incorrect display modes
  * @author Dmitri.Trembovetski@Sun.COM area=FullScreen
--- a/jdk/test/java/awt/FullScreen/SetFSWindow/FSFrame.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/FullScreen/SetFSWindow/FSFrame.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6240507 6662642
  * @summary verify that isFullScreenSupported and getFullScreenWindow work
  * correctly with and without a SecurityManager. Note that the test may fail
--- a/jdk/test/java/awt/GradientPaint/GradientTransformTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/GradientPaint/GradientTransformTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8023483
  * @summary tests if the transform-parameter is applied correctly when creating
  *          a gradient.
--- a/jdk/test/java/awt/GradientPaint/LinearColorSpaceGradientTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/GradientPaint/LinearColorSpaceGradientTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8023483
  * @summary tests wether the colorspace-parameter is applied correctly when
  *          creating a gradient.
--- a/jdk/test/java/awt/Graphics/CopyScaledArea/CopyScaledAreaTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Graphics/CopyScaledArea/CopyScaledAreaTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -28,6 +28,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8069348
  * @summary SunGraphics2D.copyArea() does not properly work for scaled graphics
  * @modules java.desktop/sun.awt
--- a/jdk/test/java/awt/Graphics/LineClipTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Graphics/LineClipTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug   4780022 4862193 7179526
  * @summary  Tests that clipped lines are drawn over the same pixels
  * as unclipped lines (within the clip bounds)
--- a/jdk/test/java/awt/Graphics2D/DrawString/DrawStrSuper.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Graphics2D/DrawString/DrawStrSuper.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6684056
  * @summary Super-scripted text needs to be positioned the same with
  *          drawString and TextLayout.
--- a/jdk/test/java/awt/Graphics2D/DrawString/LCDTextSrcEa.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Graphics2D/DrawString/LCDTextSrcEa.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6996867
  * @summary Render as LCD Text in SrcEa composite mode.
  */
--- a/jdk/test/java/awt/Graphics2D/DrawString/ScaledLCDTextMetrics.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Graphics2D/DrawString/ScaledLCDTextMetrics.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6685312
  * @summary Check advance of LCD text on a scaled graphics.
  */
--- a/jdk/test/java/awt/Graphics2D/DrawString/TextRenderingTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Graphics2D/DrawString/TextRenderingTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -36,6 +36,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 7189452 8024767
  * @summary Check if source offset for text rendering is handled correctly
  *          (shouldn't see the text on a similarly colored background).
--- a/jdk/test/java/awt/Graphics2D/DrawString/XRenderElt254TextTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Graphics2D/DrawString/XRenderElt254TextTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8028722
  * @summary tests wether drawString with 254 characters causes the xrender
  *          pipeline to hang.
--- a/jdk/test/java/awt/Graphics2D/FillTexturePaint/FillTexturePaint.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Graphics2D/FillTexturePaint/FillTexturePaint.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,6 +33,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8000629
  * @summary TexturePaint areas shouldn't separates.
  * @author Sergey Bylokhov
--- a/jdk/test/java/awt/Graphics2D/FlipDrawImage/FlipDrawImage.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Graphics2D/FlipDrawImage/FlipDrawImage.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8000629
  * @author Sergey Bylokhov
  */
--- a/jdk/test/java/awt/Graphics2D/TransformSetGet/TransformSetGet.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Graphics2D/TransformSetGet/TransformSetGet.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,6 +30,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8000629
  * @summary Set/get transform should work on constrained graphics.
  * @author Sergey Bylokhov
--- a/jdk/test/java/awt/GraphicsConfiguration/NormalizingTransformTest/NormalizingTransformTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/GraphicsConfiguration/NormalizingTransformTest/NormalizingTransformTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6373505
  * @summary Tests that the result of Toolkit.getScreenResolution() is
  * consistent with GraphicsConfiguration.getNormalizingTransform().
--- a/jdk/test/java/awt/GraphicsDevice/CheckDisplayModes.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/GraphicsDevice/CheckDisplayModes.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8007146
  * @summary [macosx] Setting a display mode crashes JDK under VNC
  * @author Alexander Scherbatiy
--- a/jdk/test/java/awt/GraphicsDevice/CloneConfigsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/GraphicsDevice/CloneConfigsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug     6822057 7124400 8059848
  *
  * @summary Test verifies that list of supported graphics configurations
--- a/jdk/test/java/awt/GraphicsDevice/IncorrectDisplayModeExitFullscreen.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/GraphicsDevice/IncorrectDisplayModeExitFullscreen.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,6 +30,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8019587
  * @author Sergey Bylokhov
  * @library ../../../lib/testlibrary/
--- a/jdk/test/java/awt/GraphicsEnvironment/LoadLock/GE_init3.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/GraphicsEnvironment/LoadLock/GE_init3.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 7002839
  * @summary Static init deadlock Win32GraphicsEnvironment and WToolkit
  * @run main GE_init3
--- a/jdk/test/java/awt/GridBagLayout/GridBagLayoutIpadXYTest/GridBagLayoutIpadXYTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/GridBagLayout/GridBagLayoutIpadXYTest/GridBagLayoutIpadXYTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,7 +1,7 @@
 <html>
 <!--  
 
- Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
  questions.
 
   @test
+  @key headful
   @bug 5004032
   @summary GridBagConstraints.ipad(x|y) defined in a new way
   @author dav@sparc.spb.su area= 
--- a/jdk/test/java/awt/GridLayout/LayoutExtraGaps/LayoutExtraGaps.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/GridLayout/LayoutExtraGaps/LayoutExtraGaps.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
    @test
+  @key headful
    @bug 4370316
    @summary GridLayout does not centre its component properly
     (summary was GridLayout does not fill its Container)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Gtk/GtkVersionTest/GtkVersionTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8156121
+ * @summary "Fail forward" fails for GTK3 if no GTK2 available
+ * @modules java.desktop/sun.awt
+ * @requires (os.family == "linux")
+ * @run main GtkVersionTest
+ */
+
+import sun.awt.UNIXToolkit;
+
+import java.awt.*;
+import java.io.*;
+
+public class GtkVersionTest {
+    public static class LoadGtk {
+        public static void main(String[] args) {
+            ((UNIXToolkit)Toolkit.getDefaultToolkit()).loadGTK();
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        test(null, "2");
+        test("2", "2");
+        test("2.2", "2");
+        test("3", "3");
+    }
+
+    private static void test(String version, String expect) throws Exception {
+        System.out.println( "Test " +
+                (version == null ? "no" : " GTK" + version) + " preference.");
+        Process p = Runtime.getRuntime().exec(System.getProperty("java.home") +
+                "/bin/java " +
+                (version == null ? "" : "-Djdk.gtk.version=" + version) +
+                " -Djdk.gtk.verbose=true " +
+                "-XaddExports:java.desktop/sun.awt=ALL-UNNAMED " +
+                "-cp " + System.getProperty("java.class.path", ".") +
+                " GtkVersionTest$LoadGtk");
+        p.waitFor();
+
+        try (BufferedReader br = new BufferedReader(
+                new InputStreamReader(p.getErrorStream()))) {
+            String line;
+            while ((line = br.readLine()) != null) {
+                System.out.println(line);
+                if (line.contains("Looking for GTK" + expect + " library")) {
+                    return;
+                } else if (line.contains("Looking for GTK")) {
+                    break;
+                }
+            }
+            throw new RuntimeException("Wrong GTK library version: \n" + line);
+        }
+    }
+
+}
--- a/jdk/test/java/awt/Insets/CombinedTestApp1.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Insets/CombinedTestApp1.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4068386
   @summary Insets are incorrect for Frame w/MenuBar
   @library ../regtesthelpers
--- a/jdk/test/java/awt/KeyboardFocusmanager/ConsumeNextMnemonicKeyTypedTest/ConsumeForModalDialogTest/ConsumeForModalDialogTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/ConsumeNextMnemonicKeyTypedTest/ConsumeForModalDialogTest/ConsumeForModalDialogTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6391688
   @summary    Tests that next mnemonic KeyTyped is consumed for a modal dialog.
   @author     anton.tarasov@sun.com: area=awt.focus
--- a/jdk/test/java/awt/KeyboardFocusmanager/ConsumeNextMnemonicKeyTypedTest/ConsumeNextMnemonicKeyTypedTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/ConsumeNextMnemonicKeyTypedTest/ConsumeNextMnemonicKeyTypedTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6346690
   @summary    Tests that key_typed is consumed after mnemonic key_pressed is handled for a menu item.
   @author     anton.tarasov@sun.com: area=awt-focus
--- a/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6741526
   @summary KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy) affects created components
   @library ../../regtesthelpers
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/ButtonActionKeyTest/ButtonActionKeyTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6396785
   @summary    Action key pressed on a button should be swallowed.
   @author     anton.tarasov@...: area=awt.focus
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/EnqueueWithDialogButtonTest/EnqueueWithDialogButtonTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/EnqueueWithDialogButtonTest/EnqueueWithDialogButtonTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,12 +22,13 @@
  */
 
 /*
-@test
-@bug 4799136
-@summary Tests that type-ahead for dialog works and doesn't block program
-@author Dmitry.Cherepanov@SUN.COM area=awt.focus
-@run main EnqueueWithDialogButtonTest
-*/
+ * @test
+ * @key headful
+ * @bug 4799136
+ * @summary Tests that type-ahead for dialog works and doesn't block program
+ * @author Dmitry.Cherepanov@SUN.COM area=awt.focus
+ * @run main EnqueueWithDialogButtonTest
+ */
 
 import java.awt.*;
 import java.lang.reflect.InvocationTargetException;
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/EnqueueWithDialogTest/EnqueueWithDialogTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/EnqueueWithDialogTest/EnqueueWithDialogTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,12 +22,13 @@
  */
 
 /*
-@test
-@bug 4799136
-@summary Tests that type-ahead for dialog works and doesn't block program
-@author Dmitry.Cherepanov@SUN.COM area=awt.focus
-@run main EnqueueWithDialogTest
-*/
+ * @test
+ * @key headful
+ * @bug 4799136
+ * @summary Tests that type-ahead for dialog works and doesn't block program
+ * @author Dmitry.Cherepanov@SUN.COM area=awt.focus
+ * @run main EnqueueWithDialogTest
+ */
 
 import java.awt.*;
 import java.lang.reflect.InvocationTargetException;
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/FreezeTest/FreezeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/FreezeTest/FreezeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,12 +21,13 @@
  * questions.
  */
 /*
-@test
-@bug 4799136
-@summary Tests that type-ahead for dialog works and doesn't block program
-@author Dmitry.Cherepanov@SUN.COM area=awt.focus
-@run main FreezeTest
-*/
+ * @test
+ * @key headful
+ * @bug 4799136
+ * @summary Tests that type-ahead for dialog works and doesn't block program
+ * @author Dmitry.Cherepanov@SUN.COM area=awt.focus
+ * @run main FreezeTest
+ */
 
 import java.awt.*;
 import java.lang.reflect.InvocationTargetException;
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/MenuItemActivatedTest/MenuItemActivatedTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/MenuItemActivatedTest/MenuItemActivatedTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6396785
   @summary    MenuItem activated with space should swallow this space.
   @author     anton.tarasov@...: area=awt.focus
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/SubMenuShowTest/SubMenuShowTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug        6380743
   @summary    Submenu should be shown by mnemonic key press.
   @author     anton.tarasov@...: area=awt.focus
--- a/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/TestDialogTypeAhead.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/KeyboardFocusmanager/TypeAhead/TestDialogTypeAhead.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4799136
   @summary Tests that type-ahead for dialog works and doesn't block program
   @author  area=awt.focus
--- a/jdk/test/java/awt/List/ActionAfterRemove/ActionAfterRemove.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/List/ActionAfterRemove/ActionAfterRemove.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6426186
   @summary XToolkit: List throws ArrayIndexOutOfBoundsException on double clicking when the List is empty
   @author Dmitry Cherepanov area=awt-list
--- a/jdk/test/java/awt/List/ActionEventTest/ActionEventTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/List/ActionEventTest/ActionEventTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6191390
  * @summary Verify that ActionEvent is received with correct modifiers set.
  * @run main ActionEventTest
--- a/jdk/test/java/awt/List/FirstItemRemoveTest/FirstItemRemoveTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/List/FirstItemRemoveTest/FirstItemRemoveTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 <html>
 <!--
-  Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+  Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
   DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  
   This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
  -->
 <!--  
   @test
+  @key headful
   @bug 6299858
   @summary PIT. Focused border not shown on List if selected item is removed, XToolkit
   @author Dmitry.Cherepanov@SUN.COM area=awt.list
--- a/jdk/test/java/awt/List/FocusEmptyListTest/FocusEmptyListTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/List/FocusEmptyListTest/FocusEmptyListTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  
  This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 6387275
   @summary List: the focus is at the top of the first item, XAWT
   @author Dmitry.Cherepanov@SUN.COM area=awt.list
--- a/jdk/test/java/awt/List/ItemEventTest/ItemEventTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/List/ItemEventTest/ItemEventTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,10 +22,11 @@
  */
 
 /*
- *  @test
- *  @bug 8033936
- *  @summary Verify that correct ItemEvent is received while selection &
- *           deselection of multi select List items.
+ * @test
+ * @key headful
+ * @bug 8033936
+ * @summary Verify that correct ItemEvent is received while selection &
+ *          deselection of multi select List items.
  */
 
 import java.awt.AWTException;
--- a/jdk/test/java/awt/List/KeyEventsTest/KeyEventsTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/List/KeyEventsTest/KeyEventsTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 6190768 6190778
   @summary Tests that triggering events on AWT list by pressing CTRL + HOME, CTRL + END, PG-UP, PG-DOWN similar Motif behavior
   @author Dmitry.Cherepanov@SUN.COM area=awt.list
--- a/jdk/test/java/awt/List/ListGarbageCollectionTest/AwtListGarbageCollectionTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/List/ListGarbageCollectionTest/AwtListGarbageCollectionTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8040076
  * @summary AwtList not garbage collected
  * @run main/othervm -Xmx100m AwtListGarbageCollectionTest
--- a/jdk/test/java/awt/List/ListPeer/R2303044ListSelection.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/List/ListPeer/R2303044ListSelection.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /**
  * @test
+ * @key headful
  * @summary rdar://problem/2303044 List selection not set when peer is created
  * @summary com.apple.junit.java.awt.List;
  * @run main R2303044ListSelection
--- a/jdk/test/java/awt/List/ScrollOutside/ScrollOut.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/List/ScrollOutside/ScrollOut.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 7036733
   @summary Regression : NullPointerException when scrolling horizontally on AWT List
   @author Andrei Dmitriev area=awt-list
--- a/jdk/test/java/awt/List/SingleModeDeselect/SingleModeDeselect.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/List/SingleModeDeselect/SingleModeDeselect.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6248040
   @summary List.deselect() de-selects the currently selected item regardless of the index, win32
   @author Dmitry Cherepanov area=awt.list
--- a/jdk/test/java/awt/Menu/NullMenuLabelTest/NullMenuLabelTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Menu/NullMenuLabelTest/NullMenuLabelTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,12 +21,14 @@
  * questions.
  */
 
-/*      @test 1.5 98/07/23
-        @bug 4064202 4253466
-        @summary Test for Win32 NPE when MenuItem with null label added.
-        @author fred.ecks
-        @run main/othervm NullMenuLabelTest
-*/
+/*
+ * @test 1.5 98/07/23
+ * @key headful
+ * @bug 4064202 4253466
+ * @summary Test for Win32 NPE when MenuItem with null label added.
+ * @author fred.ecks
+ * @run main/othervm NullMenuLabelTest
+ */
 
 import java.awt.*;
 
--- a/jdk/test/java/awt/Menu/OpensWithNoGrab/OpensWithNoGrab.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Menu/OpensWithNoGrab/OpensWithNoGrab.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6354721
   @summary REG: Menu does not disappear when clicked, keeping Choice's drop-down open, XToolkit
   @author andrei.dmitriev: area=awt.menu
--- a/jdk/test/java/awt/MenuBar/DeadlockTest1/DeadlockTest1.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/MenuBar/DeadlockTest1/DeadlockTest1.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6990904
   @summary on oel5.5, Frame doesn't show if the Frame has only a MenuBar as its component.
   @author Andrei Dmitriev: area=awt-menubar
--- a/jdk/test/java/awt/MenuBar/RemoveHelpMenu/RemoveHelpMenu.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/MenuBar/RemoveHelpMenu/RemoveHelpMenu.java	Wed Jul 05 21:51:13 2017 +0200
@@ -27,6 +27,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6475361
  * @author Sergey Bylokhov
  */
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/HierarchyBoundsListenerMixingTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/HierarchyBoundsListenerMixingTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,11 +33,12 @@
  * <p>See <a href="https://bugs.openjdk.java.net/browse/JDK-6768230">CR6768230</a> for details.
  */
 /*
-@test
-@bug 6768230
-@summary Mixing test for HierarchyBoundsListener ancestors
-@build FrameBorderCounter
-@run main HierarchyBoundsListenerMixingTest
+ * @test
+ * @key headful
+ * @bug 6768230
+ * @summary Mixing test for HierarchyBoundsListener ancestors
+ * @build FrameBorderCounter
+ * @run main HierarchyBoundsListenerMixingTest
  */
 public class HierarchyBoundsListenerMixingTest {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JButtonInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JButtonInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JButton
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JButtonInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JButton
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JButtonInGlassPaneOverlapping
  */
 public class JButtonInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JButtonOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JButtonOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JButton
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JButtonOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JButton
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JButtonOverlapping
  */
 public class JButtonOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JColorChooserOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JColorChooserOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,15 +28,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JColorChooser
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JColorChooserOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JColorChooser
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JColorChooserOverlapping
  */
 public class JColorChooserOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JComboBoxOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,15 +39,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Overlapping test for javax.swing.JScrollPane
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JComboBoxOverlapping
+ * @test
+ * @key headful
+ * @summary Overlapping test for javax.swing.JScrollPane
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JComboBoxOverlapping
  */
 public class JComboBoxOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JEditorPaneInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JEditorPaneInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,15 +30,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JLabel
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JEditorPaneInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JLabel
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JEditorPaneInGlassPaneOverlapping
  */
 public class JEditorPaneInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JEditorPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JEditorPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,15 +28,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JLabel
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JEditorPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JLabel
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JEditorPaneOverlapping
  */
 public class JEditorPaneOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JGlassPaneInternalFrameOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JGlassPaneInternalFrameOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,15 +40,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@bug 6637655 6985776
-@summary Overlapping test for javax.swing.JScrollPane
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build Util
-@run main JGlassPaneInternalFrameOverlapping
+ * @test
+ * @key headful
+ * @bug 6637655 6985776
+ * @summary Overlapping test for javax.swing.JScrollPane
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build Util
+ * @run main JGlassPaneInternalFrameOverlapping
  */
 public class JGlassPaneInternalFrameOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JGlassPaneMoveOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,15 +41,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@bug 6637655 6981919
-@summary Overlapping test for javax.swing.JScrollPane
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build Util
-@run main JGlassPaneMoveOverlapping
+ * @test
+ * @key headful
+ * @bug 6637655 6981919
+ * @summary Overlapping test for javax.swing.JScrollPane
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build Util
+ * @run main JGlassPaneMoveOverlapping
  */
 public class JGlassPaneMoveOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JInternalFrameMoveOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JInternalFrameMoveOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -37,15 +37,16 @@
  * <p>See <a href="http://monaco.sfbay.sun.com/detail.jsf?cr=6985399">CR6768230</a> for details and base class for test info.
  */
 /*
-@test
-@bug 6985399
-@summary Overlapping test for javax.swing.JScrollPane
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build Util
-@run main JInternalFrameMoveOverlapping
+ * @test
+ * @key headful
+ * @bug 6985399
+ * @summary Overlapping test for javax.swing.JScrollPane
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build Util
+ * @run main JInternalFrameMoveOverlapping
  */
 public class JInternalFrameMoveOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JInternalFrameOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JInternalFrameOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -37,14 +37,15 @@
  * <p>See base class for test info.
  */
 /*
-@test
-@summary Overlapping test for javax.swing.JScrollPane
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build Util
-@run main JInternalFrameOverlapping
+ * @test
+ * @key headful
+ * @summary Overlapping test for javax.swing.JScrollPane
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build Util
+ * @run main JInternalFrameOverlapping
  */
 public class JInternalFrameOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JLabelInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JLabelInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,15 +30,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JLabel
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JLabelInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JLabel
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JLabelInGlassPaneOverlapping
  */
 public class JLabelInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JLabelOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JLabelOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JLabel
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JLabelOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JLabel
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JLabelOverlapping
  */
 public class JLabelOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JListInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JListInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JList
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JListInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JList
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JListInGlassPaneOverlapping
  */
 public class JListInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JListOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JListOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,15 +28,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JList
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JListOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JList
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JListOverlapping
  */
 public class JListOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JMenuBarOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JMenuBarOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,15 +44,16 @@
  * <p>See base class for test info.
  */
 /*
-@test
-@summary Overlapping test for javax.swing.JScrollPane
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JMenuBarOverlapping
+ * @test
+ * @key headful
+ * @summary Overlapping test for javax.swing.JScrollPane
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JMenuBarOverlapping
  */
 public class JMenuBarOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JPanelInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JPanelInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,15 +30,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JPanel
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JPanelInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JPanel
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JPanelInGlassPaneOverlapping
  */
 public class JPanelInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JPanelOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JPanelOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JPanel
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JPanelOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JPanel
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JPanelOverlapping
  */
 public class JPanelOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JPopupMenuOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JPopupMenuOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,15 +41,16 @@
  * <p>See base class for test info.
  */
 /*
-@test
-@summary Overlapping test for javax.swing.JScrollPane
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JPopupMenuOverlapping
+ * @test
+ * @key headful
+ * @summary Overlapping test for javax.swing.JScrollPane
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JPopupMenuOverlapping
  */
 public class JPopupMenuOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JProgressBarInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JProgressBarInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,15 +30,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JProgressBar
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JProgressBarInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JProgressBar
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JProgressBarInGlassPaneOverlapping
  */
 public class JProgressBarInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JProgressBarOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JProgressBarOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JProgressBar
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JProgressBarOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JProgressBar
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JProgressBarOverlapping
  */
 public class JProgressBarOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JScrollBarInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JScrollBarInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,15 +33,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JScrollBar
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JScrollBarInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JScrollBar
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JScrollBarInGlassPaneOverlapping
  */
 public class JScrollBarInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JScrollBarOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JScrollBarOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,15 +32,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JScrollBar
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JScrollBarOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JScrollBar
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JScrollBarOverlapping
  */
 public class JScrollBarOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JScrollPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JScrollPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,14 +39,15 @@
  * <p>See base class for test info.
  */
 /*
-@test
-@summary Overlapping test for javax.swing.JScrollPane
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build Util
-@run main JScrollPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Overlapping test for javax.swing.JScrollPane
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build Util
+ * @run main JScrollPaneOverlapping
  */
 public class JScrollPaneOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JSliderInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JSliderInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,15 +30,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JSlider
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JSliderInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JSlider
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JSliderInGlassPaneOverlapping
  */
 public class JSliderInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JSliderOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JSliderOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JSlider
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JSliderOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JSlider
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JSliderOverlapping
  */
 public class JSliderOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JSpinnerInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JSpinnerInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,15 +32,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JSpinner
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JSpinnerInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JSpinner
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JSpinnerInGlassPaneOverlapping
  */
 public class JSpinnerInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JSpinnerOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JSpinnerOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,15 +31,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JSpinner
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JSpinnerOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JSpinner
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JSpinnerOverlapping
  */
 public class JSpinnerOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JSplitPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JSplitPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -45,15 +45,16 @@
  * <p>See base class for test info.
  */
 /*
-@test
-@bug 6986109
-@summary Overlapping test for javax.swing.JSplitPane
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build Util
-@run main JSplitPaneOverlapping
+ * @test
+ * @key headful
+ * @bug 6986109
+ * @summary Overlapping test for javax.swing.JSplitPane
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build Util
+ * @run main JSplitPaneOverlapping
  */
 public class JSplitPaneOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JTableInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JTableInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,15 +32,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for JTable
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JTableInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for JTable
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JTableInGlassPaneOverlapping
  */
 public class JTableInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JTableOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JTableOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,15 +28,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for JTable
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JTableOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for JTable
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JTableOverlapping
  */
 public class JTableOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JTextAreaInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JTextAreaInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,15 +30,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JLabel
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JTextAreaInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JLabel
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JTextAreaInGlassPaneOverlapping
  */
 public class JTextAreaInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JTextAreaOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JTextAreaOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JLabel
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JTextAreaOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JLabel
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JTextAreaOverlapping
  */
 public class JTextAreaOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JTextFieldInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JTextFieldInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,15 +30,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JLabel
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JTextFieldInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JLabel
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JTextFieldInGlassPaneOverlapping
  */
 public class JTextFieldInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JTextFieldOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JTextFieldOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JLabel
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JTextFieldOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JLabel
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JTextFieldOverlapping
  */
 public class JTextFieldOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JToggleButtonInGlassPaneOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JToggleButtonInGlassPaneOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,15 +29,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JToggleButton
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JToggleButtonInGlassPaneOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JToggleButton
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JToggleButtonInGlassPaneOverlapping
  */
 public class JToggleButtonInGlassPaneOverlapping extends GlassPaneOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/JToggleButtonOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/JToggleButtonOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,15 +28,16 @@
  * <p>See base class for details.
  */
 /*
-@test
-@summary Simple Overlapping test for javax.swing.JToggleButton
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main JToggleButtonOverlapping
+ * @test
+ * @key headful
+ * @summary Simple Overlapping test for javax.swing.JToggleButton
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main JToggleButtonOverlapping
  */
 public class JToggleButtonOverlapping extends SimpleOverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/MixingFrameResizing.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/MixingFrameResizing.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -37,16 +37,17 @@
  * <p>See base class for test info.
  */
 /*
-@test
-@bug 6777370
-@summary Issues when resizing the JFrame with HW components
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib  ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main MixingFrameResizing
+ * @test
+ * @key headful
+ * @bug 6777370
+ * @summary Issues when resizing the JFrame with HW components
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib  ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main MixingFrameResizing
  */
 public class MixingFrameResizing extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/MixingPanelsResizing.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/MixingPanelsResizing.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,14 +33,15 @@
  * <p>See <a href="https://bugs.openjdk.java.net/browse/JDK-6786219">JDK-6786219</a> for details
  */
 /*
-@test
-@bug 6786219
-@summary Issues when resizing the frame after mixing of heavy weight & light weight components
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library ../../regtesthelpers
-@build Util
-@build FrameBorderCounter
-@run main MixingPanelsResizing
+ * @test
+ * @key headful
+ * @bug 6786219
+ * @summary Issues when resizing the frame after mixing of heavy weight & light weight components
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library ../../regtesthelpers
+ * @build Util
+ * @build FrameBorderCounter
+ * @run main MixingPanelsResizing
  */
 public class MixingPanelsResizing {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/OpaqueOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/OpaqueOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -42,15 +42,16 @@
  * <p>See base class for test info.
  */
 /*
-@test
-@bug 6776743
-@summary Opaque overlapping test for each AWT component
-@library ../../regtesthelpers
-@modules java.desktop/com.sun.awt
-         java.desktop/java.awt.peer
-         java.desktop/sun.awt
-@build Util
-@run main OpaqueOverlapping
+ * @test
+ * @key headful
+ * @bug 6776743
+ * @summary Opaque overlapping test for each AWT component
+ * @library ../../regtesthelpers
+ * @modules java.desktop/com.sun.awt
+ *          java.desktop/java.awt.peer
+ *          java.desktop/sun.awt
+ * @build Util
+ * @run main OpaqueOverlapping
  */
 public class OpaqueOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/OpaqueOverlappingChoice.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/OpaqueOverlappingChoice.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,15 +28,16 @@
  * This test case was separated from {@link OpaqueOverlapping} due to CR 6994264 (Choice autohides dropdown on Solaris 10)
  */
 /*
-@test
-@bug 6994264
-@summary Opaque overlapping test for Choice AWT component
-@library ../../regtesthelpers
-@modules java.desktop/com.sun.awt
-         java.desktop/java.awt.peer
-         java.desktop/sun.awt
-@build Util
-@run main OpaqueOverlappingChoice
+ * @test
+ * @key headful
+ * @bug 6994264
+ * @summary Opaque overlapping test for Choice AWT component
+ * @library ../../regtesthelpers
+ * @modules java.desktop/com.sun.awt
+ *          java.desktop/java.awt.peer
+ *          java.desktop/sun.awt
+ * @build Util
+ * @run main OpaqueOverlappingChoice
  */
 public class OpaqueOverlappingChoice extends OpaqueOverlapping  {
     {
--- a/jdk/test/java/awt/Mixing/AWT_Mixing/ViewportOverlapping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/AWT_Mixing/ViewportOverlapping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -46,16 +46,17 @@
  * <p>See base class for test info.
  */
 /*
-@test
-@bug 6778882
-@summary Viewport overlapping test for each AWT component
-@author sergey.grinev@oracle.com: area=awt.mixing
-@library /java/awt/patchlib ../../regtesthelpers
-@modules java.desktop/sun.awt
-         java.desktop/java.awt.peer
-@build java.desktop/java.awt.Helper
-@build Util
-@run main ViewportOverlapping
+ * @test
+ * @key headful
+ * @bug 6778882
+ * @summary Viewport overlapping test for each AWT component
+ * @author sergey.grinev@oracle.com: area=awt.mixing
+ * @library /java/awt/patchlib ../../regtesthelpers
+ * @modules java.desktop/sun.awt
+ *          java.desktop/java.awt.peer
+ * @build java.desktop/java.awt.Helper
+ * @build Util
+ * @run main ViewportOverlapping
  */
 public class ViewportOverlapping extends OverlappingTestBase {
 
--- a/jdk/test/java/awt/Mixing/HWDisappear.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/HWDisappear.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %W% %E%
+  @key headful
   @bug 6769511
   @summary AWT components are invisible for a while after frame is moved & menu items are visible
   @author anthony.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/JButtonInGlassPane.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/JButtonInGlassPane.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %W% %E%
+  @key headful
   @bug 6779670
   @summary Tests if a LW components in the glass pane affects HW in the content pane
   @author anthony.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/LWComboBox.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/LWComboBox.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %W% %E%
+  @key headful
   @bug 6637655
   @summary Tests whether a LW combobox correctly overlaps a HW button
   @author anthony.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/LWPopupMenu.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/LWPopupMenu.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4811096
   @summary Tests whether a LW menu correctly overlaps a HW button
   @author anthony.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/MixingInHwPanel.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/MixingInHwPanel.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6829858
   @summary Mixing should work inside heavyweight containers
   @author anthony.petrov@sun.com: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/MixingOnDialog.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/MixingOnDialog.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4811096
   @summary Tests whether mixing works on Dialogs
   @author anthony.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/MixingOnShrinkingHWButton.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/MixingOnShrinkingHWButton.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %W% %E%
+  @key headful
   @bug 6777320
   @summary PIT : Canvas is not fully painted on the internal frame & internal frame goes behind the canvas
   @author dmitry.cherepanov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/NonOpaqueInternalFrame.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/NonOpaqueInternalFrame.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %W% %E%
+  @key headful
   @bug 6768332
   @summary Tests whether internal frames are always considered opaque
   @author anthony.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/OpaqueTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/OpaqueTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4811096
   @summary Tests whether opaque and non-opaque components mix correctly
   @author anthony.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/OverlappingButtons.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/OverlappingButtons.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4811096
   @summary Tests whether overlapping buttons mix correctly
   @author anthony.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/ValidBounds.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/ValidBounds.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6637796
   @summary Shape should be correctly updated on invalid components
   @author anthony.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/Validating.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/Validating.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6682046
   @summary Mixing code does not always recalculate shapes correctly when resizing components
   @author anthony.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Mixing/setComponentZOrder.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mixing/setComponentZOrder.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6589530
   @summary Mixing code should correctly handle insertion of components with setComponentZOrder.
   @author antohny.petrov@...: area=awt.mixing
--- a/jdk/test/java/awt/Modal/LWModalTest/LWModalTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Modal/LWModalTest/LWModalTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6178755
   @summary The test checks that Container's method startLWModal
 and stopLWModal work correctly. The test scenario is very close
--- a/jdk/test/java/awt/Modal/ModalDialogOrderingTest/ModalDialogOrderingTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Modal/ModalDialogOrderingTest/ModalDialogOrderingTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8008728
  * @summary [macosx] Swing. JDialog. Modal dialog goes to background
  * @author Alexandr Scherbatiy
--- a/jdk/test/java/awt/Modal/ModalitySettingsTest/ModalitySettingsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Modal/ModalitySettingsTest/ModalitySettingsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8047367
  * @summary Check modality settings for Window and Dialog.
  *
--- a/jdk/test/java/awt/Modal/NpeOnClose/NpeOnCloseTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Modal/NpeOnClose/NpeOnCloseTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6547881
   @summary NPE when closing modal dialog
   @author Oleg Sukhodolsky: area=awt.modal
--- a/jdk/test/java/awt/Modal/SupportedTest/SupportedTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Modal/SupportedTest/SupportedTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6520635
   @summary Test that modality and modal exclusion types are handled
 correctly according Toolkit.isModalityTypeSupported() and
--- a/jdk/test/java/awt/Mouse/ExtraMouseClick/ExtraMouseClick.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mouse/ExtraMouseClick/ExtraMouseClick.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 5039416 6404008
   @summary REGRESSION: Extra mouse click dispatched after press-drag- release sequence.
   @library ../../regtesthelpers
--- a/jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
  @test
+ @key headful
  @bug 6176814 8132766
  @summary Metalworks frame maximizes after the move
  @run main MaximizedFrameTest
--- a/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/ExtraButtonDrag.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/ExtraButtonDrag.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that drag events are coming for every button if the property is set to true
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersInKeyEvent.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersInKeyEvent.java	Wed Jul 05 21:51:13 2017 +0200
@@ -35,6 +35,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8143054
  */
 public final class MouseModifiersInKeyEvent {
--- a/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Extra.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Extra.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that modifiers are correct for extra buttons
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Standard.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mouse/MouseModifiersUnitTest/MouseModifiersUnitTest_Standard.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that modifiers are correct for standard (1, 2, 3, wheel) mouse buttons
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Mouse/MouseWheelAbsXY/MouseWheelAbsXY.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mouse/MouseWheelAbsXY/MouseWheelAbsXY.java	Wed Jul 05 21:51:13 2017 +0200
@@ -34,6 +34,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6778087
  */
 public final class MouseWheelAbsXY {
--- a/jdk/test/java/awt/Mouse/TitleBarDoubleClick/TitleBarDoubleClick.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Mouse/TitleBarDoubleClick/TitleBarDoubleClick.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4664415
   @summary Test that double clicking the titlebar does not send RELEASE/CLICKED
   @library    ../../regtesthelpers
--- a/jdk/test/java/awt/MouseInfo/GetPointerInfoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/MouseInfo/GetPointerInfoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @summary unit test for getPointerInfo() from MouseInfo class
   @author dav@sparc.spb.su: area=
   @bug 4009555
--- a/jdk/test/java/awt/MouseInfo/MultiscreenPointerInfo.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/MouseInfo/MultiscreenPointerInfo.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @summary unit test for getPointerInfo() from MouseInfo class
   @author prs@sparc.spb.su: area=
   @bug 4009555
--- a/jdk/test/java/awt/MouseInfo/PointerInfoCrashTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/MouseInfo/PointerInfoCrashTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -30,6 +30,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8143316
  * @modules java.desktop/java.awt.peer
  *          java.desktop/sun.awt
--- a/jdk/test/java/awt/Multiscreen/MouseEventTest/MouseEventTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Multiscreen/MouseEventTest/MouseEventTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8017472
   @summary MouseEvent has wrong coordinates when using multiple monitors
   @run main MouseEventTest
--- a/jdk/test/java/awt/Multiscreen/MultiScreenInsetsTest/MultiScreenInsetsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Multiscreen/MultiScreenInsetsTest/MultiScreenInsetsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8020443
   @summary Frame is not created on the specified GraphicsDevice with two
 monitors
--- a/jdk/test/java/awt/Multiscreen/MultiScreenLocationTest/MultiScreenLocationTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Multiscreen/MultiScreenLocationTest/MultiScreenLocationTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8013116
   @summary Robot moves mouse to point which differs from set in mouseMove on
  Unity shell
--- a/jdk/test/java/awt/Multiscreen/UpdateGCTest/UpdateGCTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Multiscreen/UpdateGCTest/UpdateGCTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4452373 6567564
   @summary Tests that all the child and toplevel components have
 their GraphicsConfiguration updated when the window moves from
--- a/jdk/test/java/awt/Multiscreen/WPanelPeerPerf/WPanelPeerPerf.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Multiscreen/WPanelPeerPerf/WPanelPeerPerf.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  @test
+ @key headful
  @bug 5085626
  @summary Exponential performance regression in AWT components (multiple mon)
  @run main WPanelPeerPerf
--- a/jdk/test/java/awt/Multiscreen/WindowGCChangeTest/WindowGCChangeTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Multiscreen/WindowGCChangeTest/WindowGCChangeTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4868278
   @summary Tests that GraphicsConfig for invisible (peerless) windows is
 updated after showing the window
--- a/jdk/test/java/awt/Paint/ButtonRepaint.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Paint/ButtonRepaint.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7090424
  * @author Sergey Bylokhov
  */
--- a/jdk/test/java/awt/Paint/CheckboxRepaint.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Paint/CheckboxRepaint.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7090424
  * @author Sergey Bylokhov
  */
--- a/jdk/test/java/awt/Paint/ComponentIsNotDrawnAfterRemoveAddTest/ComponentIsNotDrawnAfterRemoveAddTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Paint/ComponentIsNotDrawnAfterRemoveAddTest/ComponentIsNotDrawnAfterRemoveAddTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,6 @@
+
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,10 +22,12 @@
  * questions.
  */
 
-/* @test
-   @bug 8139581
-   @summary AWT components are not drawn after removal and addition to a container
-   @author Anton Litvinov
+/*
+ * @test
+ * @key headful
+ * @bug 8139581
+ * @summary AWT components are not drawn after removal and addition to a container
+ * @author Anton Litvinov
  */
 
 import java.awt.Button;
--- a/jdk/test/java/awt/Paint/LabelRepaint.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Paint/LabelRepaint.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7090424
  * @author Sergey Bylokhov
  */
--- a/jdk/test/java/awt/Paint/ListRepaint.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Paint/ListRepaint.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7090424
  * @author Sergey Bylokhov
  */
--- a/jdk/test/java/awt/PrintJob/MultipleEnd/MultipleEnd.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/PrintJob/MultipleEnd/MultipleEnd.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 4112758
  * @summary Checks that a second invocation of PrintJob.end() does not cause
  * an exception or segmentation violation.
--- a/jdk/test/java/awt/PrintJob/PrintArcTest/PrintArcTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/PrintJob/PrintArcTest/PrintArcTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,11 +22,12 @@
  */
 
 /*
-   @test
-   @bug 4105609
-   @summary Test printing of drawArc preceded by drawString
-   @author robi.khan
-*/
+ * @test
+ * @key headful
+ * @bug 4105609
+ * @summary Test printing of drawArc preceded by drawString
+ * @author robi.khan
+ */
 
 import java.awt.*;
 import java.awt.event.*;
--- a/jdk/test/java/awt/PrintJob/PrinterException.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/PrintJob/PrinterException.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,7 +22,7 @@
  */
 /*
  * @test
- * @bug 7161283
+ * @bug 7161283 8158520
  * @summary  Toolkit.getPrintJob throws NPE if no printer available
  * @run main PrinterException
  */
@@ -30,9 +30,19 @@
 import java.awt.JobAttributes;
 import java.awt.PrintJob;
 import java.awt.Toolkit;
+import java.awt.Robot;
+import java.awt.event.KeyEvent;
 
 public class PrinterException {
-    public static void main(String[] args) {
+
+    public static void main(String[] args) throws Exception {
+        Robot robot = new Robot();
+        Thread t = new Thread (() -> {
+            robot.waitForIdle();
+            robot.delay(2000);
+            robot.keyPress(KeyEvent.VK_ESCAPE);
+            robot.keyRelease(KeyEvent.VK_ESCAPE);
+           });
         Toolkit tk = Toolkit.getDefaultToolkit();
         PrintJob pj = null;
 
@@ -40,12 +50,19 @@
         JobAttributes ja = new JobAttributes(1,
                 java.awt.JobAttributes.DefaultSelectionType.ALL,
                 JobAttributes.DestinationType.FILE, JobAttributes.DialogType.NATIVE,
-                "", Integer.MAX_VALUE, 1,
+                "filename.ps", Integer.MAX_VALUE, 1,
                 JobAttributes.MultipleDocumentHandlingType.SEPARATE_DOCUMENTS_UNCOLLATED_COPIES,
                  pageRange, "", JobAttributes.SidesType.ONE_SIDED);
+
         Frame testFrame = new Frame("print");
-        if (tk != null) {
-            pj = tk.getPrintJob(testFrame, null, ja, null);
+        try {
+            if (tk != null) {
+                t.start();
+                pj = tk.getPrintJob(testFrame, null, ja, null);
+            }
+        } finally {
+            testFrame.dispose();
         }
     }
+
 }
--- a/jdk/test/java/awt/PrintJob/QuoteAndBackslashTest/QuoteAndBackslashTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/PrintJob/QuoteAndBackslashTest/QuoteAndBackslashTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 4040668
  * @summary Checks that banner titles which contain double quotation marks
  * or backslashes still print correctly.
--- a/jdk/test/java/awt/PrintJob/RoundedRectTest/RoundedRectTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/PrintJob/RoundedRectTest/RoundedRectTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 4061440
  * @summary Checks that rounded rectangles print correctly.
  * @author dpm
--- a/jdk/test/java/awt/PrintJob/Security/SecurityDialogTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/PrintJob/Security/SecurityDialogTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6195901 6195923 6195928 6195933 6491273 6888734
  * @summary No SecurityException should be thrown when printing to a file
             using the given policy.
--- a/jdk/test/java/awt/Robot/CtorTest/CtorTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Robot/CtorTest/CtorTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6855323
   @summary  Robot(GraphicsDevice) constructor initializes LEGAL_BUTTON_MASK variable improperly
   @author Dmitry Cherepanov area=awt.robot
--- a/jdk/test/java/awt/Robot/RobotExtraButton/RobotExtraButton.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Robot/RobotExtraButton/RobotExtraButton.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that robot could accept extra buttons
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Robot/RobotWheelTest/RobotWheelTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Robot/RobotWheelTest/RobotWheelTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /*
  * @test 1.2 98/08/05
+ * @key headful
  * @bug 4373478 8079255
  * @summary Test mouse wheel functionality of Robot
  * @author bchristi: area=Robot
--- a/jdk/test/java/awt/ScrollPane/ScrollPanePreferredSize/ScrollPanePreferredSize.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/ScrollPane/ScrollPanePreferredSize/ScrollPanePreferredSize.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7124213
  * @author Sergey Bylokhov
  * @library ../../../../lib/testlibrary/
--- a/jdk/test/java/awt/ScrollPane/bug8077409Test.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/ScrollPane/bug8077409Test.java	Wed Jul 05 21:51:13 2017 +0200
@@ -21,12 +21,14 @@
  * questions.
  */
 
-/* @test
-   @bug 8077409
-   @summary Drawing deviates when validate() is invoked on java.awt.ScrollPane
-   @author mikhail.cherkasov@oracle.com
-   @run main bug8077409Test
-*/
+/*
+ * @test
+ * @key headful
+ * @bug 8077409
+ * @summary Drawing deviates when validate() is invoked on java.awt.ScrollPane
+ * @author mikhail.cherkasov@oracle.com
+ * @run main bug8077409Test
+ */
 
 
 import java.awt.*;
--- a/jdk/test/java/awt/SplashScreen/MultiResolutionSplash/MultiResolutionSplashTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/SplashScreen/MultiResolutionSplash/MultiResolutionSplashTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -42,6 +42,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8043869 8075244 8078082 8145173
  * @summary Tests the HiDPI splash screen support for windows and MAC
  * @modules java.desktop/sun.java2d
@@ -104,6 +105,16 @@
         int screenX = (int) splashBounds.getCenterX();
         int screenY = (int) splashBounds.getCenterY();
 
+        if (splashBounds.width != IMAGE_WIDTH) {
+            throw new RuntimeException(
+                    "SplashScreen#getBounds has wrong width");
+        }
+
+        if (splashBounds.height != IMAGE_HEIGHT) {
+            throw new RuntimeException(
+                    "SplashScreen#getBounds has wrong height");
+        }
+
         Robot robot = new Robot();
         Color splashScreenColor = robot.getPixelColor(screenX, screenY);
 
--- a/jdk/test/java/awt/TextArea/Mixing/TextAreaMixing.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/TextArea/Mixing/TextAreaMixing.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,7 +21,9 @@
  * questions.
  */
 
-/* @test
+/*
+ * @test
+ * @key headful
  * @bug 8013189
  * @run main TextAreaMixing
  * @summary TextArea should support HW/LW mixing
--- a/jdk/test/java/awt/TextArea/ScrollbarIntersectionTest/ScrollbarIntersectionTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/TextArea/ScrollbarIntersectionTest/ScrollbarIntersectionTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6429174
   @summary Tests that mouse click at the are of intersection of two
    scrollbars for text area doesn't trigger any scrolling
--- a/jdk/test/java/awt/TextArea/TextAreaScrolling/TextAreaScrolling.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/TextArea/TextAreaScrolling/TextAreaScrolling.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  @test
+ @key headful
  @bug 6180449
  @summary TextArea scrolls to its left when selecting the text from the end.
  @run main TextAreaScrolling
--- a/jdk/test/java/awt/TextArea/TextAreaTwicePack/TextAreaTwicePack.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/TextArea/TextAreaTwicePack/TextAreaTwicePack.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7160627
  * @summary We shouldn't get different frame size when we call Frame.pack()
  * twice.
--- a/jdk/test/java/awt/TextArea/UsingWithMouse/SelectionAutoscrollTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/TextArea/UsingWithMouse/SelectionAutoscrollTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6497109 6734341
   @summary TextArea must have selection expanding, and also be autoscrolled, if mouse is dragged from inside.
   @library ../../regtesthelpers
--- a/jdk/test/java/awt/TextField/EOLTest/EOLTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/TextField/EOLTest/EOLTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
  @test
+ @key headful
  @bug 8055197 7186036
  @summary TextField should replace EOL character with space character
  @run main EOLTest
@@ -199,4 +200,4 @@
         testEOL.checkFailures();
         testEOL.dispose();
     }
-}
\ No newline at end of file
+}
--- a/jdk/test/java/awt/TextField/SelectionInvisibleTest/SelectionInvisibleTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/TextField/SelectionInvisibleTest/SelectionInvisibleTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8036110
  * @author Alexander Scherbatiy
  * @summary In TextField can only select text visible or to the left
--- a/jdk/test/java/awt/Toolkit/DynamicLayout/bug7172833.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/DynamicLayout/bug7172833.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -37,6 +37,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7172833
  * @summary java.awt.Toolkit methods is/setDynamicLayout() should be consistent.
  * @author Sergey Bylokhov
--- a/jdk/test/java/awt/Toolkit/GetSizeTest/GetScreenSizeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/GetSizeTest/GetScreenSizeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8144074 8145785 8149151
   @summary Crash while getting screen size during Toolkit initialisation
   @run main/othervm GetScreenSizeTest
--- a/jdk/test/java/awt/Toolkit/RealSync/RealSyncOnEDT.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/RealSync/RealSyncOnEDT.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6541903
   @summary Tests if the realSync() throws the IllegalThreadException while invoked on the EDT
   @author anthony.petrov: area=awt.toolkit
--- a/jdk/test/java/awt/Toolkit/ScreenInsetsTest/ScreenInsetsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/ScreenInsetsTest/ScreenInsetsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4737732
   @summary Tests that Toolkit.getScreenInsets() returns correct insets
   @author artem.ananiev: area=awt.toplevel
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_1.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_1.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that system property sun.awt.enableExtraMouseButtons is true by default
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_2.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_2.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that system property sun.awt.enableExtraMouseButtons might be set to true by the command line
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_3.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_3.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that system property sun.awt.enableExtraMouseButtons might be set to false by the command line
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_4.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_4.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that system property sun.awt.enableExtraMouseButtons might be set to true by the System class API.
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_5.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/SystemPropTest_5.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that system property sun.awt.enableExtraMouseButtons might be set to false by the System class API.
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Disable.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Disable.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that sun.awt.enableExtraMouseButtons = false consumes extra events
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Enable.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Toolkit/ToolkitPropertyTest/ToolkitPropertyTest_Enable.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that sun.awt.enableExtraMouseButtons is working
   @author Andrei Dmitriev : area=awt.mouse
--- a/jdk/test/java/awt/Window/AlwaysOnTop/AlwaysOnTopEvenOfWindow.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/AlwaysOnTop/AlwaysOnTopEvenOfWindow.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 5028924
   @summary Always-on-top frame should be on top of Window.
   @author Yuri.Nesterenko: area=awt.toplevel
--- a/jdk/test/java/awt/Window/AlwaysOnTop/SyncAlwaysOnTopFieldTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/AlwaysOnTop/SyncAlwaysOnTopFieldTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8064468
  * @author Alexander Scherbatiy
  * @summary ownedWindowList access requires synchronization in
--- a/jdk/test/java/awt/Window/AlwaysOnTop/TestAlwaysOnTopBeforeShow.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/AlwaysOnTop/TestAlwaysOnTopBeforeShow.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,12 +21,13 @@
  * questions.
  */
 /*
-@test
-@bug 6236247
-@summary Test that setting of always-on-top flags before showing window works
-@author dom@sparc.spb.su: area=awt.toplevel
-@run main TestAlwaysOnTopBeforeShow
-*/
+ * @test
+ * @key headful
+ * @bug 6236247
+ * @summary Test that setting of always-on-top flags before showing window works
+ * @author dom@sparc.spb.su: area=awt.toplevel
+ * @run main TestAlwaysOnTopBeforeShow
+ */
 
 /**
  * TestAlwaysOnTopBeforeShow.java
--- a/jdk/test/java/awt/Window/BackgroundIsNotUpdated/BackgroundIsNotUpdated.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/BackgroundIsNotUpdated/BackgroundIsNotUpdated.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8001472
  * @summary Background of the window should not depend from the paint()/update()
  * @author Sergey Bylokhov
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Window/ChildProperties/ChildWindowProperties.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /*
+ @test
+ @bug 8057574
+ @summary Verify that child Window does not inherit parent's Properties
+ @run main ChildWindowProperties
+ */
+import java.awt.Color;
+import java.awt.Dialog;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.Window;
+
+public class ChildWindowProperties {
+
+    private Dialog parentDialog;
+    private Window windowChild;
+    private Frame parentFrame;
+    private Window frameChildWindow;
+    private Label parentLabel;
+    private Font parentFont;
+    private Label childLabel;
+
+    private static final int WIDTH = 200;
+    private static final int HEIGHT = 200;
+
+    public void testChildPropertiesWithDialogAsParent() {
+
+        parentDialog = new Dialog((Dialog) null, "parent Dialog");
+        parentDialog.setSize(WIDTH, HEIGHT);
+        parentDialog.setLocation(100, 100);
+        parentDialog.setBackground(Color.RED);
+        parentLabel = new Label("ParentForegroundAndFont");
+        parentFont = new Font("Courier New", Font.ITALIC, 15);
+        parentDialog.setForeground(Color.BLUE);
+        parentDialog.setFont(parentFont);
+
+        parentDialog.add(parentLabel);
+        parentDialog.setVisible(true);
+
+        windowChild = new Window(parentDialog);
+        windowChild.setSize(WIDTH, HEIGHT);
+        windowChild.setLocation(WIDTH + 200, 100);
+        childLabel = new Label("ChildForegroundAndFont");
+        windowChild.add(childLabel);
+        windowChild.setVisible(true);
+
+        if (parentDialog.getBackground() == windowChild.getBackground()) {
+            dispose();
+            throw new RuntimeException("Child Window Should NOT Inherit "
+                    + "Parent Dialog's Background Color");
+        }
+        if (parentDialog.getForeground() == windowChild.getForeground()) {
+            dispose();
+            throw new RuntimeException("Child Window Should NOT Inherit "
+                    + "Parent Dialog's Foreground Color");
+        }
+        if (parentDialog.getFont() == windowChild.getFont()) {
+            dispose();
+            throw new RuntimeException("Child Window Should NOT Inherit "
+                    + "Parent Dialog's Font Color");
+        }
+    }
+
+    public void testChildPropertiesWithFrameAsParent() {
+
+        parentFrame = new Frame("parent Frame");
+        parentFrame.setSize(WIDTH, HEIGHT);
+        parentFrame.setLocation(100, 400);
+        parentFrame.setBackground(Color.BLUE);
+        parentLabel = new Label("ParentForegroundAndFont");
+        parentFont = new Font("Courier New", Font.ITALIC, 15);
+        parentFrame.setForeground(Color.RED);
+        parentFrame.setFont(parentFont);
+        parentFrame.add(parentLabel);
+        parentFrame.setVisible(true);
+
+        frameChildWindow = new Window(parentFrame);
+        frameChildWindow.setSize(WIDTH, HEIGHT);
+        frameChildWindow.setLocation(WIDTH + 200, 400);
+        childLabel = new Label("ChildForegroundAndFont");
+        frameChildWindow.add(childLabel);
+        frameChildWindow.setVisible(true);
+
+        if (parentFrame.getBackground() == frameChildWindow.getBackground()) {
+            dispose();
+            throw new RuntimeException("Child Window Should NOT Inherit "
+                    + "Parent Frame's Background Color");
+        }
+        if (parentDialog.getForeground() == windowChild.getForeground()) {
+            dispose();
+            throw new RuntimeException("Child Window Should NOT Inherit "
+                    + "Parent Frame's Foreground Color");
+        }
+        if (parentDialog.getFont() == windowChild.getFont()) {
+            dispose();
+            throw new RuntimeException("Child Window Should NOT Inherit "
+                    + "Parent Frame's Font Color");
+        }
+    }
+
+    public void testPanelBackground() {
+        Window window = new Frame();
+        window.setBackground(Color.GREEN);
+        Panel panel = new Panel();
+        window.add(panel);
+        window.pack();
+        window.setVisible(true);
+        if (panel.getBackground() != Color.GREEN) {
+            window.dispose();
+            throw new RuntimeException("Panel Background Color Not Valid");
+        }
+        window.dispose();
+    }
+
+    private void dispose() {
+
+        if (parentDialog != null) {
+            parentDialog.dispose();
+        }
+        if (parentFrame != null) {
+            parentFrame.dispose();
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        ChildWindowProperties obj = new ChildWindowProperties();
+        // TestCase1: When Parent is Dialog, Child is Window
+        obj.testChildPropertiesWithDialogAsParent();
+        // TestCase2: When Parent is Frame, chis is Window
+        obj.testChildPropertiesWithFrameAsParent();
+        // TestCase3: Panel Background Test
+        obj.testPanelBackground();
+        obj.dispose();
+    }
+
+}
+
--- a/jdk/test/java/awt/Window/FindOwner/FindOwnerTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/FindOwner/FindOwnerTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -22,6 +22,7 @@
 
 
   @test
+  @key headful
   @bug 8139227
   @summary Text fields in JPopupMenu structure do not receive focus in hosted
            Applets
@@ -40,4 +41,4 @@
         width="250" height="150">
 </applet>
 </body>
-</html> 
\ No newline at end of file
+</html> 
--- a/jdk/test/java/awt/Window/GetWindowsTest/GetWindowsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/GetWindowsTest/GetWindowsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /*
   @test
+  @key headful
   @bug 6322270
   @summary Test for new API introduced in the fix for 6322270: Window.getWindows(),
 Window.getOwnerlessWindows() and Frame.getFrames()
--- a/jdk/test/java/awt/Window/Grab/GrabTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/Grab/GrabTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 7124430
   @summary Tests that SunToolkit.grab API works
   @author anton.tarasov@oracle.com: area=awt.toolkit
--- a/jdk/test/java/awt/Window/GrabSequence/GrabSequence.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/GrabSequence/GrabSequence.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
  /*
   @test
+  @key headful
   @bug 6273031
   @summary  PIT. Choice drop down does not close once it is right clicked to show a popup menu
   @author andrei.dmitriev: area=awt.window
--- a/jdk/test/java/awt/Window/HandleWindowDestroyTest/HandleWindowDestroyTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/HandleWindowDestroyTest/HandleWindowDestroyTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 6260648
   @summary Tests that WINDOW_DESTROY event can be handled by overriding handleEvent(). Also,
 tests that handleEvent() is not called by AWT if any listener is added to the component
--- a/jdk/test/java/awt/Window/LocationByPlatform/LocationByPlatformTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/LocationByPlatform/LocationByPlatformTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7092283
  * @author Alexander Scherbatiy
  * @summary Property Window.locationByPlatform is not cleared by calling
--- a/jdk/test/java/awt/Window/MultiWindowApp/MultiWindowAppTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/MultiWindowApp/MultiWindowAppTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /**
  * @test @summary After calling frame.toBack() dialog goes to the back on Ubuntu 12.04
+ * @key headful
  * @bug 8022334
  * @author Semyon Sadetsky
  * @run main MultiWindowAppTest
--- a/jdk/test/java/awt/Window/OwnedWindowsLeak/OwnedWindowsLeak.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/OwnedWindowsLeak/OwnedWindowsLeak.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6758673
   @summary Tests that windows are removed from owner's child windows list
   @author art: area=awt.toplevel
--- a/jdk/test/java/awt/Window/PropertyChangeListenerLockSerialization/PropertyChangeListenerLockSerialization.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/PropertyChangeListenerLockSerialization/PropertyChangeListenerLockSerialization.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6681889
   @summary Showing a deserialized frame should not throw NPE
   @author anthony.petrov@...: area=awt.toplevel
--- a/jdk/test/java/awt/Window/ScreenLocation/ScreenLocationTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ScreenLocation/ScreenLocationTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -21,12 +21,14 @@
  * questions.
  */
 
-/* @test
-   @bug 8011616
-   @summary JWindow.getLocation and JWindow.getLocationOnScreen return different
-            values on Unity
-   @author Semyon Sadetsky
-  */
+/*
+ * @test
+ * @key headful
+ * @bug 8011616
+ * @summary JWindow.getLocation and JWindow.getLocationOnScreen return different
+ *          values on Unity
+ * @author Semyon Sadetsky
+ */
 
 import java.awt.*;
 
--- a/jdk/test/java/awt/Window/SetBackgroundNPE/SetBackgroundNPE.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/SetBackgroundNPE/SetBackgroundNPE.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6853916
   @summary Window.setBackground() should not throw NPE
   @author anthony.petrov@sun.com: area=awt.toplevel
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/FocusAWTTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/FocusAWTTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8013450
  * @summary Check if the window events (Focus and Activation) are triggered correctly
  *          when clicked on visible and clipped areas.
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/SetShape.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/SetShape.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if a window set with shape appears in the expected shape
  *
  * Test Description: Check if PERPIXEL_TRANSPARENT Translucency type is supported
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/SetShapeAndClick.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/SetShapeAndClick.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if a window set with shape clips the contents
  *
  * Test Description: Check if PERPIXEL_TRANSPARENT Translucency type is supported
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/SetShapeDynamicallyAndClick.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/SetShapeDynamicallyAndClick.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,6 +30,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if dynamically setting a shape works
  *
  * Test Description: Check if PERPIXEL_TRANSPARENT Translucency type is supported
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/Shaped.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/Shaped.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if dynamically shaped window is dragged and resized
  *          by mouse correctly
  *
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/ShapedByAPI.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/ShapedByAPI.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if dynamically shaped window is moved and resized by
  *          API correctly.
  *
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/ShapedTranslucent.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/ShapedTranslucent.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if a translucent shaped window is dragged and
  *          resized correctly.
  *
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/ShapedTranslucentWindowClick.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/ShapedTranslucentWindowClick.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,6 +30,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if a translucent shaped window trigger events correctly.
  *
  * Test Description: Check if TRANSLUCENT and PERPIXEL_TRANSPARENT traslucency
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/StaticallyShaped.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/StaticallyShaped.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if statically shaped window is dragged and resized correctly.
  *
  * Test Description: Check if PERPIXEL_TRANSPARENT translucency type is supported
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/Translucent.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/Translucent.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if translucent window is dragged and resized
  *          correctly.
  *
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/TranslucentChoice.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/TranslucentChoice.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,6 +27,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if a Choice present in a window set with opacity less than 1.0
  *          shows a translucent drop down
  *
--- a/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/TranslucentWindowClick.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/ShapedAndTranslucentWindows/TranslucentWindowClick.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if components present in a window set with opacity less than 1.0
  *          triggers events correctly
  *
--- a/jdk/test/java/awt/Window/WindowClosedEvents/WindowClosedEventOnDispose.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/WindowClosedEvents/WindowClosedEventOnDispose.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8015500
   @summary DisposeAction multiplies the WINDOW_CLOSED event.
   @author jlm@joseluismartin.info
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Window/WindowJumpingTest/WindowJumpingTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8080729
+ * @summary Dialogs on multiscreen jump to parent frame on focus gain
+ * @author Dmitry Markov
+ * @library ../../regtesthelpers
+ * @build Util
+ * @run main WindowJumpingTest
+ */
+import java.awt.*;
+
+import test.java.awt.regtesthelpers.Util;
+
+public class WindowJumpingTest {
+    public static void main(String[] args) throws AWTException {
+        Robot r = Util.createRobot();
+
+        GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
+        GraphicsDevice[] graphicsDevices = graphicsEnvironment.getScreenDevices();
+        if (graphicsDevices.length < 2) {
+            System.out.println("This is multi-screen test... Skipping!");
+            return;
+        }
+
+        Frame frame = new Frame("Frame", graphicsDevices[0].getDefaultConfiguration());
+        frame.setSize(400, 300);
+        frame.setVisible(true);
+        Util.waitForIdle(r);
+
+        Dialog dialog = new Dialog(frame, "Dialog", false, graphicsDevices[1].getDefaultConfiguration());
+        dialog.setSize(400, 300);
+        dialog.setVisible(true);
+        Util.waitForIdle(r);
+
+        checkGraphicsDevice(frame, graphicsDevices[0]);
+        checkGraphicsDevice(dialog, graphicsDevices[1]);
+
+        Util.clickOnComp(frame, r);
+        Util.waitForIdle(r);
+
+        checkGraphicsDevice(frame, graphicsDevices[0]);
+        checkGraphicsDevice(dialog, graphicsDevices[1]);
+
+        Util.clickOnComp(dialog, r);
+        Util.waitForIdle(r);
+
+        checkGraphicsDevice(frame, graphicsDevices[0]);
+        checkGraphicsDevice(dialog, graphicsDevices[1]);
+
+        dialog.dispose();
+        frame.dispose();
+    }
+
+    private static void checkGraphicsDevice(Window window, GraphicsDevice graphicsDevice) {
+        GraphicsDevice actualGraphicsDevice = window.getGraphicsConfiguration().getDevice();
+
+        if (!actualGraphicsDevice.equals(graphicsDevice)) {
+            System.err.println("Expected screen: " + graphicsDevice);
+            System.err.println("Actual screen: "+ actualGraphicsDevice);
+            throw new RuntimeException("Test FAILED: " + window + " is displayed on wrong screen");
+        }
+    }
+}
+
--- a/jdk/test/java/awt/Window/WindowType/WindowType.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/WindowType/WindowType.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6402325
   @summary Test showing windows of different types
   @author anthony.petrov@sun.com: area=awt.toplevel
--- a/jdk/test/java/awt/Window/WindowsLeak/WindowsLeak.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/WindowsLeak/WindowsLeak.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,42 +23,42 @@
 
 /*
  * @test
- * @bug 8013563
+ * @bug 8013563 8028486
  * @summary Tests that windows are removed from windows list
+ * @library /javax/swing/regtesthelpers
  * @modules java.desktop/sun.awt
+ *          java.desktop/sun.java2d
+ * @build Util
  * @run main/othervm -Xms32M -Xmx32M WindowsLeak
 */
 
-import java.awt.*;
-import sun.awt.AppContext;
+import java.awt.Frame;
+import java.awt.Robot;
+import java.awt.Window;
+import java.lang.ref.WeakReference;
+import java.util.Vector;
 
-import java.lang.ref.WeakReference;
-
-import java.util.Vector;
+import sun.awt.AppContext;
+import sun.java2d.Disposer;
 
 public class WindowsLeak {
 
-    public static void main(String[] args) {
-        for (int i = 0; i < 100; i++)
-        {
+    private static volatile boolean disposerPhantomComplete;
+
+    public static void main(String[] args) throws Exception {
+        Robot r = new Robot();
+        for (int i = 0; i < 100; i++) {
             Frame f = new Frame();
             f.pack();
             f.dispose();
         }
+        r.waitForIdle();
 
-        Vector garbage = new Vector();
-        while (true)
-        {
-            try
-            {
-                garbage.add(new byte[1000]);
-            }
-            catch (OutOfMemoryError e)
-            {
-                break;
-            }
+        Disposer.addRecord(new Object(), () -> disposerPhantomComplete = true);
+
+        while (!disposerPhantomComplete) {
+            Util.generateOOME();
         }
-        garbage = null;
 
         Vector<WeakReference<Window>> windowList =
                         (Vector<WeakReference<Window>>) AppContext.getAppContext().get(Window.class);
--- a/jdk/test/java/awt/Window/setLocRelativeTo/SetLocationRelativeToTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/Window/setLocRelativeTo/SetLocationRelativeToTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,15 +26,16 @@
 import javax.swing.*;
 
 /*
-@test
-@summary Toplevel should be correctly positioned as relative to a component:
-       so that their centers coincide
-       or, if the component is hidden, centered on the screen.
-@bug 8036915
-@library ../../../../lib/testlibrary
-@build ExtendedRobot
-@run main/timeout=1200 SetLocationRelativeToTest
-*/
+ * @test
+ * @key headful
+ * @summary Toplevel should be correctly positioned as relative to a component:
+ *          so that their centers coincide
+ *          or, if the component is hidden, centered on the screen.
+ * @bug 8036915
+ * @library ../../../../lib/testlibrary
+ * @build ExtendedRobot
+ * @run main/timeout=1200 SetLocationRelativeToTest
+ */
 
 public class SetLocationRelativeToTest {
     private static int delay = 500;
--- a/jdk/test/java/awt/applet/Applet/AppletFlipBuffer.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/applet/Applet/AppletFlipBuffer.java	Wed Jul 05 21:51:13 2017 +0200
@@ -40,6 +40,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8130390 8134732
  * @summary Applet fails to launch on virtual desktop
  * @modules java.desktop/sun.awt
--- a/jdk/test/java/awt/datatransfer/Clipboard/GetContentsInterruptedTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/Clipboard/GetContentsInterruptedTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,6 +34,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4532299 4648733
  * @summary Tests that getting clipboard contents on the interrupted thread will
  *          not cause deadlock.Also check that lostOwnership event occurs while
--- a/jdk/test/java/awt/datatransfer/ClipboardInterVMTest/ClipboardInterVMTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/ClipboardInterVMTest/ClipboardInterVMTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8071668
   @summary Check whether clipboard see changes from external process after taking ownership
   @author Anton Nashatyrev: area=datatransfer
--- a/jdk/test/java/awt/datatransfer/ConstructFlavoredObjectTest/ConstructFlavoredObjectTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/ConstructFlavoredObjectTest/ConstructFlavoredObjectTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -30,6 +30,7 @@
 import javax.swing.TransferHandler;
 /*
  * @test
+ * @key headful
  * @bug 8130329
  * @summary  Audit Core Reflection in module java.desktop AWT/Miscellaneous area
  *           for places that will require changes to work with modules
--- a/jdk/test/java/awt/datatransfer/CustomClassLoaderTransferTest/CustomClassLoaderTransferTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/CustomClassLoaderTransferTest/CustomClassLoaderTransferTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,6 @@
 /*
   @test
+  @key headful
   @bug 4932376
   @summary verifies that data transfer within one JVM works correctly if
            the transfer data was created with a custom class loader.
--- a/jdk/test/java/awt/datatransfer/DataFlavor/DataFlavorRemoteTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/DataFlavor/DataFlavorRemoteTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8051636
   @summary DataTransferer optional dependency on RMI
   @author Semyon Sadetsky
--- a/jdk/test/java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/DragUnicodeBetweenJVMTest/DragUnicodeBetweenJVMTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 5098433
   @summary REG: DnD of File-List between JVM is broken for non ASCII file names - Win32
   @author Denis Fokin: area=dnd
--- a/jdk/test/java/awt/datatransfer/ImageTransfer/ImageTransferTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/ImageTransfer/ImageTransferTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary To check Whether java.awt.Image can be transferred through the
  *          system clipboard
  * @author Jitender(jitender.singh@eng.sun.com) area=AWT
--- a/jdk/test/java/awt/datatransfer/Independence/IndependenceAWTTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/Independence/IndependenceAWTTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,6 +30,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary To make sure that System & Primary clipboards should behave independently
  * @author Jitender(jitender.singh@eng.sun.com) area=AWT
  * @author dmitriy.ermashov@oracle.com
--- a/jdk/test/java/awt/datatransfer/Independence/IndependenceSwingTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/Independence/IndependenceSwingTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -37,6 +37,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary To make sure that System & Primary clipboards should behave independently
  * @author Jitender(jitender.singh@eng.sun.com) area=AWT
  * @author dmitriy.ermashov@oracle.com
--- a/jdk/test/java/awt/datatransfer/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/MissedHtmlAndRtfBug/MissedHtmlAndRtfBug.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 8005932 8017456
   @summary Java 7 on mac os x only provides text clipboard formats
   @author mikhail.cherkasov@oracle.com
--- a/jdk/test/java/awt/datatransfer/SystemSelection/SystemSelectionAWTTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/SystemSelection/SystemSelectionAWTTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,6 +34,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary To check the functionality of newly added API getSystemSelection & make sure
  *          that it's mapped to primary clipboard
  * @author Jitender(jitender.singh@eng.sun.com) area=AWT
--- a/jdk/test/java/awt/datatransfer/SystemSelection/SystemSelectionSwingTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/datatransfer/SystemSelection/SystemSelectionSwingTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -35,6 +35,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary To check the functionality of newly added API getSystemSelection & make sure
  *          that it's mapped to primary clipboard
  * @author Jitender(jitender.singh@eng.sun.com) area=AWT
--- a/jdk/test/java/awt/dnd/Button2DragTest/Button2DragTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/Button2DragTest/Button2DragTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -41,6 +41,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 4955110
  * @summary tests that DragSourceDragEvent.getDropAction() accords to its new
  *          spec (does not depend on the user drop action)
--- a/jdk/test/java/awt/dnd/DragInterceptorAppletTest/DragInterceptorAppletTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/DragInterceptorAppletTest/DragInterceptorAppletTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 6887703
   @summary Unsigned applet can retrieve the dragged information before drop action occurs
   @author : area=dnd
--- a/jdk/test/java/awt/dnd/DragSourceListenerSerializationTest/DragSourceListenerSerializationTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/DragSourceListenerSerializationTest/DragSourceListenerSerializationTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4422345 8039083
   @summary tests serialization of DragSourceListeners
   @author das@sparc.spb.su area=dnd
--- a/jdk/test/java/awt/dnd/FileListBetweenJVMsTest/FileListBetweenJVMsTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/FileListBetweenJVMsTest/FileListBetweenJVMsTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 5079469
   @summary DnD of File-List across JVM adds two empty items to the list
   @author : area=dnd
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/ImageDecoratedDnDInOut.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDInOut/ImageDecoratedDnDInOut.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test %W% %E%
+  @key headful
   @bug 4874070
   @summary Tests basic DnD functionality
   @author Your Name: Alexey Utkin area=dnd
--- a/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/ImageDecoratedDnDNegative.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/ImageDecoratedDnDNegative/ImageDecoratedDnDNegative.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test %W% %E%
+  @key headful
   @bug 4874070
   @summary Tests basic DnD functionality
   @author Your Name: Alexey Utkin area=dnd
--- a/jdk/test/java/awt/dnd/ImageTransferTest/ImageTransferTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/ImageTransferTest/ImageTransferTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4397404 4720930
   @summary tests that images of all supported native image formats are transfered properly
   @library ../../../../lib/testlibrary
--- a/jdk/test/java/awt/dnd/InterJVMGetDropSuccessTest/InterJVMGetDropSuccessTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/InterJVMGetDropSuccessTest/InterJVMGetDropSuccessTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4658741
   @summary verifies that getDropSuccess() returns correct value for inter-JVM DnD
   @author das@sparc.spb.su area=dnd
--- a/jdk/test/java/awt/dnd/MissingEventsOnModalDialog/MissingEventsOnModalDialogTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/MissingEventsOnModalDialog/MissingEventsOnModalDialogTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -43,6 +43,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8134917
  * @summary [macosx] JOptionPane doesn't receive mouse events when opened from a drop event
  * @author Alexandr Scherbatiy
--- a/jdk/test/java/awt/dnd/NoFormatsCrashTest/NoFormatsCrashTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/NoFormatsCrashTest/NoFormatsCrashTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4870762
   @summary tests that a drop target JVM doesn't crash if the source doesn't export 
            data in native formats.
--- a/jdk/test/java/awt/dnd/URIListBetweenJVMsTest/URIListBetweenJVMsTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/URIListBetweenJVMsTest/URIListBetweenJVMsTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4899516
   @summary Transferable has no DataFlavors when dragging from Gnome window to Swing
   @author : area=dnd
--- a/jdk/test/java/awt/dnd/URIListToFileListBetweenJVMsTest/URIListToFileListBetweenJVMsTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/dnd/URIListToFileListBetweenJVMsTest/URIListToFileListBetweenJVMsTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 8029565
   @summary Conversion of a URI list to File list fails
   @author Petr Pchelko <petr.pchelko@oracle.com>
--- a/jdk/test/java/awt/event/ComponentEvent/MovedResizedTardyEventTest/MovedResizedTardyEventTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/ComponentEvent/MovedResizedTardyEventTest/MovedResizedTardyEventTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug          4985250
   @summary      COMPONENT_MOVED/RESIZED tardy events shouldn't be generated.
   @author       tav@sparc.spb.su
--- a/jdk/test/java/awt/event/HierarchyEvent/AncestorResized/AncestorResized.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/HierarchyEvent/AncestorResized/AncestorResized.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6533330
   @summary ANCESTOR_RESIZED is not sent while resizing a frame. Regression caused by 6500477.
   @author anthony.petrov: area=awt.toplevel
--- a/jdk/test/java/awt/event/InputEvent/ButtonArraysEquality/ButtonArraysEquality.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/InputEvent/ButtonArraysEquality/ButtonArraysEquality.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that InputEvents button masks arrays are the same
   @author Andrei Dmitriev : area=awt.event
--- a/jdk/test/java/awt/event/InputEvent/EventWhenTest/EventWhenTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/InputEvent/EventWhenTest/EventWhenTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,6 +29,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8046495
  * @summary Verifies that mouse/key events has always increasing 'when' timestamps
  * @author Anton Nashatyrev
--- a/jdk/test/java/awt/event/KeyEvent/DeadKey/DeadKeySystemAssertionDialog.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/KeyEvent/DeadKey/DeadKeySystemAssertionDialog.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,6 +27,7 @@
 import java.awt.event.KeyEvent;
 /*
  * @test
+ * @key headful
  * @bug 8013849
  * @summary Awt assert on Hashtable.cpp:124
  * @author alexandr.scherbatiy area=awt.event
--- a/jdk/test/java/awt/event/KeyEvent/KeyChar/KeyCharTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/KeyEvent/KeyChar/KeyCharTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8022401
  * @summary Wrong key char
  * @author Alexandr Scherbatiy
--- a/jdk/test/java/awt/event/KeyEvent/KeyTyped/CtrlASCII.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/KeyEvent/KeyTyped/CtrlASCII.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug  6497426
   @summary ests that pressing of Ctrl+ascii mostly fires KEY_TYPED with a Unicode control symbols
   @author yuri.nesterenko@... area=awt.keyboard
--- a/jdk/test/java/awt/event/MouseEvent/AcceptExtraButton/AcceptExtraButton.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/AcceptExtraButton/AcceptExtraButton.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that MouseEvent CTOR accepts extra mouse button numbers
   @author Andrei Dmitriev : area=awt.event
--- a/jdk/test/java/awt/event/MouseEvent/CheckGetMaskForButton/CheckGetMaskForButton.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/CheckGetMaskForButton/CheckGetMaskForButton.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test %I% %E%
+  @key headful
   @bug 6315717
   @summary verifies that InputEvent.getMaskForButton() returns the same values as in InputEvent.BUTTON_DOWN_MASK
   @author Andrei Dmitriev : area=awt.event
--- a/jdk/test/java/awt/event/MouseEvent/ClickDuringKeypress/ClickDuringKeypress.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/ClickDuringKeypress/ClickDuringKeypress.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test 1.2 98/08/05
+  @key headful
   @bug 4515763
   @summary Tests that clicking mouse and pressing keys generates correct amount of click-counts
   @author andrei.dmitriev: area=awt.mouse
--- a/jdk/test/java/awt/event/MouseEvent/EventTimeInFuture/EventTimeInFuture.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/EventTimeInFuture/EventTimeInFuture.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6451578
   @library ../../../regtesthelpers
   @build Sysout AbstractTest Util
--- a/jdk/test/java/awt/event/MouseEvent/FrameMouseEventAbsoluteCoordsTest/FrameMouseEventAbsoluteCoordsTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/FrameMouseEventAbsoluteCoordsTest/FrameMouseEventAbsoluteCoordsTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4992908
   @summary Need way to get location of MouseEvent in screen  coordinates (Unit-test)
   @author Andrei.Dmitriev area=event
--- a/jdk/test/java/awt/event/MouseEvent/MenuDragMouseEventAbsoluteCoordsTest/MenuDragMouseEventAbsoluteCoordsTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/MenuDragMouseEventAbsoluteCoordsTest/MenuDragMouseEventAbsoluteCoordsTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4992908
   @summary Need way to get location of MouseEvent in screen coordinates
   @author Andrei.Dmitriev area=event
--- a/jdk/test/java/awt/event/MouseEvent/MouseClickTest/MouseClickTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/MouseClickTest/MouseClickTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 6267983
   @summary PIT: MouseClicked is triggered when the mouse is released outside the tray icon, Win32
   @author dmitry.cherepanov@... area=awt.event
--- a/jdk/test/java/awt/event/MouseEvent/MouseWheelEventAbsoluteCoordsTest/MouseWheelEventAbsoluteCoordsTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/MouseWheelEventAbsoluteCoordsTest/MouseWheelEventAbsoluteCoordsTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4992908
   @summary Need way to get location of MouseEvent in screen coordinates
   @author Andrei.Dmitriev area=event 
--- a/jdk/test/java/awt/event/MouseEvent/RobotLWTest/RobotLWTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseEvent/RobotLWTest/RobotLWTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug 4350402
   @summary Tests that mouse behavior on LW component
   @compile ../../../regtesthelpers/Util.java
--- a/jdk/test/java/awt/event/MouseWheelEvent/DisabledComponent/DisabledComponent.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseWheelEvent/DisabledComponent/DisabledComponent.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6847958
   @summary MouseWheel event is getting triggered for the disabled Textarea in jdk7 b60 pit build.
   @author Dmitry Cherepanov: area=awt.event
--- a/jdk/test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_2.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_2.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 6480024
   @library ../../../regtesthelpers
   @build Util Sysout AbstractTest
--- a/jdk/test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_3.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/MouseWheelEvent/InfiniteRecursion/InfiniteRecursion_3.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 6480024
   @library ../../../regtesthelpers
   @build Util Sysout AbstractTest
--- a/jdk/test/java/awt/event/OtherEvents/UngrabID/UngrabID.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/event/OtherEvents/UngrabID/UngrabID.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6960516
   @summary check if the ungrab event has the ID < AWTEvent.RESERVED_ID_MAX
   @author Andrei Dmitriev : area=awt.event
--- a/jdk/test/java/awt/font/Rotate/Shear.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/font/Rotate/Shear.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6692979
  * @summary Verify no crashes with extreme shears.
  */
--- a/jdk/test/java/awt/font/Underline/UnderlineTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/font/Underline/UnderlineTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6216010
  * @summary check to see that underline thickness scales.
  * @run main UnderlineTest
--- a/jdk/test/java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/grab/EmbeddedFrameTest1/EmbeddedFrameTest1.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 6359129
   @summary REGRESSION: Popup menus dont respond to selections when extend outside Applet
   @author oleg.sukhodolsky area=awt.grab
--- a/jdk/test/java/awt/grab/MenuDragEvents/MenuDragEvents.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/grab/MenuDragEvents/MenuDragEvents.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--
   @test
+  @key headful
   @bug 6390326
   @summary REGRESSION: Broken mouse behaviour of menus partially outside the main window.
   @author oleg.sukhodolsky: area=awt-drab
--- a/jdk/test/java/awt/hidpi/properties/HiDPIPropertiesUnixTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/hidpi/properties/HiDPIPropertiesUnixTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -28,7 +28,9 @@
 import java.awt.geom.AffineTransform;
 import javax.swing.UIManager;
 
-/* @test
+/*
+ * @test
+ * @key headful
  * @bug 8137571
  * @summary Linux HiDPI Graphics support
  * @author Alexander Scherbatiy
--- a/jdk/test/java/awt/im/InputContext/InputContextTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/im/InputContext/InputContextTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,7 +21,9 @@
  * questions.
  */
 
-/* @test
+/*
+ * @test
+ * @key headful
  * @bug 4151222
  * @bug 4150206
  * @bug 4243948
--- a/jdk/test/java/awt/im/InputContext/bug4625203.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/im/InputContext/bug4625203.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4625203
  * @summary 1. install two input locales on Windows
  *          2. run this application
--- a/jdk/test/java/awt/image/DrawImage/EABlitTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/EABlitTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8024895
  * @summary tests if changing extra alpha values are honored for transformed blits
  * @author ceisserer
--- a/jdk/test/java/awt/image/DrawImage/IncorrectAlphaConversionBicubic.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectAlphaConversionBicubic.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,6 +39,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8062164
  * @summary We should get correct alpha, when we draw to/from VolatileImage and
  *          bicubic interpolation is enabled
--- a/jdk/test/java/awt/image/DrawImage/IncorrectAlphaSurface2SW.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectAlphaSurface2SW.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -42,6 +42,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8017626
  * @summary Tests drawing transparent volatile image to transparent BI.
  *          Results of the blit compatibleImage to transparent BI used for
--- a/jdk/test/java/awt/image/DrawImage/IncorrectBounds.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectBounds.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -32,6 +32,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8000629
  * @summary Temporary backbuffer in the DrawImage should not fill background
  * outside of source image bounds.
--- a/jdk/test/java/awt/image/DrawImage/IncorrectClipSurface2SW.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectClipSurface2SW.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -42,6 +42,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8041644 8044788
  * @summary Tests drawing volatile image to BI using different clip.
  *          Results of the blit compatibleImage to BI used for comparison.
--- a/jdk/test/java/awt/image/DrawImage/IncorrectClipXorModeSW2Surface.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectClipXorModeSW2Surface.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,6 +44,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8061456
  * @summary Tests drawing BI to volatile image using different clips + xor mode.
  *          Results of the blit BI to compatibleImage is used for comparison.
--- a/jdk/test/java/awt/image/DrawImage/IncorrectClipXorModeSurface2Surface.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectClipXorModeSurface2Surface.java	Wed Jul 05 21:51:13 2017 +0200
@@ -40,6 +40,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8061831 8130400
  * @summary Tests drawing volatile image to volatile image using different
  *          clips + xor mode. Results of the blit compatibleImage to
--- a/jdk/test/java/awt/image/DrawImage/IncorrectDestinationOffset.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectDestinationOffset.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -35,6 +35,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8041129
  * @summary Destination offset should be correct in case of Surface->SW blit.
  *          Destination outside of the drawing area should be untouched.
--- a/jdk/test/java/awt/image/DrawImage/IncorrectOffset.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectOffset.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8000629
  * @summary Temporary backbuffer in the DrawImage should have correct offset.
  * @author Sergey Bylokhov
--- a/jdk/test/java/awt/image/DrawImage/IncorrectSourceOffset.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectSourceOffset.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -36,6 +36,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8041129
  * @summary Tests asymmetric source offsets.
  * @author Sergey Bylokhov
--- a/jdk/test/java/awt/image/DrawImage/IncorrectUnmanagedImageRotatedClip.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectUnmanagedImageRotatedClip.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,6 +44,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8059942
  * @summary Tests rotated clip when unmanaged image is drawn to VI.
  *          Results of the blit to compatibleImage are used for comparison.
--- a/jdk/test/java/awt/image/DrawImage/IncorrectUnmanagedImageSourceOffset.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectUnmanagedImageSourceOffset.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -43,6 +43,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8029253
  * @summary Tests asymmetric source offsets when unmanaged image is drawn to VI.
  *          Results of the blit to compatibleImage are used for comparison.
--- a/jdk/test/java/awt/image/DrawImage/ScaledImageAlphaTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/ScaledImageAlphaTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug     8139183
  * @summary Test verifies whether alpha channel of a translucent
  *          image is proper or not after scaling through drawImage.
--- a/jdk/test/java/awt/image/DrawImage/UnmanagedDrawImagePerformance.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/DrawImage/UnmanagedDrawImagePerformance.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,6 +41,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8029253 8059941
  * @summary Unmanaged images should be drawn fast.
  * @author Sergey Bylokhov
--- a/jdk/test/java/awt/image/VolatileImage/BitmaskVolatileImage.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/VolatileImage/BitmaskVolatileImage.java	Wed Jul 05 21:51:13 2017 +0200
@@ -34,6 +34,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7188942
  * @summary We should get correct volatile image, when we use BITMASK
  *          transparency
--- a/jdk/test/java/awt/image/VolatileImage/VolatileImageBug.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/VolatileImage/VolatileImageBug.java	Wed Jul 05 21:51:13 2017 +0200
@@ -26,6 +26,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8140530
  * @run main VolatileImageBug
  * @summary Creating volatileimage(0,0) should throw IAE
--- a/jdk/test/java/awt/image/multiresolution/MultiresolutionIconTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/image/multiresolution/MultiresolutionIconTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8150724 8151303
  * @author a.stepanov
  * @summary Check that correct resolution variants are chosen for icons
--- a/jdk/test/java/awt/print/PageFormat/NullPaper.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/print/PageFormat/NullPaper.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 4199506
   @summary  java.awt.print.PageFormat.setpaper(Paper paper)
                  assertion test fails by not throwing
--- a/jdk/test/java/awt/print/PageFormat/ReverseLandscapeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/print/PageFormat/ReverseLandscapeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4254954
  * @summary PageFormat would fail on solaris when setting orientation
  */
--- a/jdk/test/java/awt/print/PaintSetEnabledDeadlock/PaintSetEnabledDeadlock.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/print/PaintSetEnabledDeadlock/PaintSetEnabledDeadlock.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 7108598
  * @summary Container.paint/KeyboardFocusManager.clearMostRecentFocusOwner methods deadlock
  * @library ../../regtesthelpers
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/print/PrinterJob/LandscapeStackOverflow.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 6842011
+ * @summary Test if StackOverflowError occurs during printing landscape with
+ *          scale and transform.
+ * @run main LandscapeStackOverflow
+ */
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.geom.Path2D;
+import java.awt.print.PageFormat;
+import java.awt.print.Printable;
+import java.awt.print.PrinterException;
+import java.awt.print.PrinterJob;
+import javax.print.attribute.HashPrintRequestAttributeSet;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.print.attribute.standard.OrientationRequested;
+
+public class LandscapeStackOverflow {
+
+    public static final void main( String[] parameters ) {
+        PrinterJob printjob = PrinterJob.getPrinterJob();
+        printjob.setJobName( "Test Print Job" );
+
+        PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
+        attributes.add( OrientationRequested.LANDSCAPE );
+
+        boolean print = printjob.printDialog( attributes );
+        if( !print ) return;
+
+        try {
+            printjob.setPrintable( new Painter() );
+            printjob.print( attributes );
+        } catch( PrinterException exception ) {
+            exception.printStackTrace();
+        }
+    }
+}
+
+/**
+ * Paints a 2 inch by 2 inch rectangle in the center of the page.
+ */
+class Painter implements Printable {
+
+    public int print( Graphics graphics, PageFormat format, int index ) {
+        Graphics2D g2d = (Graphics2D)graphics;
+
+        double scalex = g2d.getTransform().getScaleX();
+        double scaley = g2d.getTransform().getScaleY();
+
+        double centerx = ( format.getImageableX() +
+                         ( format.getImageableWidth() / 2 ) ) * scalex;
+        double centery = ( format.getImageableY() +
+                         ( format.getImageableHeight() / 2 ) ) * scaley;
+
+        // The following 2 lines cause an error when printing in landscape.
+        g2d.scale( 1 / scalex, 1 / scaley );
+        g2d.translate( centerx, centery );
+
+        Path2D.Double path = new Path2D.Double();
+        path.moveTo( -scalex * 72, -scaley * 72 );
+        path.lineTo( -scalex * 72, scaley * 72 );
+        path.lineTo( scalex * 72, scaley * 72 );
+        path.lineTo( scalex * 72, -scaley * 72 );
+        path.closePath();
+
+        g2d.draw( path );
+
+        return index == 0 ? PAGE_EXISTS : NO_SUCH_PAGE;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/print/PrinterJob/PageDialogMarginValidation.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 6509729
+ * @summary  Verifies pageDialog margin validation is correct
+ * @run main/manual PageDialogMarginValidation
+ */
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.print.PageFormat;
+import java.awt.print.PrinterJob;
+import javax.print.attribute.HashPrintRequestAttributeSet;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+
+public class PageDialogMarginValidation {
+
+    private static Thread mainThread;
+    private static boolean testPassed;
+    private static boolean testGeneratedInterrupt;
+    private static PrinterJob printJob;
+
+    public static void pageMarginTest() {
+        PrinterJob pj = PrinterJob.getPrinterJob();
+        HashPrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
+        PageFormat pf;
+        pf = pj.pageDialog(aset);
+    }
+
+    public static void main(String[] args) throws Exception {
+        SwingUtilities.invokeAndWait(() -> {
+            doTest(PageDialogMarginValidation::pageMarginTest);
+        });
+        mainThread = Thread.currentThread();
+        try {
+            Thread.sleep(30000);
+        } catch (InterruptedException e) {
+            if (!testPassed && testGeneratedInterrupt) {
+                throw new RuntimeException(""
+                        + "Margin validation is not correct");
+            }
+        }
+        if (!testGeneratedInterrupt) {
+            throw new RuntimeException("user has not executed the test");
+        }
+    }
+
+    public static synchronized void pass() {
+        testPassed = true;
+        testGeneratedInterrupt = true;
+        mainThread.interrupt();
+    }
+
+    public static synchronized void fail() {
+        testPassed = false;
+        testGeneratedInterrupt = true;
+        mainThread.interrupt();
+    }
+
+    private static void doTest(Runnable action) {
+        String description
+                = " Initially, a page dialog will be shown.\n "
+                + " The left, right, bottom, right margin will have value 1.0.\n"
+                + " Modify right margin from 1.0 to 0.0 and press tab.\n"
+                + " Please verify the right margin changes back to 1.0. \n"
+                + " Please do the same for bottom margin.\n"
+                + " If right and bottom margin changes back to 1.0, press PASS else press fail";
+
+        final JDialog dialog = new JDialog();
+        dialog.setTitle("printSelectionTest");
+        JTextArea textArea = new JTextArea(description);
+        textArea.setEditable(false);
+        final JButton testButton = new JButton("Start Test");
+        final JButton passButton = new JButton("PASS");
+        passButton.setEnabled(false);
+        passButton.addActionListener((e) -> {
+            dialog.dispose();
+            pass();
+        });
+        final JButton failButton = new JButton("FAIL");
+        failButton.setEnabled(false);
+        failButton.addActionListener((e) -> {
+            dialog.dispose();
+            fail();
+        });
+        testButton.addActionListener((e) -> {
+            testButton.setEnabled(false);
+            action.run();
+            passButton.setEnabled(true);
+            failButton.setEnabled(true);
+        });
+        JPanel mainPanel = new JPanel(new BorderLayout());
+        mainPanel.add(textArea, BorderLayout.CENTER);
+        JPanel buttonPanel = new JPanel(new FlowLayout());
+        buttonPanel.add(testButton);
+        buttonPanel.add(passButton);
+        buttonPanel.add(failButton);
+        mainPanel.add(buttonPanel, BorderLayout.SOUTH);
+        dialog.add(mainPanel);
+        dialog.pack();
+        dialog.setVisible(true);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/print/PrinterJob/PrintDlgSelectionAttribTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+ /*
+ * @test
+ * @bug 6529030
+ * @summary  Verifies if Java Printing: Selection radiobutton gets enabled.
+ * @requires (os.family == "windows")
+ * @run main/manual PrintDlgSelectionAttribTest
+ */
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.Graphics;
+import java.awt.print.Printable;
+import java.awt.print.PageFormat;
+import java.awt.print.PrinterException;
+import java.awt.print.PrinterJob;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+
+public class PrintDlgSelectionAttribTest {
+
+    private static Thread mainThread;
+    private static boolean testPassed;
+    private static boolean testGeneratedInterrupt;
+    private static PrinterJob printJob;
+
+    public static void print() {
+
+        // Set working printable to print pages
+        printJob.setPrintable(new Printable() {
+            public int print(Graphics graphics, PageFormat pageFormat,
+                    int pageIndex) throws PrinterException {
+                return NO_SUCH_PAGE;
+            }
+        });
+
+        // Display Print dialog
+        if (!printJob.printDialog()) {
+            System.out.println("\tPrinting canceled by user");
+            return;
+        }
+
+        try {
+            printJob.print();
+        } catch (PrinterException e) {
+        }
+    }
+
+    public static void printTest() {
+        printJob = PrinterJob.getPrinterJob();
+        System.out.println(" -=- Starting printing #1 -=-");
+        print();
+        System.out.println(" -=- Starting printing #2 -=-");
+        print();
+    }
+
+    public static void main(String[] args) throws Exception {
+        SwingUtilities.invokeAndWait(() -> {
+            doTest(PrintDlgSelectionAttribTest::printTest);
+        });
+        mainThread = Thread.currentThread();
+        try {
+            Thread.sleep(30000);
+        } catch (InterruptedException e) {
+            if (!testPassed && testGeneratedInterrupt) {
+                throw new RuntimeException(""
+                        + "Selection radio button is enabled in print dialog");
+            }
+        }
+        if (!testGeneratedInterrupt) {
+            throw new RuntimeException("user has not executed the test");
+        }
+    }
+
+    public static synchronized void pass() {
+        testPassed = true;
+        testGeneratedInterrupt = true;
+        mainThread.interrupt();
+    }
+
+    public static synchronized void fail() {
+        testPassed = false;
+        testGeneratedInterrupt = true;
+        mainThread.interrupt();
+    }
+
+    private static void doTest(Runnable action) {
+        String description
+                = " Visual inspection of print dialog is required.\n"
+                + " Initially, a print dialog will be shown.\n "
+                + " Please verify Selection radio button is disabled.\n"
+                + " Press OK. Then 2nd print dialog will be shown.\n"
+                + " Please verify the Selection radio button is disabled\n"
+                + " in 2nd print dialog. If disabled, press PASS else press fail";
+
+        final JDialog dialog = new JDialog();
+        dialog.setTitle("printSelectionTest");
+        JTextArea textArea = new JTextArea(description);
+        textArea.setEditable(false);
+        final JButton testButton = new JButton("Start Test");
+        final JButton passButton = new JButton("PASS");
+        passButton.setEnabled(false);
+        passButton.addActionListener((e) -> {
+            dialog.dispose();
+            pass();
+        });
+        final JButton failButton = new JButton("FAIL");
+        failButton.setEnabled(false);
+        failButton.addActionListener((e) -> {
+            dialog.dispose();
+            fail();
+        });
+        testButton.addActionListener((e) -> {
+            testButton.setEnabled(false);
+            action.run();
+            passButton.setEnabled(true);
+            failButton.setEnabled(true);
+        });
+        JPanel mainPanel = new JPanel(new BorderLayout());
+        mainPanel.add(textArea, BorderLayout.CENTER);
+        JPanel buttonPanel = new JPanel(new FlowLayout());
+        buttonPanel.add(testButton);
+        buttonPanel.add(passButton);
+        buttonPanel.add(failButton);
+        mainPanel.add(buttonPanel, BorderLayout.SOUTH);
+        dialog.add(mainPanel);
+        dialog.pack();
+        dialog.setVisible(true);
+    }
+}
--- a/jdk/test/java/awt/print/PrinterJob/PrintToDir.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/print/PrinterJob/PrintToDir.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,11 +21,14 @@
  * questions.
  */
 
-/* @test
-   @bug 4973278 8015586
-   @run main PrintToDir
-   @summary Must throw exception when printing to an invalid filename - a dir.
-*/
+/*
+ * @test
+ * @key headful
+ * @bug 4973278 8015586
+ * @run main PrintToDir
+ * @summary Must throw exception when printing to an invalid filename - a dir.
+ */
+
 import java.io.*;
 import java.net.*;
 import java.awt.*;
--- a/jdk/test/java/awt/security/Permissions.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/security/Permissions.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,7 +21,9 @@
  * questions.
  */
 
-/* @test
+/*
+ * @test
+ * @key headful
  * @bug 8008981
  * @summary Test that selected Toolkit and Window methods/constructors do
  *   the appropriate permission check
--- a/jdk/test/java/awt/security/WarningWindowDisposeTest/WarningWindowDisposeCrashTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/security/WarningWindowDisposeTest/WarningWindowDisposeCrashTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
   @test
+  @key headful
   @bug 8041490
   @summary tests that the WarningWindow's surface is invalidated on dispose
   @author Petr Pchelko
--- a/jdk/test/java/awt/xembed/server/RunTestXEmbed.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/awt/xembed/server/RunTestXEmbed.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 4931668 7146533
  * @summary Tests XEmbed server/client functionality
  * @author Denis Mikhalkin: area=awt.xembed
--- a/jdk/test/java/beans/Introspector/AnonymousClassBeanPropertyTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/beans/Introspector/AnonymousClassBeanPropertyTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -38,8 +38,7 @@
  * @author a.stepanov
  * @run main AnonymousClassBeanPropertyTest
  */
-
-
+//TODO in final revision each test should have only one checkInfo/checkAlternate
 public class AnonymousClassBeanPropertyTest {
 
     private final static String  DESCRIPTION = "TEST";
@@ -655,8 +654,6 @@
         System.out.println("OK = " + ok);
         passed = passed && ok;
 
-        // TODO: please uncomment/update after 8132973 fix
-        /*
         IGetSet testGetSet_3 = new IGetSet() {
 
             private double x;
@@ -688,10 +685,7 @@
         };
         ok = checkInfo(testGetSet_3.getClass(), "IGetSet-3", true);
         System.out.println("OK = " + ok);
-        ok2 = checkAlternativeInfo(testGetSet_3.getClass(), "IGetSet-3");
-        System.out.println("OK = " + ok2);
-        passed = passed && (ok || ok2);
-        */
+        passed = passed && ok;
 
         //----------------------------------------------------------------------
 
@@ -746,8 +740,6 @@
         System.out.println("OK = " + ok);
         passed = passed && ok;
 
-        // TODO: please uncomment/update after 8132973 fix
-        /*
         IGetSetByIndex testGetSetByIndex_3 = new IGetSetByIndex() {
 
             private double x[] = {X, X};
@@ -783,11 +775,7 @@
         };
         ok = checkInfo(testGetSetByIndex_3.getClass(), "IGetSetByIndex-3", true);
         System.out.println("OK = " + ok);
-        ok2 = checkAlternativeInfo(
-            testGetSetByIndex_3.getClass(), "IGetSetByIndex-3");
-        System.out.println("OK = " + ok2);
-        passed = passed && (ok || ok2);
-        */
+        passed = passed && ok;
 
         //----------------------------------------------------------------------
 
@@ -855,7 +843,7 @@
         passed = passed && ok;
         */
 
-        // TODO: please uncomment/update after 8132973 fix
+        // TODO: please uncomment/update after 8155013 fix
         /*
         IGetSetBoth testGetSetBoth_3 = new IGetSetBoth() {
 
@@ -978,8 +966,6 @@
         System.out.println("OK = " + ok2);
         passed = passed && (ok || ok2);
 
-        // TODO: please uncomment/update after 8132973 fix
-        /*
         IIs testIs_4 = new IIs() {
 
             private boolean b;
@@ -1010,11 +996,7 @@
         };
         ok = checkInfo(testIs_4.getClass(), "IIs-4", false);
         System.out.println("OK = " + ok);
-        ok2 = checkAlternativeInfo(testIs_4.getClass(), "IIs-4");
-        System.out.println("OK = " + ok2);
-        passed = passed && (ok || ok2);
-        */
-
+        passed = passed && ok;
 
         //----------------------------------------------------------------------
 
--- a/jdk/test/java/beans/Introspector/BeanPropertyTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/beans/Introspector/BeanPropertyTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -38,8 +38,6 @@
  * @author a.stepanov
  * @run main BeanPropertyTest
  */
-
-
 public class BeanPropertyTest {
 
     private final static String  DESCRIPTION = "TEST";
@@ -853,8 +851,7 @@
         public void removePropertyChangeListener(PropertyChangeListener l) {}
     }
 
-    // JDK-8155103
-    public static enum E {
+    public enum E {
 
         ONE,
         TWO {
@@ -889,7 +886,7 @@
 
     }
 
-    private static enum EB {
+    private enum EB {
 
         TRUE(true), FALSE(false);
 
@@ -1036,7 +1033,7 @@
             G13.class, // S13.class, // TODO: please update after 8154756 fix
             // G14.class, S14.class, // TODO: please update after 8132888 fix or
                                      // remove these cases if it is not an issue
-            // GS.class, // TODO: please update after 8132973 fix
+            GS.class,
             getX.class, setX.class,
             Self.class, SelfArr.class
         };
@@ -1064,9 +1061,7 @@
         // enums
 
         Class<?> enumCases[] = {
-
-            // TODO: uncomment/update after 8155103 fix
-            //E.class, E.TWO.getClass(), EB.class
+            E.class, E.TWO.getClass(), EB.class
         };
 
         int ne = 1;
@@ -1076,7 +1071,7 @@
             ne++;
 
             BeanInfo i;
-            try { i = Introspector.getBeanInfo(c, Object.class); }
+            try { i = Introspector.getBeanInfo(c, Enum.class); }
             catch (IntrospectionException e) { throw new RuntimeException(e); }
             boolean ok = checkInfo(i, !ignoreVals(c));
             System.out.println(ok ? "OK" : "NOK");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/beans/Introspector/TestMethodOrderDependence.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.io.Serializable;
+import java.util.AbstractList;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Vector;
+
+/**
+ * @test
+ * @bug 8156043
+ */
+public final class TestMethodOrderDependence {
+
+    public static class Base {
+
+        public Object getI() {
+            return null;
+        }
+
+        public Object getE() {
+            return null;
+        }
+    }
+
+    public static class Super extends Base {
+
+        public Number getI() {
+            return null;
+        }
+        public Comparable<?> getE() {
+            return null;
+        }
+    }
+
+    public static class Sub extends Super {
+
+        public Integer getI() {
+            return null;
+        }
+
+        public void setFoo(Character foo) {
+        }
+
+        public void setFoo(String foo) {
+        }
+
+        public void setFoo(Object[] foo) {
+        }
+
+        public void setFoo(Enum foo) {
+        }
+
+        public void setFoo(Long foo) {
+        }
+
+        public void setFoo(Long[] foo) {
+        }
+
+        public void setFoo(Long foo, int i) {
+        }
+
+        public void setFoo(Object foo) {
+        }
+
+        public void setFoo(AbstractList foo) {
+        }
+
+        public void setFoo(ArrayList foo) {
+        }
+
+        public void setFoo(Integer foo) {
+        }
+
+        public void setFoo(Number foo) {
+        }
+
+        public void setFoo(Comparable<?> foo) {
+        }
+
+        public void setFoo(Serializable foo) {
+        }
+
+        public void setFoo(Vector<?> foo) {
+        }
+
+        public void setFoo(long foo) {
+        }
+
+        public void setFoo(int foo) {
+        }
+
+        public Enum getE() {
+            return null;
+        }
+
+        public void setE(Enum e) {
+        }
+
+        public void setE(Float e) {
+        }
+
+        public void setE(Long e) {
+        }
+    }
+
+    public static void main(final String[] args) throws Exception {
+        final BeanInfo beanInfo = Introspector.getBeanInfo(Sub.class);
+        final PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
+        for (final PropertyDescriptor pd : pds) {
+            System.err.println("pd = " + pd);
+            final Class<?> type = pd.getPropertyType();
+            if (type != Class.class && type != Long[].class
+                    && type != Integer.class && type != Enum.class) {
+                throw new RuntimeException(Arrays.toString(pds));
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/beans/Statement/ClassForName/ClassForName.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.beans.Expression;
+import java.beans.Statement;
+
+/**
+ * @test
+ * @bug 8146313
+ * @run main/othervm ClassForName
+ * @run main/othervm/policy=java.policy -Djava.security.manager ClassForName
+ */
+public final class ClassForName {
+
+    static boolean initialized;
+
+    static final String[] classes = {
+            "A.A", "java.lang.String", "ClassForName$Bean", "sun.awt.SunToolkit"
+    };
+
+    static final ClassLoader appl = new Object() {}.getClass().getClassLoader();
+
+    static final ClassLoader[] loaders = {
+            String.class.getClassLoader(), null, appl
+    };
+
+    static boolean[] inits = {false, true};
+
+    public static void main(final String[] args) throws Exception {
+        // Check that the Class.forName(name, boolean, classloader) is executed
+        // when requested via JavaBeans
+        simpleTest();
+
+        // Check that the Class.forName and Expression returns the same classes
+        for (final String cls : classes) {
+            complexTest1Args(cls);
+            for (final ClassLoader loader : loaders) {
+                for (final boolean init : inits) {
+                    complexTest3Args(cls, loader, init);
+                }
+            }
+        }
+    }
+
+    private static void simpleTest() throws Exception {
+        // load the class without initialization
+        new Statement(Class.class, "forName", new Object[]{
+                "ClassForName$Bean", false, Bean.class.getClassLoader()
+        }).execute();
+        if (initialized) {
+            throw new RuntimeException("Should not be initialized");
+        }
+
+        // load the class and initialize it
+        new Statement(Class.class, "forName", new Object[]{
+                "ClassForName$Bean", true, Bean.class.getClassLoader()
+        }).execute();
+        if (!initialized) {
+            throw new RuntimeException("Should be initialized");
+        }
+    }
+
+    private static void complexTest1Args(final String cls) {
+        // load via standard Class.forName();
+        Class<?> classForName = null;
+        try {
+            classForName = Class.forName(cls);
+        } catch (final Exception ignored) {
+        }
+
+        // load via Expression.execute()
+        Class<?> classStatement = null;
+        try {
+            final Expression exp = new Expression(Class.class, "forName",
+                                                  new Object[]{
+                                                          cls
+                                                  });
+            exp.execute();
+            classStatement = (Class<?>) exp.getValue();
+        } catch (final Exception ignored) {
+        }
+        if (classForName != classStatement) {
+            System.err.println(classForName);
+            System.err.println(classStatement);
+            throw new RuntimeException();
+        }
+    }
+
+    private static void complexTest3Args(final String cls,
+                                         final ClassLoader loader,
+                                         final boolean init) {
+        // load via standard Class.forName();
+        Class<?> classForName = null;
+        Class<?> excForName = null;
+        try {
+            classForName = Class.forName(cls, init, loader);
+        } catch (final Exception e) {
+            excForName = e.getClass();
+        }
+
+        // load via Expression.execute()
+        Class<?> classStatement = null;
+        Class<?> excStatement = null;
+        try {
+            final Expression exp = new Expression(Class.class, "forName",
+                                                  new Object[]{
+                                                          cls, init, loader
+                                                  });
+            exp.execute();
+            classStatement = (Class<?>) exp.getValue();
+        } catch (final Exception e) {
+            excStatement = e.getClass();
+        }
+        if (classForName != classStatement) {
+            System.err.println(classForName);
+            System.err.println(classStatement);
+            throw new RuntimeException();
+        }
+        if (excForName != excStatement) {
+            System.err.println(excForName);
+            System.err.println(excStatement);
+            throw new RuntimeException();
+        }
+    }
+
+    public static final class Bean {
+
+        static {
+            initialized = true;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/beans/Statement/ClassForName/java.policy	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,1 @@
+;
\ No newline at end of file
--- a/jdk/test/java/beans/XMLDecoder/8028054/TestConstructorFinder.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/beans/XMLDecoder/8028054/TestConstructorFinder.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,8 +34,12 @@
  * @summary Tests that cached constructors have synchronized access
  * @author Sergey Malenkov
  * @modules java.desktop/com.sun.beans.finder
+ *          java.activation
+ *          java.transaction
+ *          java.corba
+ *          java.xml.bind
  * @compile -XDignore.symbol.file TestConstructorFinder.java
- * @run main TestConstructorFinder
+ * @run main/othervm -addmods java.activation -addmods java.transaction -addmods java.corba -addmods java.xml.bind TestConstructorFinder
  */
 
 public class TestConstructorFinder {
--- a/jdk/test/java/beans/XMLDecoder/8028054/TestMethodFinder.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/beans/XMLDecoder/8028054/TestMethodFinder.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,8 +34,12 @@
  * @summary Tests that cached methods have synchronized access
  * @author Sergey Malenkov
  * @modules java.desktop/com.sun.beans.finder
+ *          java.activation
+ *          java.transaction
+ *          java.corba
+ *          java.xml.bind
  * @compile -XDignore.symbol.file TestMethodFinder.java
- * @run main TestMethodFinder
+ * @run main/othervm -addmods java.activation -addmods java.transaction -addmods java.corba -addmods java.xml.bind TestMethodFinder
  */
 
 public class TestMethodFinder {
--- a/jdk/test/java/lang/Class/GetModuleTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/Class/GetModuleTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -25,6 +25,7 @@
  * @test
  * @summary Exercise Class#getModule
  * @modules java.base/jdk.internal.org.objectweb.asm
+ *          java.base/jdk.internal.misc
  *          java.desktop
  * @run testng GetModuleTest
  */
@@ -35,7 +36,7 @@
 
 import jdk.internal.org.objectweb.asm.ClassWriter;
 import static jdk.internal.org.objectweb.asm.Opcodes.*;
-import sun.misc.Unsafe;
+import jdk.internal.misc.Unsafe;
 
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
--- a/jdk/test/java/lang/ClassLoader/EndorsedDirs.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/ClassLoader/EndorsedDirs.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,20 +24,23 @@
 /*
  * @test
  * @bug 8060206 8067366
+ * @library /lib/testlibrary
  * @summary Endorsed standards and override mechanism is removed
  */
 
-import java.io.*;
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
+import jdk.testlibrary.ProcessTools;
+
+import java.util.stream.Stream;
 
 public class EndorsedDirs {
+    private static String TEST_CLASSES = System.getProperty("test.classes", ".");
+
     private static String[] VALUES = new String[] {
             null,
             "",
             "\"\""
     };
+
     public static void main(String... args) throws Exception {
         String value = System.getProperty("java.endorsed.dirs");
         System.out.format("java.endorsed.dirs = '%s'%n", value);
@@ -64,59 +67,20 @@
         start(2, "-Djava.endorsed.dirs=\"\"");
     }
 
-    static ProcessBuilder newProcessBuilder(int testParam, String... args) throws Exception {
-        List<String> commands = new ArrayList<>();
-        String java = System.getProperty("java.home") + "/bin/java";
-        commands.add(java);
-        for (String s : args) {
-            commands.add(s);
-        }
-        String cpath = System.getProperty("test.classes", ".");
-        commands.add("-cp");
-        commands.add(cpath);
-        commands.add("EndorsedDirs");
-        commands.add(String.valueOf(testParam));
-
-        System.out.println("Testing " + commands.stream().collect(Collectors.joining(" ")));
-        return new ProcessBuilder(commands);
+    static String[] launchOptions(int testParam, String... args) {
+        return Stream.concat(Stream.of(args),
+                             Stream.of("-cp", TEST_CLASSES, "EndorsedDirs",
+                                       String.valueOf(testParam)))
+                     .toArray(String[]::new);
     }
 
     static void start(int testParam, String... args) throws Exception {
-        start(newProcessBuilder(testParam, args), false);
+        ProcessTools.executeTestJava(launchOptions(testParam, args))
+                    .shouldHaveExitValue(0);
     }
 
     static void fatalError(int testParam, String... args) throws Exception {
-        start(newProcessBuilder(testParam, args), true);
-    }
-
-    static void start(ProcessBuilder pb, boolean fatalError) throws Exception {
-        final Process process = pb.start();
-        BufferedReader errorStream = new BufferedReader(
-                new InputStreamReader(process.getErrorStream()));
-        BufferedReader outStream = new BufferedReader(
-                new InputStreamReader(process.getInputStream()));
-        String errorLine;
-        StringBuilder errors = new StringBuilder();
-        String outLines;
-        while ((errorLine = errorStream.readLine()) != null) {
-            errors.append(errorLine).append("\n");
-        }
-        while ((outLines = outStream.readLine()) != null) {
-            System.out.println(outLines);
-        }
-        errorLine = errors.toString();
-        System.err.println(errorLine);
-        process.waitFor(1000, TimeUnit.MILLISECONDS);
-        int exitStatus = process.exitValue();
-        if (fatalError) {
-            if (exitStatus == 0) {
-                throw new RuntimeException("Expected fatal error");
-            }
-            if (!errorLine.contains("Could not create the Java Virtual Machine")) {
-                throw new RuntimeException(errorLine);
-            }
-        } else if (exitStatus != 0) {
-            throw new RuntimeException("Failed: " + errorLine);
-        }
+        ProcessTools.executeTestJava(launchOptions(testParam, args))
+                    .stderrShouldContain("Could not create the Java Virtual Machine");
     }
 }
--- a/jdk/test/java/lang/ClassLoader/ExtDirs.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/ClassLoader/ExtDirs.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,21 +24,24 @@
 /*
  * @test
  * @bug 8060206 8067366
+ * @library /lib/testlibrary
  * @summary Extension mechanism is removed
  */
 
-import java.io.*;
+import jdk.testlibrary.ProcessTools;
+
 import java.lang.Integer;
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 public class ExtDirs {
+    private static String TEST_CLASSES = System.getProperty("test.classes", ".");
+
     private static String[] VALUES = new String[] {
             null,
             "",
             "\"\""
     };
+
     public static void main(String... args) throws Exception {
         String value = System.getProperty("java.ext.dirs");
         System.out.format("java.ext.dirs = '%s'%n", value);
@@ -65,59 +68,20 @@
         start(2, "-Djava.ext.dirs=\"\"");
     }
 
-    static ProcessBuilder newProcessBuilder(int testParam, String... args) throws Exception {
-        List<String> commands = new ArrayList<>();
-        String java = System.getProperty("java.home") + "/bin/java";
-        commands.add(java);
-        for (String s : args) {
-            commands.add(s);
-        }
-        String cpath = System.getProperty("test.classes", ".");
-        commands.add("-cp");
-        commands.add(cpath);
-        commands.add("ExtDirs");
-        commands.add(String.valueOf(testParam));
-
-        System.out.println("Testing " + commands.stream().collect(Collectors.joining(" ")));
-        return new ProcessBuilder(commands);
+    static String[] launchOptions(int testParam, String... args) {
+        return Stream.concat(Stream.of(args),
+                             Stream.of("-cp", TEST_CLASSES, "ExtDirs",
+                                       String.valueOf(testParam)))
+                     .toArray(String[]::new);
     }
 
     static void start(int testParam, String... args) throws Exception {
-        start(newProcessBuilder(testParam, args), false);
+        ProcessTools.executeTestJava(launchOptions(testParam, args))
+                    .shouldHaveExitValue(0);
     }
 
     static void fatalError(int testParam, String... args) throws Exception {
-        start(newProcessBuilder(testParam, args), true);
-    }
-
-    static void start(ProcessBuilder pb, boolean fatalError) throws Exception {
-        final Process process = pb.start();
-        BufferedReader errorStream = new BufferedReader(
-                new InputStreamReader(process.getErrorStream()));
-        BufferedReader outStream = new BufferedReader(
-                new InputStreamReader(process.getInputStream()));
-        String errorLine;
-        StringBuilder errors = new StringBuilder();
-        String outLines;
-        while ((errorLine = errorStream.readLine()) != null) {
-            errors.append(errorLine).append("\n");
-        }
-        while ((outLines = outStream.readLine()) != null) {
-            System.out.println(outLines);
-        }
-        errorLine = errors.toString();
-        System.err.println(errorLine);
-        process.waitFor(1000, TimeUnit.MILLISECONDS);
-        int exitStatus = process.exitValue();
-        if (fatalError) {
-            if (exitStatus == 0) {
-                throw new RuntimeException("Expected fatal error");
-            }
-            if (!errorLine.contains("Could not create the Java Virtual Machine")) {
-                throw new RuntimeException(errorLine);
-            }
-        } else if (exitStatus != 0) {
-            throw new RuntimeException("Failed: " + errorLine);
-        }
+        ProcessTools.executeTestJava(launchOptions(testParam, args))
+                    .stderrShouldContain("Could not create the Java Virtual Machine");
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/ProcessBuilder/SkipTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8155808
+ * @run main SkipTest
+ * @summary verify skip method of Process Input Stream
+ */
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class SkipTest {
+    private static final String javaExe =
+            System.getProperty("java.home") +
+                    File.separator + "bin" + File.separator + "java";
+
+    private static final String classpath =
+            System.getProperty("java.class.path");
+
+    static final int BLOCK_SIZE = 10000;
+
+
+    public static void main(String[] args) throws Throwable {
+
+        // Start a Process to generate the test data to stdout and stderr
+        ProcessBuilder pb = new ProcessBuilder(javaExe, "-classpath", classpath, "SkipTest$GenerateData");
+        System.out.printf("cmd: %s%n", pb.command());
+        Process process = pb.start();
+
+        /*
+         * Verify the data expected is received mixing reads and skip.
+         */
+        try (InputStream in = process.getInputStream()) {
+
+            // Note: Process.getInputStream() actually returns a BufferedInputStream whose
+            // skip() method works perfectly, partially obscuring the bug. Only when the
+            // BufferedInputStream's buffer is drained, and it passes the skip() call to
+            // the underlying native stream, does the problem occur.
+
+            long n = in.skip(-1);
+            if (n != 0) {
+                throw new AssertionError("skip(-1) should return 0");
+            }
+            n = in.skip(0);
+            if (n != 0) {
+                throw new AssertionError("skip(0) should return 0");
+            }
+
+            // Now iterate all the data blocks
+            int header;
+            for (int expectedHeader = 'A'; (header = in.read()) != -1; expectedHeader++) {
+                // The header byte should be simple 'A' to 'Z'.
+                // When the bug hits, we will get lowercase letters instead.
+                if (header != expectedHeader) {
+                    throw new AssertionError("header char wrong, expected: " +
+                            expectedHeader + ", actual: " + header);
+                }
+
+                // Handle the data bytes.
+                // If the correct number of bytes are not skipped,
+                // then subsequent reads become out-of-sync;
+                int remaining = BLOCK_SIZE;
+                do {
+                    remaining -= in.skip(remaining);
+                } while (remaining != 0);
+            }
+            n = in.skip(1);
+            if (n != 0) {
+                throw new AssertionError("skip(1) at eof should return 0");
+            }
+        }
+
+        /**
+         * Do the same for the standard error stream.
+         */
+        try (InputStream in = process.getErrorStream()) {
+            long n = in.skip(-1);
+            if (n != 0) {
+                throw new AssertionError("skip(-1) should return 0");
+            }
+            n = in.skip(0);
+            if (n != 0) {
+                throw new AssertionError("skip(0) should return 0");
+            }
+
+            // Now iterate all the data blocks
+            int header;
+            for (int expectedHeader = 'A'; (header = in.read()) != -1; expectedHeader++) {
+                // The header byte should be simple 'A' to 'Z'.
+                // When the bug hits, we will get lowercase letters instead.
+                if (header != expectedHeader) {
+                    throw new AssertionError("header char wrong, expected: " +
+                            expectedHeader + ", actual: " + header);
+                }
+
+                // Handle the data bytes.
+                // If the correct number of bytes are not skipped,
+                // then subsequent reads become out-of-sync;
+                int remaining = BLOCK_SIZE;
+                do {
+                    remaining -= in.skip(remaining);
+                } while (remaining != 0);
+            }
+            n = in.skip(1);
+            if (n != 0) {
+                throw new AssertionError("skip(1) at eof should return 0");
+            }
+        }
+    }
+
+    /**
+     * Alternate main to generate the test data to standard output
+     * and standard error.
+     */
+    static class GenerateData {
+
+        public static void main(String[] args) {
+            // Generate test data containing a series of data blocks of length BLOCK_SIZE,
+            // each with a one-byte header. For example's sake, the "header" is a capital letter,
+            // and the "data" is the lowercase version of that letter repeated BLOCK_SIZE times:
+            try (OutputStream out = new BufferedOutputStream(System.out)) {
+                for (int header = 'A'; header <= 'Z'; header++) {
+                    out.write(header);
+
+                    int data = Character.toLowerCase(header);
+                    for (int i = 0; i < BLOCK_SIZE; i++) {
+                        out.write(data);
+                    }
+                }
+            } catch (IOException ioe) {
+                ioe.printStackTrace();
+                System.exit(1);
+            }
+            // Generate the same data to the error output
+            try (OutputStream err = new BufferedOutputStream(System.err)) {
+                for (int header = 'A'; header <= 'Z'; header++) {
+                    err.write(header);
+
+                    int data = Character.toLowerCase(header);
+                    for (int i = 0; i < BLOCK_SIZE; i++) {
+                        err.write(data);
+                    }
+                }
+            } catch (IOException ioe) {
+                ioe.printStackTrace();
+                System.exit(1);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/annotation/EqualityTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8071859
+ * @summary Check annotation equality behavior against the invocation handler
+ */
+
+import java.lang.annotation.*;
+import java.lang.reflect.*;
+
+@TestAnnotation
+public class EqualityTest {
+    public static void main(String... args) throws Exception {
+        TestAnnotation annotation =
+            EqualityTest.class.getAnnotation(TestAnnotation.class);
+        InvocationHandler handler = Proxy.getInvocationHandler(annotation);
+
+        testEquality(annotation, handler,    false);
+        testEquality(annotation, annotation, true);
+        testEquality(handler,    handler,    true);
+    }
+
+    private static void testEquality(Object a, Object b, boolean expected) {
+        boolean result = a.equals(b);
+        if (result != b.equals(a) || result != expected)
+            throw new RuntimeException("Unexpected result");
+    }
+}
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface TestAnnotation {
+}
+
--- a/jdk/test/java/lang/instrument/ManyMethodsBenchmarkAgent.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/instrument/ManyMethodsBenchmarkAgent.java	Wed Jul 05 21:51:13 2017 +0200
@@ -29,6 +29,7 @@
  *
  * @modules jdk.compiler
  *          java.instrument
+ *          jdk.zipfs
  * @run build ManyMethodsBenchmarkApp ManyMethodsBenchmarkAgent
  * @run shell MakeJAR3.sh ManyMethodsBenchmarkAgent 'Can-Retransform-Classes: true'
  * @run main/othervm -javaagent:ManyMethodsBenchmarkAgent.jar ManyMethodsBenchmarkApp
--- a/jdk/test/java/lang/instrument/PremainClass/NoPremainAgentTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/instrument/PremainClass/NoPremainAgentTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
  * @summary test when the agent's class is missing the premain() function.
  * @library /lib/testlibrary
  * @modules java.management
+ *          java.instrument
  * @run build jdk.testlibrary.* DummyMain
  * @run shell ../MakeJAR3.sh NoPremainAgent
  * @run main/othervm -XX:-CreateCoredumpOnCrash NoPremainAgentTest
--- a/jdk/test/java/lang/instrument/PremainClass/ZeroArgPremainAgentTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/instrument/PremainClass/ZeroArgPremainAgentTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
  * @summary test when the agent's class has a zero arg premain() function.
  * @library /lib/testlibrary
  * @modules java.management
+ *          java.instrument
  * @run build jdk.testlibrary.* DummyMain
  * @run shell ../MakeJAR3.sh ZeroArgPremainAgent
  * @run main/othervm -XX:-CreateCoredumpOnCrash ZeroArgPremainAgentTest
--- a/jdk/test/java/lang/instrument/RedefineMethodInBacktrace.sh	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/instrument/RedefineMethodInBacktrace.sh	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
 # @author Stefan Karlsson
 #
 # @modules java.instrument
-#          java.management
+#          jdk.management
 # @run shell MakeJAR3.sh RedefineMethodInBacktraceAgent 'Can-Redefine-Classes: true'
 # @run build RedefineMethodInBacktraceTarget RedefineMethodInBacktraceApp
 # @run shell RedefineMethodInBacktrace.sh
--- a/jdk/test/java/lang/invoke/PrivateInvokeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/invoke/PrivateInvokeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,8 +34,6 @@
 import java.lang.reflect.*;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 import org.junit.*;
 import static org.junit.Assert.*;
 
--- a/jdk/test/java/lang/module/AutomaticModulesTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/module/AutomaticModulesTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -24,14 +24,14 @@
 /**
  * @test
  * @library /lib/testlibrary
- * @build AutomaticModulesTest ModuleUtils
+ * @build AutomaticModulesTest ModuleUtils JarUtils
  * @run testng AutomaticModulesTest
  * @summary Basic tests for automatic modules
  */
 
 import java.io.IOException;
-import java.io.OutputStream;
 import java.lang.module.Configuration;
+import java.lang.module.FindException;
 import java.lang.module.ModuleDescriptor;
 import java.lang.module.ModuleDescriptor.Exports;
 import java.lang.module.ModuleDescriptor.Requires.Modifier;
@@ -46,11 +46,9 @@
 import java.util.Optional;
 import java.util.Set;
 import java.util.jar.Attributes;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.jar.JarOutputStream;
 import java.util.jar.Manifest;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -62,10 +60,8 @@
     private static final Path USER_DIR
          = Paths.get(System.getProperty("user.dir"));
 
-
     @DataProvider(name = "names")
     public Object[][] createNames() {
-
         return new Object[][] {
 
             // JAR file name                module-name[/version]
@@ -98,12 +94,22 @@
         };
     }
 
+    // JAR file names that do not map to a legal module name
+    @DataProvider(name = "badnames")
+    public Object[][] createBadNames() {
+        return new Object[][]{
+
+            { ".jar",     null },
+            { "_.jar",    null }
+
+        };
+    }
+
     /**
      * Test mapping of JAR file names to module names
      */
     @Test(dataProvider = "names")
     public void testNames(String fn, String mid) throws IOException {
-
         String[] s = mid.split("/");
         String mn = s[0];
         String vs = (s.length == 2) ? s[1] : null;
@@ -112,7 +118,7 @@
         Path jf = dir.resolve(fn);
 
         // create empty JAR file
-        createJarFile(jf);
+        createDummyJarFile(jf);
 
         // create a ModuleFinder to find modules in the directory
         ModuleFinder finder = ModuleFinder.of(dir);
@@ -128,17 +134,32 @@
         } else {
             assertEquals(descriptor.version().get().toString(), vs);
         }
+    }
 
+
+    /**
+     * Test impossible mapping of JAR files to modules names
+     */
+    @Test(dataProvider = "badnames", expectedExceptions = FindException.class)
+    public void testBadNames(String fn, String ignore) throws IOException {
+        Path dir = Files.createTempDirectory(USER_DIR, "mods");
+        Path jf = dir.resolve(fn);
+
+        // create empty JAR file
+        createDummyJarFile(jf);
+
+        // should throw FindException
+        ModuleFinder.of(dir).findAll();
     }
 
 
     /**
      * Test all packages are exported
      */
-    public void testExports() throws IOException {
+    public void testPackages() throws IOException {
         Path dir = Files.createTempDirectory(USER_DIR, "mods");
-        createJarFile(dir.resolve("m1.jar"),
-                      "p/C1.class", "p/C2.class", "q/C1.class");
+        createDummyJarFile(dir.resolve("m1.jar"),
+                           "p/C1.class", "p/C2.class", "q/C1.class");
 
         ModuleFinder finder = ModuleFinder.of(dir);
 
@@ -158,6 +179,84 @@
 
 
     /**
+     * Test class file in JAR file where the entry does not correspond to a
+     * legal package name.
+     */
+    @Test(expectedExceptions = FindException.class)
+    public void testBadPackage() throws IOException {
+        Path dir = Files.createTempDirectory(USER_DIR, "mods");
+        createDummyJarFile(dir.resolve("m1.jar"), "p-/T.class");
+
+        // should throw FindException
+        ModuleFinder.of(dir).findAll();
+    }
+
+
+    /**
+     * Test JAR file with META-INF/services configuration file
+     */
+    public void testServicesConfiguration() throws IOException {
+        String service = "p.S";
+        String provider = "p.S1";
+
+        Path tmpdir = Files.createTempDirectory(USER_DIR, "tmp");
+        Path services = tmpdir.resolve("META-INF").resolve("services");
+        Files.createDirectories(services);
+        Files.write(services.resolve(service), Set.of(provider));
+        Path dir = Files.createTempDirectory(USER_DIR, "mods");
+        JarUtils.createJarFile(dir.resolve("m1.jar"), tmpdir);
+
+        ModuleFinder finder = ModuleFinder.of(dir);
+
+        Optional<ModuleReference> mref = finder.find("m1");
+        assertTrue(mref.isPresent(), "m1 not found");
+
+        ModuleDescriptor descriptor = mref.get().descriptor();
+        assertTrue(descriptor.provides().size() == 1);
+        assertTrue(descriptor.provides().containsKey(service));
+        ModuleDescriptor.Provides provides = descriptor.provides().get(service);
+        assertTrue(provides.providers().size() == 1);
+        assertTrue(provides.providers().contains((provider)));
+    }
+
+
+    // META-INF/services configuration file/entries that are not legal
+    @DataProvider(name = "badproviders")
+    public Object[][] createProviders() {
+        return new Object[][] {
+
+                // service type         provider type
+
+                { "p.S",                "-" },
+                { "p.S",                ".S1" },
+                { "p.S",                "S1." },
+
+                { "-",                  "p.S1" },
+                { ".S",                 "p.S1" },
+        };
+    }
+
+    /**
+     * Test JAR file with META-INF/services configuration file with bad
+     * values or names.
+     */
+    @Test(dataProvider = "badproviders", expectedExceptions = FindException.class)
+    public void testBadServicesConfiguration(String service, String provider)
+        throws IOException
+    {
+        Path tmpdir = Files.createTempDirectory(USER_DIR, "tmp");
+        Path services = tmpdir.resolve("META-INF").resolve("services");
+        Files.createDirectories(services);
+        Files.write(services.resolve(service), Set.of(provider));
+        Path dir = Files.createTempDirectory(USER_DIR, "mods");
+        JarUtils.createJarFile(dir.resolve("m1.jar"), tmpdir);
+
+        // should throw FindException
+        ModuleFinder.of(dir).findAll();
+    }
+
+
+    /**
      * Test that a JAR file with a Main-Class attribute results
      * in a module with a main class.
      */
@@ -170,7 +269,7 @@
         attrs.put(Attributes.Name.MAIN_CLASS, mainClass);
 
         Path dir = Files.createTempDirectory(USER_DIR, "mods");
-        createJarFile(dir.resolve("m1.jar"), man);
+        createDummyJarFile(dir.resolve("m1.jar"), man);
 
         ModuleFinder finder = ModuleFinder.of(dir);
 
@@ -184,6 +283,36 @@
     }
 
 
+    // Main-Class files that do not map to a legal Java identifier
+    @DataProvider(name = "badmainclass")
+    public Object[][] createBadMainClass() {
+        return new Object[][]{
+
+            { "p-.Main",     null },
+            { ".Main",       null }
+
+        };
+    }
+
+    /**
+     * Test that a JAR file with a Main-Class attribute that is not a valid
+     * Java identifier
+     */
+    @Test(dataProvider = "badmainclass", expectedExceptions = FindException.class)
+    public void testBadMainClass(String mainClass, String ignore) throws IOException {
+        Manifest man = new Manifest();
+        Attributes attrs = man.getMainAttributes();
+        attrs.put(Attributes.Name.MANIFEST_VERSION, "1.0.0");
+        attrs.put(Attributes.Name.MAIN_CLASS, mainClass);
+
+        Path dir = Files.createTempDirectory(USER_DIR, "mods");
+        createDummyJarFile(dir.resolve("m1.jar"), man);
+
+        // should throw FindException
+        ModuleFinder.of(dir).findAll();
+    }
+
+
     /**
      * Basic test of a configuration created with automatic modules.
      *   m1 requires m2*
@@ -201,8 +330,8 @@
 
         // m2 and m3 are automatic modules
         Path dir = Files.createTempDirectory(USER_DIR, "mods");
-        createJarFile(dir.resolve("m2.jar"), "p/T.class");
-        createJarFile(dir.resolve("m3.jar"), "q/T.class");
+        createDummyJarFile(dir.resolve("m2.jar"), "p/T.class");
+        createDummyJarFile(dir.resolve("m3.jar"), "q/T.class");
 
         // module finder locates m1 and the modules in the directory
         ModuleFinder finder
@@ -252,7 +381,6 @@
      *   m4*
      */
     public void testInConfiguration2() throws IOException {
-
         ModuleDescriptor descriptor1
             =  new ModuleDescriptor.Builder("m1")
                 .requires("m2")
@@ -267,8 +395,8 @@
 
         // m3 and m4 are automatic modules
         Path dir = Files.createTempDirectory(USER_DIR, "mods");
-        createJarFile(dir.resolve("m3.jar"), "p/T.class");
-        createJarFile(dir.resolve("m4.jar"), "q/T.class");
+        createDummyJarFile(dir.resolve("m3.jar"), "p/T.class");
+        createDummyJarFile(dir.resolve("m4.jar"), "q/T.class");
 
         // module finder locates m1 and the modules in the directory
         ModuleFinder finder
@@ -315,7 +443,6 @@
         assertTrue(m4.reads().contains(m2));
         assertTrue(m4.reads().contains(m3));
         testReadAllBootModules(cf, "m4");    // m4 reads all modules in boot layer
-
     }
 
 
@@ -327,7 +454,6 @@
      *   m4*
      */
     public void testInConfiguration3() throws IOException {
-
         ModuleDescriptor descriptor1
             =  new ModuleDescriptor.Builder("m1")
                 .requires("m2")
@@ -342,8 +468,8 @@
 
         // m3 and m4 are automatic modules
         Path dir = Files.createTempDirectory(USER_DIR, "mods");
-        createJarFile(dir.resolve("m3.jar"), "p/T.class");
-        createJarFile(dir.resolve("m4.jar"), "q/T.class");
+        createDummyJarFile(dir.resolve("m3.jar"), "p/T.class");
+        createDummyJarFile(dir.resolve("m4.jar"), "q/T.class");
 
         // module finder locates m1 and the modules in the directory
         ModuleFinder finder
@@ -396,7 +522,6 @@
         assertTrue(m4.reads().contains(m2));
         assertTrue(m4.reads().contains(m3));
         testReadAllBootModules(cf, "m4");    // m4 reads all modules in boot layer
-
     }
 
 
@@ -412,8 +537,8 @@
 
         // m2 and m3 are simple JAR files
         Path dir = Files.createTempDirectory(USER_DIR, "mods");
-        createJarFile(dir.resolve("m2.jar"), "p/T.class");
-        createJarFile(dir.resolve("m3.jar"), "q/T2.class");
+        createDummyJarFile(dir.resolve("m2.jar"), "p/T.class");
+        createDummyJarFile(dir.resolve("m3.jar"), "q/T2.class");
 
         // module finder locates m1 and the modules in the directory
         ModuleFinder finder
@@ -447,7 +572,7 @@
      */
     public void testMisc() throws IOException {
         Path dir = Files.createTempDirectory(USER_DIR, "mods");
-        Path m1_jar = createJarFile(dir.resolve("m1.jar"), "p/T.class");
+        Path m1_jar = createDummyJarFile(dir.resolve("m1.jar"), "p/T.class");
 
         ModuleFinder finder = ModuleFinder.of(m1_jar);
 
@@ -535,38 +660,32 @@
      * Creates a JAR file, optionally with a manifest, and with the given
      * entries. The entries will be empty in the resulting JAR file.
      */
-    static Path createJarFile(Path file, Manifest man, String... entries)
+    static Path createDummyJarFile(Path jarfile, Manifest man, String... entries)
         throws IOException
     {
-        try (OutputStream out = Files.newOutputStream(file)) {
-            try (JarOutputStream jos = new JarOutputStream(out)) {
-
-                if (man != null) {
-                    JarEntry je = new JarEntry(JarFile.MANIFEST_NAME);
-                    jos.putNextEntry(je);
-                    man.write(jos);
-                    jos.closeEntry();
-                }
+        Path dir = Files.createTempDirectory(USER_DIR, "tmp");
 
-                for (String entry : entries) {
-                    JarEntry je = new JarEntry(entry);
-                    jos.putNextEntry(je);
-                    jos.closeEntry();
-                }
+        for (String entry : entries) {
+            Path file = dir.resolve(entry);
+            Path parent = file.getParent();
+            if (parent != null)
+                Files.createDirectories(parent);
+            Files.createFile(file);
+        }
 
-            }
-        }
-        return file;
+        Path[] paths = Stream.of(entries).map(Paths::get).toArray(Path[]::new);
+        JarUtils.createJarFile(jarfile, man, dir, paths);
+        return jarfile;
     }
 
     /**
      * Creates a JAR file and with the given entries. The entries will be empty
      * in the resulting JAR file.
      */
-    static Path createJarFile(Path file, String... entries)
+    static Path createDummyJarFile(Path jarfile, String... entries)
         throws IOException
     {
-        return createJarFile(file, null, entries);
+        return createDummyJarFile(jarfile, null, entries);
     }
 
 }
--- a/jdk/test/java/lang/module/ModuleDescriptorTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/module/ModuleDescriptorTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @modules java.base/jdk.internal.module
  * @run testng ModuleDescriptorTest
  * @summary Basic test for java.lang.module.ModuleDescriptor and its builder
  */
@@ -47,6 +48,7 @@
 
 import static java.lang.module.ModuleDescriptor.Requires.Modifier.*;
 
+import jdk.internal.module.ModuleInfoWriter;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 import static org.testng.Assert.*;
@@ -133,8 +135,8 @@
 
     @Test(expectedExceptions = IllegalArgumentException.class)
     public void testRequiresSelfWithRequires() {
-        Requires r = requires(null, "m");
-        new Builder("m").requires(r);
+        Requires r = requires(null, "foo");
+        new Builder("foo").requires(r);
     }
 
     @Test(expectedExceptions = IllegalArgumentException.class)
@@ -171,6 +173,21 @@
         assertTrue(r2.compareTo(r1) == -n);
     }
 
+    public void testRequiresCompareWithDifferentModifiers() {
+        Requires r1 = requires(EnumSet.of(PUBLIC), "foo");
+        Requires r2 = requires(EnumSet.of(SYNTHETIC), "foo");
+        int n = Integer.compare(1 << PUBLIC.ordinal(), 1 << SYNTHETIC.ordinal());
+        assertTrue(r1.compareTo(r2) == n);
+        assertTrue(r2.compareTo(r1) == -n);
+    }
+
+    public void testRequiresCompareWithSameModifiers() {
+        Requires r1 = requires(EnumSet.of(SYNTHETIC), "foo");
+        Requires r2 = requires(EnumSet.of(SYNTHETIC), "foo");
+        assertTrue(r1.compareTo(r2) == 0);
+        assertTrue(r2.compareTo(r1) == 0);
+    }
+
     public void testRequiresToString() {
         Requires r = requires(EnumSet.noneOf(Modifier.class), "foo");
         assertTrue(r.toString().contains("foo"));
@@ -330,7 +347,7 @@
 
     private Provides provides(String st, String pc) {
         return new Builder("foo")
-            .provides("p.S", pc)
+            .provides(st, pc)
             .build()
             .provides()
             .values()
@@ -668,6 +685,37 @@
         ModuleDescriptor.read(bb);
     }
 
+    // The requires table for java.base must be 0 length
+    @Test(expectedExceptions = InvalidModuleDescriptorException.class)
+    public void testReadOfJavaBaseWithRequires() {
+        ModuleDescriptor descriptor
+            = new ModuleDescriptor.Builder("java.base")
+                .requires("other")
+                .build();
+        ByteBuffer bb = ModuleInfoWriter.toByteBuffer(descriptor);
+        ModuleDescriptor.read(bb);
+    }
+
+    // The requires table must have an entry for java.base
+    @Test(expectedExceptions = InvalidModuleDescriptorException.class)
+    public void testReadWithEmptyRequires() {
+        ModuleDescriptor descriptor = new ModuleDescriptor.Builder("m1").build();
+        ByteBuffer bb = ModuleInfoWriter.toByteBuffer(descriptor);
+        ModuleDescriptor.read(bb);
+    }
+
+    // The requires table must have an entry for java.base
+    @Test(expectedExceptions = InvalidModuleDescriptorException.class)
+    public void testReadWithNoRequiresBase() {
+        ModuleDescriptor descriptor
+            = new ModuleDescriptor.Builder("m1")
+                .requires("m2")
+                .build();
+        ByteBuffer bb = ModuleInfoWriter.toByteBuffer(descriptor);
+        ModuleDescriptor.read(bb);
+    }
+
+
     public void testReadWithNull() throws Exception {
         Module base = Object.class.getModule();
 
--- a/jdk/test/java/lang/reflect/Module/AddExportsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/reflect/Module/AddExportsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @modules java.desktop
  * @run main/othervm -XaddExports:java.desktop/sun.awt=java.base AddExportsTest
  * @run main/othervm -XaddExports:java.desktop/sun.awt=ALL-UNNAMED AddExportsTest
  * @summary Test Module isExported methods with exports changed by -AddExportsTest
--- a/jdk/test/java/lang/reflect/Module/access/AccessTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/lang/reflect/Module/access/AccessTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -35,7 +35,7 @@
 /**
  * @test
  * @library /lib/testlibrary
- * @modules java.compiler
+ * @modules jdk.compiler
  * @build AccessTest CompilerUtils jdk.testlibrary.*
  * @run testng AccessTest
  * @summary Driver for test that checks access to public members in exported
--- a/jdk/test/java/nio/file/Path/PathOps.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/nio/file/Path/PathOps.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,23 +22,24 @@
  */
 
 /* @test
- * @bug 4313887 6838333 6925932 7006126 8037945 8072495
+ * @bug 4313887 6838333 6925932 7006126 8037945 8072495 8140449
  * @summary Unit test for java.nio.file.Path path operations
  */
 
-import java.nio.file.*;
+import java.nio.file.FileSystems;
+import java.nio.file.InvalidPathException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 
 public class PathOps {
 
     static final java.io.PrintStream out = System.out;
 
-    private String input;
     private Path path;
     private Exception exc;
 
     private PathOps(String first, String... more) {
         out.println();
-        input = first;
         try {
             path = FileSystems.getDefault().getPath(first, more);
             out.format("%s -> %s", first, path);
@@ -87,6 +88,14 @@
         return this;
     }
 
+    PathOps hasRoot() {
+        out.println("check has root");
+        checkPath();
+        if (path.getRoot() == null)
+            fail();
+        return this;
+    }
+
     PathOps parent(String expected) {
         out.println("check parent");
         checkPath();
@@ -147,6 +156,11 @@
         return this;
     }
 
+    PathOps makeAbsolute() {
+        this.path = path.toAbsolutePath();
+        return this;
+    }
+
     PathOps absolute() {
         out.println("check path is absolute");
         checkPath();
@@ -209,6 +223,11 @@
         return new PathOps(first, more);
     }
 
+    static PathOps test(Path path) {
+        return new PathOps(path.toString());
+    }
+
+
     // -- PathOpss --
 
     static void header(String s) {
@@ -219,6 +238,7 @@
 
     static void doWindowsTests() {
         header("Windows specific tests");
+        Path cwd = Paths.get("").toAbsolutePath();
 
         // construction
         test("C:\\")
@@ -417,6 +437,52 @@
         test("C:\\abc").absolute();
         test("\\\\server\\share\\").absolute();
         test("").notAbsolute();
+        test(cwd).absolute();
+
+        // toAbsolutePath
+        test("")
+            .makeAbsolute()
+            .absolute()
+            .hasRoot()
+            .string(cwd.toString());
+        test(".")
+            .makeAbsolute()
+            .absolute()
+            .hasRoot()
+            .string(cwd.toString() + "\\.");
+        test("foo")
+            .makeAbsolute()
+            .absolute()
+            .hasRoot()
+            .string(cwd.toString() + "\\foo");
+
+        String rootAsString = cwd.getRoot().toString();
+        if (rootAsString.length() == 3
+                && rootAsString.charAt(1) == ':'
+                && rootAsString.charAt(2) == '\\') {
+            Path root = Paths.get(rootAsString.substring(0, 2));
+
+            // C:
+            test(root)
+                .makeAbsolute()
+                .absolute()
+                .hasRoot()
+                .string(cwd.toString());
+
+            // C:.
+            test(root + ".")
+                .makeAbsolute()
+                .absolute()
+                .hasRoot()
+                .string(cwd.toString() + "\\.");
+
+            // C:foo
+            test(root + "foo")
+                .makeAbsolute()
+                .absolute()
+                .hasRoot()
+                .string(cwd.toString() + "\\foo");
+        }
 
         // resolve
         test("C:\\")
@@ -506,19 +572,29 @@
             .resolveSibling("C:\\", "C:\\");
 
         // relativize
+        test("foo")
+            .relativize("foo", "")
+            .relativize("bar", "..\\bar")
+            .relativize("..", "..\\..")
+            .relativize("", "..");
         test("foo\\bar")
             .relativize("foo\\bar", "")
-            .relativize("foo", "..");
+            .relativize("foo", "..")
+            .relativize("gus", "..\\..\\gus")
+            .relativize("..", "..\\..\\..")
+            .relativize("", "..\\..");
         test("C:\\a\\b\\c")
             .relativize("C:\\a", "..\\..")
-            .relativize("C:\\a\\b\\c", "");
+            .relativize("C:\\a\\b\\c", "")
+            .relativize("C:\\x", "..\\..\\..\\x");
         test("\\\\server\\share\\foo")
             .relativize("\\\\server\\share\\bar", "..\\bar")
             .relativize("\\\\server\\share\\foo", "");
         test("")
-            .relativize("", "")
             .relativize("a", "a")
-            .relativize("a\\b\\c", "a\\b\\c");
+            .relativize("a\\b\\c", "a\\b\\c")
+            .relativize("..", "..")
+            .relativize("", "");
 
         // normalize
         test("C:\\")
@@ -672,6 +748,7 @@
 
     static void doUnixTests() {
         header("Unix specific tests");
+        Path cwd = Paths.get("").toAbsolutePath();
 
         // construction
         test("/")
@@ -840,7 +917,22 @@
             .notAbsolute();
         test("")
             .notAbsolute();
+        test(cwd)
+            .absolute();
 
+        // toAbsolutePath
+        test("/")
+            .makeAbsolute()
+            .absolute();
+        test("/tmp")
+            .makeAbsolute()
+            .absolute();
+        test("tmp")
+            .makeAbsolute()
+            .absolute();
+        test("")
+            .makeAbsolute()
+            .absolute();
 
         // resolve
         test("/tmp")
--- a/jdk/test/java/security/Provider/DefaultProviderList.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/security/Provider/DefaultProviderList.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 7191662 8157469
+ * @bug 7191662 8157469 8157489
  * @summary Ensure non-java.base providers can be found by ServiceLoader
  * @author Valerie Peng
  */
@@ -33,6 +33,7 @@
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.ServiceLoader;
+import java.lang.reflect.Module;
 
 public class DefaultProviderList {
 
@@ -43,37 +44,54 @@
 
         ServiceLoader<Provider> sl = ServiceLoader.load(Provider.class);
         boolean failed = false;
+
+        Module baseMod = Object.class.getModule();
+
+        // Test#1: check that all non-base security providers can be found
+        // through ServiceLoader
         for (Provider p : defaultProvs) {
             String pName = p.getName();
-            // only providers outside java.base are loaded by ServiceLoader
-            if (pName.equals("SUN") || pName.equals("SunRsaSign") ||
-                pName.equals("SunJCE") || pName.equals("SunJSSE") ||
-                pName.equals("Apple")) {
-                System.out.println("Skip test for provider " + pName);
-                continue;
-            }
-            String pClassName = p.getClass().getName();
-            // Should be able to find each one through ServiceLoader
-            Iterator<Provider> provIter = sl.iterator();
-            boolean found = false;
-            while (provIter.hasNext()) {
-                Provider pFromSL = provIter.next();
-                if (pFromSL.getClass().getName().equals(pClassName)) {
-                    found = true;
-                    break;
+            Class pClass = p.getClass();
+
+            if (pClass.getModule() != baseMod) {
+                String pClassName = pClass.getName();
+                Iterator<Provider> provIter = sl.iterator();
+                boolean found = false;
+                while (provIter.hasNext()) {
+                    Provider pFromSL = provIter.next();
+
+                    // check for match by class name because PKCS11 provider
+                    // will have a different name after being configured.
+                    if (pFromSL.getClass().getName().equals(pClassName)) {
+                        found = true;
+                        System.out.println("SL found provider " + pName);
+                        break;
+                    }
+                }
+                if (!found) {
+                    failed = true;
+                    System.out.println("Error: SL cannot find provider " +
+                        pName);
                 }
             }
-            System.out.println("Found " + p.getName() + " = " + found);
-            if (!found) {
+        }
+
+        // Test#2: check that all security providers found through ServiceLoader
+        // are not from base module
+        Iterator<Provider> provIter = sl.iterator();
+        while (provIter.hasNext()) {
+            Provider pFromSL = provIter.next();
+            if (pFromSL.getClass().getModule() == baseMod) {
                 failed = true;
-                System.out.println("Error: no provider class " + pClassName +
-                    " found");
+                System.out.println("Error: base provider " +
+                    pFromSL.getName() + " loaded by SL");
             }
         }
+
         if (!failed) {
             System.out.println("Test Passed");
         } else {
-            throw new Exception("One or more provider not loaded by SL");
+            throw new Exception("One or more tests failed");
         }
     }
 }
--- a/jdk/test/java/time/test/java/util/TestFormatter.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/time/test/java/util/TestFormatter.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -47,7 +47,7 @@
 
 /* @test
  * @summary Unit test for j.u.Formatter threeten date/time support
- * @bug 8003680 8012638
+ * @bug 8003680 8043387 8012638
  */
 @Test
 public class TestFormatter {
@@ -235,10 +235,6 @@
         }
     }
 
-    private String toZoneIdStr(String expected) {
-        return expected.replaceAll("(?:GMT|UTC)(?<off>[+\\-]?[0-9]{2}:[0-9]{2})", "${off}");
-    }
-
     private String toZoneOffsetStr(String expected) {
         return expected.replaceAll("(?:GMT|UTC)(?<off>[+\\-]?[0-9]{2}:[0-9]{2})", "${off}")
                        .replaceAll("GMT|UTC|UT", "Z");
@@ -247,7 +243,7 @@
     private void testZoneId(Locale locale, ChronoZonedDateTime<?> zdt, Calendar cal) {
         String fmtStr = "z:[%tz] z:[%1$Tz] Z:[%1$tZ] Z:[%1$TZ]";
         printFmtStr(locale, fmtStr);
-        String expected = toZoneIdStr(test(fmtStr, locale, null, cal));
+        String expected = test(fmtStr, locale, null, cal);
         test(fmtStr, locale, expected, zdt);
         // get a new cal with fixed tz
         Calendar cal0 = Calendar.getInstance();
@@ -263,7 +259,7 @@
         // datetime + zid
         fmtStr = "c:[%tc] c:[%1$Tc]";
         printFmtStr(locale, fmtStr);
-        expected = toZoneIdStr(test(fmtStr, locale, null, cal));
+        expected = test(fmtStr, locale, null, cal);
         test(fmtStr, locale, expected, zdt);
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/Locale/Bug8135061.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8135061
+ * @summary Checks that the Locale.lookup executes properly without throwing
+ *          any exception for some specific language ranges
+ * @run main Bug8135061
+ */
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+import java.util.Locale.LanguageRange;
+
+public class Bug8135061 {
+
+    public static void main(String[] args) {
+
+        /* lookup should run without throwing any exception and
+         * return null as the language range does not match with the language
+         * tag
+         */
+        List<LanguageRange> ranges = LanguageRange.parse("nv");
+        Collection<Locale> locales = Collections.singleton(Locale.ENGLISH);
+
+        try {
+            Locale match = Locale.lookup(ranges, locales);
+            if (match != null) {
+                throw new RuntimeException("Locale.lookup returned non-null: "
+                        + match);
+            }
+        } catch (Exception ex) {
+            throw new RuntimeException("[Locale.lookup failed on language"
+                    + " range: " + ranges + " and language tags "
+                    + locales + "]", ex);
+        }
+
+        /* lookup should run without throwing any exception and
+         * return "nv" as the matching tag
+         */
+        ranges = LanguageRange.parse("i-navajo");
+        locales = Collections.singleton(new Locale("nv"));
+
+        try {
+            Locale match = Locale.lookup(ranges, locales);
+            if (!match.toLanguageTag().equals("nv")) {
+                throw new RuntimeException("Locale.lookup returned unexpected"
+                        + " result: " + match);
+            }
+        } catch (Exception ex) {
+            throw new RuntimeException("[Locale.lookup failed on language"
+                    + " range: " + ranges + " and language tags "
+                    + locales + "]", ex);
+        }
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/Locale/Bug8159420.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,224 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8159420
+ * @summary Checks the proper execution of LanguageRange.parse() and
+ *          other LocaleMatcher methods when used in the locales like
+ *          Turkish, because the toLowerCase() method is invoked in the
+ *          parse() and other LocaleMatcher methods.
+ *          e.g. "HI-Deva".toLowerCase() in the Turkish locale returns
+ *          "hı-deva", where 'ı' is the LATIN SMALL LETTER DOTLESS I character
+ *          which is not allowed in the language ranges/tags.
+ * @compile -encoding utf-8 Bug8159420.java
+ * @run main Bug8159420
+ */
+
+import java.util.List;
+import java.util.Locale;
+import java.util.Locale.LanguageRange;
+import java.util.Locale.FilteringMode;
+import java.util.LinkedHashMap;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.ArrayList;
+import static java.util.Locale.FilteringMode.EXTENDED_FILTERING;
+import static java.util.Locale.FilteringMode.AUTOSELECT_FILTERING;
+
+public class Bug8159420 {
+
+    static boolean err = false;
+
+    public static void main(String[] args) {
+
+        Locale origLocale = null;
+        try {
+
+            origLocale = Locale.getDefault();
+            Locale.setDefault(new Locale("tr", "TR"));
+            testParse();
+            testFilter(EXTENDED_FILTERING);
+            testFilter(AUTOSELECT_FILTERING);
+            testLookup();
+            testMapEquivalents();
+
+            if (err) {
+                throw new RuntimeException("[LocaleMatcher method(s) in turkish"
+                        + " locale failed]");
+            }
+
+        } finally {
+            Locale.setDefault(origLocale);
+        }
+
+    }
+
+    /* Before the fix, the testParse() method was throwing
+     * IllegalArgumentException in Turkish Locale
+     */
+    private static void testParse() {
+        String ranges = "HI-Deva, ja-hIrA-JP, RKI";
+        try {
+            LanguageRange.parse(ranges);
+        } catch (Exception ex) {
+            System.err.println("[testParse() failed on range string: "
+                    + ranges + "] due to "+ex);
+            err = true;
+        }
+    }
+
+    /* Before the fix, the testFilter() method was returning empty list in
+     * Turkish Locale
+     */
+    private static void testFilter(FilteringMode mode) {
+
+        String ranges = "hi-IN, itc-Ital";
+        String tags = "hi-IN, itc-Ital";
+        List<LanguageRange> priorityList = LanguageRange.parse(ranges);
+        List<Locale> tagList = generateLocales(tags);
+        String actualLocales = showLocales(Locale.filter(priorityList, tagList, mode));
+        String expectedLocales = "hi-IN, itc-Ital";
+
+        if (!expectedLocales.equals(actualLocales)) {
+            System.err.println("testFilter(" + mode + ") failed on language ranges:"
+                    + " [" + ranges + "] and language tags: [" + tags + "]");
+            err = true;
+        }
+    }
+
+    /* Before the fix, the testLookup() method was returning null in Turkish
+     * Locale
+     */
+    private static void testLookup() {
+        boolean error = false;
+        String ranges = "hi-IN, itc-Ital";
+        String tags = "hi-IN, itc-Ital";
+        List<LanguageRange> priorityList = LanguageRange.parse(ranges);
+        List<Locale> localeList = generateLocales(tags);
+        Locale actualLocale
+                = Locale.lookup(priorityList, localeList);
+        String actualLocaleString = "";
+
+        if (actualLocale != null) {
+            actualLocaleString = actualLocale.toLanguageTag();
+        } else {
+            error = true;
+        }
+
+        String expectedLocale = "hi-IN";
+
+        if (!expectedLocale.equals(actualLocaleString)) {
+            error = true;
+        }
+
+        if (error) {
+            System.err.println("testLookup() failed on language ranges:"
+                    + " [" + ranges + "] and language tags: [" + tags + "]");
+            err = true;
+        }
+
+    }
+
+    /* Before the fix, testMapEquivalents() method was returning only "hi-in"
+     * in Turkish Locale
+     */
+    private static void testMapEquivalents() {
+
+        String ranges = "HI-IN";
+        List<LanguageRange> priorityList = LanguageRange.parse(ranges);
+        HashMap<String, List<String>> map = new LinkedHashMap<>();
+        List<String> equivalentList = new ArrayList<>();
+        equivalentList.add("HI");
+        equivalentList.add("HI-Deva");
+        map.put("HI", equivalentList);
+
+        List<LanguageRange> expected = new ArrayList<>();
+        expected.add(new LanguageRange("hi-in"));
+        expected.add(new LanguageRange("hi-deva-in"));
+        List<LanguageRange> got
+                = LanguageRange.mapEquivalents(priorityList, map);
+
+        if (!areEqual(expected, got)) {
+            System.err.println("testMapEquivalents() failed");
+            err = true;
+        }
+
+    }
+
+    private static boolean areEqual(List<LanguageRange> expected,
+            List<LanguageRange> got) {
+
+        boolean error = false;
+        if (expected.equals(got)) {
+            return !error;
+        }
+
+        List<LanguageRange> cloneExpected = new ArrayList<>(expected);
+        cloneExpected.removeAll(got);
+        if (!cloneExpected.isEmpty()) {
+            error = true;
+            System.err.println("Found missing range(s): " + cloneExpected);
+        }
+
+        // not creating the 'got' clone as the list will not be used after this
+        got.removeAll(expected);
+        if (!got.isEmpty()) {
+            error = true;
+            System.err.println("Found extra range(s): " + got);
+        }
+        return !error;
+    }
+
+    private static List<Locale> generateLocales(String tags) {
+        if (tags == null) {
+            return null;
+        }
+
+        List<Locale> localeList = new ArrayList<>();
+        if (tags.equals("")) {
+            return localeList;
+        }
+        String[] t = tags.split(", ");
+        for (String tag : t) {
+            localeList.add(Locale.forLanguageTag(tag));
+        }
+        return localeList;
+    }
+
+    private static String showLocales(List<Locale> locales) {
+        StringBuilder sb = new StringBuilder();
+
+        Iterator<Locale> itr = locales.iterator();
+        if (itr.hasNext()) {
+            sb.append(itr.next().toLanguageTag());
+        }
+        while (itr.hasNext()) {
+            sb.append(", ");
+            sb.append(itr.next().toLanguageTag());
+        }
+
+        return sb.toString().trim();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/util/PriorityQueue/AddNonComparable.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8066070
+ * @run testng AddNonComparable
+ */
+
+import java.util.PriorityQueue;
+import java.util.Queue;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.concurrent.ConcurrentSkipListMap;
+import java.util.concurrent.ConcurrentSkipListSet;
+import java.util.concurrent.PriorityBlockingQueue;
+import java.util.function.BiConsumer;
+import java.util.function.Supplier;
+
+import static org.testng.Assert.*;
+import org.testng.annotations.Test;
+
+public class AddNonComparable {
+
+    static <E> void test(Queue<E> queue, Supplier<E> supplier,
+                         BiConsumer<? super Queue<E>, Throwable> checker) {
+        Throwable x = null;
+        try { queue.add(supplier.get()); }
+        catch (Throwable e) { x = e; }
+        checker.accept(queue, x);
+    }
+
+    @Test
+    public void queues() {
+        test(new PriorityQueue<>(), NonComparable::new,
+             (q, e) -> {
+                 assertEquals(q.size(), 0);
+                 assertTrue(e instanceof ClassCastException);
+             });
+        test(new PriorityQueue<>(), AComparable::new,
+             (q, e) -> {
+                 assertEquals(q.size(), 1);
+                 assertTrue(e == null);
+             });
+
+        test(new PriorityBlockingQueue<>(), NonComparable::new,
+             (q, e) -> {
+                 assertEquals(q.size(), 0);
+                 assertTrue(e instanceof ClassCastException);
+             });
+        test(new PriorityBlockingQueue<>(), AComparable::new,
+             (q, e) -> {
+                 assertEquals(q.size(), 1);
+                 assertTrue(e == null);
+             });
+    }
+
+    static <E> void test(SortedSet<E> set, Supplier<E> supplier,
+                         BiConsumer<? super SortedSet<E>, Throwable> checker) {
+        Throwable x = null;
+        try { set.add(supplier.get()); }
+        catch (Throwable e) { x = e; }
+        checker.accept(set, x);
+    }
+
+
+    @Test
+    public void sets() {
+        test(new TreeSet<>(), NonComparable::new,
+             (s, e) -> {
+                 assertEquals(s.size(), 0);
+                 assertTrue(e instanceof ClassCastException);
+             });
+        test(new TreeSet<>(), AComparable::new,
+             (s, e) -> {
+                 assertEquals(s.size(), 1);
+                 assertTrue(e == null);
+             });
+
+        test(new ConcurrentSkipListSet<>(), NonComparable::new,
+             (s, e) -> {
+                 assertEquals(s.size(), 0);
+                 assertTrue(e instanceof ClassCastException);
+             });
+        test(new ConcurrentSkipListSet<>(), AComparable::new,
+             (s, e) -> {
+                 assertEquals(s.size(), 1);
+                 assertTrue(e == null);
+             });
+    }
+
+    static <K> void test(SortedMap<K,Boolean> map, Supplier<K> supplier,
+                         BiConsumer<? super SortedMap<K,Boolean>, Throwable> checker) {
+        Throwable x = null;
+        try { map.put(supplier.get(), Boolean.TRUE); }
+        catch (Throwable e) { x = e; }
+        checker.accept(map, x);
+    }
+
+    @Test
+    public void maps() {
+        test(new TreeMap<>(), NonComparable::new,
+             (m, e) -> {
+                 assertEquals(m.size(), 0);
+                 assertTrue(e instanceof ClassCastException);
+             });
+        test(new TreeMap<>(), AComparable::new,
+             (m, e) -> {
+                 assertEquals(m.size(), 1);
+                 assertTrue(e == null);
+             });
+
+        test(new ConcurrentSkipListMap<>(), NonComparable::new,
+             (s, e) -> {
+                 assertEquals(s.size(), 0);
+                 assertTrue(e instanceof ClassCastException);
+             });
+        test(new ConcurrentSkipListMap<>(), AComparable::new,
+             (s, e) -> {
+                 assertEquals(s.size(), 1);
+                 assertTrue(e == null);
+             });
+    }
+
+    static class NonComparable { }
+
+    static class AComparable implements Comparable<AComparable> {
+        @Override public int compareTo(AComparable v) { return 0; }
+    }
+
+}
--- a/jdk/test/java/util/Scanner/ScanTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/util/Scanner/ScanTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -24,7 +24,7 @@
 /**
  * @test
  * @bug 4313885 4926319 4927634 5032610 5032622 5049968 5059533 6223711 6277261 6269946 6288823
- *      8072722
+ *      8072722 8072582 8139414
  * @summary Basic tests of java.util.Scanner methods
  * @key randomness
  * @modules jdk.localedata
@@ -70,6 +70,7 @@
             ioExceptionTest();
             matchTest();
             delimiterTest();
+            boundaryDelimTest();
             useLocaleTest();
             closeTest();
             cacheTest();
@@ -504,6 +505,54 @@
         report("Single delim test");
     }
 
+    private static void append(StringBuilder sb, char c, int n) {
+        for (int i = 0; i < n; i++) {
+            sb.append(c);
+        }
+    }
+
+    public static void boundaryDelimTest() throws Exception {
+        // 8072582
+        StringBuilder sb = new StringBuilder();
+        append(sb, 'a', 228); sb.append(",");
+        append(sb, 'b', 293); sb.append("#,#");
+        append(sb, 'c', 308); sb.append(",");
+        append(sb, 'd', 188); sb.append("#,#");
+        append(sb, 'e', 2);
+        try (Scanner scanner = new Scanner(sb.toString())) {
+            scanner.useDelimiter("(#,#)|(,)");
+            while(scanner.hasNext()){
+                String next = scanner.next();
+                if(next.contains("#")){
+                    System.out.printf("[%s]%n", next);
+                    failCount++;
+                }
+            }
+        }
+
+        // 8139414
+        int i = 1019;
+        sb = new StringBuilder();
+        sb.append("--;");
+        for (int j = 0; j < 1019; ++j) {
+            sb.append(j%10);
+        }
+        sb.append("-;-");
+        String text = sb.toString();
+        try (Scanner scanner = new Scanner(text)) {
+            scanner.useDelimiter("-;(-)?");
+            while (scanner.hasNext()) {
+                scanner.next();
+            }
+        } catch (NoSuchElementException e) {
+            System.out.println("Caught NoSuchElementException " + e);
+            e.printStackTrace();
+            failCount++;
+        }
+
+        report("delim at boundary test");
+    }
+
     /*
      * The hasNextPattern caches a match of a pattern called the regular cache
      * The hasNextType caches a match of that type called the type cache
--- a/jdk/test/java/util/concurrent/tck/ConcurrentSkipListSetTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/util/concurrent/tck/ConcurrentSkipListSetTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -226,7 +226,14 @@
             q.add(new Object());
             q.add(new Object());
             shouldThrow();
-        } catch (ClassCastException success) {}
+        } catch (ClassCastException success) {
+            assertTrue(q.size() < 2);
+            for (int i = 0, size = q.size(); i < size; i++)
+                assertTrue(q.pollFirst().getClass() == Object.class);
+            assertNull(q.pollFirst());
+            assertTrue(q.isEmpty());
+            assertEquals(0, q.size());
+        }
     }
 
     /**
--- a/jdk/test/java/util/concurrent/tck/PriorityBlockingQueueTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/util/concurrent/tck/PriorityBlockingQueueTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -227,9 +227,12 @@
         PriorityBlockingQueue q = new PriorityBlockingQueue(1);
         try {
             q.offer(new Object());
-            q.offer(new Object());
             shouldThrow();
-        } catch (ClassCastException success) {}
+        } catch (ClassCastException success) {
+            assertTrue(q.isEmpty());
+            assertEquals(0, q.size());
+            assertNull(q.poll());
+        }
     }
 
     /**
--- a/jdk/test/java/util/concurrent/tck/PriorityQueueTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/java/util/concurrent/tck/PriorityQueueTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -218,9 +218,12 @@
         PriorityQueue q = new PriorityQueue(1);
         try {
             q.offer(new Object());
-            q.offer(new Object());
             shouldThrow();
-        } catch (ClassCastException success) {}
+        } catch (ClassCastException success) {
+            assertTrue(q.isEmpty());
+            assertEquals(0, q.size());
+            assertNull(q.poll());
+        }
     }
 
     /**
--- a/jdk/test/javax/net/ssl/SSLSession/SessionCacheSizeTests.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/net/ssl/SSLSession/SessionCacheSizeTests.java	Wed Jul 05 21:51:13 2017 +0200
@@ -106,17 +106,21 @@
      */
     static int MAX_ACTIVE_CONNECTIONS = 4;
 
-    void doServerSide(int serverPort, int serverConns) throws Exception {
+    static final int FREE_PORT = 0;
 
+    void doServerSide(int serverConns) throws Exception {
         try (SSLServerSocket sslServerSocket =
-                (SSLServerSocket) sslssf.createServerSocket(serverPort)) {
+                (SSLServerSocket) sslssf.createServerSocket(FREE_PORT)) {
 
             // timeout to accept a connection
             sslServerSocket.setSoTimeout(45000);
 
             // make sure createdPorts++ is atomic
             synchronized(serverPorts) {
-                serverPorts[createdPorts++] = sslServerSocket.getLocalPort();
+                int serverPort = sslServerSocket.getLocalPort();
+                System.out.printf("server #%d started on port %d%n",
+                        createdPorts, serverPort);
+                serverPorts[createdPorts++] = serverPort;
 
                 /*
                  * Signal Client, we're ready for his connect.
@@ -173,11 +177,54 @@
         SSLSessionContext sessCtx = sslctx.getClientSessionContext();
         sessCtx.setSessionTimeout(0); // no limit
 
-        while (nConnections < (MAX_ACTIVE_CONNECTIONS - 1)) {
-            // divide the connections among the available server ports
+        try {
+            while (nConnections < (MAX_ACTIVE_CONNECTIONS - 1)) {
+                // divide the connections among the available server ports
+                int serverPort = serverPorts [nConnections % (serverPorts.length)];
+                System.out.printf("client #%d connects to port %d%n",
+                        nConnections, serverPort);
+                sslSockets[nConnections] = (SSLSocket) sslsf.
+                            createSocket("localhost",
+                            serverPort);
+                InputStream sslIS = sslSockets[nConnections].getInputStream();
+                OutputStream sslOS = sslSockets[nConnections].getOutputStream();
+                sslOS.write(237);
+                sslOS.flush();
+                int read = sslIS.read();
+                SSLSession sess = sslSockets[nConnections].getSession();
+                if (!sessions.contains(sess))
+                    sessions.add(sess);
+                nConnections++;
+            }
+            System.out.println("Current cacheSize is set to: " +
+                                    sessCtx.getSessionCacheSize());
+            System.out.println();
+            System.out.println("Currently cached Sessions......");
+            System.out.println("============================================"
+                                    + "============================");
+            System.out.println("Session                                     "
+                                    + "      Session-last-accessTime");
+            System.out.println("============================================"
+                                    + "============================");
+            checkCachedSessions(sessCtx, nConnections);
+            // Change session cache size
+            sessCtx.setSessionCacheSize(2);
+            System.out.println("Session cache size changed to: "
+                            + sessCtx.getSessionCacheSize());
+            System.out.println();
+            checkCachedSessions(sessCtx, nConnections);
+
+            // Test the effect of increasing the cache size
+            sessCtx.setSessionCacheSize(3);
+            System.out.println("Session cache size changed to: "
+                            + sessCtx.getSessionCacheSize());
+            // create a new session
+            int serverPort = serverPorts [nConnections % (serverPorts.length)];
+            System.out.printf("client #%d connects to port %d%n",
+                    nConnections, serverPort);
             sslSockets[nConnections] = (SSLSocket) sslsf.
-                        createSocket("localhost",
-                        serverPorts [nConnections % (serverPorts.length)]);
+                            createSocket("localhost",
+                            serverPort);
             InputStream sslIS = sslSockets[nConnections].getInputStream();
             OutputStream sslOS = sslSockets[nConnections].getOutputStream();
             sslOS.write(237);
@@ -187,48 +234,15 @@
             if (!sessions.contains(sess))
                 sessions.add(sess);
             nConnections++;
-        }
-        System.out.println("Current cacheSize is set to: " +
-                                 sessCtx.getSessionCacheSize());
-        System.out.println();
-        System.out.println("Currently cached Sessions......");
-        System.out.println("============================================"
-                                + "============================");
-        System.out.println("Session                                     "
-                                + "      Session-last-accessTime");
-        System.out.println("============================================"
-                                + "============================");
-        checkCachedSessions(sessCtx, nConnections);
-        // Change session cache size
-        sessCtx.setSessionCacheSize(2);
-        System.out.println("Session cache size changed to: "
-                        + sessCtx.getSessionCacheSize());
-        System.out.println();
-        checkCachedSessions(sessCtx, nConnections);
 
-        // Test the effect of increasing the cache size
-        sessCtx.setSessionCacheSize(3);
-        System.out.println("Session cache size changed to: "
-                        + sessCtx.getSessionCacheSize());
-        // create a new session
-        sslSockets[nConnections] = (SSLSocket) sslsf.
-                        createSocket("localhost",
-                        serverPorts [nConnections % (serverPorts.length)]);
-        InputStream sslIS = sslSockets[nConnections].getInputStream();
-        OutputStream sslOS = sslSockets[nConnections].getOutputStream();
-        sslOS.write(237);
-        sslOS.flush();
-        int read = sslIS.read();
-        SSLSession sess = sslSockets[nConnections].getSession();
-        if (!sessions.contains(sess))
-            sessions.add(sess);
-        nConnections++;
-
-        // test the number of sessions cached against the cache size
-        checkCachedSessions(sessCtx, nConnections);
-
-        for (int i = 0; i < nConnections; i++) {
-            sslSockets[i].close();
+            // test the number of sessions cached against the cache size
+            checkCachedSessions(sessCtx, nConnections);
+        } finally {
+            for (int i = 0; i < nConnections; i++) {
+                if (sslSockets[i] != null) {
+                    sslSockets[i].close();
+                }
+            }
         }
         System.out.println("Session cache size tests passed");
     }
@@ -302,7 +316,9 @@
         sslctx = SSLContext.getInstance("TLS");
         KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
         KeyStore ks = KeyStore.getInstance("JKS");
-        ks.load(new FileInputStream(keyFilename), passwd.toCharArray());
+        try (FileInputStream fis = new FileInputStream(keyFilename)) {
+            ks.load(fis, passwd.toCharArray());
+        }
         kmf.init(ks, passwd.toCharArray());
         sslctx.init(kmf.getKeyManagers(), null, null);
         sslssf = (SSLServerSocketFactory) sslctx.getServerSocketFactory();
@@ -343,19 +359,21 @@
                 for (int i = 0; i < serverPorts.length; i++) {
                     // distribute remaining connections among the
                     // available ports
-                    if (i < remainingConns)
-                        startServer(serverPorts[i], (serverConns + 1), true);
-                    else
-                        startServer(serverPorts[i], serverConns, true);
+                    if (i < remainingConns) {
+                        startServer(serverConns + 1, true);
+                    } else {
+                        startServer(serverConns, true);
+                    }
                 }
                 startClient(false);
             } else {
                 startClient(true);
                 for (int i = 0; i < serverPorts.length; i++) {
-                    if (i < remainingConns)
-                        startServer(serverPorts[i], (serverConns + 1), false);
-                    else
-                        startServer(serverPorts[i], serverConns, false);
+                    if (i < remainingConns) {
+                        startServer(serverConns + 1, false);
+                    } else {
+                        startServer(serverConns, false);
+                    }
                 }
             }
         } catch (Exception e) {
@@ -420,13 +438,12 @@
         // Fall-through: no exception to throw!
     }
 
-    void startServer(final int port, final int nConns,
-                        boolean newThread) throws Exception {
+    void startServer(final int nConns, boolean newThread) throws Exception {
         if (newThread) {
             serverThread = new Thread() {
                 public void run() {
                     try {
-                        doServerSide(port, nConns);
+                        doServerSide(nConns);
                     } catch (Exception e) {
                         /*
                          * Our server thread just died.
@@ -443,7 +460,7 @@
             serverThread.start();
         } else {
             try {
-                doServerSide(port, nConns);
+                doServerSide(nConns);
             } catch (Exception e) {
                 serverException = e;
             } finally {
--- a/jdk/test/javax/net/ssl/TLSv12/ShortRSAKey512.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/net/ssl/TLSv12/ShortRSAKey512.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,6 +33,7 @@
  *
  *     SunJSSE does not support dynamic system properties, no way to re-use
  *     system properties in samevm/agentvm mode.
+ * @key intermittent
  * @run main/othervm ShortRSAKey512 PKIX
  * @run main/othervm ShortRSAKey512 SunX509
  */
@@ -125,7 +126,7 @@
     /*
      * Turn on SSL debugging?
      */
-    static boolean debug = false;
+    static boolean debug = true;
 
     /*
      * Define the server side of the test.
@@ -137,24 +138,26 @@
         SSLContext context = generateSSLContext(null, targetCertStr,
                                             targetPrivateKey);
         SSLServerSocketFactory sslssf = context.getServerSocketFactory();
-        SSLServerSocket sslServerSocket =
-            (SSLServerSocket)sslssf.createServerSocket(serverPort);
-        serverPort = sslServerSocket.getLocalPort();
+        try (SSLServerSocket sslServerSocket =
+                (SSLServerSocket) sslssf.createServerSocket(serverPort)) {
 
-        /*
-         * Signal Client, we're ready for his connect.
-         */
-        serverReady = true;
+            serverPort = sslServerSocket.getLocalPort();
+            System.out.println("Start server on port " + serverPort);
 
-        SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept();
-        InputStream sslIS = sslSocket.getInputStream();
-        OutputStream sslOS = sslSocket.getOutputStream();
+            /*
+            * Signal Client, we're ready for his connect.
+            */
+            serverReady = true;
 
-        sslIS.read();
-        sslOS.write('A');
-        sslOS.flush();
+            try (SSLSocket sslSocket = (SSLSocket)sslServerSocket.accept()) {
+                InputStream sslIS = sslSocket.getInputStream();
+                OutputStream sslOS = sslSocket.getOutputStream();
 
-        sslSocket.close();
+                sslIS.read();
+                sslOS.write('A');
+                sslOS.flush();
+            }
+        }
     }
 
     /*
@@ -175,24 +178,24 @@
         SSLContext context = generateSSLContext(trustedCertStr, null, null);
         SSLSocketFactory sslsf = context.getSocketFactory();
 
-        SSLSocket sslSocket =
-            (SSLSocket)sslsf.createSocket("localhost", serverPort);
+        System.out.println("Client connects to port " + serverPort);
+        try (SSLSocket sslSocket =
+                (SSLSocket) sslsf.createSocket("localhost", serverPort)) {
 
-        // enable TLSv1.2 only
-        sslSocket.setEnabledProtocols(new String[] {"TLSv1.2"});
+            // enable TLSv1.2 only
+            sslSocket.setEnabledProtocols(new String[] {"TLSv1.2"});
 
-        // enable a block cipher
-        sslSocket.setEnabledCipherSuites(
-            new String[] {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA"});
+            // enable a block cipher
+            sslSocket.setEnabledCipherSuites(
+                new String[] {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA"});
 
-        InputStream sslIS = sslSocket.getInputStream();
-        OutputStream sslOS = sslSocket.getOutputStream();
+            InputStream sslIS = sslSocket.getInputStream();
+            OutputStream sslOS = sslSocket.getOutputStream();
 
-        sslOS.write('B');
-        sslOS.flush();
-        sslIS.read();
-
-        sslSocket.close();
+            sslOS.write('B');
+            sslOS.flush();
+            sslIS.read();
+        }
     }
 
     /*
@@ -308,16 +311,12 @@
      * Fork off the other side, then do your work.
      */
     ShortRSAKey512() throws Exception {
-        try {
-            if (separateServerThread) {
-                startServer(true);
-                startClient(false);
-            } else {
-                startClient(true);
-                startServer(false);
-            }
-        } catch (Exception e) {
-            // swallow for now.  Show later
+        if (separateServerThread) {
+            startServer(true);
+            startClient(false);
+        } else {
+            startClient(true);
+            startServer(false);
         }
 
         /*
@@ -335,16 +334,13 @@
          */
         Exception local;
         Exception remote;
-        String whichRemote;
 
         if (separateServerThread) {
             remote = serverException;
             local = clientException;
-            whichRemote = "server";
         } else {
             remote = clientException;
             local = serverException;
-            whichRemote = "client";
         }
 
         /*
@@ -352,9 +348,6 @@
          * print the remote side Exception
          */
         if ((local != null) && (remote != null)) {
-            System.out.println(whichRemote + " also threw:");
-            remote.printStackTrace();
-            System.out.println();
             throw local;
         }
 
@@ -367,7 +360,7 @@
         }
     }
 
-    void startServer(boolean newThread) throws Exception {
+    void startServer(boolean newThread) {
         if (newThread) {
             serverThread = new Thread() {
                 public void run() {
@@ -380,11 +373,13 @@
                          * Release the client, if not active already...
                          */
                         System.err.println("Server died...");
+                        e.printStackTrace(System.err);
                         serverReady = true;
                         serverException = e;
                     }
                 }
             };
+            serverThread.setDaemon(true);
             serverThread.start();
         } else {
             try {
@@ -397,7 +392,7 @@
         }
     }
 
-    void startClient(boolean newThread) throws Exception {
+    void startClient(boolean newThread) {
         if (newThread) {
             clientThread = new Thread() {
                 public void run() {
@@ -408,10 +403,12 @@
                          * Our client thread just died.
                          */
                         System.err.println("Client died...");
+                        e.printStackTrace(System.err);
                         clientException = e;
                     }
                 }
             };
+            clientThread.setDaemon(true);
             clientThread.start();
         } else {
             try {
--- a/jdk/test/javax/smartcardio/TerminalFactorySpiTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/smartcardio/TerminalFactorySpiTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -26,7 +26,7 @@
  * @bug 8049021
  * @summary Test if we can write new provider for smart card
  * @compile -addmods java.smartcardio TerminalFactorySpiTest.java
- * @run main/othervm/policy=policy -addmods java.smartcardio TerminalFactorySpiTest
+ * @run main/othervm/java.security.policy=policy -addmods java.smartcardio TerminalFactorySpiTest
  */
 import java.security.Provider;
 import java.security.Security;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/sound/sampled/Clip/IsRunningHang.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.Clip;
+import javax.sound.sampled.DataLine;
+import javax.sound.sampled.Line;
+import javax.sound.sampled.LineEvent;
+import javax.sound.sampled.LineUnavailableException;
+
+/**
+ * @test
+ * @bug 8156169
+ * @run main/othervm/timeout=300 IsRunningHang
+ */
+public final class IsRunningHang {
+
+    private static CountDownLatch go;
+
+    /**
+     * We will try to use all usually supported formats.
+     */
+    private static final List<AudioFormat> formats = new ArrayList<>();
+
+    private static final AudioFormat.Encoding[] encodings = {
+            AudioFormat.Encoding.ALAW, AudioFormat.Encoding.ULAW,
+            AudioFormat.Encoding.PCM_SIGNED, AudioFormat.Encoding.PCM_UNSIGNED,
+            AudioFormat.Encoding.PCM_FLOAT
+    };
+
+    private static final int[] sampleRates = {8000, 16000, 48000};
+
+    private static final int[] sampleBits = {8, 16, 24, 32, 64};
+
+    private static final int[] channels = {1, 2, 3, 5};
+
+    static {
+        for (final Boolean end : new boolean[]{false, true}) {
+            for (final int sampleSize : sampleBits) {
+                for (final int sampleRate : sampleRates) {
+                    for (final int channel : channels) {
+                        for (final AudioFormat.Encoding enc : encodings) {
+                            int s = ((sampleSize + 7) / 8) * channel;
+                            formats.add(new AudioFormat(enc, sampleRate,
+                                                        sampleSize, channel,
+                                                        s, sampleRate, end));
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public static void main(final String[] args) throws Exception {
+        for (final AudioFormat format : formats) {
+            System.out.println("format = " + format);
+            // create a 0.5-second data
+            byte[] soundData = new byte[(int) (format.getFrameRate()
+                                                       * format.getFrameSize()
+                                                       / 2)];
+            try {
+                test(format, soundData);
+            } catch (LineUnavailableException | IllegalArgumentException ignored) {
+                // the test is not applicable
+            }
+        }
+    }
+
+    private static void test(final AudioFormat format, final byte[] data)
+            throws Exception {
+        final Line.Info info = new DataLine.Info(Clip.class, format);
+        final Clip clip = (Clip) AudioSystem.getLine(info);
+
+        go = new CountDownLatch(1);
+        clip.addLineListener(event -> {
+            if (event.getType().equals(LineEvent.Type.START)) {
+                go.countDown();
+            }
+        });
+
+        clip.open(format, data, 0, data.length);
+        clip.start();
+        go.await();
+        while (clip.isRunning()) {
+            // This loop should not hang
+        }
+        while (clip.isActive()) {
+            // This loop should not hang
+        }
+        clip.close();
+    }
+}
--- a/jdk/test/javax/sound/sampled/DirectAudio/bug6400879.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/sound/sampled/DirectAudio/bug6400879.java	Wed Jul 05 21:51:13 2017 +0200
@@ -26,10 +26,11 @@
  * @bug 6400879 7100140
  * @summary Tests that Start/Stop sequence doesn't hang
  * @author Alexey Menkov
- * @run main bug6400879
- * @key intermittent
+ * @run main/othervm bug6400879
  */
 
+import java.util.concurrent.TimeUnit;
+
 import javax.sound.sampled.*;
 
 public class bug6400879 extends Thread {
@@ -50,16 +51,16 @@
         long prevTime = currentTimeMillis();
         while (pThis.isAlive()) {
             if (pThis.loopCounter == prevLoop) {
-                if (currentTimeMillis() - prevTime > BLOCK_TIMEOUT) {
-                    // block!
-                    log("Test FAILED.");
-                    throw new RuntimeException("Test FAILED: thread has been blocked!");
+                long delay = currentTimeMillis() - prevTime;
+                if (delay > BLOCK_TIMEOUT) {
+                    // blocked?
+                    log("The test is slow, delay = " + delay);
                 }
             } else {
                 prevLoop = pThis.loopCounter;
                 prevTime = currentTimeMillis();
             }
-            delay(500);    // sleep for 0.5 sec
+            delay(1000);    // sleep for 1 sec
         }
         log("Test sucessfully passed.");
     }
@@ -111,8 +112,7 @@
     // helper routines
     static long startTime = currentTimeMillis();
     static long currentTimeMillis() {
-        //return System.nanoTime() / 1000000L;
-        return System.currentTimeMillis();
+        return TimeUnit.NANOSECONDS.toMillis(System.nanoTime());
     }
     static void log(String s) {
         long time = currentTimeMillis() - startTime;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/InputVerifier/VerifyTarget/VerifyTargetTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+  @test
+  @bug 8154431
+  @summary Allow source and target based validation for the focus transfer
+           between two JComponents.
+  @run main VerifyTargetTest
+*/
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+
+public class VerifyTargetTest extends InputVerifier implements FocusListener {
+    static boolean success;
+    private static JFrame frame;
+    private static JTextField field2;
+
+    public static void main(String[] args) throws Exception {
+        SwingUtilities.invokeAndWait(() -> setup());
+        try {
+            Robot robot = new Robot();
+            robot.waitForIdle();
+            robot.delay(200);
+            KeyboardFocusManager.getCurrentKeyboardFocusManager()
+                                                          .focusNextComponent();
+            robot.waitForIdle();
+            robot.delay(200);
+            if (!success) {
+                throw new RuntimeException("Failed");
+            } else {
+                System.out.println("ok");
+            }
+        } finally {
+            SwingUtilities.invokeLater(() -> frame.dispose());
+        }
+    }
+
+    static void setup() {
+        frame = new JFrame();
+        JTextField field1 = new JTextField("Input 1");
+        VerifyTargetTest test = new VerifyTargetTest();
+        field1.setInputVerifier(test);
+        field1.addFocusListener(test);
+        frame.getContentPane().add(field1, BorderLayout.NORTH);
+        field2 = new JTextField("Input 2");
+        frame.getContentPane().add(field2, BorderLayout.SOUTH);
+        frame.pack();
+        frame.setVisible(true);
+    }
+
+    @Override
+    public boolean verify(JComponent input) {
+        return true;
+    }
+
+    @Override
+    public boolean verifyTarget(JComponent input) {
+        success = input == field2;
+        return false;
+    }
+
+    @Override
+    public void focusGained(FocusEvent e) {}
+
+    @Override
+    public void focusLost(FocusEvent e) {
+        success = false;
+    }
+}
\ No newline at end of file
--- a/jdk/test/javax/swing/JColorChooser/Test4165217.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JColorChooser/Test4165217.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4165217
  * @summary Tests JColorChooser serialization
  * @author Ilya Boyandin
--- a/jdk/test/javax/swing/JColorChooser/Test4177735.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JColorChooser/Test4177735.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4177735
  * @summary Tests that JColorChooser leaves no threads when disposed
  * @author Shannon Hickey
--- a/jdk/test/javax/swing/JColorChooser/Test4193384.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JColorChooser/Test4193384.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4193384 4200976
  * @summary Tests the color conversions and the preview panel foreground color
  * @author Mark Davidson
--- a/jdk/test/javax/swing/JColorChooser/Test4234761.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JColorChooser/Test4234761.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4234761
  * @summary RGB values sholdn't be changed in transition to HSB tab
  * @author Oleg Mokhovikov
--- a/jdk/test/javax/swing/JColorChooser/Test4461329.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JColorChooser/Test4461329.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4461329
  * @summary Tests getPreviewPanel() and setPreviewPanel() methods
  * @author Leif Samuelsson
--- a/jdk/test/javax/swing/JColorChooser/Test4711996.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JColorChooser/Test4711996.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4711996
  * @summary Checks if IllegalArgumentException is thrown when updating JColorChooserUI
  * @author Konstantin Eremin
--- a/jdk/test/javax/swing/JColorChooser/Test6524757.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JColorChooser/Test6524757.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6524757
  * @summary Tests different locales
  * @author Sergey Malenkov
--- a/jdk/test/javax/swing/JColorChooser/Test6707406.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JColorChooser/Test6707406.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6707406
  * @summary Tests color chooser with invalid UI
  * @author Sergey Malenkov
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JComboBox/8136998/bug8136998.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.AWTException;
+import java.awt.Dimension;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UIManager.LookAndFeelInfo;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.WindowConstants;
+
+/* @test
+ * @bug 8136998
+ * @summary Checks that JComboBox does not prevent mouse-wheel scrolling JScrollPane.
+ * @library ../../regtesthelpers
+ * @build Util
+ * @run main bug8136998
+ * @author Alexey Ivanov
+ */
+public class bug8136998 {
+
+    private static final String[] ITEMS = new String[] {
+        "A", "B", "C", "D", "E", "F"
+    };
+
+    private final Robot robot;
+
+    private JFrame frame;
+    private JComboBox comboBox;
+    private JScrollPane scrollPane;
+
+    public static void main(String[] args) throws Exception {
+        iterateLookAndFeels(new bug8136998());
+    }
+
+    protected static void iterateLookAndFeels(final bug8136998 test) throws Exception {
+        LookAndFeelInfo[] lafInfo = UIManager.getInstalledLookAndFeels();
+        for (LookAndFeelInfo info : lafInfo) {
+            try {
+                UIManager.setLookAndFeel(info.getClassName());
+                System.out.println("Look and Feel: " + info.getClassName());
+                test.runTest();
+            } catch (UnsupportedLookAndFeelException e) {
+                System.out.println("Skipping unsupported LaF: " + info);
+            }
+        }
+    }
+
+    public bug8136998() throws AWTException {
+        robot = new Robot();
+        robot.setAutoDelay(200);
+    }
+
+    private void setupUI() {
+        frame = new JFrame();
+        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+
+        comboBox = new JComboBox<>(ITEMS);
+
+        JPanel scrollable = new JPanel();
+        scrollable.setLayout(new BoxLayout(scrollable, BoxLayout.Y_AXIS));
+
+        scrollable.add(Box.createVerticalStrut(200));
+        scrollable.add(comboBox);
+        scrollable.add(Box.createVerticalStrut(200));
+
+        scrollPane = new JScrollPane(scrollable);
+
+        frame.add(scrollPane);
+
+        frame.setSize(100, 200);
+        frame.setVisible(true);
+    }
+
+    public void runTest() throws Exception {
+        try {
+            SwingUtilities.invokeAndWait(this::setupUI);
+
+            robot.waitForIdle();
+
+            SwingUtilities.invokeAndWait(() ->
+                scrollPane.getViewport().scrollRectToVisible(comboBox.getBounds())
+            );
+            robot.waitForIdle();
+
+            // Move mouse pointer to the center of the combo box
+            Point p = comboBox.getLocationOnScreen();
+            Dimension d = comboBox.getSize();
+            robot.mouseMove(p.x + d.width / 2, p.y + d.height / 2);
+
+            // The currently visible rectangle in scrollPane
+            Rectangle viewRect0 = Util.invokeOnEDT(scrollPane.getViewport()::getViewRect);
+
+            // Scroll the scrollPane with mouse wheel
+            robot.mouseWheel(1);
+            robot.waitForIdle();
+
+            // The updated rectangle
+            Rectangle viewRect1 = Util.invokeOnEDT(scrollPane.getViewport()::getViewRect);
+
+            if (viewRect0.y == viewRect1.y) {
+                throw new RuntimeException("Mouse wheel should have scrolled the JScrollPane");
+            }
+        } finally {
+            if (frame != null) {
+                frame.dispose();
+            }
+        }
+
+        System.out.println("Test passed");
+    }
+}
--- a/jdk/test/javax/swing/JComponent/6683775/bug6683775.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JComponent/6683775/bug6683775.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,14 +21,16 @@
  * questions.
  */
 
-/* @test
-   @bug 6683775 6794764
-   @summary Painting artifacts is seen when panel is made setOpaque(false) for a translucent window
-   @author Alexander Potochkin
-   @modules java.desktop/com.sun.awt
-            java.desktop/sun.awt
-   @run main bug6683775
-*/
+/*
+ * @test
+ * @key headful
+ * @bug 6683775 6794764
+ * @summary Painting artifacts is seen when panel is made setOpaque(false) for a translucent window
+ * @author Alexander Potochkin
+ * @modules java.desktop/com.sun.awt
+ *          java.desktop/sun.awt
+ * @run main bug6683775
+ */
 
 import com.sun.awt.AWTUtilities;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JEditorPane/6882559/bug6882559.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+   @bug 6882559
+   @summary new JEditorPane("text/plain","") fails for null context class loader
+   @author Mikhail Cherkasov
+   @run main bug6882559
+*/
+
+import javax.swing.*;
+
+
+public class bug6882559 {
+    public static void main(String[] args) throws Exception {
+        SwingUtilities.invokeAndWait(() -> {
+            Thread.currentThread().setContextClassLoader(null);
+            new javax.swing.JEditorPane("text/plain", "");
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JEditorPane/8146319/JEditorPaneTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8146319
+ * @summary JEditorPane function setPage leaves a file lock
+ * @run main JEditorPaneTest
+ */
+import java.awt.Robot;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import javax.swing.JEditorPane;
+import javax.swing.SwingUtilities;
+
+public class JEditorPaneTest {
+
+    public static void main(String[] args) throws Exception {
+        Robot robot = new Robot();
+        try {
+            File file = File.createTempFile("Temp_", ".txt");
+            file.deleteOnExit();
+            writeFile(file);
+            SwingUtilities.invokeAndWait(new Runnable() {
+                @Override
+                public void run() {
+                    JEditorPane editorPane = new JEditorPane();
+                    try {
+                        editorPane.setPage(file.toURI().toURL());
+                    } catch (IOException ex) {
+                        file.delete();
+                        throw new RuntimeException("Test Failed" + ex);
+                    }
+                }
+            });
+            robot.waitForIdle();
+            if (!file.renameTo(file)) {
+                file.delete();
+                throw new RuntimeException("Test Failed");
+            }
+        } catch (IOException ex) {
+            throw new RuntimeException("Failed to create File" + ex);
+        }
+    }
+
+    private static void writeFile(File file) {
+        FileWriter fw = null;
+        try {
+            fw = new FileWriter(file.getAbsoluteFile());
+            BufferedWriter bw = new BufferedWriter(fw);
+            bw.write("Test Text");
+            bw.close();
+        } catch (IOException ex) {
+            throw new RuntimeException("Failed to write File" + ex);
+        }
+
+    }
+}
--- a/jdk/test/javax/swing/JFileChooser/6520101/bug6520101.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JFileChooser/6520101/bug6520101.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test @(#)bug6520101
+ * @key headful
  * @bug 6520101
  * @summary JFileChooser throws OOM in 1.4.2, 5.0u4 and 1.6.0
  * @author Praveen Gupta
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JFileChooser/8041694/bug8041694.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+   @bug 8041694
+   @summary JFileChooser removes trailing spaces in the selected directory name
+   @author Anton Litvinov
+   @library ../../../../lib/testlibrary
+   @build jdk.testlibrary.OSInfo
+   @run main bug8041694
+ */
+
+import java.awt.AWTException;
+import java.awt.Robot;
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.concurrent.CountDownLatch;
+import javax.swing.JFileChooser;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+import jdk.testlibrary.OSInfo;
+
+public class bug8041694 {
+    private static volatile File dir1;
+    private static File dir2;
+    private static volatile File selectedDir;
+
+    private static void runTest() {
+        try {
+            // Set Metal L&F to make the test compatible with OS X.
+            UIManager.setLookAndFeel(new MetalLookAndFeel());
+            Robot robot = new Robot();
+
+            dir1 = Files.createTempDirectory("bug8041694").toFile();
+            if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) {
+                dir2 = new File(String.format(
+                    "\\\\?\\%s\\d ", dir1.getAbsolutePath().replace('/', '\\')));
+            } else {
+                dir2 = new File(dir1.getAbsolutePath() + File.separator + "d ");
+            }
+            dir2.mkdir();
+
+            final CountDownLatch fChooserClosedSignal = new CountDownLatch(1);
+            SwingUtilities.invokeLater(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        JFileChooser fChooser = new JFileChooser(dir1);
+                        fChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+                        if (fChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
+                            selectedDir = fChooser.getSelectedFile();
+                        }
+                    } finally {
+                        fChooserClosedSignal.countDown();
+                    }
+                }
+            });
+
+            robot.setAutoDelay(50);
+            robot.delay(1000);
+            robot.waitForIdle();
+            robot.keyPress(KeyEvent.VK_D);
+            robot.keyRelease(KeyEvent.VK_D);
+            robot.keyPress(KeyEvent.VK_SPACE);
+            robot.keyRelease(KeyEvent.VK_SPACE);
+            robot.keyPress(KeyEvent.VK_ENTER);
+            robot.keyRelease(KeyEvent.VK_ENTER);
+
+            fChooserClosedSignal.await();
+            if (selectedDir == null) {
+                throw new RuntimeException("No directory was selected in JFileChooser.");
+            }
+            System.out.println(String.format(
+                "The selected directory is '%s'.", selectedDir.getAbsolutePath()));
+            if (selectedDir.getName().equals("d")) {
+                throw new RuntimeException(
+                    "JFileChooser removed trailing spaces in the selected directory name.");
+            } else if (!selectedDir.getName().equals("d ")) {
+                throw new RuntimeException("The selected directory name is not the expected 'd '.");
+            }
+        } catch (UnsupportedLookAndFeelException | AWTException | IOException | InterruptedException e) {
+            throw new RuntimeException(e);
+        } finally {
+            if (dir2 != null) {
+                dir2.delete();
+            }
+            if (dir1 != null) {
+                dir1.delete();
+            }
+        }
+    }
+
+    public static void main(String[] args) {
+        runTest();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JFormattedTextField/7070795/JFormattedTextFieldTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7070795
+ * @summary High contrast colour scheme fails to be applied to JFormattedTextField
+ * @requires (os.family == "windows")
+ * @run main/manual JFormattedTextFieldTest
+ */
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.NumberFormat;
+import javax.swing.JButton;
+import javax.swing.JFormattedTextField;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+
+public class JFormattedTextFieldTest implements ActionListener {
+
+    private static GridBagLayout layout;
+    private static JPanel mainControlPanel;
+    private static JPanel resultButtonPanel;
+    private static JLabel instructionText;
+    private static JButton passButton;
+    private static JButton failButton;
+    private static JFrame mainFrame;
+
+    public static void main(String[] args) throws Exception {
+        JFormattedTextFieldTest jFormattedTextFieldTest = new JFormattedTextFieldTest();
+    }
+
+    public JFormattedTextFieldTest() throws Exception {
+        createUI();
+    }
+
+    public final void createUI() throws Exception {
+
+        UIManager.setLookAndFeel("com.sun.java.swing.plaf."
+                + "windows.WindowsLookAndFeel");
+
+        SwingUtilities.invokeAndWait(() -> {
+
+            mainFrame = new JFrame("Window LAF JFormattedTextField Test");
+            layout = new GridBagLayout();
+            mainControlPanel = new JPanel(layout);
+            resultButtonPanel = new JPanel(layout);
+
+            GridBagConstraints gbc = new GridBagConstraints();
+            String instructions
+                    = "<html>INSTRUCTIONS:<br>"
+                    + "Set Windows Theme to HighContrast#1.<br><br>"
+                    + "(ControlPanel->Personalization->High Contrast#1)<br><br>"
+                    + "If TextFiled colors are same test"
+                    + " passes else failed.<br><br></html>";
+
+            instructionText = new JLabel();
+            instructionText.setText(instructions);
+
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.fill = GridBagConstraints.HORIZONTAL;
+            mainControlPanel.add(instructionText, gbc);
+
+            passButton = new JButton("Pass");
+            passButton.setActionCommand("Pass");
+            passButton.addActionListener(JFormattedTextFieldTest.this);
+            failButton = new JButton("Fail");
+            failButton.setActionCommand("Fail");
+            failButton.addActionListener(JFormattedTextFieldTest.this);
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            resultButtonPanel.add(passButton, gbc);
+            gbc.gridx = 1;
+            gbc.gridy = 0;
+            resultButtonPanel.add(failButton, gbc);
+            gbc.gridx = 3;
+            gbc.gridy = 0;
+            resultButtonPanel.add(new JTextField("12345"), gbc);
+
+            NumberFormat format = NumberFormat.getIntegerInstance();
+            format.setMaximumIntegerDigits(5);
+            JFormattedTextField formatted = new JFormattedTextField(format);
+            formatted.setText("67891");
+            gbc.gridx = 5;
+            gbc.gridy = 0;
+            resultButtonPanel.add(formatted, gbc);
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            mainControlPanel.add(resultButtonPanel, gbc);
+
+            mainFrame.add(mainControlPanel);
+            mainFrame.setSize(400, 200);
+            mainFrame.setLocationRelativeTo(null);
+            mainFrame.setVisible(true);
+        });
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent evt) {
+        if (evt.getSource() instanceof JButton) {
+            JButton btn = (JButton) evt.getSource();
+            cleanUp();
+            switch (btn.getActionCommand()) {
+                case "Pass":
+                    break;
+                case "Fail":
+                    throw new AssertionError("User Clicked Fail!");
+            }
+        }
+    }
+
+    private static void cleanUp() {
+        mainFrame.dispose();
+    }
+
+}
+
--- a/jdk/test/javax/swing/JFrame/4962534/bug4962534.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JFrame/4962534/bug4962534.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,6 +1,6 @@
 <html>
 <!--
-  Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+  Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
   DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
   This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 
 <!--
   @test
+  @key headful
   @bug 4962534
   @summary JFrame dances very badly
   @author dav@sparc.spb.su area=
--- a/jdk/test/javax/swing/JInternalFrame/6288609/TestJInternalFrameDispose.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JInternalFrame/6288609/TestJInternalFrameDispose.java	Wed Jul 05 21:51:13 2017 +0200
@@ -67,6 +67,7 @@
 
         robot.waitForIdle();
         executeTest();
+        robot.delay(1000);
         dispose();
     }
 
--- a/jdk/test/javax/swing/JInternalFrame/8145060/TestJInternalFrameMinimize.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JInternalFrame/8145060/TestJInternalFrameMinimize.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015,2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -155,7 +155,7 @@
                 };
             }
         });
-        timer = new Timer(100, listener);
+        timer = new Timer(1000, listener);
         timer.start();
         robot.delay(1000);
     }
--- a/jdk/test/javax/swing/JInternalFrame/8145896/TestJInternalFrameMaximize.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JInternalFrame/8145896/TestJInternalFrameMaximize.java	Wed Jul 05 21:51:13 2017 +0200
@@ -65,6 +65,7 @@
                 createUI();
                 robot.waitForIdle();
                 executeTest();
+                robot.delay(1000);
             }
         }
         if (!"".equals(errorMessage)) {
--- a/jdk/test/javax/swing/JMenu/8071705/bug8071705.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JMenu/8071705/bug8071705.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8071705
  * @summary  Java application menu misbehaves when running multiple screen stacked vertically
  * @build bug8071705
--- a/jdk/test/javax/swing/JMenuItem/7036148/bug7036148.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JMenuItem/7036148/bug7036148.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
  /*
  * @test
+ * @key headful
  * @bug 7036148
  * @summary NullPointerException with null JMenu name
  * @author Alexander Potochkin
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JMenuItem/8152981/MenuItemIconTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8152981
+ * @summary Double icons with JMenuItem setHorizontalTextPosition on Win 10
+ * @requires (os.family == "windows")
+ * @run main MenuItemIconTest
+ */
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.image.BufferedImage;
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.SwingConstants;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+
+public class MenuItemIconTest {
+
+    private static JFrame frame;
+    private static Robot robot;
+    private static String errorMessage = "";
+    private static JMenuItem menuItem;
+    private static final int IMAGE_WIDTH_AND_HEIGHT = 25;
+
+    public static void main(String[] args) throws Exception {
+        robot = new Robot();
+        String name = UIManager.getSystemLookAndFeelClassName();
+        try {
+            UIManager.setLookAndFeel(name);
+        } catch (ClassNotFoundException | InstantiationException |
+                IllegalAccessException | UnsupportedLookAndFeelException e) {
+            throw new RuntimeException("Test Failed");
+        }
+        createUI();
+        robot.waitForIdle();
+        executeTest();
+        if (!"".equals(errorMessage)) {
+            throw new RuntimeException(errorMessage);
+        }
+    }
+
+    private static void createUI() throws Exception {
+        SwingUtilities.invokeAndWait(() -> {
+            frame = new JFrame();
+            frame.setTitle("Test");
+            JMenuBar menuBar = new JMenuBar();
+            ImageIcon icon = createIcon();
+            menuItem = new JMenuItem("Command", icon);
+            menuItem.setHorizontalTextPosition(SwingConstants.LEFT);
+            menuBar.add(menuItem);
+            frame.setJMenuBar(menuBar);
+            frame.setPreferredSize(new Dimension(500, 500));
+            frame.pack();
+            frame.setVisible(true);
+            frame.setLocationRelativeTo(null);
+        });
+    }
+
+    private static void checkPixeclColor(int x, int y) {
+        robot.delay(2000);
+        robot.mouseMove(x, y);
+        Color c = robot.getPixelColor(x, y);
+        if (c.getRed() == 255) {
+            errorMessage = "Test Failed";
+        }
+        robot.delay(5000);
+        frame.dispose();
+    }
+
+    protected static ImageIcon createIcon() {
+        BufferedImage bi = new BufferedImage(IMAGE_WIDTH_AND_HEIGHT,
+                IMAGE_WIDTH_AND_HEIGHT, BufferedImage.TYPE_INT_ARGB);
+        Graphics g = bi.createGraphics();
+        g.setColor(Color.RED);
+        g.fillOval(0, 0, IMAGE_WIDTH_AND_HEIGHT, IMAGE_WIDTH_AND_HEIGHT);
+        return new ImageIcon(bi);
+    }
+
+    private static void executeTest() throws Exception {
+        Point point = menuItem.getLocationOnScreen();
+        checkPixeclColor(point.x + IMAGE_WIDTH_AND_HEIGHT / 2,
+                point.y + IMAGE_WIDTH_AND_HEIGHT / 2);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JMenuItem/ClickMenuTestManual/ClickMenuTestManual.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,183 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /* @test
+ * @bug 8158230
+ * @summary Verify menu item option apple.laf.useScreenMenuBar implementation
+ * @requires (os.family=="mac")
+ * @run main ClickMenuTestManual
+ */
+import java.awt.Color;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JTextArea;
+import static javax.swing.WindowConstants.EXIT_ON_CLOSE;
+
+public class ClickMenuTestManual implements
+        ActionListener {
+
+    public static final String TEST_STRING = "STRING";
+
+    private static GridBagLayout layout;
+    private static JPanel mainControlPanel;
+    private static JPanel instructionPanel;
+    private static JPanel testPanel;
+
+    private static JPanel resultButtonPanel;
+    private static JPanel controlPanel;
+    private static JTextArea instructionTextArea;
+    private static JTextArea testTextArea;
+    private static JButton passButton;
+    private static JButton failButton;
+    private static JMenu menu;
+    private static JMenuBar menuBar;
+    private static JMenuItem menuItem;
+    private static JFrame mainFrame;
+
+    public static void main(String[] args) throws Exception {
+        System.setProperty("apple.laf.useScreenMenuBar", "true");
+        ClickMenuTestManual test
+                = new ClickMenuTestManual();
+    }
+
+    public ClickMenuTestManual() throws Exception {
+        createControlPanelUI();
+    }
+
+    public final void createControlPanelUI() throws Exception {
+        layout = new GridBagLayout();
+        mainControlPanel = new JPanel(layout);
+        instructionPanel = new JPanel(layout);
+        testPanel = new JPanel(layout);
+        resultButtonPanel = new JPanel(layout);
+        controlPanel = new JPanel(layout);
+
+        GridBagConstraints gbc = new GridBagConstraints();
+        String instructions
+                = "1) Click on MENU using mouse "
+                + "\n2) Click on MENU ITEM using mouse "
+                + "\n3) Check output on textArea if equal to STRING "
+                + "\n\n If correct string, press \"Pass\" "
+                + "\n Otherwise, press \"Fail\" ";
+        instructionTextArea = new JTextArea();
+        instructionTextArea.setText(instructions);
+        instructionTextArea.setEnabled(false);
+        instructionTextArea.setDisabledTextColor(Color.black);
+        instructionTextArea.setBackground(Color.white);
+        instructionTextArea.setBorder(
+                BorderFactory.createLineBorder(Color.black));
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        instructionPanel.add(instructionTextArea, gbc);
+        testTextArea = new JTextArea();
+        testTextArea.setEnabled(true);
+        testTextArea.setDisabledTextColor(Color.black);
+        testTextArea.setBackground(Color.white);
+        testTextArea.setBorder(
+                BorderFactory.createLineBorder(Color.black));
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        testPanel.add(testTextArea, gbc);
+        passButton = new JButton("Pass");
+        passButton.setActionCommand("Pass");
+        passButton.addActionListener(this);
+        failButton = new JButton("Fail");
+        failButton.setActionCommand("Fail");
+        failButton.addActionListener(this);
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        resultButtonPanel.add(passButton, gbc);
+        gbc.gridx = 1;
+        gbc.gridy = 0;
+        resultButtonPanel.add(failButton, gbc);
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        mainControlPanel.add(instructionPanel, gbc);
+        gbc.gridx = 0;
+        gbc.gridy = 1;
+        mainControlPanel.add(testPanel, gbc);
+        gbc.gridx = 0;
+        gbc.gridy = 2;
+        mainControlPanel.add(resultButtonPanel, gbc);
+        gbc.gridx = 0;
+        gbc.gridy = 3;
+        mainControlPanel.add(controlPanel, gbc);
+        mainFrame = new JFrame("Control Panel");
+        mainFrame.add(mainControlPanel);
+        menuBar = new JMenuBar();
+        menu = new JMenu("MENU");
+        menuItem = new JMenuItem("MENU ITEM");
+        menuItem.addActionListener((e) -> {
+            testTextArea.setText(TEST_STRING);
+        });
+        menu.add(menuItem);
+        menuBar.add(menu);
+        mainFrame.setJMenuBar(menuBar);
+        mainFrame.pack();
+        mainFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
+        mainFrame.setVisible(true);
+
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent evt) {
+        if (evt.getSource() instanceof JButton) {
+            JButton btn = (JButton) evt.getSource();
+            if (btn.getActionCommand().equals("Pass")) {
+                try {
+                    cleanUp();
+                } catch (Exception ex) {
+                    Logger.getLogger(ClickMenuTestManual.class
+                            .getName()).log(Level.SEVERE, null, ex);
+                }
+            } else if (btn.getActionCommand().equals("Fail")) {
+                try {
+                    cleanUp();
+                } catch (Exception ex) {
+                    Logger.getLogger(ClickMenuTestManual.class
+                            .getName()).log(Level.SEVERE, null, ex);
+                }
+                throw new AssertionError("Test case has failed");
+
+            }
+        }
+    }
+
+    private static void cleanUp() {
+        mainFrame.dispose();
+    }
+
+}
--- a/jdk/test/javax/swing/JPopupMenu/4634626/bug4634626.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JPopupMenu/4634626/bug4634626.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -20,14 +20,18 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
-/* @test
-   @bug 4634626
-   @summary Implement context popup menus for components
-   @author Alexander Zuev
-   @library ../../../../lib/testlibrary
-   @build ExtendedRobot
-   @run applet bug4634626.html
-*/
+
+/*
+ * @test
+ * @key headful
+ * @bug 4634626
+ * @summary Implement context popup menus for components
+ * @author Alexander Zuev
+ * @library ../../../../lib/testlibrary
+ * @build ExtendedRobot
+ * @run applet bug4634626.html
+ */
+
 import javax.swing.*;
 import java.awt.event.*;
 import java.awt.*;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JPopupMenu/8147521/PopupMenuTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8147521 8158358
+ * @summary [macosx] Internal API Usage: setPopupType used to force creation of
+ * heavyweight popup
+ * @run main PopupMenuTest
+ */
+import java.awt.Component;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
+import java.awt.event.InputEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import javax.swing.JFrame;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.Popup;
+import javax.swing.PopupFactory;
+import javax.swing.SwingUtilities;
+import javax.swing.event.PopupMenuEvent;
+import javax.swing.event.PopupMenuListener;
+import javax.swing.plaf.basic.BasicPopupMenuUI;
+
+public class PopupMenuTest {
+
+    private JPopupMenu jpopup;
+    private static volatile boolean isLightWeight;
+    private static JFrame frame;
+    private static Robot robot;
+    private static JPanel panel;
+
+    public static void main(String s[]) throws Exception {
+        PopupMenuTest obj = new PopupMenuTest();
+        obj.createUI();
+        robot = new Robot();
+        robot.waitForIdle();
+        robot.delay(1000);
+        obj.exectuteTest();
+        obj.dispose();
+        if (isLightWeight) {
+            throw new RuntimeException("Test Failed");
+        }
+    }
+
+    private void createUI() throws Exception {
+        SwingUtilities.invokeAndWait(() -> {
+            frame = new JFrame("Popup Menu");
+            jpopup = new JPopupMenu();
+            jpopup.setUI(new PopMenuUIExt());
+            JMenuItem item = new JMenuItem("Menu Item1");
+            jpopup.add(item);
+            item = new JMenuItem("Menu Item2");
+            jpopup.setLabel("Justification");
+            jpopup.add(item);
+            jpopup.setLabel("Justification");
+            jpopup.addPopupMenuListener(new PopupListener());
+            panel = new JPanel();
+            panel.addMouseListener(new MousePopupListener());
+            frame.setContentPane(panel);
+            frame.setSize(300, 300);
+            frame.setLocationRelativeTo(null);
+            frame.setVisible(true);
+        });
+
+    }
+
+    private void dispose() throws Exception {
+        SwingUtilities.invokeAndWait(() -> {
+            Popup popup = PopMenuUIExt.getPopup();
+            if (popup != null) {
+                popup.hide();
+            }
+            frame.dispose();
+        });
+    }
+
+    private void exectuteTest() {
+        Point p = frame.getLocationOnScreen();
+        Rectangle rect = frame.getBounds();
+        robot.mouseMove(p.x + rect.width / 2, p.y + rect.height / 2);
+        robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);
+        robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);
+        robot.delay(1000);
+        robot.mouseMove(p.x + rect.width / 2 - 10, p.y + rect.height / 2 - 10);
+        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
+        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
+        robot.delay(1000);
+    }
+
+    class MousePopupListener extends MouseAdapter {
+
+        @Override
+        public void mousePressed(MouseEvent e) {
+            showPopup(e);
+        }
+
+        @Override
+        public void mouseClicked(MouseEvent e) {
+            showPopup(e);
+        }
+
+        @Override
+        public void mouseReleased(MouseEvent e) {
+            showPopup(e);
+        }
+
+        private void showPopup(MouseEvent e) {
+            jpopup.show(panel, e.getX(), e.getY());
+        }
+    }
+
+    class PopupListener implements PopupMenuListener {
+
+        public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
+        }
+
+        public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
+            Popup popup = ((PopMenuUIExt) jpopup.getUI()).getPopup();
+            if (popup != null) {
+                isLightWeight = !popup.getClass().toString().
+                        contains("HeavyWeightPopup");
+            }
+        }
+
+        public void popupMenuCanceled(PopupMenuEvent e) {
+        }
+    }
+}
+
+class PopMenuUIExt extends BasicPopupMenuUI {
+
+    private static Popup popUp;
+
+    @Override
+    public Popup getPopup(JPopupMenu popup, int x, int y) {
+        PopupFactory.setSharedInstance(new PopupFactory() {
+
+            @Override
+            public Popup getPopup(Component owner, Component contents,
+                    int x, int y) {
+                return super.getPopup(owner, contents, x, y, true);
+            }
+        });
+        PopupFactory factory = PopupFactory.getSharedInstance();
+        popUp = factory.getPopup(popup.getInvoker(), popup, x, y);
+        return popUp;
+    }
+
+    public static Popup getPopup() {
+        return popUp;
+    }
+}
+
--- a/jdk/test/javax/swing/JSlider/6794836/bug6794836.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JSlider/6794836/bug6794836.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,7 +21,9 @@
  * questions.
  */
 
-/* @test
+/*
+ * @test
+ * @key headful
  * @bug 6794836
  * @summary BasicSliderUI throws NullPointerExc when JSlider maximum is Integer.MAX_VALUE
  * @author Pavel Porvatov
--- a/jdk/test/javax/swing/JSpinner/5012888/bug5012888.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JSpinner/5012888/bug5012888.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,12 +21,15 @@
  * questions.
  */
 
-/* @test 1.0 04/04/23
-   @bug 5012888
-   @summary REGRESSION: Click & hold on arrow of JSpinner only transfers focus
-   @author Konstantin Eremin
-   @run main bug5012888
-*/
+/*
+ * @test 1.0 04/04/23
+ * @key headful
+ * @bug 5012888
+ * @summary REGRESSION: Click & hold on arrow of JSpinner only transfers focus
+ * @author Konstantin Eremin
+ * @run main bug5012888
+ */
+
 import javax.swing.*;
 import javax.swing.event.*;
 import java.awt.*;
--- a/jdk/test/javax/swing/JTextField/I18NViewNoWrapMinSpan/I18NViewNoWrapMinSpan.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JTextField/I18NViewNoWrapMinSpan/I18NViewNoWrapMinSpan.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,34 +28,29 @@
    @author Semyon Sadetsky
 */
 
-import javax.swing.*;
+import javax.swing.JTextField;
 import javax.swing.SwingUtilities;
 import javax.swing.text.BadLocationException;
-import java.lang.Override;
-import java.lang.Runnable;
 
 public class I18NViewNoWrapMinSpan {
 
     public static void main(String[] args) throws Exception {
-        SwingUtilities.invokeAndWait(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    JTextField textField = new JTextField(15);
-                    textField.setText("ม12345");
-                    float noSpaceMin = textField.getUI().getRootView(textField)
-                            .getMinimumSpan(0);
-                    textField.getDocument().insertString(3, " ", null);
-                    if (noSpaceMin > textField.getUI().getRootView(textField)
-                            .getMinimumSpan(0)) {
-                        throw new RuntimeException(
-                                "Minimum span is calculated for wrapped text");
-                    }
-                } catch (BadLocationException e) {
-                    throw new RuntimeException(e);
+        SwingUtilities.invokeAndWait(() -> {
+            try {
+                JTextField textField = new JTextField(15);
+                textField.setText("\u0E2112345");
+                float noSpaceMin = textField.getUI().getRootView(textField)
+                        .getMinimumSpan(0);
+                textField.getDocument().insertString(3, " ", null);
+                if (noSpaceMin > textField.getUI().getRootView(textField)
+                        .getMinimumSpan(0)) {
+                    throw new RuntimeException(
+                            "Minimum span is calculated for wrapped text");
                 }
+            } catch (BadLocationException e) {
+                throw new RuntimeException(e);
             }
         });
         System.out.println("ok");
     }
-}
\ No newline at end of file
+}
--- a/jdk/test/javax/swing/JTree/DnD/LastNodeLowerHalfDrop.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JTree/DnD/LastNodeLowerHalfDrop.java	Wed Jul 05 21:51:13 2017 +0200
@@ -22,12 +22,14 @@
  */
 
 /* @test
-   @bug 8129830
-   @summary JTree drag/drop on lower half of last child of container incorrect
-   @author Semyon Sadetsky
-  */
+ * @bug 8129830 8132771
+ * @summary JTree drag/drop on lower half of last child of container incorrect
+ * @run main LastNodeLowerHalfDrop
+ */
 
-import java.awt.*;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Robot;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
@@ -35,7 +37,13 @@
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
-import javax.swing.*;
+import javax.swing.DropMode;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JTree;
+import javax.swing.SwingUtilities;
+import javax.swing.TransferHandler;
 import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.tree.DefaultTreeModel;
 import javax.swing.tree.TreeModel;
@@ -74,24 +82,31 @@
         testCase(b2, a1, +0.4f);
         if (!"b2".equals(jTree.getModel().
                 getChild(a, a.getChildCount() - 1).toString())) {
-            throw new RuntimeException("b1 was not inserted in the last position in a");
+            cleanUp();
+            throw new RuntimeException("b1 was not inserted "
+                    +"in the last position in a");
         }
         testCase(c1, c, -0.4f);
         if (!"c1".equals(jTree.getModel().getChild(root, 2).toString())) {
-            throw new RuntimeException("c1 was not inserted beetween c and b nodes");
+            cleanUp();
+            throw new RuntimeException("c1 was not inserted "
+                    +"between c and b nodes");
         }
+        cleanUp();
+    }
 
-        SwingUtilities.invokeLater(new Runnable() {
+    private static void cleanUp() throws Exception {
+        SwingUtilities.invokeAndWait(new Runnable() {
             @Override
             public void run() {
                 f.dispose();
             }
         });
-        System.out.printf("ok");
     }
 
-    static void testCase(DefaultMutableTreeNode drag,
-                         DefaultMutableTreeNode drop, float shift) throws Exception {
+    private static void testCase(final DefaultMutableTreeNode drag,
+            final DefaultMutableTreeNode drop, final float shift)
+            throws Exception {
         Robot robot = new Robot();
         robot.waitForIdle();
         SwingUtilities.invokeAndWait(new Runnable() {
@@ -112,11 +127,11 @@
 
         robot.mouseMove(dragPoint.x, dragPoint.y);
         robot.mousePress(InputEvent.BUTTON1_MASK);
-        robot.delay(400);
+        robot.delay(1000);
         robot.mouseMove(dropPoint.x, dropPoint.y);
-        robot.delay(400);
+        robot.delay(1000);
         robot.mouseRelease(InputEvent.BUTTON1_MASK);
-
+        robot.delay(1000);
         robot.waitForIdle();
     }
 
--- a/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucent.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucent.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if a per-pixel translucent window is dragged and resized
  *          by mouse correctly.
  * Test Description: Check if PERPIXEL_TRANSLUCENT translucency type is supported
--- a/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentGradient.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentGradient.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8032644
  * @summary Check if a per-pixel translucent window is dragged and resized by
  *          mouse correctly
--- a/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentSwing.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentSwing.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if a per-pixel translucent window shows only the area having
  *          opaque pixels
  * Test Description: Check if PERPIXEL_TRANSLUCENT Translucency type is supported
--- a/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/SetShapeAndClickSwing.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/SetShapeAndClickSwing.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,6 +33,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if a window set with shape clips the contents
  * Test Description: Check if PERPIXEL_TRANSPARENT translucency type is supported
  *      by the current platform. Proceed if it is supported. Apply different types
--- a/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 7043845
  * @summary Check if shaped and per-pixel translucent window is dragged and
  *          resized by mouse correctly.
--- a/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedTranslucentPerPixelTranslucentGradient.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedTranslucentPerPixelTranslucentGradient.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if shaped, translucent and per-pixel translucent window is
  *          dragged and resized by mouse correctly.
  * Test Description: Check if PERPIXEL_TRANSLUCENT, TRANSLUCENT and
--- a/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 8024627
  * @summary Check if a JComboBox present in a window set with opacity less than
  *          1.0 shows a translucent drop down
--- a/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentPerPixelTranslucentGradient.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentPerPixelTranslucentGradient.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if a per-pixel translucent and translucent window is dragged
  *          and resized by mouse correctly
  * Test Description: Check if PERPIXEL_TRANSLUCENT and TRANSLUCENT translucency
--- a/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentWindowClickSwing.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentWindowClickSwing.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /*
  * @test
+ * @key headful
  * @summary Check if swing components present in a window set with opacity less
  *          than 1.0 appears translucent
  * Test Description: Check if TRANSLUCENT Translucency type is supported for the
--- a/jdk/test/javax/swing/LookAndFeel/8145547/DemandGTK.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/LookAndFeel/8145547/DemandGTK.java	Wed Jul 05 21:51:13 2017 +0200
@@ -26,6 +26,7 @@
   @summary  Tests that GTK LaF is supported on solaris
             regardless of jdk.gtk.version flag values.
   @bug 8156121
+  @key headful
   @requires (os.name == "linux" | os.name == "solaris")
   @run main/othervm -Djdk.gtk.version=2 DemandGTK
   @run main/othervm -Djdk.gtk.version=3 DemandGTK
--- a/jdk/test/javax/swing/LookAndFeel/8145547/DemandGTK2.sh	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/LookAndFeel/8145547/DemandGTK2.sh	Wed Jul 05 21:51:13 2017 +0200
@@ -26,6 +26,7 @@
 #   @test
 #   @summary  Try to force GTK2. We must bail out to GTK3 (if any) if no 2 available.
 #
+#   @key headful
 #   @compile ProvokeGTK.java
 #   @requires os.family == "linux"
 #   @run shell/timeout=400 DemandGTK2.sh
--- a/jdk/test/javax/swing/LookAndFeel/8145547/DemandGTK3.sh	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/LookAndFeel/8145547/DemandGTK3.sh	Wed Jul 05 21:51:13 2017 +0200
@@ -27,6 +27,7 @@
 #   @test
 #   @summary  Try to force GTK3. We must bail out to GTK2 if no 3 available.
 #
+#   @key headful
 #   @compile ProvokeGTK.java
 #   @requires os.family == "linux"
 #   @run shell/timeout=400 DemandGTK3.sh
--- a/jdk/test/javax/swing/MultiUIDefaults/4300666/bug4300666.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/MultiUIDefaults/4300666/bug4300666.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,12 +21,14 @@
  * questions.
  */
 
-/* @test
-   @bug 4300666
-   @summary Printing UIDefaults throws NoSuchElementExcept
-   @author Andrey Pikalev
-   @run applet bug4300666.html
-*/
+/*
+ * @test
+ * @key headful
+ * @bug 4300666
+ * @summary Printing UIDefaults throws NoSuchElementExcept
+ * @author Andrey Pikalev
+ * @run applet bug4300666.html
+ */
 
 import javax.swing.*;
 
--- a/jdk/test/javax/swing/RepaintManager/6608456/bug6608456.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/RepaintManager/6608456/bug6608456.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,7 +21,9 @@
  * questions.
  */
 
-/* @test
+/*
+ * @test
+ * @key headful
  *
  * @bug 6608456
  * @author Igor Kushnirskiy
--- a/jdk/test/javax/swing/SwingUtilities/7170657/bug7170657.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/SwingUtilities/7170657/bug7170657.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7170657
  * @author Sergey Bylokhov
  */
--- a/jdk/test/javax/swing/SwingUtilities/8049533/bug8049533.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/SwingUtilities/8049533/bug8049533.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8049533
  * @summary SwingUtilities.convertMouseEvent misses
  *      MouseWheelEvent.preciseWheelRotation
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/UIManager/8136366/CreateLookAndFeelTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Toolkit;
+import javax.swing.LookAndFeel;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import sun.awt.SunToolkit;
+
+/**
+ * @test
+ * @bug 8136366
+ * @summary Add a public API to create a L&F without installation
+ * @modules java.desktop/sun.awt
+ */
+public class CreateLookAndFeelTest {
+
+    public static void main(String[] args) throws Exception {
+        SwingUtilities.invokeAndWait(CreateLookAndFeelTest::createLAFs);
+    }
+
+    private static void createLAFs() {
+
+        for (LAFTest lafTest : LAFTest.values()) {
+            createLAF(lafTest);
+        }
+
+        try {
+            UIManager.createLookAndFeel(null);
+        } catch (NullPointerException e) {
+            return;
+        } catch (UnsupportedLookAndFeelException ignore) {
+        }
+
+        throw new RuntimeException("NPE is not thrown!");
+    }
+
+    private static void createLAF(LAFTest lafTest) {
+        try {
+            UIManager.createLookAndFeel(lafTest.lafName);
+
+        } catch (UnsupportedLookAndFeelException e) {
+            if (lafTest.isSupported) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    private static boolean isOSAvailable(String supportedOS) {
+        return System.getProperty("os.name")
+                .toLowerCase()
+                .contains(supportedOS);
+    }
+
+    private static boolean isGTKAvailable() {
+        Toolkit toolkit = Toolkit.getDefaultToolkit();
+        if (!(toolkit instanceof SunToolkit)) {
+            return false;
+        }
+        return ((SunToolkit) toolkit).isNativeGTKAvailable();
+    }
+
+    enum LAFTest {
+
+        METAL("Metal"),
+        NIMBUS("Nimbus"),
+        MOTIF("CDE/Motif"),
+        WINDOWS("Windows", isOSAvailable("windows")),
+        GTK("GTK look and feel", isGTKAvailable()),
+        MAC("Mac OS X", isOSAvailable("mac"));
+
+        private final String lafName;
+        private final boolean isSupported;
+
+        private LAFTest(String lafName) {
+            this(lafName, true);
+        }
+
+        private LAFTest(String lafName, boolean crossPlatform) {
+            this.lafName = lafName;
+            this.isSupported = crossPlatform;
+        }
+    }
+}
--- a/jdk/test/javax/swing/plaf/basic/BasicComboPopup/7072653/bug7072653.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/plaf/basic/BasicComboPopup/7072653/bug7072653.java	Wed Jul 05 21:51:13 2017 +0200
@@ -22,106 +22,153 @@
  */
 
 /* @test
-   @bug 7072653
-   @summary JComboBox popup mispositioned if its height exceeds the screen height
-   @author Semyon Sadetsky
-  */
-
-
-import javax.swing.*;
+ * @bug 7072653 8144161
+ * @summary JComboBox popup mispositioned if its height exceeds the screen height
+ * @run main bug7072653
+ */
+import java.awt.FlowLayout;
+import java.awt.GraphicsConfiguration;
+import java.awt.Insets;
+import java.awt.Robot;
 import javax.swing.event.PopupMenuEvent;
 import javax.swing.event.PopupMenuListener;
-import java.awt.*;
 import java.awt.Toolkit;
+import java.awt.Window;
+import java.util.Arrays;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
 
 public class bug7072653 {
 
     private static JComboBox combobox;
     private static JFrame frame;
+    private static Robot robot;
+    private static volatile String errorString = "";
 
     public static void main(String[] args) throws Exception {
-        try {
+        robot = new Robot();
+        robot.delay(100);
+        UIManager.LookAndFeelInfo[] lookAndFeelArray
+                = UIManager.getInstalledLookAndFeels();
+        for (UIManager.LookAndFeelInfo lookAndFeelItem : lookAndFeelArray) {
+            executeCase(lookAndFeelItem.getClassName());
+            robot.delay(1000);
+        }
+        if (!"".equals(errorString)) {
+
+            throw new RuntimeException("Error Log:\n" + errorString);
+        }
+    }
+
+    private static void executeCase(String lookAndFeelString) throws Exception {
+        if (tryLookAndFeel(lookAndFeelString)) {
             SwingUtilities.invokeAndWait(new Runnable() {
                 @Override
                 public void run() {
-                    frame = new JFrame("JComboBox Test");
-                    setup(frame);
+                    try {
+                        setup(lookAndFeelString);
+                        test();
+                    } catch (Exception ex) {
+                        errorString += "\n";
+                        errorString += Arrays.toString(ex.getStackTrace());
+                    }
+                    finally {
+                        frame.dispose();
+                    }
                 }
             });
-            test();
-        }
-        finally {
-            frame.dispose();
         }
 
     }
 
-    static void setup(JFrame frame)  {
-
+    private static void setup(String lookAndFeelString)
+            throws Exception {
 
-        frame.setUndecorated(true);
+        frame = new JFrame("JComboBox Test " + lookAndFeelString);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
         frame.setSize(320, 200);
-
         frame.getContentPane().setLayout(new FlowLayout());
-
+        frame.setLocationRelativeTo(null);
         combobox = new JComboBox(new DefaultComboBoxModel() {
-            public Object getElementAt(int index) { return "Element " + index; }
+            @Override
+            public Object getElementAt(int index) {
+                return "Element " + index;
+            }
+
+            @Override
             public int getSize() {
-                return 1000;
+                return 100;
             }
         });
 
-
         combobox.setMaximumRowCount(100);
         frame.getContentPane().add(combobox);
+        frame.setVisible(true);
+        combobox.addPopupMenuListener(new PopupMenuListener() {
+            @Override
+            public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
+            }
 
-        frame.setVisible(true);
+            @Override
+            public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
+                int height = 0;
+                for (Window window : JFrame.getWindows()) {
+                    if (Window.Type.POPUP == window.getType()) {
+                        height = window.getSize().height;
+                        break;
+                    }
+                }
+                GraphicsConfiguration gc
+                        = combobox.getGraphicsConfiguration();
+                Insets screenInsets = Toolkit.getDefaultToolkit()
+                        .getScreenInsets(gc);
+                int gcHeight = gc.getBounds().height;
+                if (lookAndFeelString.contains("aqua")) {
+                    gcHeight = gcHeight - screenInsets.top;
+                    //For Aqua LAF
+                } else {
+                    gcHeight = gcHeight - screenInsets.top
+                            - screenInsets.bottom;
+                }
+                if (height == gcHeight) {
+                    return;
+                }
+
+                String exception = "Popup window height "
+                        + "For LookAndFeel" + lookAndFeelString + " is wrong"
+                        + "\nShould be " + height + "Actually " + gcHeight;
+                errorString += exception;
+            }
+
+            @Override
+            public void popupMenuCanceled(PopupMenuEvent e) {
+            }
+
+        });
 
     }
 
-    static void test() throws Exception{
-        SwingUtilities.invokeAndWait(new Runnable() {
-            @Override
-            public void run() {
-                combobox.addPopupMenuListener(new PopupMenuListener() {
-                    @Override
-                    public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
-                    }
-
-                    @Override
-                    public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
-                        int height = 0;
-                        for (Window window : JFrame.getWindows()) {
-                            if (Window.Type.POPUP == window.getType()) {
-                                height = window.getSize().height;
-                                break;
-                            }
-                        }
-                        GraphicsConfiguration gc =
-                                combobox.getGraphicsConfiguration();
-                        Insets screenInsets = Toolkit.getDefaultToolkit()
-                                .getScreenInsets(gc);
-
-                        if (height == gc.getBounds().height - screenInsets.top -
-                                screenInsets.bottom ) {
-                            System.out.println("ok");
-                            return;
-                        }
-                        throw new RuntimeException(
-                                "Popup window height is wrong " + height);
-                    }
-
-                    @Override
-                    public void popupMenuCanceled(PopupMenuEvent e) {
-                    }
-                });
-                combobox.setPopupVisible(true);
-                combobox.setPopupVisible(false);
-            }
-        });
+    private static void test() throws Exception {
+        combobox.setPopupVisible(true);
+        combobox.setPopupVisible(false);
     }
 
+    private static boolean tryLookAndFeel(String lookAndFeelString)
+            throws Exception {
+        try {
+            UIManager.setLookAndFeel(
+                    lookAndFeelString);
 
+        } catch (UnsupportedLookAndFeelException
+                | ClassNotFoundException
+                | InstantiationException
+                | IllegalAccessException e) {
+            return false;
+        }
+        return true;
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/plaf/basic/BasicRootPaneUI/HiddenDefaultButtonTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 6827800
+ * @summary Test to check hidden default button does not respond to 'Enter' key
+ * @run main HiddenDefaultButtonTest
+ */
+
+import java.awt.AWTException;
+import java.awt.Robot;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+
+public class HiddenDefaultButtonTest {
+
+    private static int ButtonClickCount = 0;
+    private static JFrame frame;
+
+    private static void createGUI() {
+        frame = new JFrame();
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+        JButton button = new JButton("Default button");
+        button.setDefaultCapable(true);
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                ButtonClickCount++;
+            }
+        });
+
+        frame.add(button);
+        button.setVisible(false);
+
+        frame.getRootPane().setDefaultButton(button);
+
+        frame.setSize(200, 200);
+        frame.setLocationRelativeTo(null);
+        frame.setVisible(true);
+    }
+
+    private static void disposeTestUI() throws Exception {
+        SwingUtilities.invokeAndWait(() -> {
+            frame.dispose();
+        });
+    }
+
+    private static void test() throws Exception {
+        // Create Robot
+        Robot testRobot = new Robot();
+
+        testRobot.waitForIdle();
+
+        testRobot.keyPress(KeyEvent.VK_ENTER);
+        testRobot.delay(20);
+        testRobot.keyRelease(KeyEvent.VK_ENTER);
+        testRobot.delay(200);
+        testRobot.keyPress(KeyEvent.VK_ENTER);
+        testRobot.delay(20);
+        testRobot.keyRelease(KeyEvent.VK_ENTER);
+
+        testRobot.waitForIdle();
+
+        if (ButtonClickCount != 0) {
+            disposeTestUI();
+            throw new RuntimeException("DefaultButton is pressed even if it is invisible");
+        }
+
+    }
+
+    public static void main(String[] args) throws Exception {
+        // create UI
+        SwingUtilities.invokeAndWait(new Runnable() {
+            public void run() {
+                HiddenDefaultButtonTest.createGUI();
+            }
+        });
+
+        // Test default button press by pressing EnterKey using Robot
+        test();
+
+        // dispose UI
+        HiddenDefaultButtonTest.disposeTestUI();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/plaf/synth/SynthScrollbarThumbPainter/SynthScrollbarThumbPainterTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,203 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 7172750
+ * @summary Test to check Synth ScrollBar:ScrollBarThumb[].backgroundPainter is invoked
+ * @run main SynthScrollbarThumbPainterTest
+ */
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.event.InputEvent;
+import java.awt.image.BufferedImage;
+import javax.swing.JComponent;
+import javax.swing.JEditorPane;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.Painter;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+
+public class SynthScrollbarThumbPainterTest {
+
+    private static Robot testRobot;
+    private static Point pos = new Point();
+    private static MyFrame testFrame;
+
+    public static void main(String[] args) throws Exception {
+        // Create Robot
+        testRobot = new Robot();
+
+        // Create test UI
+        String lookAndFeelString = "javax.swing.plaf.nimbus.NimbusLookAndFeel";
+        SwingUtilities.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    constructTestUI(lookAndFeelString);
+                } catch (Exception ex) {
+                    throw new RuntimeException("Exception creating test UI");
+                }
+            }
+        });
+
+        testRobot.waitForIdle();
+        testRobot.delay(200);
+
+        // Run test method
+        testScrollBarThumbPainter();
+
+        // Dispose test UI
+        disposeTestUI();
+    }
+
+    private static void disposeTestUI() throws Exception {
+        SwingUtilities.invokeAndWait(() -> {
+            testFrame.dispose();
+        });
+    }
+
+
+    private static void constructTestUI(String lookAndFeelString) throws Exception {
+        // Set look and feel
+        UIManager.setLookAndFeel(lookAndFeelString);
+
+        // Set ScrollBarThumb background painters
+        UIManager.getLookAndFeelDefaults().put("ScrollBar:ScrollBarThumb[Enabled].backgroundPainter", new FillPainter(Color.RED));
+        UIManager.getLookAndFeelDefaults().put("ScrollBar:ScrollBarThumb[MouseOver].backgroundPainter", new FillPainter(Color.GREEN));
+        UIManager.getLookAndFeelDefaults().put("ScrollBar:ScrollBarThumb[Pressed].backgroundPainter", new FillPainter(Color.BLUE));
+
+        // Create UI
+        testFrame = new MyFrame();
+    }
+
+   private static void testScrollBarThumbPainter() throws Exception {
+        Point p = testFrame.getLocation();
+        pos.setLocation(p.x + 185, p.y + 80); // offset where scrollbar exists
+
+        testRobot.delay(200);
+
+        // Get the scrollbar color
+        Color ScrollbarColor = testFrame.getPixelColor(pos.x - p.x, pos.y - p.y);
+
+        // Assert ScrollbarThumb 'Enable' state color
+        if (!ScrollbarColor.equals(Color.RED)) {
+            disposeTestUI();
+            throw new RuntimeException("ScrollbarThumb 'Enable' state color does not match expected color");
+        }
+
+        // Move the mouse over scrollbar
+        testRobot.mouseMove(pos.x, pos.y);
+        testRobot.delay(200);
+
+        ScrollbarColor = testFrame.getPixelColor(pos.x - p.x, pos.y - p.y);
+
+        //Assert ScrollbarThumb 'MouseOver' state color
+        if (!ScrollbarColor.equals(Color.GREEN)) {
+            disposeTestUI();
+            throw new RuntimeException("ScrollbarThumb 'MouseOver' state color does not match expected color");
+        }
+
+        // Mouse Press on scrollbar
+        testRobot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
+        testRobot.delay(200);
+
+        ScrollbarColor = testFrame.getPixelColor(pos.x - p.x, pos.y - p.y);
+
+        testRobot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
+        testRobot.delay(200);
+
+        //Assert ScrollbarThumb 'Pressed' state color
+        if (!ScrollbarColor.equals(Color.BLUE)) {
+            disposeTestUI();
+            throw new RuntimeException("ScrollbarThumb 'Pressed' state color does not match expected color");
+        }
+    }
+
+}
+
+
+class FillPainter implements Painter<JComponent> {
+
+    private final Color color;
+
+    FillPainter(Color c) {
+        color = c;
+    }
+
+    @Override
+    public void paint(Graphics2D g, JComponent object, int width, int height) {
+        g.setColor(color);
+        g.fillRect(0, 0, width - 1, height - 1);
+    }
+}
+
+class MyFrame extends JFrame {
+
+    private BufferedImage bi;
+    private final String content = "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nL\nM\nN\nO";
+
+    public MyFrame() {
+        JEditorPane editpane = new JEditorPane();
+        editpane.setEditable(false);
+        editpane.setText(content);
+        editpane.setCaretPosition(0);
+
+        JScrollPane scrollpane = new JScrollPane(editpane);
+
+        add(scrollpane);
+
+        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+
+        setSize(new Dimension(200, 200));
+        bi = new BufferedImage(200, 200, BufferedImage.TYPE_INT_ARGB);
+        setResizable(false);
+        setVisible(true);
+    }
+
+
+    public Color getPixelColor(int x, int y) {
+
+        paintFrameToBufferedImage(this);
+
+        int pixel = bi.getRGB(x, y);
+
+        int alpha = (pixel >> 24) & 0xff;
+        int red = (pixel >> 16) & 0xff;
+        int green = (pixel >> 8) & 0xff;
+        int blue = (pixel) & 0xff;
+
+        Color pixelColor = new Color(red, green, blue, alpha);
+        return pixelColor;
+    }
+
+    private void paintFrameToBufferedImage(Component component) {
+       component.paint(bi.getGraphics());
+    }
+} //MyFrame
+
--- a/jdk/test/javax/swing/plaf/synth/Test6660049.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/plaf/synth/Test6660049.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6660049 6849518
  * @summary Tests the Region initialization
  * @author Sergey Malenkov
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/text/AbstractDocument/DocumentInsert/DocumentInsertAtWrongPositionTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import javax.swing.*;
+import javax.swing.text.*;
+
+/*
+ * @test
+ * @bug 8151015
+ * @summary JTextArea.insert() does not behave as expected with invalid position
+ * @run main DocumentInsertAtWrongPositionTest
+ */
+public class DocumentInsertAtWrongPositionTest {
+    public static void main(String[] args) throws Exception {
+        JTextField te = new JTextField("1234567890");
+        JTextPane tp = new JTextPane();
+        tp.setText("1234567890");
+        JTextArea ta = new JTextArea("1234567890");
+
+        try {
+            ta.insert("abc", 11);
+
+            throw new RuntimeException("failed");
+        } catch (IllegalArgumentException e) {
+        }
+        try {
+
+            te.getDocument().insertString(11, "abc", new SimpleAttributeSet());
+
+            throw new RuntimeException("failed");
+        } catch (BadLocationException e) {
+        }
+        try {
+            tp.getDocument().insertString(11, "abc", new SimpleAttributeSet());
+            throw new RuntimeException("failed");
+        } catch (BadLocationException e) {
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/text/GapContent/4496801/bug4496801.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+   @bug 4496801 8151015
+   @summary Tests HTMLDocument.insertBeforeEnd() method
+   @author Peter Zhelezniakov
+   @run main bug4496801
+*/
+
+import javax.swing.text.html.parser.ParserDelegator;
+import javax.swing.text.html.*;
+import javax.swing.text.*;
+import java.io.IOException;
+
+public class bug4496801 {
+    public static void main(String[] args) {
+        HTMLDocument doc = new HTMLDocument();
+        doc.setParser(new ParserDelegator());
+
+        Element html = doc.getRootElements()[0];
+        Element body = html.getElement(0);
+
+        try {
+            doc.insertBeforeEnd(body, "<h2>foo</h2>");
+        } catch (IOException e) {
+        } catch (BadLocationException e) {
+            throw new RuntimeException("Insertion failed");
+        }
+    }
+}
--- a/jdk/test/javax/swing/text/StyledEditorKit/4506788/bug4506788.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/text/StyledEditorKit/4506788/bug4506788.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,12 +21,15 @@
  * questions.
  */
 
-/* @test
- @bug 4506788 7147408
- @summary  Tests if cursor gets stuck after insertion a character
- @author Denis Sharypov
- @run applet bug4506788.html
+/*
+ * @test
+ * @key headful
+ * @bug 4506788 7147408
+ * @summary  Tests if cursor gets stuck after insertion a character
+ * @author Denis Sharypov
+ * @run applet bug4506788.html
  */
+
 import java.awt.*;
 import java.awt.event.*;
 import java.lang.reflect.InvocationTargetException;
--- a/jdk/test/javax/swing/text/html/parser/Parser/7165725/bug7165725.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/javax/swing/text/html/parser/Parser/7165725/bug7165725.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,12 +21,14 @@
  * questions.
  */
 
-/* @test
-   @bug 7165725
-   @summary  Tests if HTML parser can handle successive script tags in a line
-             and it does not call false text callback after script tags.
-   @run main bug7165725
-*/
+/*
+ * @test
+ * @key headful
+ * @bug 7165725
+ * @summary  Tests if HTML parser can handle successive script tags in a line
+ *           and it does not call false text callback after script tags.
+ * @run main bug7165725
+ */
 
 import java.awt.BorderLayout;
 import java.awt.Robot;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/text/html/parser/Parser/8078268/bug8078268.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* This code is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License version 2 only, as
+* published by the Free Software Foundation.
+*
+* This code 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
+* version 2 for more details (a copy is included in the LICENSE file that
+* accompanied this code).
+*
+* You should have received a copy of the GNU General Public License version
+* 2 along with this work; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+*
+* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+* or visit www.oracle.com if you need additional information or have any
+* questions.
+*/
+
+
+import java.io.File;
+import java.io.FileReader;
+import javax.swing.SwingUtilities;
+import javax.swing.text.Document;
+import javax.swing.text.html.HTMLEditorKit;
+
+/* @test
+   @bug 8078268
+   @summary  javax.swing.text.html.parser.Parser parseScript incorrectly optimized
+   @author Mikhail Cherkasov
+   @run main bug8078268
+*/
+public class bug8078268 {
+    static volatile boolean parsingDone = false;
+    static volatile Exception exception;
+
+    public static void main(String[] args) throws Exception {
+        long s = System.currentTimeMillis();
+        SwingUtilities.invokeLater(new Runnable() {
+            @Override
+            public void run() {
+                HTMLEditorKit htmlKit = new HTMLEditorKit();
+                Document doc = htmlKit.createDefaultDocument();
+                try {
+                    htmlKit.read(new FileReader(getDirURL() + "slowparse.html"), doc, 0);
+                    parsingDone = true;
+                } catch (Exception e) {
+                    exception = e;
+                }
+            }
+        });
+        while (!parsingDone && exception == null && System.currentTimeMillis() - s < 5_000) {
+            Thread.sleep(200);
+        }
+        final long took = System.currentTimeMillis() - s;
+        if (exception != null) {
+            throw exception;
+        }
+        if (took > 5_000) {
+            throw new RuntimeException("Parsing takes too long.");
+        }
+    }
+
+    static String getDirURL() {
+        return new File(System.getProperty("test.src", ".")).getAbsolutePath() +
+                File.separator;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/text/html/parser/Parser/8078268/slowparse.html	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,3539 @@
+<html>
+<head>
+		<script type="text/javascript">
+            var a = 1;
+            <!--
+            </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script> </script>  </script>  </script>  </script>  </script>  </script>
+    -->
+    var b = 2;
+    </script>
+</head>
+<body>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/jdk/internal/misc/VM/RuntimeArguments.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @summary Basic test of VM::getRuntimeArguments
+ * @library /lib/testlibrary
+ * @modules java.base/jdk.internal.misc
+ * @run testng RuntimeArguments
+ */
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Stream;
+import jdk.internal.misc.VM;
+import jdk.testlibrary.ProcessTools;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import static org.testng.Assert.*;
+
+public class RuntimeArguments {
+    static final String TEST_CLASSES = System.getProperty("test.classes");
+
+    @DataProvider(name = "options")
+    public Object[][] options() {
+        return new Object[][] {
+            { // CLI options
+              List.of("-XaddExports:java.base/jdk.internal.misc=ALL-UNNAMED",
+                      "-XaddExports:java.base/jdk.internal.perf=ALL-UNNAMED",
+                      "-addmods", "jdk.zipfs"),
+              // expected runtime arguments
+              List.of("-Djdk.launcher.addexports.0=java.base/jdk.internal.misc=ALL-UNNAMED",
+                      "-Djdk.launcher.addexports.1=java.base/jdk.internal.perf=ALL-UNNAMED",
+                      "-Djdk.launcher.addmods=jdk.zipfs")
+            },
+            { // CLI options
+              List.of("-XaddExports:java.base/jdk.internal.misc=ALL-UNNAMED",
+                      "-addmods", "jdk.zipfs",
+                      "-limitmods", "java.compact3"),
+              // expected runtime arguments
+              List.of("-Djdk.launcher.addexports.0=java.base/jdk.internal.misc=ALL-UNNAMED",
+                      "-Djdk.launcher.addmods=jdk.zipfs", "-Djdk.launcher.limitmods=java.compact3")
+            },
+        };
+    };
+
+    public static void main(String... expected) {
+        String[] vmArgs = VM.getRuntimeArguments();
+        if (!Arrays.equals(vmArgs, expected)) {
+            throw new RuntimeException(Arrays.toString(vmArgs) +
+                " != " + Arrays.toString(expected));
+        }
+    }
+
+    @Test(dataProvider = "options")
+    public void test(List<String> args, List<String> expected) throws Exception {
+        // launch a test program
+        // $ java <runtime-arguments> -classpath <cpath> RuntimeArguments <expected>
+
+        Stream<String> options = Stream.concat(args.stream(),
+            Stream.of("-classpath", TEST_CLASSES, "RuntimeArguments"));
+
+        ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
+            Stream.concat(options, expected.stream())
+                  .toArray(String[]::new)
+        );
+        ProcessTools.executeProcess(pb).shouldHaveExitValue(0);
+    }
+}
--- a/jdk/test/jdk/lambda/LambdaTranslationTest1.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/jdk/lambda/LambdaTranslationTest1.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -137,7 +137,7 @@
 
         LT1IA da = LambdaTranslationTest1::deye;
         da.doit(1234);
-        assertResult("d:1234.000000");
+        assertResult(String.format("d:%f", 1234.0));
 
         LT1SA a = LambdaTranslationTest1::count;
         assertEquals((Integer) 5, a.doit("howdy"));
--- a/jdk/test/jdk/lambda/LambdaTranslationTest2.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/jdk/lambda/LambdaTranslationTest2.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -200,7 +200,7 @@
         assertEquals("b1 s2", ws1.m((byte) 1, (short) 2));
 
         WidenD wd1 = LambdaTranslationTest2::pwD1;
-        assertEquals("f1.000000 d2.000000", wd1.m(1.0f, 2.0));
+        assertEquals(String.format("f%f d%f", 1.0f, 2.0), wd1.m(1.0f, 2.0));
 
         WidenI wi1 = LambdaTranslationTest2::pwI1;
         assertEquals("b1 s2 c3 i4", wi1.m((byte) 1, (short) 2, (char) 3, 4));
@@ -221,12 +221,16 @@
 
     public void testUnboxing() {
         Unbox u = LambdaTranslationTest2::pu;
-        assertEquals("b1 s2 cA i4 j5 ztrue f6.000000 d7.000000", u.m((byte)1, (short) 2, 'A', 4, 5L, true, 6.0f, 7.0));
+        String expected = String.format("b%d s%d c%c i%d j%d z%b f%f d%f",
+                                    (byte)1, (short) 2, 'A', 4, 5L, true, 6.0f, 7.0);
+        assertEquals(expected, u.m((byte)1, (short) 2, 'A', 4, 5L, true, 6.0f, 7.0));
     }
 
     public void testBoxing() {
         Box b = LambdaTranslationTest2::pb;
-        assertEquals("b1 s2 cA i4 j5 ztrue f6.000000 d7.000000", b.m((byte) 1, (short) 2, 'A', 4, 5L, true, 6.0f, 7.0));
+        String expected = String.format("b%d s%d c%c i%d j%d z%b f%f d%f",
+                                    (byte) 1, (short) 2, 'A', 4, 5L, true,  6.0f, 7.0);
+        assertEquals(expected, b.m((byte) 1, (short) 2, 'A', 4, 5L, true, 6.0f, 7.0));
     }
 
     static boolean cc(Object o) {
--- a/jdk/test/sanity/client/SwingSet/src/ButtonDemoScreenshotTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/ButtonDemoScreenshotTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -38,7 +38,7 @@
 
 /*
  * @test
- * @key headful screenshots
+ * @key headful screenshots intermittent
  * @summary Verifies buttons on SwingSet3 ButtonDemo page by clicking each
  *          button, taking its screenshots and checking that pressed button
  *          image is different from initial button image.
@@ -46,6 +46,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.button.ButtonDemo
  * @run testng ButtonDemoScreenshotTest
--- a/jdk/test/sanity/client/SwingSet/src/ButtonDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/ButtonDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -51,6 +51,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.button.ButtonDemo
  * @run testng ButtonDemoTest
--- a/jdk/test/sanity/client/SwingSet/src/ComboBoxDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/ComboBoxDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -40,6 +40,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.combobox.ComboBoxDemo
  * @run testng ComboBoxDemoTest
@@ -76,7 +78,7 @@
         JComboBoxOperator jcbo = new JComboBoxOperator(jfo, comboBoxInfo.ordinal());
         for (int i = 0; i < jcbo.getItemCount(); i++) {
             jcbo.selectItem(i);
-            assertEquals(comboBoxInfo.comboBoxName + " ComboBox SelectedIndex is correct", i, jcbo.getSelectedIndex());
+            jcbo.waitItemSelected(i);
         }
     }
 
--- a/jdk/test/sanity/client/SwingSet/src/ListDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/ListDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -21,17 +21,25 @@
  * questions.
  */
 
-import org.jtregext.GuiTestListener;
 import com.sun.swingset3.demos.list.ListDemo;
 import static com.sun.swingset3.demos.list.ListDemo.DEMO_TITLE;
-import static org.testng.AssertJUnit.*;
-import org.testng.annotations.Test;
-import static org.jemmy2ext.JemmyExt.getLabeledContainerOperator;
+
+import java.awt.Component;
+import javax.swing.JList;
+
 import org.netbeans.jemmy.ClassReference;
+import org.netbeans.jemmy.ComponentChooser;
 import org.netbeans.jemmy.operators.JCheckBoxOperator;
 import org.netbeans.jemmy.operators.JFrameOperator;
 import org.netbeans.jemmy.operators.JListOperator;
+
+import static org.jemmy2ext.JemmyExt.*;
+
+import org.jtregext.GuiTestListener;
+
 import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.*;
 
 /*
  * @test
@@ -43,6 +51,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.list.ListDemo
  * @run testng ListDemoTest
@@ -52,6 +62,17 @@
 
     private static final int CHECKBOX_COUNT = 50;
 
+    private void waitModelSize(JListOperator listOp, int size) {
+        listOp.waitState(new ComponentChooser() {
+            public boolean checkComponent(Component comp) {
+                return getUIValue(listOp, (JList list) -> list.getModel().getSize()) == size;
+            }
+            public String getDescription() {
+                return "Model size to be equal to " + size;
+            }
+        });
+    }
+
     @Test
     public void test() throws Exception {
 
@@ -65,16 +86,14 @@
             JCheckBoxOperator checkBox = getJCheckBoxOperator(frame, i);
             checkBox.changeSelection(false);
         }
-        System.out.println("######## Number of Items = " + listOp.getModel().getSize());
-        assertEquals("Select None number of items is correct", 0, listOp.getModel().getSize());
+        waitModelSize(listOp, 0);
 
         // Check *ALL* Prefix and Suffixes Marked
         for (int i = 0; i < CHECKBOX_COUNT; i++) {
             JCheckBoxOperator checkBox = getJCheckBoxOperator(frame, i);
             checkBox.changeSelection(true);
         }
-        System.out.println("######## Number of Items = " + listOp.getModel().getSize());
-        assertEquals("Select All number of items is correct", CHECKBOX_COUNT / 2 * CHECKBOX_COUNT / 2, listOp.getModel().getSize());
+        waitModelSize(listOp, CHECKBOX_COUNT * CHECKBOX_COUNT / 4);
 
         // Check *ALL* Prefix and *NO* Suffixes Marked
         for (int i = 0; i < CHECKBOX_COUNT; i++) {
@@ -85,8 +104,7 @@
                 checkBox.changeSelection(false);
             }
         }
-        System.out.println("######## Number of Items = " + listOp.getModel().getSize());
-        assertEquals("Select All Prefixes and NO Suffixes number of items is correct", 0, listOp.getModel().getSize());
+        waitModelSize(listOp, 0);
 
         // Check *NO* Prefix and *ALL* Suffixes Marked
         for (int i = 0; i < CHECKBOX_COUNT; i++) {
@@ -97,8 +115,7 @@
                 checkBox.changeSelection(true);
             }
         }
-        System.out.println("######## Number of Items = " + listOp.getModel().getSize());
-        assertEquals("Select NO Prefixes and All Suffixes number of items is correct", 0, listOp.getModel().getSize());
+        waitModelSize(listOp, 0);
     }
 
     private JCheckBoxOperator getJCheckBoxOperator(JFrameOperator frame, int index) {
@@ -115,7 +132,9 @@
             subindex = index - CHECKBOX_COUNT / 2;
         }
 
-        return new JCheckBoxOperator(getLabeledContainerOperator(frame, labelText), subindex);
+        JCheckBoxOperator result = new JCheckBoxOperator(getLabeledContainerOperator(frame, labelText), subindex);
+        result.setVerification(true);
+        return result;
     }
 
 }
--- a/jdk/test/sanity/client/SwingSet/src/OptionPaneDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/OptionPaneDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -21,20 +21,25 @@
  * questions.
  */
 
-import org.jtregext.GuiTestListener;
 import com.sun.swingset3.demos.optionpane.OptionPaneDemo;
 import static com.sun.swingset3.demos.optionpane.OptionPaneDemo.*;
+
 import javax.swing.UIManager;
-import static org.testng.AssertJUnit.*;
-import org.testng.annotations.Test;
+
+import org.jtregext.GuiTestListener;
+
 import org.netbeans.jemmy.ClassReference;
+import org.netbeans.jemmy.operators.Operator.DefaultStringComparator;
 import org.netbeans.jemmy.operators.JButtonOperator;
 import org.netbeans.jemmy.operators.JComboBoxOperator;
 import org.netbeans.jemmy.operators.JDialogOperator;
 import org.netbeans.jemmy.operators.JFrameOperator;
 import org.netbeans.jemmy.operators.JLabelOperator;
 import org.netbeans.jemmy.operators.JTextFieldOperator;
+
 import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.*;
 
 
 /*
@@ -46,6 +51,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.optionpane.OptionPaneDemo
  * @run testng OptionPaneDemoTest
@@ -77,70 +84,44 @@
         showConfirmationDialog(frame);
     }
 
+    private void checkMessage(String message) {
+        JDialogOperator jdo = new JDialogOperator(MESSAGE);
+        new JLabelOperator(jdo, message);
+        new JButtonOperator(jdo, OK).push();
+        jdo.waitClosed();
+    }
+
+    private void useInputDialog(JFrameOperator jfo, String textToType, String buttonToPush) {
+        new JButtonOperator(jfo, INPUT_BUTTON).pushNoBlock();
+        JDialogOperator jdo = new JDialogOperator(INPUT);
+        if(textToType != null) {
+            JTextFieldOperator jto = new JTextFieldOperator(jdo);
+            jto.typeText(textToType);
+            jto.waitText(textToType);
+        }
+        new JButtonOperator(jdo, buttonToPush).push();
+        jdo.waitClosed();
+    }
+
     public void showInputDialog(JFrameOperator jfo) throws Exception {
         // Cancel with text case
-        {
-            new JButtonOperator(jfo, INPUT_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(INPUT);
-            JTextFieldOperator jto = new JTextFieldOperator(jdo);
-            jto.setText(SOME_TEXT_TO_TYPE);
-
-            assertTrue("Show Input Dialog cancel w/ Text", jdo.isShowing());
-
-            new JButtonOperator(jdo, CANCEL).push();
-
-            assertFalse("Show Input Dialog cancel w/ Text", jdo.isShowing());
-        }
+        useInputDialog(jfo, SOME_TEXT_TO_TYPE, CANCEL);
+        //TODO: wait for no dialog displayed
 
         // Cancel with *NO* text case
-        {
-            new JButtonOperator(jfo, INPUT_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(INPUT);
-
-            assertTrue("Show Input Dialog cancel w/o Text", jdo.isShowing());
-
-            new JButtonOperator(jdo, CANCEL).push();
-
-            assertFalse("Show Input Dialog cancel w/o Text", jdo.isShowing());
-        }
+        useInputDialog(jfo, null, CANCEL);
+        //TODO: wait for no dialog displayed
 
         // Text field has *NO* input
-        {
-            new JButtonOperator(jfo, INPUT_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(INPUT);
-
-            assertTrue("Show Input Dialog w/o Input", jdo.isShowing());
-
-            new JButtonOperator(jdo, OK).push();
-
-            assertFalse("Show Input Dialog w/o Input", jdo.isShowing());
-        }
+        useInputDialog(jfo, null, OK);
+        //TODO: wait for no dialog displayed
 
         // Text field has input
         {
             final String enteredText = "Rambo";
 
-            new JButtonOperator(jfo, INPUT_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(INPUT);
-            JTextFieldOperator jto = new JTextFieldOperator(jdo);
-            jto.setText(enteredText);
-            new JButtonOperator(jdo, OK).pushNoBlock();
-
-            JDialogOperator jdo1 = new JDialogOperator(MESSAGE);
-
-            assertTrue("Show Input Dialog w/ Input", jdo1.isShowing());
-
-            final String labelText = enteredText + INPUT_RESPONSE;
-            JLabelOperator jLabelOperator = new JLabelOperator(jdo1, labelText);
-            assertEquals("Text from the field made it into the dialog", labelText, jLabelOperator.getText());
-
-            new JButtonOperator(jdo1, OK).push();
-
-            assertFalse("Show Input Dialog w/ Input", jdo1.isShowing());
+            useInputDialog(jfo, enteredText, OK);
+            checkMessage(enteredText + INPUT_RESPONSE);
         }
     }
 
@@ -149,11 +130,9 @@
 
         JDialogOperator jdo = new JDialogOperator(WARNING_TITLE);
 
-        assertTrue("Show Warning Dialog", jdo.isShowing());
-
         new JButtonOperator(jdo, OK).push();
 
-        assertFalse("Show Warning Dialog", jdo.isShowing());
+        jdo.waitClosed();
     }
 
     public void showMessageDialog(JFrameOperator jfo) throws Exception {
@@ -161,105 +140,46 @@
 
         JDialogOperator jdo = new JDialogOperator(MESSAGE);
 
-        assertTrue("Show Message Dialog", jdo.isShowing());
-
         new JButtonOperator(jdo, OK).push();
 
-        assertFalse("Show Message Dialog", jdo.isShowing());
+        jdo.waitClosed();
+    }
+
+    private void callADialogAndClose(JFrameOperator jfo, String buttonToOpenDialog,
+                                     String dialogTitle, String buttonToPush) {
+        new JButtonOperator(jfo, buttonToOpenDialog).pushNoBlock();
+        JDialogOperator jdo = new JDialogOperator(dialogTitle);
+        new JButtonOperator(jdo, buttonToPush).push();
+        jdo.waitClosed();
     }
 
     public void showComponentDialog(JFrameOperator jfo) throws Exception {
         // Case: Cancel
-        {
-            new JButtonOperator(jfo, COMPONENT_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(COMPONENT_TITLE);
-
-            assertTrue("Show Component Dialog Cancel Option", jdo.isShowing());
-
-            new JButtonOperator(jdo, COMPONENT_OP5).push();
-
-            assertFalse("Show Component Dialog Cancel Option", jdo.isShowing());
-        }
+        callADialogAndClose(jfo, COMPONENT_BUTTON, COMPONENT_TITLE, COMPONENT_OP5);
+        //TODO: wait for no dialog displayed
 
         // Case: Yes option selected
         {
-            new JButtonOperator(jfo, COMPONENT_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(COMPONENT_TITLE);
-            new JButtonOperator(jdo, COMPONENT_OP1).pushNoBlock();
-
-            JDialogOperator jdo1 = new JDialogOperator(MESSAGE);
-
-            assertTrue("Component Dialog Example Yes Option", jdo1.isShowing());
-
-            final String labelText = COMPONENT_R1;
-            JLabelOperator jLabelOperator = new JLabelOperator(jdo1, labelText);
-            assertEquals("Dialog contains appropriate text", labelText, jLabelOperator.getText());
-
-            new JButtonOperator(jdo1, OK).push();
-
-            assertFalse("Component Dialog Example Yes Option", jdo1.isShowing());
+            callADialogAndClose(jfo, COMPONENT_BUTTON, COMPONENT_TITLE, COMPONENT_OP1);
+            checkMessage(COMPONENT_R1);
         }
 
         // Case: No option selected
         {
-            new JButtonOperator(jfo, COMPONENT_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(COMPONENT_TITLE);
-            new JButtonOperator(jdo, COMPONENT_OP2).pushNoBlock();
-
-            JDialogOperator jdo1 = new JDialogOperator(MESSAGE);
-
-            assertTrue("Component Dialog Example No Option", jdo1.isShowing());
-
-            final String labelText = COMPONENT_R2;
-            JLabelOperator jLabelOperator = new JLabelOperator(jdo1, labelText);
-            assertEquals("Dialog contains appropriate text", labelText, jLabelOperator.getText());
-
-            new JButtonOperator(jdo1, OK).push();
-
-            assertFalse("Component Dialog Example No Option", jdo1.isShowing());
+            callADialogAndClose(jfo, COMPONENT_BUTTON, COMPONENT_TITLE, COMPONENT_OP2);
+            checkMessage(COMPONENT_R2);
         }
 
         // Case: Maybe option selected
         {
-            new JButtonOperator(jfo, COMPONENT_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(COMPONENT_TITLE);
-            new JButtonOperator(jdo, COMPONENT_OP3).pushNoBlock();
-
-            JDialogOperator jdo1 = new JDialogOperator(MESSAGE);
-
-            assertTrue("Component Dialog Maybe Yes Option", jdo1.isShowing());
-
-            final String labelText = COMPONENT_R3;
-            JLabelOperator jLabelOperator = new JLabelOperator(jdo1, labelText);
-            assertEquals("Dialog contains appropriate text", labelText, jLabelOperator.getText());
-
-            new JButtonOperator(jdo1, OK).push();
-
-            assertFalse("Component Dialog Maybe Yes Option", jdo1.isShowing());
+            callADialogAndClose(jfo, COMPONENT_BUTTON, COMPONENT_TITLE, COMPONENT_OP3);
+            checkMessage(COMPONENT_R3);
         }
 
         // Case: Probably option selected
         {
-            new JButtonOperator(jfo, COMPONENT_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(COMPONENT_TITLE);
-            new JButtonOperator(jdo, COMPONENT_OP4).pushNoBlock();
-
-            JDialogOperator jdo1 = new JDialogOperator(MESSAGE);
-
-            assertTrue("Component Dialog Example Probably Option", jdo1.isShowing());
-
-            final String labelText = COMPONENT_R4;
-            JLabelOperator jLabelOperator = new JLabelOperator(jdo1, labelText);
-            assertEquals("Dialog contains appropriate text", labelText, jLabelOperator.getText());
-
-            new JButtonOperator(jdo1, OK).push();
-
-            assertFalse("Component Dialog Example Probably Option", jdo1.isShowing());
+            callADialogAndClose(jfo, COMPONENT_BUTTON, COMPONENT_TITLE, COMPONENT_OP4);
+            checkMessage(COMPONENT_R4);
         }
 
         // Case TextField and ComboBox functional
@@ -271,69 +191,35 @@
             JTextFieldOperator jto = new JTextFieldOperator(jdo);
             jto.clearText();
             jto.typeText(TEXT_TO_TYPE);
+            jto.waitText(TEXT_TO_TYPE);
 
             JComboBoxOperator jcbo = new JComboBoxOperator(jdo);
             jcbo.selectItem(2);
+            jcbo.waitItemSelected(2);
 
-            assertEquals("Show Component Dialog TextField", TEXT_TO_TYPE, jto.getText());
-            assertEquals("Show Component Dialog ComboBox", 2, jcbo.getSelectedIndex());
-
-            new JButtonOperator(jdo, "cancel").push();
+            new JButtonOperator(jdo, COMPONENT_OP5).push();
+            jdo.waitClosed();
+            //TODO: wait for no dialog displayed
         }
     }
 
     public void showConfirmationDialog(JFrameOperator jfo) throws Exception {
         // Case: Yes option selected
         {
-            new JButtonOperator(jfo, CONFIRM_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(SELECT_AN_OPTION);
-            new JButtonOperator(jdo, YES).pushNoBlock();
-
-            JDialogOperator jdo1 = new JDialogOperator(MESSAGE);
-
-            assertTrue("Show Confirmation Dialog Yes Option", jdo1.isShowing());
-
-            final String labelText = CONFIRM_YES;
-            JLabelOperator jLabelOperator = new JLabelOperator(jdo1, labelText);
-            assertEquals("Dialog contains appropriate text", labelText, jLabelOperator.getText());
-
-            new JButtonOperator(jdo1, OK).push();
-
-            assertFalse("Show Confirmation Dialog Yes Option", jdo1.isShowing());
+            callADialogAndClose(jfo, CONFIRM_BUTTON, SELECT_AN_OPTION, YES);
+            checkMessage(CONFIRM_YES);
         }
 
         // Case: No option selected
         {
-            new JButtonOperator(jfo, CONFIRM_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(SELECT_AN_OPTION);
-            new JButtonOperator(jdo, NO).pushNoBlock();
-
-            JDialogOperator jdo1 = new JDialogOperator(MESSAGE);
-
-            assertTrue("Show Confirmation Dialog No Option", jdo1.isShowing());
-
-            final String labelText = CONFIRM_NO;
-            JLabelOperator jLabelOperator = new JLabelOperator(jdo1, labelText);
-            assertEquals("Dialog contains appropriate text", labelText, jLabelOperator.getText());
-
-            new JButtonOperator(jdo1, OK).push();
-
-            assertFalse("Show Confirmation Dialog No Option", jdo1.isShowing());
+            callADialogAndClose(jfo, CONFIRM_BUTTON, SELECT_AN_OPTION, NO);
+            checkMessage(CONFIRM_NO);
         }
 
         // Case: Cancel option selected
         {
-            new JButtonOperator(jfo, CONFIRM_BUTTON).pushNoBlock();
-
-            JDialogOperator jdo = new JDialogOperator(SELECT_AN_OPTION);
-
-            assertTrue("Show Confirmation Dialog Cancel Option", jdo.isShowing());
-
-            new JButtonOperator(jdo, CANCEL).push();
-
-            assertFalse("Show Confirmation Dialog Cancel Option", jdo.isShowing());
+            callADialogAndClose(jfo, CONFIRM_BUTTON, SELECT_AN_OPTION, CANCEL);
+            //TODO: wait for no dialog displayed
         }
     }
 
--- a/jdk/test/sanity/client/SwingSet/src/ProgressBarDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/ProgressBarDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -43,6 +43,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.progressbar.ProgressBarDemo
  * @run testng ProgressBarDemoTest
@@ -81,7 +83,6 @@
             @Override
             public boolean checkComponent(Component comp) {
                 int value = progressBar.getValue();
-                System.out.println("checkComponent1 value = " + value);
                 return value < maximum;
             }
 
@@ -98,7 +99,6 @@
             @Override
             public boolean checkComponent(Component comp) {
                 int value = progressBar.getValue();
-                System.out.println("checkComponent2 value = " + value);
                 return value > 0;
             }
 
--- a/jdk/test/sanity/client/SwingSet/src/ScrollPaneDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/ScrollPaneDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -40,6 +40,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.scrollpane.ScrollPaneDemo
  * @run testng ScrollPaneDemoTest
--- a/jdk/test/sanity/client/SwingSet/src/SpinnerDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/SpinnerDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -42,6 +42,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.spinner.SpinnerDemo
  * @run testng SpinnerDemoTest
--- a/jdk/test/sanity/client/SwingSet/src/SplitPaneDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/SplitPaneDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -21,22 +21,29 @@
  * questions.
  */
 
-import org.jtregext.GuiTestListener;
 import com.sun.swingset3.demos.splitpane.SplitPaneDemo;
 import static com.sun.swingset3.demos.splitpane.SplitPaneDemo.*;
+
+import java.awt.Component;
 import java.awt.event.KeyEvent;
 import javax.swing.JSplitPane;
-import static org.testng.AssertJUnit.*;
-import org.testng.annotations.Test;
+
+import static org.jemmy2ext.JemmyExt.*;
+
+import org.jtregext.GuiTestListener;
+
 import org.netbeans.jemmy.ClassReference;
+import org.netbeans.jemmy.ComponentChooser;
 import org.netbeans.jemmy.operators.JButtonOperator;
 import org.netbeans.jemmy.operators.JCheckBoxOperator;
 import org.netbeans.jemmy.operators.JFrameOperator;
 import org.netbeans.jemmy.operators.JRadioButtonOperator;
 import org.netbeans.jemmy.operators.JSplitPaneOperator;
 import org.netbeans.jemmy.operators.JTextFieldOperator;
-import static org.jemmy2ext.JemmyExt.*;
+
 import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.*;
 
 /*
  * @test
@@ -48,6 +55,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.splitpane.SplitPaneDemo
  * @run testng SplitPaneDemoTest
@@ -115,14 +124,33 @@
                 (splitPane.getMaximumDividerLocation() + splitPane.getMinimumDividerLocation()) / 2, splitPane.getDividerLocation());
     }
 
+    private void waitDividerSize(JSplitPaneOperator splitPane, int size) {
+        splitPane.waitState(new ComponentChooser() {
+            public boolean checkComponent(Component c) {
+                return splitPane.getDividerSize() == size;
+            }
+            public String getDescription() {
+                return "Divider size to be " + size;
+            }
+        });
+    }
+
     // Check changing the size of the divider
     public void changeDividerSize(JFrameOperator frame, JSplitPaneOperator splitPane, int amount) throws Exception {
         JTextFieldOperator size = new JTextFieldOperator(getLabeledContainerOperator(frame, DIVIDER_SIZE));
-        size.clearText();
-        size.typeText(Integer.toString(amount));
-        size.pressKey(KeyEvent.VK_ENTER);
+        size.enterText(Integer.toString(amount));
+        waitDividerSize(splitPane, amount);
+    }
 
-        assertEquals("Change Divider Size", amount, splitPane.getDividerSize());
+    private void waitDividerLocation(JSplitPaneOperator splitPane, int location) {
+        splitPane.waitState(new ComponentChooser() {
+            public boolean checkComponent(Component c) {
+                return splitPane.getDividerLocation() == location;
+            }
+            public String getDescription() {
+                return "Divider location to be " + location;
+            }
+        });
     }
 
     public void checkOneTouch(JFrameOperator frame, JSplitPaneOperator splitPane, boolean oneTouch) throws Exception {
@@ -144,23 +172,19 @@
 
             // expand full left
             buttonLeft.push();
-            assertEquals("Expandable Left", left, splitPane.getDividerLocation());
+            waitDividerLocation(splitPane, left);
 
             // expand back from full left
             buttonRight.push();
-            assertEquals("Expandable Back to Original from Left",
-                    initDividerLocation, splitPane.getDividerLocation());
+            waitDividerLocation(splitPane, initDividerLocation);
 
             // expand all the way right
             buttonRight.push();
-            assertEquals("Expandable Right",
-                    splitPane.getWidth() - splitPane.getDividerSize() - right,
-                    splitPane.getDividerLocation());
+            waitDividerLocation(splitPane, splitPane.getWidth() - splitPane.getDividerSize() - right);
 
             // Click to move back from right expansion
             buttonLeft.push();
-            assertEquals("Expandable Back to Original from Right",
-                    initDividerLocation, splitPane.getDividerLocation());
+            waitDividerLocation(splitPane, initDividerLocation);
         }
 
         // Test for case where one touch expandable is disabled
@@ -169,7 +193,14 @@
                 // uncheck
                 checkBox.doClick();
             }
-            assertFalse("One Touch Expandable Off", splitPane.isOneTouchExpandable());
+            splitPane.waitState(new ComponentChooser() {
+                public boolean checkComponent(Component c) {
+                    return !splitPane.isOneTouchExpandable();
+                }
+                public String getDescription() {
+                    return "Split pane not to be one touch expandable";
+                }
+            });
         }
     }
 
--- a/jdk/test/sanity/client/SwingSet/src/TabbedPaneDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/TabbedPaneDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -43,6 +43,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.tabbedpane.TabbedPaneDemo
  * @run testng TabbedPaneDemoTest
@@ -69,9 +71,8 @@
         for (int i = 0; i < tabTitles.length; i++) {
             String pageTitle = tabTitles[i];
             JTabbedPaneOperator tabOperator = new JTabbedPaneOperator(mainFrame);
+            tabOperator.setVerification(true);
             tabOperator.selectPage(pageTitle);
-
-            assertEquals("Selected tab is selected", i, tabOperator.getSelectedIndex());
         }
     }
 
--- a/jdk/test/sanity/client/SwingSet/src/TextFieldDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/TextFieldDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -21,20 +21,22 @@
  * questions.
  */
 
-import org.jtregext.GuiTestListener;
 import com.sun.swingset3.demos.textfield.JHistoryTextField;
 import com.sun.swingset3.demos.textfield.TextFieldDemo;
 import static com.sun.swingset3.demos.textfield.TextFieldDemo.*;
+
 import java.awt.Color;
+import java.awt.Component;
 import java.awt.event.KeyEvent;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Locale;
 import javax.swing.JFormattedTextField;
+
 import static org.jemmy2ext.JemmyExt.*;
-import static org.testng.AssertJUnit.*;
-import org.testng.annotations.Test;
+
 import org.netbeans.jemmy.ClassReference;
+import org.netbeans.jemmy.ComponentChooser;
 import org.netbeans.jemmy.QueueTool;
 import org.netbeans.jemmy.operators.ContainerOperator;
 import org.netbeans.jemmy.operators.JButtonOperator;
@@ -42,7 +44,12 @@
 import org.netbeans.jemmy.operators.JLabelOperator;
 import org.netbeans.jemmy.operators.JPasswordFieldOperator;
 import org.netbeans.jemmy.operators.JTextFieldOperator;
+
+import org.jtregext.GuiTestListener;
+
 import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.*;
 
 /*
  * @test
@@ -53,6 +60,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.textfield.TextFieldDemo
  * @run testng TextFieldDemoTest
@@ -95,9 +104,7 @@
 
         // Check default date Day of the Week
         jbo.push();
-        assertEquals("Default DOW",
-                calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.ENGLISH),
-                dowLabel.getText());
+        dowLabel.waitText(calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.ENGLISH));
 
         // Check Custom Day of the Week
         calendar.set(2012, 9, 11); // Represents "Oct 11, 2012"
@@ -114,7 +121,7 @@
         jtfo.enterText(dateString);
 
         jbo.push();
-        assertEquals("Custom DOW", "Thursday", dowLabel.getText());
+        dowLabel.waitText("Thursday");
     }
 
     public void passwordField(JFrameOperator jfo) throws Exception {
@@ -125,13 +132,27 @@
         password2.typeText("password");
 
         // Check Matching Passwords
-        assertEquals("Matching Passwords", Color.green, password1.getBackground());
-        assertEquals("Matching Passwords", Color.green, password2.getBackground());
+        password1.waitState(new ComponentChooser() {
+            public boolean checkComponent(Component comp) {
+                return password1.getBackground().equals(Color.green) &&
+                       password2.getBackground().equals(Color.green);
+            }
+            public String getDescription() {
+                return "Passwords to match";
+            }
+        });
 
         // Check non-matching passwords
         password2.typeText("passwereertegrs");
-        assertEquals("Non-Matching Passwords", Color.white, password1.getBackground());
-        assertEquals("Non-Matching Passwords", Color.white, password2.getBackground());
+        password1.waitState(new ComponentChooser() {
+            public boolean checkComponent(Component comp) {
+                return password1.getBackground().equals(Color.white) &&
+                       password2.getBackground().equals(Color.white);
+            }
+            public String getDescription() {
+                return "Passwords not to match";
+            }
+        });
     }
 
 }
--- a/jdk/test/sanity/client/SwingSet/src/ToggleButtonDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/ToggleButtonDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -56,6 +56,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.togglebutton.ToggleButtonDemo
  * @run testng ToggleButtonDemoTest
@@ -125,12 +127,12 @@
         }
 
         for (int i = 0; i < radioButtonCount; i++) {
-            jrbo[i].doClick();
-            assertTrue("Radio Button " + i + " is selected", jrbo[i].isSelected());
+            jrbo[i].push();
+            jrbo[i].waitSelected(true);
 
             for (int j = 0; j < radioButtonCount; j++) {
                 if (i != j) {
-                    assertFalse("Radio Button " + j + " is not selected", jrbo[j].isSelected());
+                    jrbo[j].waitSelected(false);
                 }
             }
         }
@@ -146,23 +148,17 @@
      */
     private void testCheckBox(ContainerOperator<?> parent, String text, boolean expectedValue) {
 
+        System.out.println("Testing " + text);
         parent.setComparator(EXACT_STRING_COMPARATOR);
         JCheckBoxOperator jcbo = new JCheckBoxOperator(parent, text);
-        assertEquals("Initial selection state of the checkbox '" + text + "'", expectedValue, jcbo.isSelected());
+        jcbo.waitSelected(expectedValue);
 
         // click check box (toggle the state)
-        jcbo.doClick();
-        assertEquals("Selection state of the checkbox '" + text + "' after click", !expectedValue, jcbo.isSelected());
-        if (jcbo.isSelected()) {
-            // toggle back to not-selected state
-            jcbo.doClick();
-            assertFalse("Check Box '" + text + "' is not selected", jcbo.isSelected());
-        } else {
-            // toggle back to selected state
-            jcbo.doClick();
+        jcbo.push();
+        jcbo.waitSelected(!expectedValue);
 
-            assertTrue("Check Box '" + text + "' is selected", jcbo.isSelected());
-        }
+        jcbo.push();
+        jcbo.waitSelected(expectedValue);
     }
 
 
--- a/jdk/test/sanity/client/SwingSet/src/TreeDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/TreeDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -21,16 +21,22 @@
  * questions.
  */
 
-import org.jtregext.GuiTestListener;
 import com.sun.swingset3.demos.tree.TreeDemo;
 import static com.sun.swingset3.demos.tree.TreeDemo.DEMO_TITLE;
+
+import java.awt.Component;
 import javax.swing.tree.TreePath;
-import static org.testng.AssertJUnit.*;
-import org.testng.annotations.Test;
+
+import org.jtregext.GuiTestListener;
+
 import org.netbeans.jemmy.ClassReference;
+import org.netbeans.jemmy.ComponentChooser;
 import org.netbeans.jemmy.operators.JFrameOperator;
 import org.netbeans.jemmy.operators.JTreeOperator;
+
 import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.*;
 
 /*
  * @test
@@ -45,6 +51,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.tree.TreeDemo
  * @run testng TreeDemoTest
@@ -52,6 +60,20 @@
 @Listeners(GuiTestListener.class)
 public class TreeDemoTest {
 
+    private static final int NODES_TO_EXPAND = 75;
+    private static final int NODES_TOTAL = 616;
+
+    private void waitRowCount(JTreeOperator tree, int count) {
+        tree.waitState(new ComponentChooser() {
+            public boolean checkComponent(Component comp) {
+                return tree.getRowCount() == count;
+            }
+            public String getDescription() {
+                return "A tree to have " + count + " rows";
+            }
+        });
+    }
+
     @Test
     public void test() throws Exception {
 
@@ -75,9 +97,8 @@
             }
         }
 
-        assertEquals("Number of rows expanded", 75, expandsCount);
-        assertEquals("Number of rows in the tree after expanding all of them",
-                616, tree.getRowCount());
+        assertEquals("Number of rows expanded", NODES_TO_EXPAND, expandsCount);
+        waitRowCount(tree, NODES_TOTAL);
 
         int expandedTreeHeight = tree.getHeight();
         assertTrue("Expanded tree height has increased, current "
@@ -94,9 +115,8 @@
             }
         }
 
-        assertEquals("Number of rows collapsed", 76, collapsesCount);
-        assertEquals("Number of rows in the tree after collapsing all of them",
-                1, tree.getRowCount());
+        assertEquals("Number of rows collapsed", NODES_TO_EXPAND + 1, collapsesCount);
+        waitRowCount(tree, 1);
 
         int collapsedTreeHeight = tree.getHeight();
         assertTrue("Collpased tree height is not longer than initial, "
--- a/jdk/test/sanity/client/SwingSet/src/WindowDemoTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/WindowDemoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -44,6 +44,8 @@
  * @library /sanity/client/lib/jemmy/src
  * @library /sanity/client/lib/Extensions/src
  * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
  * @build org.jemmy2ext.JemmyExt
  * @build com.sun.swingset3.demos.window.WindowDemo
  * @run testng WindowDemoTest
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/awt/image/OffScreenImageSource/ImageFilterTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8139192
+ * @summary Test to check OffScreenImageSource handles
+ *          ImageFilter.imageComplete() behaviors
+ * @run main ImageFilterTest
+ */
+
+import java.awt.Image;
+import java.awt.Toolkit;
+import java.awt.image.BufferedImage;
+import java.awt.image.FilteredImageSource;
+import java.awt.image.ImageFilter;
+
+
+public class ImageFilterTest {
+
+    public static void main(String[] args) {
+        String[] scenarios = {
+            "SUCCESS",
+            "SINGLEFRAMEDONE exception",
+            "STATICIMAGEDONE exception"
+        };
+
+        for (String str : scenarios) {
+            MyImageFilter testFilter = new MyImageFilter(str);
+            test(testFilter);
+        }
+    }
+
+    public static void test(MyImageFilter testFilter) {
+        Image image = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB);
+        FilteredImageSource filtered =
+                new FilteredImageSource(image.getSource(), testFilter);
+
+        Image img = Toolkit.getDefaultToolkit().createImage(filtered);
+
+        BufferedImage buffImage = new BufferedImage(img.getWidth(null),
+                img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
+    }
+}
+
+class MyImageFilter extends ImageFilter {
+
+    private String testScenario;
+    private boolean intermediateStatus;
+
+    public MyImageFilter(String scenario) {
+        super();
+
+        testScenario = scenario;
+        intermediateStatus = false;
+    }
+
+    @Override
+    public void imageComplete(int status) {
+        switch (testScenario) {
+            case "SUCCESS":
+                if (status == SINGLEFRAMEDONE) {
+                    intermediateStatus = true;
+                }
+
+                if (status == STATICIMAGEDONE) {
+                    if (!intermediateStatus) {
+                        throw new RuntimeException("STATICIMAGEDONE is not expected");
+                    }
+                }
+
+                if (status == IMAGEERROR) {
+                    throw new RuntimeException("IMAGEERROR is not expected");
+                }
+                break;
+
+            case "SINGLEFRAMEDONE exception":
+                if (status == SINGLEFRAMEDONE) {
+                    intermediateStatus = true;
+
+                    throw new NullPointerException("NullPointerException for testing purpose");
+                }
+
+                if (status == IMAGEERROR) {
+                    if (!intermediateStatus) {
+                        throw new RuntimeException("IMAGEERROR is not expected");
+                    }
+                }
+
+                if (status == STATICIMAGEDONE) {
+                    throw new RuntimeException("STATICIMAGEDONE is not expected");
+                }
+                break;
+
+            case "STATICIMAGEDONE exception":
+                if (status == SINGLEFRAMEDONE) {
+                    intermediateStatus = true;
+                }
+
+                if (status == STATICIMAGEDONE) {
+                    if (intermediateStatus) {
+                        throw new RuntimeException("RuntimeException for testing purpose");
+                    }
+                }
+
+                if (status == IMAGEERROR) {
+                    throw new RuntimeException("IMAGEERROR is not expected");
+                }
+                break;
+
+            default:
+                throw new RuntimeException("Invalid Test Scenario");
+        }
+    }
+}
+
+
--- a/jdk/test/sun/java2d/AcceleratedXORModeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/AcceleratedXORModeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,12 +22,13 @@
  */
 
 /*
-* @test
-* @bug     8024343 8042098
-* @summary Test verifies that accelerated pipelines
-*          correctly draws primitives in XOR mode.
-* @run main/othervm -Dsun.java2d.xrender=True AcceleratedXORModeTest
-*/
+ * @test
+ * @key headful
+ * @bug     8024343 8042098
+ * @summary Test verifies that accelerated pipelines
+ *          correctly draws primitives in XOR mode.
+ * @run main/othervm -Dsun.java2d.xrender=True AcceleratedXORModeTest
+ */
 
 import java.awt.Color;
 import java.awt.Graphics2D;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/java2d/ClassCastExceptionForInvalidSurface.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.Image;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.font.FontRenderContext;
+import java.awt.font.GlyphVector;
+import java.awt.image.BufferedImage;
+import java.awt.image.VolatileImage;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+import static java.awt.image.BufferedImage.TYPE_INT_ARGB;
+
+/**
+ * @test
+ * @bug 8158072 7172749
+ */
+public final class ClassCastExceptionForInvalidSurface {
+
+    static GraphicsEnvironment ge
+            = GraphicsEnvironment.getLocalGraphicsEnvironment();
+
+    static GraphicsConfiguration gc
+            = ge.getDefaultScreenDevice().getDefaultConfiguration();
+
+    static volatile VolatileImage vi = gc.createCompatibleVolatileImage(10, 10);
+
+    static volatile Throwable failed;
+
+    static BlockingQueue<VolatileImage> list = new ArrayBlockingQueue<>(50);
+
+    // Will run the test no more than 15 seconds
+    static long endtime = System.nanoTime() + TimeUnit.SECONDS.toNanos(15);
+
+    public static void main(final String[] args) throws InterruptedException {
+
+        // Catch all uncaught exceptions and treat them as test failure
+        Thread.setDefaultUncaughtExceptionHandler((t, e) -> failed = e);
+
+        // Data for rendering
+        BufferedImage bi = new BufferedImage(10, 10, TYPE_INT_ARGB);
+        FontRenderContext frc = new FontRenderContext(null, false, false);
+        Font font = new Font("Serif", Font.PLAIN, 12);
+        GlyphVector gv = font.createGlyphVector(frc, new char[]{'a', '1'});
+
+        Thread t1 = new Thread(() -> {
+            while (!isComplete()) {
+                vi = gc.createCompatibleVolatileImage(10, 10);
+                if (!list.offer(vi)) {
+                    vi.flush();
+                }
+            }
+            list.forEach(Image::flush);
+        });
+        Thread t2 = new Thread(() -> {
+            while (!isComplete()) {
+                VolatileImage vi = list.poll();
+                if (vi != null) {
+                    vi.flush();
+                }
+            }
+        });
+
+        Thread t3 = new Thread(() -> {
+            while (!isComplete()) {
+                vi.createGraphics().drawImage(bi, 1, 1, null);
+            }
+        });
+        Thread t4 = new Thread(() -> {
+            while (!isComplete()) {
+                vi.createGraphics().drawGlyphVector(gv, 0, 0);
+                vi.createGraphics().drawOval(0, 0, 10, 10);
+                vi.createGraphics().drawLine(0, 0, 10, 10);
+                vi.createGraphics().drawString("123", 1, 1);
+                vi.createGraphics().draw(new Rectangle(0, 0, 10, 10));
+                vi.createGraphics().fillOval(0, 0, 10, 10);
+                final Graphics2D graphics = vi.createGraphics();
+                graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                                          RenderingHints.VALUE_ANTIALIAS_ON);
+                graphics.fillPolygon(new int[] {0, 10, 10, 0},
+                                     new int [] {0, 0, 10, 10}, 4);
+            }
+        });
+        t1.start();
+        t2.start();
+        t3.start();
+        t4.start();
+        t1.join();
+        t2.join();
+        t3.join();
+        t4.join();
+
+        if (failed != null) {
+            System.err.println("Test failed");
+            failed.printStackTrace();
+        }
+    }
+
+    private static boolean isComplete() {
+        return endtime - System.nanoTime() < 0 || failed != null;
+    }
+}
--- a/jdk/test/sun/java2d/DirectX/AccelPaintsTest/AccelPaintsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/AccelPaintsTest/AccelPaintsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6659345
  * @summary Tests that various paints work correctly when preceeded by a
  * textured operaiton.
--- a/jdk/test/sun/java2d/DirectX/AcceleratedScaleTest/AcceleratedScaleTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/AcceleratedScaleTest/AcceleratedScaleTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -37,6 +37,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6429665
  * @bug 6588884
  * @summary Tests that the transform is correctly handled
--- a/jdk/test/sun/java2d/DirectX/DrawBitmaskToSurfaceTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/DrawBitmaskToSurfaceTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug     6997116
  * @summary Test verifies that rendering of images with bitmap transparency
  *          to a D3D surface does not cause an ClassCastException.
--- a/jdk/test/sun/java2d/DirectX/InfiniteValidationLoopTest/InfiniteValidationLoopTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/InfiniteValidationLoopTest/InfiniteValidationLoopTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6648018
  * @summary Tests that we don't run into infinite validation loop when copying
             a VolatileImage to the screen
--- a/jdk/test/sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  */
 /*
  * @test
+ * @key headful
  * @bug 6664068 6666931
  * @summary Tests that resizing a window to which a tight loop is rendering
  * doesn't produce artifacts or crashes
--- a/jdk/test/sun/java2d/DirectX/OpaqueImageToSurfaceBlitTest/OpaqueImageToSurfaceBlitTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/OpaqueImageToSurfaceBlitTest/OpaqueImageToSurfaceBlitTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6764257
  * @summary Tests that the alpha in opaque images doesn't affect result of alpha
  * compositing
--- a/jdk/test/sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6694230
  * @summary Tests that components overriding getInsets paint correctly
  * @author Dmitri.Trembovetski@sun.com: area=Graphics
--- a/jdk/test/sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6648018 6652662
  * @summary Verifies that rendering to a cached onscreen Graphics works
  * @author Dmitri.Trembovetski@sun.com: area=Graphics
--- a/jdk/test/sun/java2d/DirectX/StrikeDisposalCrashTest/StrikeDisposalCrashTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/StrikeDisposalCrashTest/StrikeDisposalCrashTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6705443
  * @summary tests that we don't crash during exit if font strikes were disposed
  * during the lifetime of the application
--- a/jdk/test/sun/java2d/DirectX/SwingOnScreenScrollingTest/SwingOnScreenScrollingTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/SwingOnScreenScrollingTest/SwingOnScreenScrollingTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  */
 /*
  * @test
+ * @key headful
  * @bug 6630702
  * @summary Tests that scrolling after paint() is performed correctly.
  *          This is really only applicable to Vista
--- a/jdk/test/sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6689025 8023483
  * @summary Tests that transformed Paints are rendered correctly
  * @author Dmitri.Trembovetski@sun.com: area=Graphics
--- a/jdk/test/sun/java2d/DrawCachedImageAndTransform.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DrawCachedImageAndTransform.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,6 +30,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8039774
  * @summary Verifies that we get no exception, when we draw with scale
  *          BufferedImage to VolatileImage via intermediate texture.
--- a/jdk/test/sun/java2d/DrawXORModeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/DrawXORModeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug     8036022
  * @summary Test verifies that drawing shapes with XOR composite
  *          does not trigger an InternalError in GDI surface data.
--- a/jdk/test/sun/java2d/GdiRendering/InsetClipping.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/GdiRendering/InsetClipping.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 4873505 6588884
  * @author cheth
  * @summary verifies that drawImage behaves the bounds of a complex
--- a/jdk/test/sun/java2d/OpenGL/CopyAreaOOB.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/OpenGL/CopyAreaOOB.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6430601
  * @summary Verifies that copyArea() works properly when the
  * destination parameters are outside the destination bounds.
--- a/jdk/test/sun/java2d/OpenGL/CustomCompositeTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/OpenGL/CustomCompositeTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug     7124347
  * @summary Verifies that rendering with XOR composite, and arbitraty
  *          custom composite doesn not cause internal errors.
--- a/jdk/test/sun/java2d/OpenGL/DrawBufImgOp.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/OpenGL/DrawBufImgOp.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  */
 /*
  * @test
+ * @key headful
  * @bug 6514990
  * @summary Verifies that calling
  * Graphics2D.drawImage(BufferedImage, BufferedImageOp, x, y) to an
--- a/jdk/test/sun/java2d/OpenGL/DrawHugeImageTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/OpenGL/DrawHugeImageTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  */
 /*
  * @test
+ * @key headful
  * @bug     8040617
  * @summary Test verifies that an attempt to get an accelerated copy of
  *          a huge buffered image does not result in an OOME.
--- a/jdk/test/sun/java2d/OpenGL/GradientPaints.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/OpenGL/GradientPaints.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6521533 6525997 7102282
  * @summary Verifies that the OGL-accelerated codepaths for GradientPaint,
  * LinearGradientPaint, and RadialGradientPaint produce results that are
--- a/jdk/test/sun/java2d/OpenGL/bug7181438.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/OpenGL/bug7181438.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,6 +31,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 7181438
  * @summary Verifies that we get correct alpha, when we draw opaque
  * BufferedImage to non opaque VolatileImage via intermediate opaque texture.
--- a/jdk/test/sun/java2d/SunGraphics2D/DrawImageBilinear.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/SunGraphics2D/DrawImageBilinear.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  */
 /*
  * @test
+ * @key headful
  * @bug 5009033 6603000 6666362
  * @summary Verifies that images transformed with bilinear filtering do not
  * leave artifacts at the edges.
--- a/jdk/test/sun/java2d/SunGraphics2D/EmptyClipRenderingTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/SunGraphics2D/EmptyClipRenderingTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -47,6 +47,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6335200 6419610
  * @summary Tests that we don't render anything if specific empty clip is set
  * @author Dmitri.Trembovetski@Sun.COM: area=Graphics
--- a/jdk/test/sun/java2d/SunGraphics2D/PolyVertTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/SunGraphics2D/PolyVertTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4678208 4771101 6328481 6588884
  * @summary verify the pixelization of degenerate polylines and polygons
  * @run main PolyVertTest
--- a/jdk/test/sun/java2d/SunGraphics2D/SimplePrimQuality.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/SunGraphics2D/SimplePrimQuality.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 4832224 6322584 6328478 6328481 6322580 6588884 6587863
  * @summary Verifies that the pixelization of simple primitives (drawLine,
  * fillRect, drawRect, fill, draw) with the OGL pipeline enabled
--- a/jdk/test/sun/java2d/SunGraphics2D/SurfaceDestination/SurfaceDestination.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/SunGraphics2D/SurfaceDestination/SurfaceDestination.java	Wed Jul 05 21:51:13 2017 +0200
@@ -41,6 +41,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 8134603
  * @modules java.desktop/sun.java2d
  * @run main/othervm SurfaceDestination
--- a/jdk/test/sun/java2d/X11SurfaceData/DrawImageBgTest/DrawImageBgTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/X11SurfaceData/DrawImageBgTest/DrawImageBgTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6603887
  * @summary Verifies that drawImage with bg color works correctly for ICM image
  * @run main/othervm DrawImageBgTest
--- a/jdk/test/sun/java2d/XRenderBlitsTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/XRenderBlitsTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,12 +22,13 @@
  */
 
 /*
-* @test
-* @bug     6985593
-* @summary Test verifies that rendering standard images to screen does
-*          not caiuse a crash in case of XRender.
-* @run main/othervm -Dsun.java2d.xrender=True XRenderBlitsTest
-*/
+ * @test
+ * @key headful
+ * @bug     6985593
+ * @summary Test verifies that rendering standard images to screen does
+ *          not caiuse a crash in case of XRender.
+ * @run main/othervm -Dsun.java2d.xrender=True XRenderBlitsTest
+ */
 
 import java.awt.Color;
 import java.awt.Component;
--- a/jdk/test/sun/java2d/cmm/ColorConvertOp/ConstructorsNullTest/ConstructorsNullTest.html	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/cmm/ColorConvertOp/ConstructorsNullTest/ConstructorsNullTest.html	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 <!--
- Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 
  This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 <html>
 <!--  
   @test
+  @key headful
   @bug 4185854
   @summary Checks that constructors do not accept nulls and throw NPE
   @author tdv@eng.sun.com: area= 
--- a/jdk/test/sun/java2d/pipe/InterpolationQualityTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/pipe/InterpolationQualityTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 7188093 8000176
  * @summary Tests each of the 3 possible methods for rendering an upscaled
  * image via rendering hints for default, xrender and opengl pipelines.
--- a/jdk/test/sun/java2d/pipe/MutableColorTest/MutableColorTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/pipe/MutableColorTest/MutableColorTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /**
  * @test
+ * @key headful
  * @bug 6613860 6691934
  * @summary Tests that the pipelines can handle (in somewhat limited
  * manner) mutable Colors
--- a/jdk/test/sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,7 @@
  */
 /*
  * @test
+ * @key headful
  * @bug 6635805 6653780 6667607
  * @summary Tests that the resource sharing layer API is not broken
  * @author Dmitri.Trembovetski@sun.com: area=Graphics
--- a/jdk/test/sun/java2d/pipe/hw/RSLContextInvalidationTest/RSLContextInvalidationTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/java2d/pipe/hw/RSLContextInvalidationTest/RSLContextInvalidationTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,6 +23,7 @@
 
 /*
  * @test
+ * @key headful
  * @bug 6764257
  * @summary Tests that the color is reset properly after save/restore context
  * @author Dmitri.Trembovetski@sun.com: area=Graphics
--- a/jdk/test/sun/net/www/protocol/jar/MultiReleaseJarURLConnection.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/net/www/protocol/jar/MultiReleaseJarURLConnection.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8132734 8144062
+ * @bug 8132734 8144062 8159785
  * @summary Test that URL connections to multi-release jars can be runtime versioned
  * @library /lib/testlibrary/java/util/jar
  * @modules java.compiler
@@ -44,6 +44,7 @@
 import java.net.URLConnection;
 import java.nio.file.Files;
 import java.nio.file.Paths;
+import java.util.Enumeration;
 import java.util.jar.JarFile;
 
 import org.testng.Assert;
@@ -191,26 +192,36 @@
                 style.equals("unversioned") ? 8 : Runtime.version().major());
 
         // now get a resource and verify that we don't have a fragment attached
-        URL vclsUrl = vcls.getResource("/version/Version.class");
-        String fragment = vclsUrl.getRef();
-        Assert.assertNull(fragment);
+        Enumeration<URL> vclsUrlEnum = cldr.getResources("version/Version.class");
+        Assert.assertTrue(vclsUrlEnum.hasMoreElements());
+        URL vclsUrls[] = new URL[] {
+            vcls.getResource("/version/Version.class"),
+            vcls.getResource("Version.class"),
+            cldr.getResource("version/Version.class"),
+            vclsUrlEnum.nextElement()
+        };
+        Assert.assertFalse(vclsUrlEnum.hasMoreElements());
+        for (URL vclsUrl : vclsUrls) {
+            String fragment = vclsUrl.getRef();
+            Assert.assertNull(fragment);
 
-        // and verify that the the url is a reified pointer to the runtime entry
-        String rep = vclsUrl.toString();
-        //System.out.println("    getResource(\"/version/Version.class\") returned: " + rep);
-        if (style.equals("http")) {
-            Assert.assertTrue(rep.startsWith("jar:http:"));
-        } else {
-            Assert.assertTrue(rep.startsWith("jar:file:"));
+            // and verify that the the url is a reified pointer to the runtime entry
+            String rep = vclsUrl.toString();
+            //System.out.println("    getResource(\"/version/Version.class\") returned: " + rep);
+            if (style.equals("http")) {
+                Assert.assertTrue(rep.startsWith("jar:http:"));
+            } else {
+                Assert.assertTrue(rep.startsWith("jar:file:"));
+            }
+            String suffix;
+            if (style.equals("unversioned")) {
+                suffix = ".jar!/version/Version.class";
+            } else {
+                suffix = ".jar!/META-INF/versions/" + Runtime.version().major()
+                        + "/version/Version.class";
+            }
+            Assert.assertTrue(rep.endsWith(suffix));
         }
-        String suffix;
-        if (style.equals("unversioned")) {
-            suffix = ".jar!/version/Version.class";
-        } else {
-            suffix = ".jar!/META-INF/versions/" + Runtime.version().major()
-                    + "/version/Version.class";
-        }
-        Assert.assertTrue(rep.endsWith(suffix));
         cldr.close();
     }
 
--- a/jdk/test/sun/security/krb5/auto/KDC.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/security/krb5/auto/KDC.java	Wed Jul 05 21:51:13 2017 +0200
@@ -219,8 +219,10 @@
     };
 
     static {
-        String hostsFileName = System.getProperty("test.src", ".") + "/TestHosts";
-        System.setProperty("jdk.net.hosts.file", hostsFileName);
+        if (System.getProperty("jdk.net.hosts.file") == null) {
+            String hostsFileName = System.getProperty("test.src", ".") + "/TestHosts";
+            System.setProperty("jdk.net.hosts.file", hostsFileName);
+        }
     }
 
     /**
--- a/jdk/test/sun/security/krb5/auto/NoAddresses.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/security/krb5/auto/NoAddresses.java	Wed Jul 05 21:51:13 2017 +0200
@@ -25,9 +25,9 @@
  * @test
  * @bug 7032354
  * @run main/othervm NoAddresses setup
- * @run main/othervm NoAddresses 1
- * @run main/othervm NoAddresses 2
- * @run main/othervm/fail NoAddresses 3
+ * @run main/othervm -Djdk.net.hosts.file=TestHosts NoAddresses 1
+ * @run main/othervm -Djdk.net.hosts.file=TestHosts NoAddresses 2
+ * @run main/othervm/fail -Djdk.net.hosts.file=TestHosts NoAddresses 3
  * @summary no-addresses should not be used on acceptor side
  */
 
@@ -38,6 +38,7 @@
 import java.io.PrintWriter;
 import java.io.FileWriter;
 import java.io.BufferedWriter;
+import java.nio.file.*;
 
 public class NoAddresses {
 
@@ -49,9 +50,10 @@
             InetAddress localHost = InetAddress.getLocalHost();
             String localHostName = localHost.getHostName();
             String hostsFileName = System.getProperty("test.src", ".") + "/TestHosts";
+            String hostsFileNameLocal = "TestHosts";
             String loopBackAddress = "127.0.0.1";
-            System.setProperty("jdk.net.hosts.file", hostsFileName);
-            addMappingToHostsFile(localHostName, loopBackAddress, hostsFileName, true);
+            Files.copy(Paths.get(hostsFileName), Paths.get(hostsFileNameLocal));
+            addMappingToHostsFile(localHostName, loopBackAddress, hostsFileNameLocal, true);
         } else {
         OneKDC kdc = new OneKDC(null);
         kdc.writeJAASConf();
--- a/jdk/test/sun/security/provider/SecureRandom/StrongSecureRandom.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/security/provider/SecureRandom/StrongSecureRandom.java	Wed Jul 05 21:51:13 2017 +0200
@@ -36,9 +36,6 @@
 public class StrongSecureRandom {
 
     private static final String os = System.getProperty("os.name", "unknown");
-    private static final String DRBG_CONFIG = "securerandom.drbg.config";
-    private static final String DRBG_CONFIG_VALUE
-            = Security.getProperty(DRBG_CONFIG);
 
     private static void testDefaultEgd() throws Exception {
         // No SecurityManager installed.
@@ -50,55 +47,6 @@
         }
     }
 
-    /**
-     * Verify if the mechanism is DRBG type.
-     * @param mech Mechanism name
-     * @return True if the mechanism name is DRBG type else False.
-     */
-    private static boolean isDRBG(String mech) {
-        return mech.contains("_DRBG");
-    }
-
-    private static void testSecureRandomImpl(String algo, boolean drbg)
-            throws Exception {
-
-        byte[] ba;
-        final String secureRandomSource
-                = Security.getProperty("securerandom.source");
-        try {
-            String urandom = "file:/dev/urandom";
-
-            System.out.println("Testing new SeedGenerator and EGD");
-
-            Security.setProperty("securerandom.source", urandom);
-            if (!Security.getProperty("securerandom.source").equals(urandom)) {
-                throw new Exception("Couldn't set securerandom.source");
-            }
-
-            /*
-             * Take out a large number of bytes in hopes of blocking.
-             * Don't expect this to happen, unless something is broken on Linux
-             */
-            SecureRandom sr = null;
-            if (drbg) {
-                Security.setProperty(DRBG_CONFIG, algo);
-                sr = SecureRandom.getInstance("DRBG");
-            } else {
-                sr = SecureRandom.getInstance(algo);
-            }
-            if (!sr.getAlgorithm().equals(isDRBG(algo) ? "DRBG" : algo)) {
-                throw new Exception("sr.getAlgorithm(): " + sr.getAlgorithm());
-            }
-
-            ba = sr.generateSeed(4096);
-            sr.nextBytes(ba);
-            sr.setSeed(ba);
-        } finally {
-            Security.setProperty("securerandom.source", secureRandomSource);
-            Security.setProperty(DRBG_CONFIG, DRBG_CONFIG_VALUE);
-        }
-    }
-
     private static void testNativePRNGImpls() throws Exception {
         SecureRandom sr;
         byte[] ba;
@@ -259,10 +207,7 @@
 
     public static void main(String args[]) throws Exception {
         testDefaultEgd();
-        for (String algo : new String[]{
-            "SHA1PRNG", "Hash_DRBG", "HMAC_DRBG", "CTR_DRBG"}) {
-            testSecureRandomImpl(algo, isDRBG(algo));
-        }
+
         testNativePRNGImpls();
         testAllImpls();
 
--- a/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/security/tools/jarsigner/concise_jarsigner.sh	Wed Jul 05 21:51:13 2017 +0200
@@ -25,7 +25,7 @@
 # @bug 6802846
 # @summary jarsigner needs enhanced cert validation(options)
 #
-# @run shell concise_jarsigner.sh
+# @run shell/timeout=240 concise_jarsigner.sh
 #
 
 if [ "${TESTJAVA}" = "" ] ; then
--- a/jdk/test/sun/security/tools/jarsigner/warnings/Test.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/security/tools/jarsigner/warnings/Test.java	Wed Jul 05 21:51:13 2017 +0200
@@ -121,10 +121,10 @@
             + "(%1$tY-%1$tm-%1$td).";
 
     static final String NO_TIMESTAMP_VERIFYING_WARN_TEMPLATE
-            = "This jar contains signatures that does not include a timestamp. "
+            = "This jar contains signatures that do not include a timestamp. "
             + "Without a timestamp, users may not be able to validate this jar "
-            + "after the signer certificate's expiration date "
-            + "(%1$tY-%1$tm-%1$td).";
+            + "after any of the signer certificates expire "
+            + "(as early as %1$tY-%1$tm-%1$td).";
 
     static final String NOT_YET_VALID_CERT_SIGNING_WARNING
             = "The signer certificate is not yet valid.";
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/tools/keytool/DupImport.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 6968542
+ * @summary keytool -importcert cannot deal with duplicate certs
+ * @modules java.base/sun.security.tools.keytool
+ * @compile -XDignore.symbol.file DupImport.java
+ * @run main DupImport pkcs12
+ * @run main DupImport jks
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.security.KeyStore;
+import java.security.cert.Certificate;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class DupImport {
+
+    static String storeType = null;
+
+    public static void main(String[] args) throws Exception {
+
+        storeType = args[0];
+        Files.deleteIfExists(Paths.get("dup.ks"));
+
+        // Create chain: root -> int -> me
+        run("-genkeypair -alias me -dname CN=Me");
+        run("-genkeypair -alias int -dname CN=Int");
+        run("-genkeypair -alias root -dname CN=Root");
+
+        run("-certreq -alias int -file int.req");
+        run("-gencert -infile int.req -alias root -rfc -outfile int.resp");
+        run("-importcert -file int.resp -alias int");
+
+        run("-certreq -alias me -file me.req");
+        run("-gencert -infile me.req -alias int -rfc -outfile me.resp");
+        run("-importcert -file me.resp -alias me");
+
+        // Export certs
+        run("-exportcert -alias me -file me -rfc");
+        run("-exportcert -alias int -file int -rfc");
+        run("-exportcert -alias root -file root -rfc");
+
+        // test 1: just the 3 certs
+        test("me", "int", "root");
+
+        // test 2: 3 chains (without root) concatenated
+        test("me", "int", "int", "root");
+
+        // test 3: 3 full chains concatenated
+        test("me", "int", "root", "int", "root", "root");
+
+        // test 4: a mess
+        test("root", "me", "int", "int", "me", "me", "root", "int");
+    }
+
+    // Run keytool command with common options
+    static void run(String s) throws Exception {
+        sun.security.tools.keytool.Main.main((
+                "-keystore dup.ks -storepass changeit -keypass changeit "
+                        + "-storetype " + storeType + " -debug "
+                        + s).split(" "));
+    }
+
+    // Test "cat files... | keytool -import"
+    static void test(String... files) throws Exception {
+
+        System.out.println("Testing " + Arrays.toString(files));
+
+        List<String> all = new ArrayList<>();
+        for (String file : files) {
+            all.addAll(Files.readAllLines(Paths.get(file)));
+        }
+        Files.write(Paths.get("reply"), all);
+
+        run("-importcert -file reply -alias me");
+        KeyStore ks = KeyStore.getInstance(
+                new File("dup.ks"), "changeit".toCharArray());
+        Certificate[] chain = ks.getCertificateChain("me");
+        if (chain.length != 3) {
+            throw new Exception("Length is " + chain.length);
+        }
+
+        checkName(chain[0], "CN=Me");
+        checkName(chain[1], "CN=Int");
+        checkName(chain[2], "CN=Root");
+    }
+
+    // Check if c's dname is expected
+    static void checkName(Certificate c, String expected) throws Exception {
+        X509Certificate x = (X509Certificate)c;
+        String name = x.getSubjectX500Principal().toString();
+        if (!expected.equals(name)) {
+            throw new Exception("Expected " + expected + ", but " + name);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/util/Pem/PemEncoding.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.FileInputStream;
+import java.security.cert.CertificateFactory;
+
+public class PemEncoding {
+    public static void main(String[] args) throws Exception {
+        try (FileInputStream fis = new FileInputStream(args[0])) {
+            CertificateFactory cf = CertificateFactory.getInstance("X.509");
+            System.out.println(cf.generateCertificate(fis));
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/util/Pem/encoding.sh	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# This code 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
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# @test
+# @bug 8158633
+# @summary BASE64 encoded cert not correctly parsed with UTF-16
+# @build PemEncoding
+# @run shell encoding.sh
+
+# jtreg does not like -Dfile.encoding=UTF-16 inside a @run main line,
+# therefore a shell test is written.
+
+$TESTJAVA/bin/java $TESTVMOPTS -cp $TESTCLASSES \
+        -Dfile.encoding=UTF-16 \
+        PemEncoding $TESTSRC/../HostnameMatcher/cert5.crt
--- a/jdk/test/sun/tools/jhsdb/BasicLauncherTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/tools/jhsdb/BasicLauncherTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -146,6 +146,16 @@
         launch(expectedMessage, Arrays.asList(toolArgs));
     }
 
+    public static void launchNotOSX(String expectedMessage, String... toolArgs)
+        throws IOException {
+
+        if (Platform.isOSX()) {
+            // Coredump stackwalking is not implemented for Darwin
+            System.out.println("This test is not expected to work on OS X. Skipping");
+            return;
+        }
+    }
+
     public static void testHeapDump() throws IOException {
         File dump = new File("jhsdb.jmap.dump." +
                              System.currentTimeMillis() + ".hprof");
@@ -172,7 +182,7 @@
 
         launchCLHSDB();
 
-        launch("No deadlocks found", "jstack");
+        launchNotOSX("No deadlocks found", "jstack");
         launch("compiler detected", "jmap");
         launch("Java System Properties", "jinfo");
         launch("java.threads", "jsnap");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/tools/jinfo/JInfoTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.io.IOException;
+
+import jdk.test.lib.JDKToolLauncher;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.apps.LingeredApp;
+
+/*
+ * @test
+ * @summary Unit test for jinfo utility
+ * @modules java.base/jdk.internal.misc
+ * @library /test/lib/share/classes
+ * @build jdk.test.lib.*
+ * @build jdk.test.lib.apps.*
+ * @build jdk.test.lib.process.*
+ * @run main JInfoTest
+ */
+public class JInfoTest {
+
+    private static ProcessBuilder processBuilder = new ProcessBuilder();
+
+    public static void main(String[] args) throws Exception {
+        classNameMatch();
+        setMultipleFlags();
+        setFlag();
+    }
+
+    private static void setFlag() throws Exception {
+        System.out.println("#### setFlag ####");
+        LingeredApp app1 = new JInfoTestLingeredApp();
+        LingeredApp app2 = new JInfoTestLingeredApp();
+        try {
+            ArrayList<String> params = new ArrayList<String>();
+            LingeredApp.startApp(params, app1);
+            LingeredApp.startApp(params, app2);
+            OutputAnalyzer output = jinfo("-flag", "MinHeapFreeRatio=1", "JInfoTestLingeredApp");
+            output.shouldHaveExitValue(0);
+            output = jinfo("-flag", "MinHeapFreeRatio", "JInfoTestLingeredApp");
+            output.shouldHaveExitValue(0);
+            documentMatch(output.getStdout(), ".*MinHeapFreeRatio=1.*MinHeapFreeRatio=1.*");
+        } finally {
+            JInfoTestLingeredApp.stopApp(app1);
+            JInfoTestLingeredApp.stopApp(app2);
+        }
+    }
+
+    private static void setMultipleFlags() throws Exception {
+        System.out.println("#### setMultipleFlags ####");
+        OutputAnalyzer output = jinfo("-sysprops", "-flag", "MinHeapFreeRatio=1", "-flags", "JInfoTestLingeredApp");
+        output.shouldHaveExitValue(1);
+    }
+
+    private static void classNameMatch() throws Exception {
+        System.out.println("#### classNameMatch ####");
+        LingeredApp app1 = new JInfoTestLingeredApp();
+        LingeredApp app2 = new JInfoTestLingeredApp();
+        try {
+            ArrayList<String> params = new ArrayList<String>();
+            LingeredApp.startApp(params, app1);
+            LingeredApp.startApp(params, app2);
+            OutputAnalyzer output = jinfo("JInfoTestLingeredApp");
+            output.shouldHaveExitValue(0);
+            // "HotSpot(TM)" written once per proc
+            documentMatch(output.getStdout(), ".*HotSpot\\(TM\\).*HotSpot\\(TM\\).*");
+        } finally {
+            JInfoTestLingeredApp.stopApp(app1);
+            JInfoTestLingeredApp.stopApp(app2);
+        }
+    }
+
+    private static void documentMatch(String data, String pattern){
+        Matcher matcher = Pattern.compile(pattern, Pattern.DOTALL).matcher(data);
+        if (!matcher.find()) {
+            throw new RuntimeException("'" + pattern + "' missing from stdout \n");
+        }
+    }
+
+    private static OutputAnalyzer jinfo(String... toolArgs) throws Exception {
+        JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jinfo");
+        if (toolArgs != null) {
+            for (String toolArg : toolArgs) {
+                launcher.addToolArg(toolArg);
+            }
+        }
+
+        processBuilder.command(launcher.getCommand());
+        OutputAnalyzer output = ProcessTools.executeProcess(processBuilder);
+
+        return output;
+    }
+}
+
+// Sometime there is LingeredApp's from other test still around
+class JInfoTestLingeredApp extends LingeredApp {
+}
+
--- a/jdk/test/sun/tools/jps/TestJpsSanity.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/sun/tools/jps/TestJpsSanity.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,15 +23,17 @@
 
 import jdk.testlibrary.Asserts;
 import jdk.testlibrary.OutputAnalyzer;
+import jdk.test.lib.apps.LingeredApp;
 
 /*
  * @test
  * @summary This test verifies jps usage and checks that appropriate error message is shown
  *          when running jps with illegal arguments.
- * @library /lib/testlibrary
+ * @library /lib/testlibrary /test/lib/share/classes
  * @modules jdk.jartool/sun.tools.jar
  *          java.management
- * @build jdk.testlibrary.* JpsHelper
+ *          java.base/jdk.internal.misc
+ * @build jdk.testlibrary.* jdk.test.lib.apps.* JpsHelper
  * @run driver TestJpsSanity
  */
 public class TestJpsSanity {
@@ -40,6 +42,42 @@
         testJpsUsage();
         testJpsVersion();
         testJpsUnknownHost();
+        testJpsShort();
+        testJpsLong();
+        testJpsShortPkg();
+        testJpsLongPkg();
+    }
+
+    private static void testJpsShort() throws Exception {
+        OutputAnalyzer output = JpsHelper.jps();
+        output.shouldMatch("^[0-9]+ Jps$");
+    }
+
+    private static void testJpsLong() throws Exception {
+        OutputAnalyzer output = JpsHelper.jps("-l");
+        output.shouldMatch("^[0-9]+ jdk\\.jcmd/sun\\.tools\\.jps\\.Jps$");
+    }
+
+    private static void testJpsShortPkg() throws Exception {
+        LingeredApp app = null;
+        try {
+            app = LingeredApp.startApp();
+            OutputAnalyzer output = JpsHelper.jps();
+            output.shouldMatch("^[0-9]+ LingeredApp$");
+        } finally {
+            LingeredApp.stopApp(app);
+        }
+    }
+
+    private static void testJpsLongPkg() throws Exception {
+        LingeredApp app = null;
+        try {
+            app = LingeredApp.startApp();
+            OutputAnalyzer output = JpsHelper.jps("-l");
+            output.shouldMatch("^[0-9]+ jdk\\.test\\.lib\\.apps\\.LingeredApp$");
+        } finally {
+            LingeredApp.stopApp(app);
+        }
     }
 
     private static void testJpsUsage() throws Exception {
--- a/jdk/test/tools/jlink/JLinkOptimTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/tools/jlink/JLinkOptimTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -332,17 +332,6 @@
             helper.checkImage(imageDir, "optim1", null, null);
         }
 
-        /*{
-         Path dir = Paths.get("dir.log");
-         Files.createDirectory(dir);
-         String[] userOptions = {"--class-optim=all:log=" + dir.toString()};
-         helper.generateDefaultImage(userOptions, "optim1")
-         .assertFailure("java.io.FileNotFoundException: dir.log (Is a directory)");
-         }*/
- /*{
-         String[] userOptions = {"--class-optim", "UNKNOWN"};
-         helper.generateDefaultImage(userOptions, "optim1").assertFailure("Unknown optimization");
-         }*/
         {
             String[] userOptions = {"--class-optim=forName-folding:log=./class-optim-log.txt"};
             Path imageDir = helper.generateDefaultImage(userOptions, "optim1").assertSuccess();
--- a/jdk/test/tools/jlink/plugins/CompressorPluginTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/tools/jlink/plugins/CompressorPluginTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -103,13 +103,12 @@
 
         // compress == ZIP + String sharing + filter
         options.setProperty(DefaultCompressPlugin.FILTER,
-                "*Exception.class,^*IOException.class");
+                "**Exception.class");
         checkCompress(classes, new DefaultCompressPlugin(), options,
                 new ResourceDecompressorFactory[]{
                     new ZipDecompressorFactory(),
                     new StringSharingDecompressorFactory()
-                }, Collections.singletonList(".*Exception.class"),
-                Collections.singletonList(".*IOException.class"));
+                }, Collections.singletonList(".*Exception.class"));
 
         // compress level 1 == ZIP
         Properties options1 = new Properties();
@@ -123,13 +122,12 @@
 
         // compress level 1 == ZIP
         options1.setProperty(DefaultCompressPlugin.FILTER,
-                "*Exception.class,^*IOException.class");
+                "**Exception.class");
         checkCompress(classes, new DefaultCompressPlugin(),
                 options1,
                 new ResourceDecompressorFactory[]{
                     new ZipDecompressorFactory()
-                }, Collections.singletonList(".*Exception.class"),
-                Collections.singletonList(".*IOException.class"));
+                }, Collections.singletonList(".*Exception.class"));
 
         // compress level 2 == ZIP + String sharing
         Properties options2 = new Properties();
@@ -144,14 +142,13 @@
 
         // compress level 2 == ZIP + String sharing + filter
         options2.setProperty(DefaultCompressPlugin.FILTER,
-                "*Exception.class,^*IOException.class");
+                "**Exception.class");
         checkCompress(classes, new DefaultCompressPlugin(),
                 options2,
                 new ResourceDecompressorFactory[]{
                     new ZipDecompressorFactory(),
                     new StringSharingDecompressorFactory()
-                }, Collections.singletonList(".*Exception.class"),
-                Collections.singletonList(".*IOException.class"));
+                }, Collections.singletonList(".*Exception.class"));
 
         // compress level 0 == String sharing
         Properties options0 = new Properties();
@@ -164,13 +161,12 @@
 
         // compress level 0 == String sharing + filter
         options0.setProperty(DefaultCompressPlugin.FILTER,
-                "*Exception.class,^*IOException.class");
+                "**Exception.class");
         checkCompress(classes, new DefaultCompressPlugin(),
                 options0,
                 new ResourceDecompressorFactory[]{
                     new StringSharingDecompressorFactory()
-                }, Collections.singletonList(".*Exception.class"),
-                Collections.singletonList(".*IOException.class"));
+                }, Collections.singletonList(".*Exception.class"));
     }
 
     private ModulePool gatherResources(Path module) throws Exception {
@@ -226,23 +222,19 @@
     private void checkCompress(ModulePool resources, Plugin prov,
             Properties config,
             ResourceDecompressorFactory[] factories) throws Exception {
-        checkCompress(resources, prov, config, factories, Collections.emptyList(), Collections.emptyList());
+        checkCompress(resources, prov, config, factories, Collections.emptyList());
     }
 
     private void checkCompress(ModulePool resources, Plugin prov,
             Properties config,
             ResourceDecompressorFactory[] factories,
-            List<String> includes,
-            List<String> excludes) throws Exception {
+            List<String> includes) throws Exception {
         long[] original = new long[1];
         long[] compressed = new long[1];
         resources.entries().forEach(resource -> {
             List<Pattern> includesPatterns = includes.stream()
                     .map(Pattern::compile)
                     .collect(Collectors.toList());
-            List<Pattern> excludesPatterns = excludes.stream()
-                    .map(Pattern::compile)
-                    .collect(Collectors.toList());
 
             Map<String, String> props = new HashMap<>();
             if (config != null) {
@@ -267,10 +259,10 @@
                 }
             });
             inputResources.add(resource);
-            ModulePool compressedResources = applyCompressor(prov, inputResources, resource, includesPatterns, excludesPatterns);
+            ModulePool compressedResources = applyCompressor(prov, inputResources, resource, includesPatterns);
             original[0] += resource.getLength();
             compressed[0] += compressedResources.findEntry(resource.getPath()).get().getLength();
-            applyDecompressors(factories, inputResources, compressedResources, strings, includesPatterns, excludesPatterns);
+            applyDecompressors(factories, inputResources, compressedResources, strings, includesPatterns);
         });
         String compressors = Stream.of(factories)
                 .map(Object::getClass)
@@ -286,8 +278,7 @@
     private ModulePool applyCompressor(Plugin plugin,
             ModulePoolImpl inputResources,
             ModuleEntry res,
-            List<Pattern> includesPatterns,
-            List<Pattern> excludesPatterns) {
+            List<Pattern> includesPatterns) {
         TransformerPlugin compressor = (TransformerPlugin) plugin;
         ModulePool compressedModulePool = new ModulePoolImpl(ByteOrder.nativeOrder(), inputResources.getStringTable());
         compressor.visit(inputResources, compressedModulePool);
@@ -295,7 +286,7 @@
         ModuleEntry compressed = compressedModulePool.findEntry(path).get();
         CompressedResourceHeader header
                 = CompressedResourceHeader.readFromResource(ByteOrder.nativeOrder(), compressed.getBytes());
-        if (isIncluded(includesPatterns, excludesPatterns, path)) {
+        if (isIncluded(includesPatterns, path)) {
             if (header == null) {
                 throw new AssertionError("Path should be compressed: " + path);
             }
@@ -317,14 +308,13 @@
             ModulePool inputResources,
             ModulePool compressedResources,
             Map<Integer, String> strings,
-            List<Pattern> includesPatterns,
-            List<Pattern> excludesPatterns) {
+            List<Pattern> includesPatterns) {
         compressedResources.entries().forEach(compressed -> {
             CompressedResourceHeader header = CompressedResourceHeader.readFromResource(
                     ByteOrder.nativeOrder(), compressed.getBytes());
             String path = compressed.getPath();
             ModuleEntry orig = inputResources.findEntry(path).get();
-            if (!isIncluded(includesPatterns, excludesPatterns, path)) {
+            if (!isIncluded(includesPatterns, path)) {
                 return;
             }
             byte[] decompressed = compressed.getBytes();
@@ -352,9 +342,8 @@
         });
     }
 
-    private boolean isIncluded(List<Pattern> includesPatterns, List<Pattern> excludesPatterns, String path) {
-        return !excludesPatterns.stream().anyMatch((pattern) -> pattern.matcher(path).matches())
-                && (includesPatterns.isEmpty()
-                || includesPatterns.stream().anyMatch((pattern) -> pattern.matcher(path).matches()));
+    private boolean isIncluded(List<Pattern> includesPatterns, String path) {
+        return includesPatterns.isEmpty() ||
+               includesPatterns.stream().anyMatch((pattern) -> pattern.matcher(path).matches());
     }
 }
--- a/jdk/test/tools/jlink/plugins/ExcludeFilesPluginTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/tools/jlink/plugins/ExcludeFilesPluginTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -48,23 +48,23 @@
     }
 
     public void test() throws Exception {
-        checkFiles("*.jcov", "num/toto.jcov", "", true);
-        checkFiles("*.jcov", "/toto.jcov", "", true);
-        checkFiles("*.jcov", "toto.jcov/tutu/tata", "", false);
+        checkFiles("**.jcov", "num/toto.jcov", "", true);
+        checkFiles("**.jcov", "/toto.jcov", "", true);
+        checkFiles("**.jcov", "toto.jcov/tutu/tata", "", false);
         checkFiles("/java.base/*.jcov", "toto.jcov", "java.base", true);
         checkFiles("/java.base/toto.jcov", "iti.jcov", "t/java.base", false);
         checkFiles("/java.base/*/toto.jcov", "toto.jcov", "java.base", false);
         checkFiles("/java.base/*/toto.jcov", "tutu/toto.jcov", "java.base", true);
-        checkFiles("*/java.base/*/toto.jcov", "java.base/tutu/toto.jcov", "/tutu", true);
+        checkFiles("**/java.base/*/toto.jcov", "java.base/tutu/toto.jcov", "/tutu", true);
 
-        checkFiles("/*$*.properties", "tutu/Toto$Titi.properties", "java.base", true);
-        checkFiles("*$*.properties", "tutu/Toto$Titi.properties", "java.base", true);
+        checkFiles("/**$*.properties", "tutu/Toto$Titi.properties", "java.base", true);
+        checkFiles("**$*.properties", "tutu/Toto$Titi.properties", "java.base", true);
 
         // Excluded files list in a file
         File order = new File("files.exc");
         order.createNewFile();
-        Files.write(order.toPath(), "*.jcov".getBytes());
-        checkFiles(order.getAbsolutePath(), "/num/toto.jcov", "", true);
+        Files.write(order.toPath(), "**.jcov".getBytes());
+        checkFiles("@" + order.getAbsolutePath(), "/num/toto.jcov", "", true);
     }
 
     public void checkFiles(String s, String sample, String module, boolean exclude) throws Exception {
--- a/jdk/test/tools/jlink/plugins/ExcludePluginTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/tools/jlink/plugins/ExcludePluginTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -47,27 +47,27 @@
     }
 
     public void test() throws Exception {
-        check("*.jcov", "/num/toto.jcov", true);
-        check("*.jcov", "//toto.jcov", true);
-        check("*.jcov", "/toto.jcov/tutu/tata", false);
+        check("**.jcov", "/num/toto.jcov", true);
+        check("**.jcov", "//toto.jcov", true);
+        check("**.jcov", "/toto.jcov/tutu/tata", false);
         check("/java.base/*.jcov", "/java.base/toto.jcov", true);
         check("/java.base/toto.jcov", "t/java.base/iti.jcov", false);
         check("/java.base/*/toto.jcov", "/java.base/toto.jcov", false);
         check("/java.base/*/toto.jcov", "/java.base/tutu/toto.jcov", true);
-        check("*/java.base/*/toto.jcov", "/tutu/java.base/tutu/toto.jcov", true);
-        check("*/META-INF/*", "/META-INF/services/  MyProvider ", false);
-        check("*/META-INF/*", "/META-INF/services/MyProvider", false);
-        check("*/META-INF", " /META-INF/services/MyProvider", false);
-        check("*/META-INF/*", "/java.base//META-INF/services/MyProvider", true);
+        check("**/java.base/*/toto.jcov", "/tutu/java.base/tutu/toto.jcov", true);
+        check("/META-INF/**", "/META-INF/services/  MyProvider ", true);
+        check("/META-INF/**", "/META-INF/services/MyProvider", true);
+        check("**/META-INF", " /META-INF/services/MyProvider", false);
+        check("**/META-INF/**", "/java.base//META-INF/services/MyProvider", true);
         check("/java.base/*/Toto$Titi.class", "/java.base/tutu/Toto$Titi.class", true);
-        check("/*$*.class", "/java.base/tutu/Toto$Titi.class", true);
-        check("*$*.class", "/java.base/tutu/Toto$Titi.class", true);
+        check("/**$**.class", "/java.base/tutu/Toto$Titi.class", true);
+        check("**$**.class", "/java.base/tutu/Toto$Titi.class", true);
 
         // Excluded resource list in a file
         File order = new File("resources.exc");
         order.createNewFile();
-        Files.write(order.toPath(), "*.jcov".getBytes());
-        check(order.getAbsolutePath(), "/num/toto.jcov", true);
+        Files.write(order.toPath(), "**.jcov".getBytes());
+        check("@" + order.getAbsolutePath(), "/num/toto.jcov", true);
     }
 
     public void check(String s, String sample, boolean exclude) throws Exception {
--- a/jdk/test/tools/jlink/plugins/GetAvailableLocales.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/tools/jlink/plugins/GetAvailableLocales.java	Wed Jul 05 21:51:13 2017 +0200
@@ -23,20 +23,36 @@
 
 import java.util.Arrays;
 import java.util.Locale;
+import java.util.Set;
+import java.util.TreeSet;
 import java.util.stream.Collectors;
 
 class GetAvailableLocales {
 
     public static void main(String[] args) {
-        String availableLocales = Arrays.stream(Locale.getAvailableLocales())
-            .map(l -> l.toString())
-            .sorted()
-            .collect(Collectors.joining(" "));
+        Set<String> expected = Set.of(args);
+        Set<String> actual =
+            Arrays.stream(Locale.getAvailableLocales())
+                  // "(root)" for Locale.ROOT rather than ""
+                  .map(loc -> loc.equals(Locale.ROOT) ? "(root)" : loc.toString())
+                  .collect(Collectors.toSet());
 
-        if (!availableLocales.equals(args[0])) {
-            throw new RuntimeException("Available locales are not equal to the expected ones.\n" +
-                "Expected: " + args[0] + "\n" +
-                "Actual:   " + availableLocales);
+        if (!expected.equals(actual)) {
+            diff(expected, actual);
+            System.exit(1);
+        }
+    }
+
+    private static void diff(Set<String> expected, Set<String> actual) {
+        Set<String> s1 = new TreeSet<>(expected);
+        s1.removeAll(actual);
+        if (!s1.isEmpty()) {
+            System.out.println("\tMissing locale(s): " + s1);
+        }
+        Set<String> s2 = new TreeSet<>(actual);
+        s2.removeAll(expected);
+        if (!s2.isEmpty()) {
+            System.out.println("\tExtra locale(s): " + s2);
         }
     }
 }
--- a/jdk/test/tools/jlink/plugins/IncludeLocalesPluginTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/tools/jlink/plugins/IncludeLocalesPluginTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -22,7 +22,11 @@
  */
 
 import java.nio.file.Path;
+import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
+import java.util.stream.Collectors;
 
 import jdk.tools.jlink.plugin.Plugin;
 import jdk.tools.jlink.plugin.PluginException;
@@ -49,7 +53,7 @@
  *          jdk.compiler
  * @build tests.*
  * @build tools.jlink.plugins.GetAvailableLocales
- * @run main/othervm -verbose:gc -Xmx1g IncludeLocalesPluginTest
+ * @run main/othervm -Xmx1g IncludeLocalesPluginTest
  */
 public class IncludeLocalesPluginTest {
 
@@ -62,6 +66,8 @@
     private final static int AVAILABLE_LOCALES      = 4;
     private final static int ERROR_MESSAGE          = 5;
 
+    private static int errors;
+
     private final static Object[][] testData = {
         // without --include-locales option: should include all locales
         {
@@ -77,74 +83,14 @@
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_zh.class"),
             List.of(),
-            " af af_NA af_ZA agq agq_CM ak ak_GH am am_ET ar ar_001 ar_AE ar_BH " +
-            "ar_DJ ar_DZ ar_EG ar_EH ar_ER ar_IL ar_IQ ar_JO ar_KM ar_KW ar_LB " +
-            "ar_LY ar_MA ar_MR ar_OM ar_PS ar_QA ar_SA ar_SD ar_SO ar_SS ar_SY " +
-            "ar_TD ar_TN ar_YE as as_IN asa asa_TZ ast ast_ES az az_AZ_#Cyrl " +
-            "az_AZ_#Latn az__#Cyrl az__#Latn bas bas_CM be be_BY bem bem_ZM bez " +
-            "bez_TZ bg bg_BG bm bm_ML_#Latn bm__#Latn bn bn_BD bn_IN bo bo_CN " +
-            "bo_IN br br_FR brx brx_IN bs bs_BA_#Cyrl bs_BA_#Latn bs__#Cyrl " +
-            "bs__#Latn ca ca_AD ca_ES ca_ES_VALENCIA ca_FR ca_IT cgg cgg_UG chr " +
-            "chr_US cs cs_CZ cy cy_GB da da_DK da_GL dav dav_KE de de_AT de_BE " +
-            "de_CH de_DE de_GR de_LI de_LU dje dje_NE dsb dsb_DE dua dua_CM dyo " +
-            "dyo_SN dz dz_BT ebu ebu_KE ee ee_GH ee_TG el el_CY el_GR en en_001 " +
-            "en_150 en_AG en_AI en_AS en_AU en_BB en_BE en_BM en_BS en_BW en_BZ " +
-            "en_CA en_CC en_CK en_CM en_CX en_DG en_DM en_ER en_FJ en_FK en_FM " +
-            "en_GB en_GD en_GG en_GH en_GI en_GM en_GU en_GY en_HK en_IE en_IM " +
-            "en_IN en_IO en_JE en_JM en_KE en_KI en_KN en_KY en_LC en_LR en_LS " +
-            "en_MG en_MH en_MO en_MP en_MS en_MT en_MU en_MW en_MY en_NA en_NF " +
-            "en_NG en_NR en_NU en_NZ en_PG en_PH en_PK en_PN en_PR en_PW en_RW " +
-            "en_SB en_SC en_SD en_SG en_SH en_SL en_SS en_SX en_SZ en_TC en_TK " +
-            "en_TO en_TT en_TV en_TZ en_UG en_UM en_US en_US_POSIX en_VC en_VG " +
-            "en_VI en_VU en_WS en_ZA en_ZM en_ZW eo eo_001 es es_419 es_AR es_BO " +
-            "es_CL es_CO es_CR es_CU es_DO es_EA es_EC es_ES es_GQ es_GT es_HN " +
-            "es_IC es_MX es_NI es_PA es_PE es_PH es_PR es_PY es_SV es_US es_UY " +
-            "es_VE et et_EE eu eu_ES ewo ewo_CM fa fa_AF fa_IR ff ff_CM ff_GN " +
-            "ff_MR ff_SN fi fi_FI fil fil_PH fo fo_FO fr fr_BE fr_BF fr_BI fr_BJ " +
-            "fr_BL fr_CA fr_CD fr_CF fr_CG fr_CH fr_CI fr_CM fr_DJ fr_DZ fr_FR " +
-            "fr_GA fr_GF fr_GN fr_GP fr_GQ fr_HT fr_KM fr_LU fr_MA fr_MC fr_MF " +
-            "fr_MG fr_ML fr_MQ fr_MR fr_MU fr_NC fr_NE fr_PF fr_PM fr_RE fr_RW " +
-            "fr_SC fr_SN fr_SY fr_TD fr_TG fr_TN fr_VU fr_WF fr_YT fur fur_IT fy " +
-            "fy_NL ga ga_IE gd gd_GB gl gl_ES gsw gsw_CH gsw_FR gsw_LI gu gu_IN " +
-            "guz guz_KE gv gv_IM ha ha_GH_#Latn ha_NE_#Latn ha_NG_#Latn ha__#Latn " +
-            "haw haw_US hi hi_IN hr hr_BA hr_HR hsb hsb_DE hu hu_HU hy hy_AM ig " +
-            "ig_NG ii ii_CN in in_ID is is_IS it it_CH it_IT it_SM iw iw_IL ja " +
-            "ja_JP ja_JP_JP_#u-ca-japanese jgo jgo_CM ji ji_001 jmc jmc_TZ ka " +
-            "ka_GE kab kab_DZ kam kam_KE kde kde_TZ kea kea_CV khq khq_ML ki " +
-            "ki_KE kk kk_KZ_#Cyrl kk__#Cyrl kkj kkj_CM kl kl_GL kln kln_KE km " +
-            "km_KH kn kn_IN ko ko_KP ko_KR kok kok_IN ks ks_IN_#Arab ks__#Arab " +
-            "ksb ksb_TZ ksf ksf_CM ksh ksh_DE kw kw_GB ky ky_KG_#Cyrl ky__#Cyrl " +
-            "lag lag_TZ lb lb_LU lg lg_UG lkt lkt_US ln ln_AO ln_CD ln_CF ln_CG " +
-            "lo lo_LA lt lt_LT lu lu_CD luo luo_KE luy luy_KE lv lv_LV mas " +
-            "mas_KE mas_TZ mer mer_KE mfe mfe_MU mg mg_MG mgh mgh_MZ mgo mgo_CM " +
-            "mk mk_MK ml ml_IN mn mn_MN_#Cyrl mn__#Cyrl mr mr_IN ms ms_BN_#Latn " +
-            "ms_MY ms_MY_#Latn ms_SG_#Latn ms__#Latn mt mt_MT mua mua_CM my " +
-            "my_MM naq naq_NA nb nb_NO nb_SJ nd nd_ZW ne ne_IN ne_NP nl nl_AW " +
-            "nl_BE nl_BQ nl_CW nl_NL nl_SR nl_SX nmg nmg_CM nn nn_NO nnh nnh_CM " +
-            "no no_NO no_NO_NY nus nus_SD nyn nyn_UG om om_ET om_KE or or_IN os " +
-            "os_GE os_RU pa pa_IN_#Guru pa_PK_#Arab pa__#Arab pa__#Guru pl pl_PL " +
-            "ps ps_AF pt pt_AO pt_BR pt_CV pt_GW pt_MO pt_MZ pt_PT pt_ST pt_TL qu " +
-            "qu_BO qu_EC qu_PE rm rm_CH rn rn_BI ro ro_MD ro_RO rof rof_TZ ru " +
-            "ru_BY ru_KG ru_KZ ru_MD ru_RU ru_UA rw rw_RW rwk rwk_TZ sah sah_RU " +
-            "saq saq_KE sbp sbp_TZ se se_FI se_NO se_SE seh seh_MZ ses ses_ML sg " +
-            "sg_CF shi shi_MA_#Latn shi_MA_#Tfng shi__#Latn shi__#Tfng si si_LK " +
-            "sk sk_SK sl sl_SI smn smn_FI sn sn_ZW so so_DJ so_ET so_KE so_SO sq " +
-            "sq_AL sq_MK sq_XK sr sr_BA sr_BA_#Cyrl sr_BA_#Latn sr_CS sr_ME " +
-            "sr_ME_#Cyrl sr_ME_#Latn sr_RS sr_RS_#Cyrl sr_RS_#Latn sr_XK_#Cyrl " +
-            "sr_XK_#Latn sr__#Cyrl sr__#Latn sv sv_AX sv_FI sv_SE sw sw_CD sw_KE " +
-            "sw_TZ sw_UG ta ta_IN ta_LK ta_MY ta_SG te te_IN teo teo_KE teo_UG " +
-            "th th_TH th_TH_TH_#u-nu-thai ti ti_ER ti_ET to to_TO tr tr_CY tr_TR " +
-            "twq twq_NE tzm tzm_MA_#Latn tzm__#Latn ug ug_CN_#Arab ug__#Arab uk " +
-            "uk_UA ur ur_IN ur_PK uz uz_AF_#Arab uz_UZ_#Cyrl uz_UZ_#Latn " +
-            "uz__#Arab uz__#Cyrl uz__#Latn vai vai_LR_#Latn vai_LR_#Vaii " +
-            "vai__#Latn vai__#Vaii vi vi_VN vun vun_TZ wae wae_CH xog xog_UG yav " +
-            "yav_CM yo yo_BJ yo_NG zgh zgh_MA zh zh_CN zh_CN_#Hans zh_HK " +
-            "zh_HK_#Hans zh_HK_#Hant zh_MO_#Hans zh_MO_#Hant zh_SG zh_SG_#Hans " +
-            "zh_TW zh_TW_#Hant zh__#Hans zh__#Hant zu zu_ZA",
+            Arrays.stream(Locale.getAvailableLocales())
+                  // "(root)" for Locale.ROOT rather than ""
+                  .map(loc -> loc.equals(Locale.ROOT) ? "(root)" : loc.toString())
+                  .collect(Collectors.toList()),
             "",
         },
 
-        // All English/Japanese locales
+        // All English and Japanese locales
         {
             "--include-locales=en,ja",
             "jdk.localedata",
@@ -163,15 +109,22 @@
                 "/jdk.localedata/sun/text/resources/ext/FormatData_zh.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_zh.class"),
-            " en en_001 en_150 en_AG en_AI en_AS en_AU en_BB en_BE en_BM en_BS " +
-            "en_BW en_BZ en_CA en_CC en_CK en_CM en_CX en_DG en_DM en_ER en_FJ " +
-            "en_FK en_FM en_GB en_GD en_GG en_GH en_GI en_GM en_GU en_GY en_HK " +
-            "en_IE en_IM en_IN en_IO en_JE en_JM en_KE en_KI en_KN en_KY en_LC " +
-            "en_LR en_LS en_MG en_MH en_MO en_MP en_MS en_MT en_MU en_MW en_MY " +
-            "en_NA en_NF en_NG en_NR en_NU en_NZ en_PG en_PH en_PK en_PN en_PR " +
-            "en_PW en_RW en_SB en_SC en_SD en_SG en_SH en_SL en_SS en_SX en_SZ " +
-            "en_TC en_TK en_TO en_TT en_TV en_TZ en_UG en_UM en_US en_US_POSIX " +
-            "en_VC en_VG en_VI en_VU en_WS en_ZA en_ZM en_ZW ja ja_JP ja_JP_JP_#u-ca-japanese",
+            List.of(
+                "(root)", "en", "en_001", "en_150", "en_AG", "en_AI", "en_AS", "en_AT",
+                "en_AU", "en_BB", "en_BE", "en_BI", "en_BM", "en_BS", "en_BW", "en_BZ",
+                "en_CA", "en_CC", "en_CH", "en_CK", "en_CM", "en_CX", "en_CY", "en_DE",
+                "en_DG", "en_DK", "en_DM", "en_ER", "en_FI", "en_FJ", "en_FK", "en_FM",
+                "en_GB", "en_GD", "en_GG", "en_GH", "en_GI", "en_GM", "en_GU", "en_GY",
+                "en_HK", "en_IE", "en_IL", "en_IM", "en_IN", "en_IO", "en_JE", "en_JM",
+                "en_KE", "en_KI", "en_KN", "en_KY", "en_LC", "en_LR", "en_LS", "en_MG",
+                "en_MH", "en_MO", "en_MP", "en_MS", "en_MT", "en_MU", "en_MW", "en_MY",
+                "en_NA", "en_NF", "en_NG", "en_NL", "en_NR", "en_NU", "en_NZ", "en_PG",
+                "en_PH", "en_PK", "en_PN", "en_PR", "en_PW", "en_RW", "en_SB", "en_SC",
+                "en_SD", "en_SE", "en_SG", "en_SH", "en_SI", "en_SL", "en_SS", "en_SX",
+                "en_SZ", "en_TC", "en_TK", "en_TO", "en_TT", "en_TV", "en_TZ", "en_UG",
+                "en_UM", "en_US", "en_US_POSIX", "en_VC", "en_VG", "en_VI", "en_VU",
+                "en_WS", "en_ZA", "en_ZM", "en_ZW", "ja", "ja_JP",
+                "ja_JP_JP_#u-ca-japanese"),
             "",
         },
 
@@ -200,8 +153,11 @@
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_zh.class"),
-            " as_IN bn_IN bo_IN brx_IN en en_IN en_US en_US_POSIX gu_IN hi_IN kn_IN " +
-            "kok_IN ks_IN_#Arab ml_IN mr_IN ne_IN or_IN pa_IN_#Guru ta_IN te_IN ur_IN",
+            List.of(
+                "(root)", "as_IN", "bn_IN", "bo_IN", "brx_IN", "en", /* "en_001", */
+                "en_IN", "en_US", "en_US_POSIX", "gu_IN", "hi_IN", "kn_IN", "kok_IN",
+                "ks_IN", "ml_IN", "mr_IN", "ne_IN", "or_IN", "pa_IN", "pa_IN_#Guru",
+                "ta_IN", "te_IN", "ur_IN"),
             "",
         },
 
@@ -223,7 +179,9 @@
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_zh.class"),
-            " en en_US en_US_POSIX th th_TH th_TH_TH_#u-nu-thai",
+            List.of(
+                "(root)", "en", "en_US", "en_US_POSIX", "th", "th_TH",
+                "th_TH_TH_#u-nu-thai"),
             "",
         },
 
@@ -248,7 +206,9 @@
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class"),
-            " en en_US en_US_POSIX zh_HK zh_HK_#Hans zh_HK_#Hant",
+            List.of(
+                "(root)", "en", "en_US", "en_US_POSIX", "zh_HK", "zh_HK_#Hans",
+                "zh_HK_#Hant"),
             "",
         },
 
@@ -274,7 +234,9 @@
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class"),
-            " en en_US en_US_POSIX nb nb_NO nb_SJ nn nn_NO no no_NO no_NO_NY",
+            List.of(
+                "(root)", "en", "en_US", "en_US_POSIX", "nb", "nb_NO", "nb_SJ", "nn",
+                "nn_NO", "no", "no_NO", "no_NO_NY"),
             "",
         },
 
@@ -302,7 +264,9 @@
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_en_001.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_ja.class",
                 "/jdk.localedata/sun/text/resources/cldr/ext/FormatData_th.class"),
-            " en en_US en_US_POSIX in in_ID iw iw_IL ji ji_001",
+            List.of(
+                "(root)", "en", "en_US", "en_US_POSIX", "in", "in_ID", "iw", "iw_IL",
+                "ji", "ji_001"),
             "",
         },
 
@@ -349,50 +313,76 @@
             System.err.println("Test not run");
             return;
         }
-
         helper.generateDefaultModules();
 
         for (Object[] data : testData) {
             // create image for each test data
+            System.out.println("Invoking jlink with \"" + data[INCLUDE_LOCALES_OPTION] + "\"");
             Result result = JImageGenerator.getJLinkTask()
                     .modulePath(helper.defaultModulePath())
                     .output(helper.createNewImageDir(moduleName))
-                    .addMods((String)data[ADDMODS_OPTION])
-                    .option((String)data[INCLUDE_LOCALES_OPTION])
+                    .addMods((String) data[ADDMODS_OPTION])
+                    .option((String) data[INCLUDE_LOCALES_OPTION])
                     .call();
 
-            String errorMsg = (String)data[ERROR_MESSAGE];
+            String errorMsg = (String) data[ERROR_MESSAGE];
             if (errorMsg.isEmpty()) {
                 Path image = result.assertSuccess();
 
                 // test locale data entries
                 testLocaleDataEntries(image,
-                    (List<String>)data[EXPECTED_LOCATIONS],
-                    (List<String>)data[UNEXPECTED_PATHS]);
+                    (List<String>) data[EXPECTED_LOCATIONS],
+                    (List<String>) data[UNEXPECTED_PATHS]);
 
                 // test available locales
-                testAvailableLocales(image, (String)data[AVAILABLE_LOCALES]);
+                testAvailableLocales(image, (List<String>) data[AVAILABLE_LOCALES]);
             } else {
                 result.assertFailure(new TaskHelper(TaskHelper.JLINK_BUNDLE)
                     .getMessage("error.prefix") + " " +errorMsg);
+                System.out.println("\tExpected failure: " + result.getMessage());
             }
         }
+
+        if (errors > 0) {
+            throw new RuntimeException("Test failed");
+        }
     }
 
     private static void testLocaleDataEntries(Path image, List<String> expectedLocations,
                         List<String> unexpectedPaths) throws Exception {
-        JImageValidator.validate(
-            image.resolve("lib").resolve("modules"),
-            expectedLocations, unexpectedPaths);
+        System.out.println("testLocaleDataEntries:");
+        try {
+            JImageValidator.validate(
+                image.resolve("lib").resolve("modules"),
+                expectedLocations, unexpectedPaths);
+        } catch (Exception e) {
+            System.out.println("\tFailed with: " + e);
+            e.printStackTrace();
+            errors++;
+        }
     }
 
-    private static void testAvailableLocales(Path image, String availableLocales) throws Exception {
+    private static void testAvailableLocales(Path image, List<String> availableLocales) throws Exception {
+        System.out.println("testAvailableLocales:");
         Path launcher = image.resolve("bin/java" +
             (System.getProperty("os.name").startsWith("Windows") ? ".exe" : ""));
-        System.out.print(launcher);
-        ProcessBuilder pb = new ProcessBuilder(launcher.toString(),
-            "GetAvailableLocales", availableLocales);
-        int ret = pb.start().waitFor();
-        System.out.println(" Return code: " + ret);
+        List<String> args = new ArrayList<>(availableLocales.size() + 2);
+        args.add(launcher.toString());
+        args.add("GetAvailableLocales");
+        args.addAll(availableLocales);
+        Process proc = new ProcessBuilder(args).inheritIO().start();
+
+        int len = Math.min(10, args.size());
+        String command = args.subList(0, len).stream().collect(Collectors.joining(" "))
+                         + (len < availableLocales.size() ? " ..." : "");
+
+        int status = proc.waitFor();
+        if (status == 0) {
+            System.out.println("\tDone\t" + command);
+        } else {
+            System.out.println("\tExit " + status + "\t" + command);
+            errors++;
+        }
+        System.out.println();
     }
 }
--- a/jdk/test/tools/jlink/plugins/OrderResourcesPluginTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/tools/jlink/plugins/OrderResourcesPluginTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -92,7 +92,7 @@
         {
             ModulePool out = new ModulePoolImpl();
             Map<String, String> config = new HashMap<>();
-            config.put(OrderResourcesPlugin.NAME, "/zazou/*,*/module-info.class");
+            config.put(OrderResourcesPlugin.NAME, "/zazou/**,**/module-info.class");
             TransformerPlugin p = new OrderResourcesPlugin();
             p.configure(config);
             p.visit(resources, out);
--- a/jdk/test/tools/jlink/plugins/ResourceFilterTest.java	Thu Jun 16 20:56:57 2016 +0000
+++ b/jdk/test/tools/jlink/plugins/ResourceFilterTest.java	Wed Jul 05 21:51:13 2017 +0200
@@ -24,13 +24,13 @@
 /*
  * @test
  * @summary Test ResourceFilter class
- * @author Jean-Francois Denise
  * @modules jdk.jlink/jdk.tools.jlink.internal.plugins
  * @run main ResourceFilterTest
  */
 
 import java.io.File;
 import java.nio.file.Files;
+import java.util.Arrays;
 import jdk.tools.jlink.internal.plugins.ResourceFilter;
 
 public class ResourceFilterTest {
@@ -41,14 +41,16 @@
 
     public void test() throws Exception {
         String[] samples = {"toto.jcov", "/module/META-INF/services/MyProvider"};
-        String[] patterns = {"*.jcov", "*/META-INF/*"};
-        ResourceFilter rf = new ResourceFilter(patterns);
+        String[] patterns = {"*.jcov", "**/META-INF/**",
+                             "glob:*.jcov", "glob:**/META-INF/**",
+                             "regex:.*\\.jcov", "regex:.*/META-INF/.*"};
+        ResourceFilter rf = ResourceFilter.includeFilter(Arrays.asList(patterns));
         for (String s : samples) {
             if (!rf.test(s)) {
                 throw new Exception("Sample " + s + "not accepted");
             }
         }
-        ResourceFilter rf2 = new ResourceFilter(patterns, true);
+        ResourceFilter rf2 = ResourceFilter.excludeFilter(Arrays.asList(patterns));
         for (String s : samples) {
             if (rf2.test(s)) {
                 throw new Exception("Sample " + s + " accepted");
@@ -64,14 +66,14 @@
         }
         Files.write(resources.toPath(), builder.toString().getBytes());
 
-        String[] input = {resources.getAbsolutePath()};
-        ResourceFilter rf3 = new ResourceFilter(input);
+        String[] input = {"@" + resources.getAbsolutePath()};
+        ResourceFilter rf3 = ResourceFilter.includeFilter(Arrays.asList(input));
         for (String s : samples) {
             if (!rf3.test(s)) {
                 throw new Exception("Sample " + s + "not accepted");
             }
         }
-        ResourceFilter rf4 = new ResourceFilter(input, true);
+        ResourceFilter rf4 = ResourceFilter.excludeFilter(Arrays.asList(input));
         for (String s : samples) {
             if (rf4.test(s)) {
                 throw new Exception("Sample " + s + " accepted");
--- a/make/Bundles.gmk	Thu Jun 16 20:56:57 2016 +0000
+++ b/make/Bundles.gmk	Wed Jul 05 21:51:13 2017 +0200
@@ -77,7 +77,8 @@
         ifneq ($$($1_SUBDIR), )
           ifeq ($$($1_TYPE)-$(TAR_SUPPORTS_TRANSFORM)-$$($1_UNZIP_DEBUGINFO), tar.gz-true-false)
 	    $(CD) $$($1_BASE_DIR) \
-	        && ( $(TAR) cf - -$(TAR_INCLUDE_PARAM) $(SUPPORT_OUTPUTDIR)/bundles/_$1_files \
+	        && ( $(TAR) cf - $(TAR_CREATE_EXTRA_PARAM) \
+                    -$(TAR_INCLUDE_PARAM) $(SUPPORT_OUTPUTDIR)/bundles/_$1_files \
 	            --transform 's|^|$$($1_SUBDIR)/|' $(TAR_IGNORE_EXIT_VALUE) ) \
 	        | $(GZIP) > $$@
           else
@@ -97,7 +98,8 @@
             endif
             ifeq ($$($1_TYPE), tar.gz)
 	      $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1 && \
-	          ( $(TAR) cf - $$($1_SUBDIR) $(TAR_IGNORE_EXIT_VALUE) ) | $(GZIP) > $$@
+	          ( $(TAR) cf - $(TAR_CREATE_EXTRA_PARAM) $$($1_SUBDIR) $(TAR_IGNORE_EXIT_VALUE) ) \
+	          | $(GZIP) > $$@
             else ifeq ($$($1_TYPE), zip)
 	      $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1 && $(ZIP) -qr $$@ .
             endif
@@ -105,7 +107,8 @@
         else
           ifeq ($$($1_TYPE), tar.gz)
 	    $(CD) $$($1_BASE_DIR) \
-	        && ( $(TAR) cf - -$(TAR_INCLUDE_PARAM) $(SUPPORT_OUTPUTDIR)/bundles/_$1_files \
+	        && ( $(TAR) cf - $(TAR_CREATE_EXTRA_PARAM) \
+	            -$(TAR_INCLUDE_PARAM) $(SUPPORT_OUTPUTDIR)/bundles/_$1_files \
 	            $(TAR_IGNORE_EXIT_VALUE) ) \
 	        | $(GZIP) > $$@
           else ifeq ($$($1_TYPE), zip)