changeset 6787:2cc729dda2f8

Merge
author asaha
date Tue, 25 Jun 2013 17:20:25 -0700
parents 0bf72cc56dc3 ba861ea65297
children 517a47e66573
files make/com/sun/servicetag/Makefile make/common/Program.gmk make/common/Release.gmk make/sun/rmi/rmi/mapfile-vers src/share/classes/com/sun/servicetag/BrowserSupport.java src/share/classes/com/sun/servicetag/Installer.java src/share/classes/com/sun/servicetag/LinuxSystemEnvironment.java src/share/classes/com/sun/servicetag/RegistrationData.java src/share/classes/com/sun/servicetag/RegistrationDocument.java src/share/classes/com/sun/servicetag/Registry.java src/share/classes/com/sun/servicetag/ServiceTag.java src/share/classes/com/sun/servicetag/SolarisServiceTag.java src/share/classes/com/sun/servicetag/SolarisSystemEnvironment.java src/share/classes/com/sun/servicetag/SunConnection.java src/share/classes/com/sun/servicetag/SystemEnvironment.java src/share/classes/com/sun/servicetag/UnauthorizedAccessException.java src/share/classes/com/sun/servicetag/Util.java src/share/classes/com/sun/servicetag/WindowsSystemEnvironment.java src/share/classes/com/sun/servicetag/package.html src/share/classes/com/sun/servicetag/resources/Putback-Notes.txt src/share/classes/com/sun/servicetag/resources/javase_5_swordfish.properties src/share/classes/com/sun/servicetag/resources/javase_6_swordfish.properties src/share/classes/com/sun/servicetag/resources/javase_7_swordfish.properties src/share/classes/com/sun/servicetag/resources/jdk_header.png src/share/classes/com/sun/servicetag/resources/product_registration.xsd src/share/classes/com/sun/servicetag/resources/register.html src/share/classes/com/sun/servicetag/resources/register_ja.html src/share/classes/com/sun/servicetag/resources/register_zh_CN.html src/share/classes/java/beans/ReflectionUtils.java src/share/classes/java/lang/invoke/AdapterMethodHandle.java src/share/classes/java/lang/invoke/CountingMethodHandle.java src/share/classes/java/lang/invoke/FilterGeneric.java src/share/classes/java/lang/invoke/FilterOneArgument.java src/share/classes/java/lang/invoke/FromGeneric.java src/share/classes/java/lang/invoke/SpreadGeneric.java src/share/classes/java/lang/invoke/ToGeneric.java src/share/classes/sun/tools/jconsole/resources/JConsoleResources.java src/share/classes/sun/tools/jconsole/resources/JConsoleResources_ja.java src/share/classes/sun/tools/jconsole/resources/JConsoleResources_zh_CN.java src/share/lib/security/java.security src/share/native/sun/rmi/server/MarshalInputStream.c test/Makefile test/com/sun/jndi/ldap/LdapsReadTimeoutTest.java test/com/sun/jndi/ldap/ReadTimeoutTest.java test/com/sun/servicetag/DeleteServiceTag.java test/com/sun/servicetag/DuplicateNotFound.java test/com/sun/servicetag/FindServiceTags.java test/com/sun/servicetag/InstanceUrnCheck.java test/com/sun/servicetag/InvalidRegistrationData.java test/com/sun/servicetag/InvalidServiceTag.java test/com/sun/servicetag/JavaServiceTagTest.java test/com/sun/servicetag/JavaServiceTagTest1.java test/com/sun/servicetag/NewRegistrationData.java test/com/sun/servicetag/SvcTagClient.java test/com/sun/servicetag/SystemRegistryTest.java test/com/sun/servicetag/TestLoadFromXML.java test/com/sun/servicetag/UpdateServiceTagTest.java test/com/sun/servicetag/Util.java test/com/sun/servicetag/ValidRegistrationData.java test/com/sun/servicetag/environ.properties test/com/sun/servicetag/missing-environ-field.xml test/com/sun/servicetag/newer-registry-version.xml test/com/sun/servicetag/registration.xml test/com/sun/servicetag/servicetag1.properties test/com/sun/servicetag/servicetag2.properties test/com/sun/servicetag/servicetag3.properties test/com/sun/servicetag/servicetag4.properties test/com/sun/servicetag/servicetag5.properties test/java/awt/Focus/OverrideRedirectWindowActivationTest/OverrideRedirectWindowActivationTest.java test/java/awt/Mouse/EnterExitEvents/DragWindowTest.java test/java/io/File/isDirectory/Applet.html test/java/io/Serializable/accessConstants/AccessConstants.java test/sun/net/www/messageheader/0 test/sun/net/www/messageheader/1 test/sun/net/www/messageheader/2 test/sun/net/www/messageheader/3 test/sun/net/www/messageheader/4 test/sun/net/www/messageheader/5 test/sun/net/www/messageheader/6 test/sun/net/www/messageheader/HTest.java test/sun/nio/cs/OLD/TestX11CS.java test/sun/security/ssl/com/sun/net/ssl/internal/ssl/InputRecord/InterruptedIO.java test/sun/tools/jconsole/ImmutableResourceTest.java test/sun/tools/jconsole/ImmutableResourceTest.sh
diffstat 1006 files changed, 42144 insertions(+), 31065 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Mon Jun 24 10:32:19 2013 +0200
+++ b/.hgtags	Tue Jun 25 17:20:25 2013 -0700
@@ -240,6 +240,30 @@
 cbbb166b38eb15f5d5c68e913ee18f6f352b7af0 jdk7u13-b10
 28700a56b69d80e70aecf230ab7f9ad4bb5acf23 jdk7u13-b30
 8eb180a284b0911b2645d5cbdff5be499a75d6b2 jdk7u13-b20
+df945ef30444adf08f3ef14b0c49c8bda6dda587 jdk7u8-b01
+dd1e513c05b8b8c8402e9ecf9c0d5bdbebb1a089 jdk7u8-b02
+355cf1937d0824b54ac38ee5a5496197647840f9 jdk7u8-b03
+d099fc840e6c0f07e7b6f52d11fae98ae217bc9a jdk7u8-b04
+1c3a91a1dabdcd7e4407f9e7be08718339eafaad jdk7u8-b05
+147401296df6355464007cfb16f76dfe4d6b9fa6 jdk7u10-b06
+fd190f90dc174c89f1bc447aab800f4eb99edda5 jdk7u10-b07
+cd32baf1524847463bab29b83b9fe33740a37313 jdk7u10-b08
+a5b1c01d1929f6b3e9d49e70db3d0263e11c9ab4 jdk7u10-b09
+448626eae40d303a2627a0b3613a98d32d4419f1 jdk7u12-b01
+c49b6f0315799a9deadf8f4661c67ed2dd1bfcfb jdk7u12-b02
+c4f6412aa2dee96cb209b37a0c6ebb4bea482d2c jdk7u12-b03
+0d25ad745892a146e8e4e1fb7caeeee7739b7019 jdk7u12-b04
+fdd0d43ba0f9c3f58959e2de7d1958f771d84565 jdk7u12-b05
+b5449e3dcf1f317002840dc5c2093be47c60fe8c jdk7u12-b06
+cb81ee79a72d84f99b8e7d73b5ae73124b661fe7 jdk7u12-b07
+b5e180ef18a0c823675bcd32edfbf2f5122d9722 jdk7u12-b08
+2e7fe0208e9c928f2f539fecb6dc8a1401ecba9e jdk7u12-b09
+e012aace90500a88f51ce83fcd27791f5dbf493f jdk7u14-b10
+9eb82fb221f3b34a5df97e7db3c949fdb0b6fee0 jdk7u14-b11
+ee3ab2ed2371dd72ad5a75ebb6b6b69071e29390 jdk7u14-b12
+7c0d4bfd9d2c183ebf8566013af5111927b472f6 jdk7u14-b13
+3982fc37bc256b07a710f25215e5525cfbefe2ed jdk7u14-b14
+2eb3ac105b7fe7609a20c9986ecbccab71f1609f jdk7u14-b15
 835448d525a10bb826f4f7ebe272fc410bdb0f5d jdk7u15-b01
 0443fe2d8023111b52f4c8db32e038f4a5a9f373 jdk7u15-b02
 70b0f967c0649c501fb14a27bb06daeccbff823a jdk7u15-b30
@@ -282,3 +306,21 @@
 0d68732acbd4b6669512b1d2be496a9e391795a9 jdk7u25-b30
 173b399abd8aa2e4fdc0066c977719670d180125 jdk7u25-b16
 55f01444cf58c8004df9a9634c1bd7ff87caa370 jdk7u25-b32
+555ea0c4e9567294d37793777d521902d43f1a39 jdk7u14-b16
+950fa827c2ec8a3a1ceba755994ae59016daa621 jdk7u14-b17
+e7ba683c15009b166127c3437fe9fbaf4eee6efe jdk7u14-b18
+eb4807b899c84c92959b66f888f8cc8b028c7665 jdk7u14-b19
+eb4807b899c84c92959b66f888f8cc8b028c7665 jdk7u14-b19
+a249c45148c51dc53250c5d0c3d506ec5f9b88ab jdk7u14-b19
+bb8764ec11c2c4ca318bcf6aabdabd29c70b2cd1 jdk7u14-b20
+0a00f10abb2df203f13a723be158fb759e54b19b jdk7u14-b21
+d4bf5c15837c47d179c71f6df8716ad9bef53ef9 jdk7u14-b22
+a76a886dc057582bf332e60a023d8f8a35526217 jdk7u40-b23
+8e3d618505d33572c7b087f47e60818269f71475 jdk7u40-b24
+889f9b9f79b4ec9ea52754a1ad134ed92d4f9672 jdk7u40-b25
+ac03c48f1d82e0c8c1d5d72b8953be8aef558d87 jdk7u40-b26
+6ce66ba864780251fc44fff65358ef24f68ea51a jdk7u40-b27
+2043900095890e676f5ed0f959f470e2138c2a9a jdk7u40-b28
+d3186a0676dbc7ab80e00fa67f952b67933d5a35 jdk7u40-b29
+60d52db33828bf0355a94be2a82df90c901592f3 jdk7u40-b30
+55f01444cf58c8004df9a9634c1bd7ff87caa370 jdk7u25-b32
--- a/make/altclasses/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/altclasses/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
 # 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 @@
 ALTRT_JAR_FILE = $(LIBDIR)/alt-rt.jar
 ALTRT_JAR_SOURCE_FILE = $(TEMPDIR)/alt-rt.jarsrclist
 ALTRT_JAR_SOURCES = $(wildcard $(ALTCLASSES_SRCDIR)/java/*/*.java)
+ALTRT_JAR_SOURCES += $(wildcard $(ALTCLASSES_SRCDIR)/sun/misc/*.java)
 
 # Use a special file suffix for the file that holds the source list
 
--- a/make/com/oracle/jfr/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/com/oracle/jfr/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -42,6 +42,11 @@
 
 AUTO_FILES_JAVA_DIRS = com/oracle/jrockit/jfr oracle/jrockit/jfr
 
+JFC_XSD = oracle/jrockit/jfr/settings/jfc.xsd
+JFC_XSD_SRC = $(CLOSED_SHARE_SRC)/classes/$(JFC_XSD)
+JFC_XSD_FILE = $(CLASSDESTDIR)/$(JFC_XSD)
+
+
 # Find C source files
 #
 vpath %.c $(CLOSED_SHARE_SRC)/native/oracle/jfr
@@ -59,15 +64,18 @@
 	$(RM) -r $(CLASSDESTDIR)/com/oracle/jrockit/jfr
 	$(RM) -r $(CLASSDESTDIR)/oracle/jrockit/jfr
 
+# Copy pre-shipped .jfc files
+JFR_LIBDIR = $(LIBDIR)/jfr
+JFC_SRCDIR = $(CLOSED_SHARE_SRC)/classes/oracle/jrockit/jfr/settings
 
-# Copy pre-shipped .jfs files
-JFR_LIBDIR = $(LIBDIR)/jfr
-JFR_SRCDIR = $(CLOSED_SHARE_SRC)/lib/jfr
-
-$(JFR_LIBDIR)/%.jfs: $(JFR_SRCDIR)/%.jfs
+$(JFR_LIBDIR)/%.jfc: $(JFC_SRCDIR)/%.jfc
 	$(install-file)
 
-JFS_FILES := $(subst $(JFR_SRCDIR),$(JFR_LIBDIR),$(wildcard $(JFR_SRCDIR)/*.jfs))
+JFC_FILES := $(subst $(JFC_SRCDIR),$(JFR_LIBDIR),$(wildcard $(JFC_SRCDIR)/*.jfc))
 
-all build : $(JFS_FILES)
+-include ${JDK_TOPDIR}/make/closed/common/jfr.gmk
 
+$(JFC_XSD_FILE) : $(JFC_XSD_SRC)
+	$(install-file)
+
+all build: $(JFC_FILES) $(JFC_XSD_FILE)
--- a/make/com/sun/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/com/sun/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -45,7 +45,7 @@
 SUBDIRS_desktop    = image
 SUBDIRS_enterprise = crypto/provider jndi \
                      org rowset net/httpserver
-SUBDIRS_misc       = $(SCRIPT_SUBDIR) tracing servicetag nio demo
+SUBDIRS_misc       = $(SCRIPT_SUBDIR) tracing nio demo
 
 # Omit mirror since it's built with the apt tool.
 SUBDIRS_tools      = tools
--- a/make/com/sun/java/pack/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/com/sun/java/pack/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -75,8 +75,8 @@
   OTHER_CXXFLAGS += $(ZINCLUDE)
   LDDFLAGS += $(ZIPOBJS)
  else
-  LDDFLAGS += -lz
-  OTHER_CXXFLAGS += -DSYSTEM_ZLIB
+  LDDFLAGS += $(ZLIB_LIBS)
+  OTHER_CXXFLAGS += $(ZLIB_CFLAGS) -DSYSTEM_ZLIB
  endif
 else
   OTHER_CXXFLAGS += -DNO_ZLIB -DUNPACK_JNI
--- a/make/com/sun/security/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/com/sun/security/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -31,7 +31,7 @@
 include $(BUILDDIR)/common/Defs.gmk
 
 SUBDIRS = auth
-SUBDIRS_misc = jgss sasl auth/module
+SUBDIRS_misc = jgss sasl auth/module ntlm
 include $(BUILDDIR)/common/Subdirs.gmk
 
 all build clean clobber::
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/com/sun/security/ntlm/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -0,0 +1,39 @@
+#
+# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# 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.
+#
+
+BUILDDIR = ../../../..
+PACKAGE = com.sun.security.ntlm
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Files
+#
+AUTO_FILES_JAVA_DIRS = com/sun/security/ntlm
+
+#
+# Rules
+#
+include $(BUILDDIR)/common/Classes.gmk
--- a/make/com/sun/servicetag/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-# Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
-# 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.
-
-BUILDDIR = ../../..
-PACKAGE = com.sun.servicetag
-PRODUCT = sun
-include $(BUILDDIR)/common/Defs.gmk
-
-#
-# Files to compile
-#
-AUTO_FILES_JAVA_DIRS = com/sun/servicetag
-
-#
-# Rules
-#
-include $(BUILDDIR)/common/Classes.gmk
-
-SERVICETAG_LIBDIR = $(LIBDIR)/servicetag
-SERVICETAG_RESOURCES_DIR = $(CLASSDESTDIR)/com/sun/servicetag/resources
-FILES_copy = $(SERVICETAG_RESOURCES_DIR)/product_registration.xsd \
-             $(SERVICETAG_RESOURCES_DIR)/register.html \
-             $(SERVICETAG_RESOURCES_DIR)/register_ja.html \
-             $(SERVICETAG_RESOURCES_DIR)/register_zh_CN.html \
-             $(SERVICETAG_LIBDIR)/jdk_header.png
-
-# Add all properties files to the FILES_copy list
-SWORDFISH_properties := $(shell \
-       $(CD) $(SHARE_SRC)/classes/com/sun/servicetag/resources; \
-       $(FIND) . -name 'javase_*_swordfish.properties' -print ; \
-    )
-FILES_copy += $(shell \
-   for f in $(SWORDFISH_properties) ; do \
-       echo $(SERVICETAG_RESOURCES_DIR)/$$f ; \
-   done \
-)
-
-
-#
-#OTHER_JAVACFLAGS += -Xlint:unchecked
-
-build: install-servicetag-lib copy-files
-
-copy-files: $(FILES_copy)
-
-$(CLASSBINDIR)/%: $(SHARE_SRC)/classes/%
-	$(install-file)
-
-$(SERVICETAG_LIBDIR)/jdk_header.png: $(SHARE_SRC)/classes/com/sun/servicetag/resources/jdk_header.png
-	$(install-file)
-	$(call chmod-file, 444)
-
-install-servicetag-lib:
-	@$(RM) -rf $(SERVICETAG_LIBDIR)
-	$(MKDIR) $(SERVICETAG_LIBDIR)
-
-clean clobber::
-	@$(RM) $(FILES_copy)
-
-.PHONY: copy-files
--- a/make/common/Defs-linux.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/common/Defs-linux.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -112,21 +112,18 @@
 # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
 
 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
-  # Default OBJCOPY comes from GNU Binutils on Linux:
-  DEF_OBJCOPY=/usr/bin/objcopy
-  ifdef CROSS_COMPILE_ARCH
-    # don't try to generate .debuginfo files when cross compiling
-    _JUNK_ := $(shell \
-      echo >&2 "INFO: cross compiling for ARCH $(CROSS_COMPILE_ARCH)," \
-        "skipping .debuginfo generation.")
-    OBJCOPY=
+  ifndef CROSS_COMPILE_ARCH
+    # Default OBJCOPY comes from GNU Binutils on Linux:
+    DEF_OBJCOPY=/usr/bin/objcopy
   else
-    OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
-    ifneq ($(ALT_OBJCOPY),)
-      _JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
-      # disable .debuginfo support by setting ALT_OBJCOPY to a non-existent path
-      OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
-    endif
+    # Assume objcopy is part of the cross-compilation toolkit
+    DEF_OBJCOPY=$(COMPILER_PATH)/objcopy
+  endif
+  OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
+  ifneq ($(ALT_OBJCOPY),)
+    _JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
+    # disable .debuginfo support by setting ALT_OBJCOPY to a non-existent path
+    OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
   endif
 
   # Setting ENABLE_FULL_DEBUG_SYMBOLS=1 (and OBJCOPY) above enables the
@@ -138,7 +135,7 @@
 
   ifeq ($(OBJCOPY),)
     _JUNK_ := $(shell \
-      echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.")
+      echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files. You may need to set ALT_OBJCOPY.")
     ENABLE_FULL_DEBUG_SYMBOLS=0
   else
     _JUNK_ := $(shell \
--- a/make/common/Defs-windows.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/common/Defs-windows.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -433,40 +433,3 @@
             -d "JDK_COPYRIGHT=$(JDK_RC_COPYRIGHT)" \
             -d "JDK_NAME=$(JDK_RC_NAME)" \
             -d "JDK_FVER=$(JDK_RC_FVER)"
-
-# Enable 7-Zip LZMA file (de)compression for Java Kernel if it is available
-ifeq ($(ARCH_DATA_MODEL), 32)
-  ifneq ($(KERNEL), off)
-    # This is a hack to use until  7-Zip (and UPX) bundles can be put
-    # under /java/devtools.
-    ifndef DEPLOY_TOPDIR
-      DEPLOY_TOPDIR=$(JDK_TOPDIR)/../deploy
-    endif
-    # Uncomment this block to cause build failure if above assumption false
-    #DCHK = $(shell if [ ! -d $(DEPLOY_TOPDIR) ] ; then \
-    #  $(ECHO) deploy_not_a_peer_of_j2se ; \
-    #fi )
-    #ifeq ($(DCHK), deploy_not_a_peer_of_j2se)
-    #  If a build failure points to control coming here it means
-    #  it means deploy is not in the same directory
-    #  as j2se. Java Kernel can't tolerate that for the time being.
-    #endif
-    EC_TMP = $(shell if [ -d $(DEPLOY_TOPDIR)/make/lzma ] ; then \
-      $(ECHO) true ; \
-    else \
-      $(ECHO) false ; \
-    fi )
-    ifeq ($(EC_TMP), true)
-      EXTRA_COMP_INSTALL_PATH = lib\\\\deploy\\\\lzma.dll
-      # Crazy but true: deploy/make/plugin/jinstall/Makefile.jkernel does
-      # not include deploy/make/common/Defs-windows.gmk, either directly
-      # or indirectly. But it does include this file, so redundantly declare
-      # these variables that are in deploy/make/common/Defs-windows.gmk for
-      # the sake of the Java Kernel part of the deploy build. Whew!
-      EXTRA_COMP_LIB_NAME = lzma.dll
-      EXTRA_COMP_PATH = $(OUTPUTDIR)/tmp/deploy/lzma/win32/obj
-      EXTRA_COMP_CMD_PATH = $(EXTRA_COMP_PATH)/lzma.exe
-      EXTRA_COMP_LIB_PATH = $(EXTRA_COMP_PATH)/$(EXTRA_COMP_LIB_NAME)
-    endif
-  endif
-endif
--- a/make/common/Defs.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/common/Defs.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -431,7 +431,12 @@
 # namely jni.h, jvm.h, and jni_utils.h, plus their platform-specific
 # relatives.
 #
-VPATH0.h =   $(PLATFORM_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/export
+ifeq ($(PLATFORM), macosx)
+  VPATH0.h =   $(PLATFORM_SRC_MACOS)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/export
+else
+  VPATH0.h =   $(PLATFORM_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/export
+endif
+
 ifdef OPENJDK
   VPATH.h = $(VPATH0.h)
 else
--- a/make/common/Demo.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/common/Demo.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -158,6 +158,8 @@
     #       bit between them.
     LINK.demo   = $(LINK.c)
     LDLIBS.demo = $(EXTRA_LIBS) $(LFLAGS_$(COMPILER_VERSION))
+    DEMO_VERSION_INFO = $(OBJDIR)/$(LIBRARY).res
+    LDLIBS.demo += $(DEMO_VERSION_INFO)
   else
     ifneq ($(DEMO_NEEDS_CPP),)
       LINK.demo   = $(LINK.cpp)
@@ -288,6 +290,13 @@
 	$(install-file)
 endif
 
+ifeq ($(PLATFORM),windows)
+# JDK name required here
+RC_FLAGS += /D "JDK_FNAME=$(LIBRARY).dll" \
+            /D "JDK_INTERNAL_NAME=$(LIBRARY)" \
+            /D "JDK_FTYPE=0x2L"
+endif
+
 # Native library building
 ifdef DEMO_LIBRARY
 
@@ -308,6 +317,9 @@
   # Actual creation of the native shared library (C++ and C are different)
 $(DEMO_LIBRARY): $(DEMO_FULL_OBJECTS)
 	@$(prep-target)
+  ifeq ($(PLATFORM),windows)
+	$(RC) $(RC_FLAGS) $(CC_OBJECT_OUTPUT_FLAG)$(DEMO_VERSION_INFO) $(VERSIONINFO_RESOURCE)
+  endif
 	$(LINK.demo) $(SHARED_LIBRARY_FLAG) $(CC_PROGRAM_OUTPUT_FLAG)$@ \
 	    $(DEMO_FULL_OBJECTS) $(LDLIBS.demo)
 	@$(call binary_file_verification,$@)
--- a/make/common/Program.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/common/Program.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -91,7 +91,7 @@
   LDFLAGS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/libjli.a
 
   ifeq ($(SYSTEM_ZLIB),true)
-    OTHER_LDLIBS += -lz
+    OTHER_LDLIBS += $(ZLIB_LIBS)
   endif # SYSTEM_ZLIB
 endif # PLATFORM
 
--- a/make/common/Release.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/common/Release.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -59,8 +59,7 @@
 # This is an interim solution until the ct.sym is replaced
 # with a new module system (being discussed for JDK 8).
 #
-EXPORTED_PRIVATE_PKGS = com.sun.servicetag \
-                        com.oracle.net \
+EXPORTED_PRIVATE_PKGS = com.oracle.net \
                         com.oracle.nio \
                         com.oracle.util
 
@@ -158,7 +157,6 @@
         jstack.1           \
         jstat.1            \
         jstatd.1           \
-        jvisualvm.1        \
 	native2ascii.1     \
 	rmic.1             \
         schemagen.1        \
@@ -167,6 +165,10 @@
         wsimport.1         \
         xjc.1
 
+ifndef OPENJDK
+  JDK_MAN_PAGES += jvisualvm.1
+endif
+
 ifeq ($(PLATFORM), solaris)
   MANBASEDIRS=$(JDK_TOPDIR)/src/solaris/doc $(IMPORTDOCDIR)
   MAN1SUBDIR=sun/man/man1
@@ -1231,6 +1233,10 @@
 $(PRINTF) '%s="%s"\n' $1 $2 >> $@
 endef
 
+define echo-java-info
+$(CAT) $1
+endef
+
 # Values to emit
 MINIMUM_OS_NAME    := $(REQUIRED_OS_NAME)
 MINIMUM_OS_VERSION := $(REQUIRED_OS_VERSION)
@@ -1247,6 +1253,7 @@
 	$(call info-file-item, "OS_VERSION",   "$(MINIMUM_OS_VERSION)")
 	$(call info-file-item, "OS_ARCH",      "$(MINIMUM_OS_ARCH)")
 	$(call info-file-item, "SOURCE",       "$(ALL_SOURCE_TIPS)")
+	$(call echo-java-info, $@)
 
 # Create release file to identify this image
 identify-image-jdk:: $(JDK_INFO_FILE)
@@ -1258,6 +1265,7 @@
 	$(call info-file-item, "OS_VERSION",   "$(MINIMUM_OS_VERSION)")
 	$(call info-file-item, "OS_ARCH",      "$(MINIMUM_OS_ARCH)")
 	$(call info-file-item, "SOURCE",       "$(ALL_SOURCE_TIPS)")
+	$(call echo-java-info, $@)
 
 # Create release file to identify this image
 identify-image-jre:: $(JRE_INFO_FILE)
@@ -1355,8 +1363,8 @@
 	@$(java-vm-cleanup)
 
 # Clean up names in the messages printed out
-CAT_FILTER = $(SED) -e "s@$(JDK_IMAGE_DIR)@JDK_IMAGE@g" \
-	            -e "s@$(JRE_IMAGE_DIR)@JRE_IMAGE@g"
+CAT_FILTER = $(SED) -e "s|$(JDK_IMAGE_DIR)|JDK_IMAGE|g" \
+	            -e "s|$(JRE_IMAGE_DIR)|JRE_IMAGE|g"
 
 # Report on the jre image comparison
 compare-image-jre: $(TEMP_PREV_JRE_COMPARISON)
@@ -1424,3 +1432,4 @@
 # Force rule
 FRC:
 
+-include $(JDK_TOPDIR)/make/closed/common/release.gmk
--- a/make/common/shared/Defs-java.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/common/shared/Defs-java.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -156,7 +156,7 @@
 
 # Needed for javadoc to ensure it builds documentation
 # against the newly built classes
-JAVADOCFLAGS += -bootclasspath $(CLASSBINDIR)
+JAVADOCFLAGS += -bootclasspath "$(CLASSBINDIR)$(JCE_PATH)"
 
 # Needed for JAVADOC and BOOT_JAVACFLAGS
 NO_PROPRIETARY_API_WARNINGS = -XDignore.symbol.file=true
--- a/make/common/shared/Defs-linux.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/common/shared/Defs-linux.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -129,6 +129,11 @@
 BUILD_HEADLESS = true
 LIBM=-lm
 
+# Set ZLIB_LIBS if not already set
+ifeq ("$(ZLIB_LIBS)", "")
+  ZLIB_LIBS=-lz
+endif
+
 # GCC29_COMPILER_PATH: is the path to where the gcc 2.9 compiler is installed
 #  NOTE: Must end with / so that it could be empty, allowing PATH usage.
 ifdef ALT_GCC29_COMPILER_PATH
--- a/make/common/shared/Defs-macosx.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/common/shared/Defs-macosx.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -143,6 +143,11 @@
   _CUPS_HEADERS_PATH=$(PACKAGE_PATH)/include
 endif
 
+# Set ZLIB_LIBS if not already set
+ifeq ("$(ZLIB_LIBS)", "")
+  ZLIB_LIBS=-lz
+endif
+
 # Import JDK images allow for partial builds, components not built are
 #    imported (or copied from) these import areas when needed.
 
--- a/make/common/shared/Defs-solaris.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/common/shared/Defs-solaris.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -140,6 +140,11 @@
 
 _CUPS_HEADERS_PATH=/opt/sfw/cups/include
 
+# Set ZLIB_LIBS if not already set
+ifeq ("$(ZLIB_LIBS)", "")
+  ZLIB_LIBS=-lz
+endif
+
 # Import JDK images allow for partial builds, components not built are
 #    imported (or copied from) these import areas when needed.
 
--- a/make/docs/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/docs/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -47,11 +47,11 @@
 
 # Url to devdocs page
 #   Was: http://java.sun.com/javase/6/webnotes/devdocs-vs-specs.html
-DEV_DOCS_URL-5 = http://java.sun.com/j2se/1.5.0/docs/index.html
-DEV_DOCS_URL-6 = http://download.oracle.com/javase/6/docs/index.html
-DEV_DOCS_URL-7 = http://download.oracle.com/javase/7/docs/index.html
+DEV_DOCS_URL-5 = http://docs.oracle.com/javase/1.5.0/docs/index.html
+DEV_DOCS_URL-6 = http://docs.oracle.com/javase/6/docs/index.html
+DEV_DOCS_URL-7 = http://docs.oracle.com/javase/7/docs/index.html
 DEV_DOCS_URL = $(DEV_DOCS_URL-$(JDK_MINOR_VERSION))
-DOCS_BASE_URL = http://download.oracle.com/javase/7/docs
+DOCS_BASE_URL = http://docs.oracle.com/javase/7/docs
 
 # Url to Java Language Spec
 #JLS3_URL = http://java.sun.com/docs/books/jls/
--- a/make/java/java/mapfile-vers	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/java/java/mapfile-vers	Tue Jun 25 17:20:25 2013 -0700
@@ -79,7 +79,7 @@
 		Java_java_io_FileInputStream_close0;
 		Java_java_io_FileInputStream_initIDs;
 		Java_java_io_FileInputStream_open;
-		Java_java_io_FileInputStream_read;
+		Java_java_io_FileInputStream_read0;
 		Java_java_io_FileInputStream_readBytes;
 		Java_java_io_FileInputStream_skip;
 		Java_java_io_FileOutputStream_close0;
@@ -90,7 +90,6 @@
 		Java_java_io_FileSystem_getFileSystem;
 		Java_java_io_ObjectInputStream_bytesToDoubles;
 		Java_java_io_ObjectInputStream_bytesToFloats;
-		Java_java_io_ObjectInputStream_latestUserDefinedLoader;
 		Java_java_io_ObjectOutputStream_doublesToBytes;
 		Java_java_io_ObjectOutputStream_floatsToBytes;
 		Java_java_io_ObjectStreamClass_hasStaticInitializer;
@@ -100,12 +99,12 @@
 		Java_java_io_RandomAccessFile_initIDs;
 		Java_java_io_RandomAccessFile_length;
 		Java_java_io_RandomAccessFile_open;
-		Java_java_io_RandomAccessFile_read;
-		Java_java_io_RandomAccessFile_readBytes;
+		Java_java_io_RandomAccessFile_read0;
+		Java_java_io_RandomAccessFile_readBytes0;
 		Java_java_io_RandomAccessFile_seek;
 		Java_java_io_RandomAccessFile_setLength;
-		Java_java_io_RandomAccessFile_write;
-		Java_java_io_RandomAccessFile_writeBytes;
+		Java_java_io_RandomAccessFile_write0;
+		Java_java_io_RandomAccessFile_writeBytes0;
 		Java_java_io_UnixFileSystem_canonicalize0;
 		Java_java_io_UnixFileSystem_checkAccess;
 		Java_java_io_UnixFileSystem_createDirectory;
@@ -273,6 +272,7 @@
                 Java_sun_misc_Version_getJvmVersionInfo;
                 Java_sun_misc_Version_getJvmSpecialVersion;
                 Java_sun_misc_VM_getThreadStateValues;
+		Java_sun_misc_VM_latestUserDefinedLoader;
                 Java_sun_misc_VM_initialize;
 		Java_sun_misc_VMSupport_initAgentProperties;
 
--- a/make/java/jli/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/java/jli/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -46,6 +46,8 @@
 
 ifneq ($(SYSTEM_ZLIB),true)
   ZIP_SRC = $(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
+else # SYSTEM_ZLIB
+  OTHER_CFLAGS += $(ZLIB_CFLAGS)
 endif #SYSTEM_ZLIB
 LAUNCHER_SHARE_SRC = $(SHARE_SRC)/bin
 
@@ -162,7 +164,7 @@
 ifneq ($(SYSTEM_ZLIB),true)
   OTHER_INCLUDES += -I$(ZIP_SRC)
 else # !SYSTEM_ZLIB
-  LDLIBS += -lz
+  LDLIBS += $(ZLIB_LIBS)
 endif # SYSTEM_ZLIB
 
 #
--- a/make/java/nio/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/java/nio/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -54,6 +54,9 @@
 	sun/nio/ch/DevPollArrayWrapper.java \
 	sun/nio/ch/DevPollSelectorImpl.java \
         sun/nio/ch/DevPollSelectorProvider.java \
+	sun/nio/ch/EventPortSelectorImpl.java \
+	sun/nio/ch/EventPortSelectorProvider.java \
+	sun/nio/ch/EventPortWrapper.java \
 	sun/nio/ch/InheritedChannel.java \
         sun/nio/ch/PollSelectorProvider.java \
         sun/nio/ch/PollSelectorImpl.java \
@@ -274,11 +277,13 @@
 	sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java \
 	sun/nio/ch/UnixAsynchronousSocketChannelImpl.java \
 	\
-	sun/nio/fs/GnomeFileTypeDetector.java \
 	sun/nio/fs/BsdFileStore.java \
 	sun/nio/fs/BsdFileSystem.java \
 	sun/nio/fs/BsdFileSystemProvider.java \
 	sun/nio/fs/BsdNativeDispatcher.java \
+	sun/nio/fs/MacOSXFileSystemProvider.java \
+	sun/nio/fs/MacOSXFileSystem.java \
+	sun/nio/fs/MacOSXNativeDispatcher.java \
 	sun/nio/fs/PollingWatchService.java \
 	sun/nio/fs/UnixChannelFactory.java \
 	sun/nio/fs/UnixCopyFile.java \
@@ -306,8 +311,8 @@
 	UnixAsynchronousServerSocketChannelImpl.c \
 	UnixAsynchronousSocketChannelImpl.c \
 	\
-	GnomeFileTypeDetector.c \
 	BsdNativeDispatcher.c \
+	MacOSXNativeDispatcher.c \
 	UnixCopyFile.c \
 	UnixNativeDispatcher.c \
 	\
@@ -322,7 +327,6 @@
 	sun/nio/ch/UnixAsynchronousServerSocketChannelImpl.java \
 	sun/nio/ch/UnixAsynchronousSocketChannelImpl.java \
 	\
-	sun/nio/fs/GnomeFileTypeDetector.java \
 	sun/nio/fs/BsdNativeDispatcher.java \
 	sun/nio/fs/UnixCopyFile.java \
 	sun/nio/fs/UnixNativeDispatcher.java
@@ -382,7 +386,7 @@
 OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH) -ljava -lnet -lpthread $(LIBDL)
 endif
 ifeq ($(PLATFORM), macosx)
-OTHER_LDLIBS += -L$(LIBDIR) -ljava -lnet -pthread
+OTHER_LDLIBS += -L$(LIBDIR) -ljava -lnet -pthread -framework CoreFoundation
 endif
 ifeq ($(PLATFORM), solaris)
 OTHER_LDLIBS += $(JVMLIB) $(LIBSOCKET) -lposix4 $(LIBDL) -lsendfile \
--- a/make/java/nio/mapfile-bsd	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/java/nio/mapfile-bsd	Tue Jun 25 17:20:25 2013 -0700
@@ -122,10 +122,6 @@
 		Java_sun_nio_fs_BsdNativeDispatcher_getfsstat;
 		Java_sun_nio_fs_BsdNativeDispatcher_fsstatEntry;
 		Java_sun_nio_fs_BsdNativeDispatcher_endfsstat;
-		Java_sun_nio_fs_GnomeFileTypeDetector_initializeGio;
-		Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGio;
-		Java_sun_nio_fs_GnomeFileTypeDetector_initializeGnomeVfs;
-		Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGnomeVfs;
 		Java_sun_nio_fs_UnixNativeDispatcher_init;
 		Java_sun_nio_fs_UnixNativeDispatcher_getcwd;
 		Java_sun_nio_fs_UnixNativeDispatcher_strerror;
@@ -171,7 +167,6 @@
 		Java_sun_nio_fs_UnixNativeDispatcher_getgrgid;
 		Java_sun_nio_fs_UnixNativeDispatcher_getpwnam0;
 		Java_sun_nio_fs_UnixNativeDispatcher_getgrnam0;
-		Java_sun_nio_fs_UnixNativeDispatcher_getextmntent;
 		Java_sun_nio_fs_UnixCopyFile_transfer;
 		handleSocketError;
 
--- a/make/java/nio/mapfile-linux	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/java/nio/mapfile-linux	Tue Jun 25 17:20:25 2013 -0700
@@ -39,7 +39,6 @@
                 Java_sun_nio_ch_EPollArrayWrapper_epollCreate;
                 Java_sun_nio_ch_EPollArrayWrapper_epollCtl;
                 Java_sun_nio_ch_EPollArrayWrapper_epollWait;
-		Java_sun_nio_ch_EPollArrayWrapper_fdLimit;
 		Java_sun_nio_ch_EPollArrayWrapper_init;
 		Java_sun_nio_ch_EPollArrayWrapper_interrupt;
 		Java_sun_nio_ch_EPollArrayWrapper_offsetofData;
@@ -87,6 +86,7 @@
                 Java_sun_nio_ch_IOUtil_configureBlocking;
                 Java_sun_nio_ch_IOUtil_drain;
                 Java_sun_nio_ch_IOUtil_fdVal;
+		Java_sun_nio_ch_IOUtil_fdLimit;
                 Java_sun_nio_ch_IOUtil_initIDs;
 		Java_sun_nio_ch_IOUtil_iovMax;
                 Java_sun_nio_ch_IOUtil_makePipe;
@@ -144,6 +144,7 @@
 		Java_sun_nio_fs_LinuxNativeDispatcher_fsetxattr0;
 		Java_sun_nio_fs_LinuxNativeDispatcher_fremovexattr0;
 		Java_sun_nio_fs_LinuxNativeDispatcher_setmntent0;
+                Java_sun_nio_fs_LinuxNativeDispatcher_getmntent;
 		Java_sun_nio_fs_LinuxNativeDispatcher_endmntent;
 		Java_sun_nio_fs_UnixNativeDispatcher_init;
 		Java_sun_nio_fs_UnixNativeDispatcher_getcwd;
@@ -190,7 +191,6 @@
 		Java_sun_nio_fs_UnixNativeDispatcher_getgrgid;
 		Java_sun_nio_fs_UnixNativeDispatcher_getpwnam0;
 		Java_sun_nio_fs_UnixNativeDispatcher_getgrnam0;
-		Java_sun_nio_fs_UnixNativeDispatcher_getextmntent;
 		Java_sun_nio_fs_UnixCopyFile_transfer;
 		handleSocketError;
 
--- a/make/java/nio/mapfile-solaris	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/java/nio/mapfile-solaris	Tue Jun 25 17:20:25 2013 -0700
@@ -36,7 +36,6 @@
                 Java_sun_nio_ch_DatagramDispatcher_readv0;
                 Java_sun_nio_ch_DatagramDispatcher_write0;
                 Java_sun_nio_ch_DatagramDispatcher_writev0;
-                Java_sun_nio_ch_DevPollArrayWrapper_fdLimit;
                 Java_sun_nio_ch_DevPollArrayWrapper_init;
                 Java_sun_nio_ch_DevPollArrayWrapper_interrupt;
                 Java_sun_nio_ch_DevPollArrayWrapper_poll0;
@@ -74,6 +73,7 @@
 		Java_sun_nio_ch_InheritedChannel_soType0;
                 Java_sun_nio_ch_IOUtil_configureBlocking;
                 Java_sun_nio_ch_IOUtil_drain;
+		Java_sun_nio_ch_IOUtil_fdLimit;
                 Java_sun_nio_ch_IOUtil_fdVal;
                 Java_sun_nio_ch_IOUtil_initIDs;
 		Java_sun_nio_ch_IOUtil_iovMax;
@@ -114,13 +114,13 @@
 		Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_accept0;
 		Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_initIDs;
 		Java_sun_nio_ch_UnixAsynchronousSocketChannelImpl_checkConnect;
-		Java_sun_nio_ch_SolarisEventPort_init;
-		Java_sun_nio_ch_SolarisEventPort_portCreate;
-		Java_sun_nio_ch_SolarisEventPort_portClose;
-		Java_sun_nio_ch_SolarisEventPort_portAssociate;
-		Java_sun_nio_ch_SolarisEventPort_portGet;
-		Java_sun_nio_ch_SolarisEventPort_portGetn;
-		Java_sun_nio_ch_SolarisEventPort_portSend;
+		Java_sun_nio_ch_SolarisEventPort_port_1create;
+		Java_sun_nio_ch_SolarisEventPort_port_1close;
+		Java_sun_nio_ch_SolarisEventPort_port_1associate;
+		Java_sun_nio_ch_SolarisEventPort_port_1dissociate;
+		Java_sun_nio_ch_SolarisEventPort_port_1get;
+		Java_sun_nio_ch_SolarisEventPort_port_1getn;
+		Java_sun_nio_ch_SolarisEventPort_port_1send;
 		Java_sun_nio_fs_GnomeFileTypeDetector_initializeGio;
 		Java_sun_nio_fs_GnomeFileTypeDetector_probeUsingGio;
 		Java_sun_nio_fs_GnomeFileTypeDetector_initializeGnomeVfs;
@@ -170,10 +170,10 @@
 		Java_sun_nio_fs_UnixNativeDispatcher_getgrgid;
 		Java_sun_nio_fs_UnixNativeDispatcher_getpwnam0;
 		Java_sun_nio_fs_UnixNativeDispatcher_getgrnam0;
-		Java_sun_nio_fs_UnixNativeDispatcher_getextmntent;
 		Java_sun_nio_fs_UnixCopyFile_transfer;
 		Java_sun_nio_fs_SolarisNativeDispatcher_init;
 		Java_sun_nio_fs_SolarisNativeDispatcher_facl;
+		Java_sun_nio_fs_SolarisNativeDispatcher_getextmntent;
 		Java_sun_nio_fs_SolarisWatchService_init;
 		Java_sun_nio_fs_SolarisWatchService_portCreate;
 		Java_sun_nio_fs_SolarisWatchService_portAssociate;
--- a/make/java/security/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/java/security/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -37,7 +37,8 @@
 # Directories
 #
 
-PROPS_SRC   = $(TOPDIR)/src/share/lib/security/java.security
+# The default security properties file is for linux
+PROPS_SRC   = $(TOPDIR)/src/share/lib/security/java.security-linux
 
 ifeq ($(PLATFORM), solaris)
 PROPS_SRC   = $(TOPDIR)/src/share/lib/security/java.security-solaris
--- a/make/java/zip/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/java/zip/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -56,6 +56,10 @@
   endif
 endif
 
+ifeq ($(SYSTEM_ZLIB),true)
+  OTHER_CFLAGS += $(ZLIB_CFLAGS)
+endif
+
 #
 # Library to compile.
 #
@@ -90,7 +94,7 @@
 # Link to JVM library for JVM_Zip* functions
 #
 ifeq ($(SYSTEM_ZLIB),true)
-OTHER_LDLIBS = -lz
+OTHER_LDLIBS = $(ZLIB_LIBS)
 else
 OTHER_LDLIBS = $(JVMLIB)
 endif
--- a/make/java/zip/mapfile-vers	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/java/zip/mapfile-vers	Tue Jun 25 17:20:25 2013 -0700
@@ -36,16 +36,12 @@
 		Java_java_util_zip_Deflater_deflateBytes;
 		Java_java_util_zip_Deflater_end;
 		Java_java_util_zip_Deflater_getAdler;
-		Java_java_util_zip_Deflater_getBytesRead;
-		Java_java_util_zip_Deflater_getBytesWritten;
 		Java_java_util_zip_Deflater_init;
 		Java_java_util_zip_Deflater_initIDs;
 		Java_java_util_zip_Deflater_reset;
 		Java_java_util_zip_Deflater_setDictionary;
 		Java_java_util_zip_Inflater_end;
 		Java_java_util_zip_Inflater_getAdler;
-		Java_java_util_zip_Inflater_getBytesRead;
-		Java_java_util_zip_Inflater_getBytesWritten;
 		Java_java_util_zip_Inflater_inflateBytes;
 		Java_java_util_zip_Inflater_init;
 		Java_java_util_zip_Inflater_initIDs;
--- a/make/javax/crypto/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/javax/crypto/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -156,7 +156,12 @@
 #
 
 ifdef OPENJDK
-all: build-jar install-jar build-policy install-limited
+ifdef UNLIMITED_CRYPTO
+POLICY = install-unlimited
+else
+POLICY = install-limited
+endif
+all: build-jar install-jar build-policy $(POLICY)
 else  # OPENJDK
 ifeq ($(strip $(FILES_java)),)
 all:
--- a/make/jdk_generic_profile.sh	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/jdk_generic_profile.sh	Tue Jun 25 17:20:25 2013 -0700
@@ -378,3 +378,22 @@
     export LLVM_LIBS
   fi
 fi
+
+# Export variables for system zlib
+# ZLIB_CFLAGS and ZLIB_LIBS tell the compiler how to compile and
+# link against zlib
+pkgconfig=$(which pkg-config 2>/dev/null)
+if [ -x "${pkgconfig}" ] ; then
+  if [ "${ZLIB_CFLAGS}" = "" ] ; then
+    ZLIB_CFLAGS=$("${pkgconfig}" --cflags zlib)
+  fi
+  if [ "${ZLIB_LIBS}" = "" ] ; then
+    ZLIB_LIBS=$("${pkgconfig}" --libs zlib)
+  fi
+fi
+if [ "${ZLIB_LIBS}" = "" ] ; then
+    ZLIB_LIBS="-lz"
+fi
+export ZLIB_CFLAGS
+export ZLIB_LIBS
+
--- a/make/jprt.properties	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/jprt.properties	Tue Jun 25 17:20:25 2013 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -77,20 +77,17 @@
     ${jprt.my.test.target.set:TESTNAME=jdk_util},		\
     ${jprt.my.test.target.set:TESTNAME=jdk_io},			\
     ${jprt.my.test.target.set:TESTNAME=jdk_net},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_nio1},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_nio2},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_nio3},		\
+    ${jprt.my.test.target.set:TESTNAME=jdk_nio},		\
     ${jprt.my.test.target.set:TESTNAME=jdk_security1},		\
     ${jprt.my.test.target.set:TESTNAME=jdk_security2},		\
     ${jprt.my.test.target.set:TESTNAME=jdk_security3},		\
     ${jprt.my.test.target.set:TESTNAME=jdk_rmi},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_management1},	\
-    ${jprt.my.test.target.set:TESTNAME=jdk_management2},	\
+    ${jprt.my.test.target.set:TESTNAME=jdk_management},		\
+    ${jprt.my.test.target.set:TESTNAME=jdk_jmx},		\
     ${jprt.my.test.target.set:TESTNAME=jdk_text},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_tools1},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_tools2},		\
+    ${jprt.my.test.target.set:TESTNAME=jdk_tools},		\
     ${jprt.my.test.target.set:TESTNAME=jdk_jfr},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_misc}
+    ${jprt.my.test.target.set:TESTNAME=jdk_other}
 
 # All vm test targets (testset=all)
 jprt.vm.all.test.targets=                                       \
@@ -105,6 +102,7 @@
     ${jprt.my.test.target.set:TESTNAME=jdk_beans1},		\
     ${jprt.my.test.target.set:TESTNAME=jdk_beans2},             \
     ${jprt.my.test.target.set:TESTNAME=jdk_beans3},             \
+    ${jprt.my.test.target.set:TESTNAME=jdk_jdi},                \
     ${jprt.my.test.target.set:TESTNAME=jdk_sound},              \
     ${jprt.my.test.target.set:TESTNAME=jdk_swing}
 
--- a/make/netbeans/jconsole/build.xml	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/netbeans/jconsole/build.xml	Tue Jun 25 17:20:25 2013 -0700
@@ -50,6 +50,7 @@
             <fileset dir="${classes.dir}">
                 <include name="sun/tools/jconsole/**/*.class"/>
                 <include name="com/sun/tools/jconsole/**/*.class"/>
+                <include name="sun/tools/jconsole/resources/*.properties"/>
                 <include name="sun/tools/jconsole/resources/*.gif"/>
                 <include name="sun/tools/jconsole/resources/*.png"/>
             </fileset>
--- a/make/sun/javazic/tzdata/VERSION	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/javazic/tzdata/VERSION	Tue Jun 25 17:20:25 2013 -0700
@@ -21,4 +21,4 @@
 # or visit www.oracle.com if you need additional information or have any
 # questions.
 #
-tzdata2013b
+tzdata2013c
--- a/make/sun/javazic/tzdata/antarctica	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/javazic/tzdata/antarctica	Tue Jun 25 17:20:25 2013 -0700
@@ -76,34 +76,6 @@
 Rule	ChileAQ	2012	max	-	Apr	Sun>=23	3:00u	0	-
 Rule	ChileAQ	2012	max	-	Sep	Sun>=2	4:00u	1:00	S
 
-# These rules are stolen from the `australasia' file.
-Rule	AusAQ	1917	only	-	Jan	 1	0:01	1:00	-
-Rule	AusAQ	1917	only	-	Mar	25	2:00	0	-
-Rule	AusAQ	1942	only	-	Jan	 1	2:00	1:00	-
-Rule	AusAQ	1942	only	-	Mar	29	2:00	0	-
-Rule	AusAQ	1942	only	-	Sep	27	2:00	1:00	-
-Rule	AusAQ	1943	1944	-	Mar	lastSun	2:00	0	-
-Rule	AusAQ	1943	only	-	Oct	 3	2:00	1:00	-
-Rule	ATAQ	1967	only	-	Oct	Sun>=1	2:00s	1:00	-
-Rule	ATAQ	1968	only	-	Mar	lastSun	2:00s	0	-
-Rule	ATAQ	1968	1985	-	Oct	lastSun	2:00s	1:00	-
-Rule	ATAQ	1969	1971	-	Mar	Sun>=8	2:00s	0	-
-Rule	ATAQ	1972	only	-	Feb	lastSun	2:00s	0	-
-Rule	ATAQ	1973	1981	-	Mar	Sun>=1	2:00s	0	-
-Rule	ATAQ	1982	1983	-	Mar	lastSun	2:00s	0	-
-Rule	ATAQ	1984	1986	-	Mar	Sun>=1	2:00s	0	-
-Rule	ATAQ	1986	only	-	Oct	Sun>=15	2:00s	1:00	-
-Rule	ATAQ	1987	1990	-	Mar	Sun>=15	2:00s	0	-
-Rule	ATAQ	1987	only	-	Oct	Sun>=22	2:00s	1:00	-
-Rule	ATAQ	1988	1990	-	Oct	lastSun	2:00s	1:00	-
-Rule	ATAQ	1991	1999	-	Oct	Sun>=1	2:00s	1:00	-
-Rule	ATAQ	1991	2005	-	Mar	lastSun	2:00s	0	-
-Rule	ATAQ	2000	only	-	Aug	lastSun	2:00s	1:00	-
-Rule	ATAQ	2001	max	-	Oct	Sun>=1	2:00s	1:00	-
-Rule	ATAQ	2006	only	-	Apr	Sun>=1	2:00s	0	-
-Rule	ATAQ	2007	only	-	Mar	lastSun	2:00s	0	-
-Rule	ATAQ	2008	max	-	Apr	Sun>=1	2:00s	0	-
-
 # Argentina - year-round bases
 # Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
 # Esperanza, San Martin Land, -6323-05659, since 1952-12-17
@@ -145,10 +117,7 @@
 # </a>
 
 # From Steffen Thorsen (2010-03-10):
-# We got these changes from the Australian Antarctic Division:
-# - Macquarie Island will stay on UTC+11 for winter and therefore not
-# switch back from daylight savings time when other parts of Australia do
-# on 4 April.
+# We got these changes from the Australian Antarctic Division: ...
 #
 # - Casey station reverted to its normal time of UTC+8 on 5 March 2010.
 # The change to UTC+11 is being considered as a regular summer thing but
@@ -159,9 +128,6 @@
 #
 # - Mawson station stays on UTC+5.
 #
-# In addition to the Rule changes for Casey/Davis, it means that Macquarie
-# will no longer be like Hobart and will have to have its own Zone created.
-#
 # Background:
 # <a href="http://www.timeanddate.com/news/time/antartica-time-changes-2010.html">
 # http://www.timeanddate.com/news/time/antartica-time-changes-2010.html
@@ -188,12 +154,6 @@
 			6:00	-	MAWT	2009 Oct 18 2:00
 						# Mawson Time
 			5:00	-	MAWT
-Zone Antarctica/Macquarie 0	-	zzz	1911
-			10:00	-	EST	1916 Oct 1 2:00
-			10:00	1:00	EST	1917 Feb
-			10:00	AusAQ	EST	1967
-			10:00	ATAQ	EST	2010 Apr 4 3:00
-			11:00	-	MIST	# Macquarie Island Time
 # References:
 # <a href="http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html">
 # Casey Weather (1998-02-26)
--- a/make/sun/javazic/tzdata/asia	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/javazic/tzdata/asia	Tue Jun 25 17:20:25 2013 -0700
@@ -2314,11 +2314,20 @@
 # http://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html
 # </a>
 
-# From Arthur David Olson (2012-03-27):
-# The timeanddate article for 2012 says that "the end date has not yet been
-# announced" and that "Last year, both...paused daylight saving time during...
-# Ramadan. It is not yet known [for] 2012."
-# For now, assume both switch back on the last Friday in September. XXX
+# From Steffen Thorsen (2013-03-26):
+# The following news sources tells that Palestine will "start daylight saving
+# time from midnight on Friday, March 29, 2013" (translated).
+# [These are in Arabic and are for Gaza and for Ramallah, respectively.]
+# http://www.samanews.com/index.php?act=Show&id=154120
+# http://safa.ps/details/news/99844/%D8%B1%D8%A7%D9%85-%D8%A7%D9%84%D9%84%D9%87-%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-29-%D8%A7%D9%84%D8%AC%D8%A7%D8%B1%D9%8A.html
+
+# From Paul Eggert (2013-04-15):
+# For future dates, guess the last Thursday in March at 24:00 through
+# the first Friday on or after September 21 at 01:00.  This is consistent with
+# the predictions in today's editions of the following URLs,
+# which are for Gaza and Hebron respectively:
+# http://www.timeanddate.com/worldclock/timezone.html?n=702
+# http://www.timeanddate.com/worldclock/timezone.html?n=2364
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
@@ -2332,19 +2341,20 @@
 Rule Palestine	1999	2003	-	Oct	Fri>=15	0:00	0	-
 Rule Palestine	2004	only	-	Oct	 1	1:00	0	-
 Rule Palestine	2005	only	-	Oct	 4	2:00	0	-
-Rule Palestine	2006	2008	-	Apr	 1	0:00	1:00	S
+Rule Palestine	2006	2007	-	Apr	 1	0:00	1:00	S
 Rule Palestine	2006	only	-	Sep	22	0:00	0	-
 Rule Palestine	2007	only	-	Sep	Thu>=8	2:00	0	-
-Rule Palestine	2008	only	-	Aug	lastFri	0:00	0	-
-Rule Palestine	2009	only	-	Mar	lastFri	0:00	1:00	S
-Rule Palestine	2009	only	-	Sep	Fri>=1	2:00	0	-
-Rule Palestine	2010	only	-	Mar	lastSat	0:01	1:00	S
+Rule Palestine	2008	2009	-	Mar	lastFri	0:00	1:00	S
+Rule Palestine	2008	only	-	Sep	 1	0:00	0	-
+Rule Palestine	2009	only	-	Sep	Fri>=1	1:00	0	-
+Rule Palestine	2010	only	-	Mar	26	0:00	1:00	S
 Rule Palestine	2010	only	-	Aug	11	0:00	0	-
-
-# From Arthur David Olson (2011-09-20):
-# 2011 transitions per http://www.timeanddate.com as of 2011-09-20.
-# From Paul Eggert (2012-10-12):
-# 2012 transitions per http://www.timeanddate.com as of 2012-10-12.
+Rule Palestine	2011	only	-	Apr	 1	0:01	1:00	S
+Rule Palestine	2011	only	-	Aug	 1	0:00	0	-
+Rule Palestine	2011	only	-	Aug	30	0:00	1:00	S
+Rule Palestine	2011	only	-	Sep	30	0:00	0	-
+Rule Palestine	2012	max	-	Mar	lastThu	24:00	1:00	S
+Rule Palestine	2012	max	-	Sep	Fri>=21	1:00	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
@@ -2352,26 +2362,20 @@
 			2:00 EgyptAsia	EE%sT	1967 Jun  5
 			2:00	Zion	I%sT	1996
 			2:00	Jordan	EE%sT	1999
-			2:00 Palestine	EE%sT	2011 Apr  2 12:01
-			2:00	1:00	EEST	2011 Aug  1
-			2:00	-	EET	2012 Mar 30
-			2:00	1:00	EEST	2012 Sep 21 1:00
-			2:00	-	EET
+			2:00 Palestine	EE%sT	2008 Aug 29 0:00
+			2:00	-	EET	2008 Sep
+			2:00 Palestine	EE%sT	2010
+			2:00	-	EET	2010 Mar 27 0:01
+			2:00 Palestine	EE%sT	2011 Aug  1
+			2:00	-	EET	2012
+			2:00 Palestine	EE%sT
 
 Zone	Asia/Hebron	2:20:23	-	LMT	1900 Oct
 			2:00	Zion	EET	1948 May 15
 			2:00 EgyptAsia	EE%sT	1967 Jun  5
 			2:00	Zion	I%sT	1996
 			2:00	Jordan	EE%sT	1999
-			2:00 Palestine	EE%sT	2008 Aug
-			2:00 	1:00	EEST	2008 Sep
-			2:00 Palestine	EE%sT	2011 Apr  1 12:01
-			2:00	1:00	EEST	2011 Aug  1
-			2:00	-	EET	2011 Aug 30
-			2:00	1:00	EEST	2011 Sep 30 3:00
-			2:00	-	EET	2012 Mar 30
-			2:00	1:00	EEST	2012 Sep 21 1:00
-			2:00	-	EET
+			2:00 Palestine	EE%sT
 
 # Paracel Is
 # no information
--- a/make/sun/javazic/tzdata/australasia	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/javazic/tzdata/australasia	Tue Jun 25 17:20:25 2013 -0700
@@ -241,9 +241,26 @@
 # no times are set
 #
 # Macquarie
-# permanent occupation (scientific station) since 1948;
-# sealing and penguin oil station operated 1888/1917
-# like Australia/Hobart
+# Permanent occupation (scientific station) 1911-1915 and since 25 March 1948;
+# sealing and penguin oil station operated Nov 1899 to Apr 1919.  See the
+# Tasmania Parks & Wildlife Service history of sealing at Macquarie Island
+# <http://www.parks.tas.gov.au/index.aspx?base=1828>
+# <http://www.parks.tas.gov.au/index.aspx?base=1831>.
+# Guess that it was like Australia/Hobart while inhabited before 2010.
+#
+# From Steffen Thorsen (2010-03-10):
+# We got these changes from the Australian Antarctic Division:
+# - Macquarie Island will stay on UTC+11 for winter and therefore not
+# switch back from daylight savings time when other parts of Australia do
+# on 4 April.
+Zone Antarctica/Macquarie 0	-	zzz	1899 Nov
+			10:00	-	EST	1916 Oct 1 2:00
+			10:00	1:00	EST	1917 Feb
+			10:00	Aus	EST	1919 Apr
+			0	-	zzz	1948 Mar 25
+			10:00	Aus	EST	1967
+			10:00	AT	EST	2010 Apr 4 3:00
+			11:00	-	MIST	# Macquarie I Standard Time
 
 # Christmas
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
--- a/make/sun/javazic/tzdata/southamerica	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/javazic/tzdata/southamerica	Tue Jun 25 17:20:25 2013 -0700
@@ -1589,16 +1589,16 @@
 # forward 60 minutes, in all the territory of the Paraguayan Republic.
 # ...
 Rule	Para	2010	max	-	Oct	Sun>=1	0:00	1:00	S
-Rule	Para	2010	max	-	Apr	Sun>=8	0:00	0	-
+Rule	Para	2010	2012	-	Apr	Sun>=8	0:00	0	-
 #
 # From Steffen Thorsen (2013-03-07):
 # Paraguay will end DST on 2013-03-24 00:00....
-# They do not tell if this will be a permanent change or just this year....
 # http://www.ande.gov.py/interna.php?id=1075
 #
-# From Paul Eggert (2013-03-07):
-# For now, assume it's just this year.
-Rule	Para	2013	only	-	Mar	24	0:00	0	-
+# From Carlos Raul Perasso (2013-03-15):
+# The change in Paraguay is now final.  Decree number 10780
+# http://www.presidencia.gov.py/uploads/pdf/presidencia-3b86ff4b691c79d4f5927ca964922ec74772ce857c02ca054a52a37b49afc7fb.pdf
+Rule	Para	2013	max	-	Mar	Sun>=22	0:00	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone America/Asuncion	-3:50:40 -	LMT	1890
--- a/make/sun/javazic/tzdata/zone.tab	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/javazic/tzdata/zone.tab	Tue Jun 25 17:20:25 2013 -0700
@@ -65,7 +65,6 @@
 AQ	-7824+10654	Antarctica/Vostok	Vostok Station, Lake Vostok
 AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie
 AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
-AQ	-5430+15857	Antarctica/Macquarie	Macquarie Island Station, Macquarie Island
 AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
 AR	-3124-06411	America/Argentina/Cordoba	most locations (CB, CC, CN, ER, FM, MN, SE, SF)
 AR	-2447-06525	America/Argentina/Salta	(SA, LP, NQ, RN)
@@ -81,6 +80,7 @@
 AS	-1416-17042	Pacific/Pago_Pago
 AT	+4813+01620	Europe/Vienna
 AU	-3133+15905	Australia/Lord_Howe	Lord Howe Island
+AU	-5430+15857	Antarctica/Macquarie	Macquarie Island
 AU	-4253+14719	Australia/Hobart	Tasmania - most locations
 AU	-3956+14352	Australia/Currie	Tasmania - King Island
 AU	-3749+14458	Australia/Melbourne	Victoria
--- a/make/sun/jawt/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/jawt/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -30,6 +30,9 @@
 
 include $(BUILDDIR)/common/Defs.gmk
 
+# default to PLATFORM_SRC to copy export headers from
+PLATFORM_EXPORT_BASE = $(PLATFORM_SRC)
+
 #
 # Files
 #
@@ -37,6 +40,8 @@
 FILES_cpp = jawt.cpp
 else ifeq ($(PLATFORM), macosx) # PLATFORM
 FILES_objc = jawt.m
+# pick up the correct export headers for Mac OS X
+PLATFORM_EXPORT_BASE = $(PLATFORM_SRC_MACOS)
 else # PLATFORM
 FILES_c = jawt.c
 endif # PLATFORM
@@ -160,7 +165,7 @@
 #
 $(INCLUDEDIR)/%.h: $(SHARE_SRC)/javavm/export/%.h
 	$(install-file)
-$(PLATFORM_INCLUDE)/%.h: $(PLATFORM_SRC)/javavm/export/%.h
+$(PLATFORM_INCLUDE)/%.h: $(PLATFORM_EXPORT_BASE)/javavm/export/%.h
 	$(install-file)
 
 
--- a/make/sun/jconsole/FILES.gmk	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/jconsole/FILES.gmk	Tue Jun 25 17:20:25 2013 -0700
@@ -30,17 +30,22 @@
 MANIFEST = sun/tools/jconsole/manifest
 
 PNG_FILES = \
-	sun/tools/jconsole/resources/brandlogo.png \
-	sun/tools/jconsole/resources/collapse-winlf.png \
-	sun/tools/jconsole/resources/connected16.png \
-	sun/tools/jconsole/resources/connected24.png \
-	sun/tools/jconsole/resources/disconnected16.png \
-	sun/tools/jconsole/resources/disconnected24.png \
-	sun/tools/jconsole/resources/expand-winlf.png \
-	sun/tools/jconsole/resources/masthead-left.png \
-	sun/tools/jconsole/resources/masthead-right.png
+  sun/tools/jconsole/resources/brandlogo.png \
+  sun/tools/jconsole/resources/collapse-winlf.png \
+  sun/tools/jconsole/resources/connected16.png \
+  sun/tools/jconsole/resources/connected24.png \
+  sun/tools/jconsole/resources/disconnected16.png \
+  sun/tools/jconsole/resources/disconnected24.png \
+  sun/tools/jconsole/resources/expand-winlf.png \
+  sun/tools/jconsole/resources/masthead-left.png \
+  sun/tools/jconsole/resources/masthead-right.png
 
 GIF_FILES = \
-	sun/tools/jconsole/resources/mbean.gif \
-	sun/tools/jconsole/resources/mbeanserverdelegate.gif \
-	sun/tools/jconsole/resources/xobject.gif
+  sun/tools/jconsole/resources/mbean.gif \
+  sun/tools/jconsole/resources/mbeanserverdelegate.gif \
+  sun/tools/jconsole/resources/xobject.gif
+
+PROP_FILES = \
+  sun/tools/jconsole/resources/messages.properties \
+  sun/tools/jconsole/resources/messages_ja.properties \
+  sun/tools/jconsole/resources/messages_zh_CN.properties
--- a/make/sun/jconsole/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/jconsole/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -53,21 +53,21 @@
 
 FILES_png = $(PNG_FILES:%.png=$(CLASSBINDIR)/%.png)
 FILES_gif = $(GIF_FILES:%.gif=$(CLASSBINDIR)/%.gif)
-
+FILES_prop = $(PROP_FILES:%.properties=$(CLASSBINDIR)/%.properties)
 build: $(GENSRCDIR)/sun/tools/jconsole/Version.java
 
 #
 # Resources
 #
 LOCALE_SET_DEFINITION = jdk
-RESOURCE_BUNDLES_JAVA = $(PKGDIR)/resources/JConsoleResources.java
+RESOURCE_BUNDLES_UNCOMPILED_PROPERTIES = $(PKGDIR)/resources/messages.properties
 
 #
 # Rules.
 #
 include $(BUILDDIR)/common/Classes.gmk
 
-build: $(FILES_png) $(FILES_gif) $(TEMPDIR)/manifest $(JARFILE)
+build: $(FILES_png) $(FILES_gif) $(FILES_prop) $(TEMPDIR)/manifest $(JARFILE)
 
 $(GENSRCDIR)/sun/tools/jconsole/Version.java: \
                 $(SHARE_SRC)/classes/sun/tools/jconsole/Version.java.template
@@ -85,7 +85,7 @@
 # Extra rule to build jconsole.jar
 #
 
-$(JARFILE): $(LIBDIR) $(FILES_class) $(FILES_png) $(FILES_gif) $(TEMPDIR)/manifest
+$(JARFILE): $(LIBDIR) $(FILES_class) $(FILES_png) $(FILES_gif) $(FILES_prop) $(TEMPDIR)/manifest
 	$(BOOT_JAR_CMD) -cfm $(JARFILE) $(TEMPDIR)/manifest \
                -C $(CLASSBINDIR) sun/tools/jconsole \
                -C $(CLASSBINDIR) com/sun/tools/jconsole \
--- a/make/sun/rmi/cgi/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/rmi/cgi/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -28,6 +28,8 @@
 #
 
 BUILDDIR = ../../..
+JAVAC_MAX_WARNINGS = true
+JAVAC_WARNINGS_FATAL = true
 # java-rmi.cgi is a JDK tool
 PACKAGE = sun.rmi
 PRODUCT = sun
--- a/make/sun/rmi/registry/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/rmi/registry/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -28,6 +28,9 @@
 #
 
 BUILDDIR = ../../..
+JAVAC_MAX_WARNINGS = true
+JAVAC_WARNINGS_FATAL = true
+JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation
 PACKAGE = sun.rmi.registry
 PRODUCT = sun
 include $(BUILDDIR)/common/Defs.gmk
--- a/make/sun/rmi/rmi/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/rmi/rmi/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -28,18 +28,14 @@
 #
 
 BUILDDIR = ../../..
+JAVAC_MAX_WARNINGS = true
+JAVAC_WARNINGS_FATAL = true
+JAVAC_LINT_OPTIONS = -Xlint:all,-deprecation
 PACKAGE = sun.rmi
 PRODUCT = sun
-LIBRARY = rmi
 include $(BUILDDIR)/common/Defs.gmk
 
 #
-# Add use of a mapfile
-#
-FILES_m = mapfile-vers
-include $(BUILDDIR)/common/Mapfile-vers.gmk
-
-#
 # Java files to compile.
 #
 AUTO_FILES_JAVA_DIRS = \
@@ -52,31 +48,9 @@
 	com/sun/rmi
 
 #
-# Native files to compile.
-#
-FILES_c = \
-	sun/rmi/server/MarshalInputStream.c
-
-#
-# Add ambient vpath to pick up files not part of sun.rmi package
-#
-vpath %.c $(SHARE_SRC)/native/sun/rmi/server
-
-#
-# Exported files that require generated .h 
-#
-FILES_export = \
-    sun/rmi/server/MarshalInputStream.java
-
-#
-# Link to JVM for JVM_LatestUserDefinedLoader
-#
-OTHER_LDLIBS = $(JVMLIB)
-
-#
 # Rules
 #
-include $(BUILDDIR)/common/Library.gmk
+include $(BUILDDIR)/common/Rules.gmk
 
 #
 # Full package names of implementations requiring stubs
--- a/make/sun/rmi/rmi/mapfile-vers	Mon Jun 24 10:32:19 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
-# 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.
-#
-
-# Define library interface.
-
-SUNWprivate_1.1 {
-	global:
-	    Java_sun_rmi_server_MarshalInputStream_latestUserDefinedLoader;
-	local:
-	    *;
-};
--- a/make/sun/rmi/rmid/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/rmi/rmid/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -29,6 +29,8 @@
 #
 
 BUILDDIR = ../../..
+JAVAC_MAX_WARNINGS = true
+JAVAC_WARNINGS_FATAL = true
 PACKAGE = sun.rmi.activation
 PRODUCT = sun
 include $(BUILDDIR)/common/Defs.gmk
--- a/make/sun/splashscreen/Makefile	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/sun/splashscreen/Makefile	Tue Jun 25 17:20:25 2013 -0700
@@ -126,7 +126,8 @@
 ifneq ($(SYSTEM_ZLIB),true)
   CPPFLAGS += -I$(SHARE_SRC)/native/java/util/zip/zlib-$(ZLIB_VERSION)
 else
-  OTHER_LDLIBS += -lz
+  OTHER_CFLAGS += $(ZLIB_CFLAGS)
+  OTHER_LDLIBS += $(ZLIB_LIBS)
 endif
 
 # Shun the less than portable MMX assembly code in pnggccrd.c,
--- a/make/tools/CharsetMapping/GBK.map	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/tools/CharsetMapping/GBK.map	Tue Jun 25 17:20:25 2013 -0700
@@ -3,6 +3,10 @@
 # (1)sorted
 # (2)added the singlebyte entries
 #
+# (3)updated 0xA140-0xA7A0 mappings to follow GB18030/MS936
+# (4)added euro sign entry A2E3 20AC (instead of 0xA2E3  0xE76C)
+#    this is what gb18030 does.
+#
 0x00	0x0000
 0x01	0x0001
 0x02	0x0002
@@ -6508,12 +6512,12 @@
 0xA2A8	0x2177
 0xA2A9	0x2178
 0xA2AA	0x2179
-0xA2AB	0xE586
-0xA2AC	0xE587
-0xA2AD	0xE588
-0xA2AE	0xE589
-0xA2AF	0xE58A
-0xA2B0	0xE58B
+0xA2AB	0xE766
+0xA2AC	0xE767
+0xA2AD	0xE768
+0xA2AE	0xE769
+0xA2AF	0xE76A
+0xA2B0	0xE76B
 0xA2B1	0x2488
 0xA2B2	0x2489
 0xA2B3	0x248A
@@ -6564,8 +6568,8 @@
 0xA2E0	0x2467
 0xA2E1	0x2468
 0xA2E2	0x2469
-0xA2E3	0xE58C
-0xA2E4	0xE58D
+0xA2E3	0x20AC
+0xA2E4	0xE76D
 0xA2E5	0x3220
 0xA2E6	0x3221
 0xA2E7	0x3222
@@ -6576,8 +6580,8 @@
 0xA2EC	0x3227
 0xA2ED	0x3228
 0xA2EE	0x3229
-0xA2EF	0xE58E
-0xA2F0	0xE58F
+0xA2EF	0xE76E
+0xA2F0	0xE76F
 0xA2F1	0x2160
 0xA2F2	0x2161
 0xA2F3	0x2162
@@ -6590,104 +6594,104 @@
 0xA2FA	0x2169
 0xA2FB	0x216A
 0xA2FC	0x216B
-0xA2FD	0xE590
-0xA2FE	0xE591
-0xA340	0xE592
-0xA341	0xE593
-0xA342	0xE594
-0xA343	0xE595
-0xA344	0xE596
-0xA345	0xE597
-0xA346	0xE598
-0xA347	0xE599
-0xA348	0xE59A
-0xA349	0xE59B
-0xA34A	0xE59C
-0xA34B	0xE59D
-0xA34C	0xE59E
-0xA34D	0xE59F
-0xA34E	0xE5A0
-0xA34F	0xE5A1
-0xA350	0xE5A2
-0xA351	0xE5A3
-0xA352	0xE5A4
-0xA353	0xE5A5
-0xA354	0xE5A6
-0xA355	0xE5A7
-0xA356	0xE5A8
-0xA357	0xE5A9
-0xA358	0xE5AA
-0xA359	0xE5AB
-0xA35A	0xE5AC
-0xA35B	0xE5AD
-0xA35C	0xE5AE
-0xA35D	0xE5AF
-0xA35E	0xE5B0
-0xA35F	0xE5B1
-0xA360	0xE5B2
-0xA361	0xE5B3
-0xA362	0xE5B4
-0xA363	0xE5B5
-0xA364	0xE5B6
-0xA365	0xE5B7
-0xA366	0xE5B8
-0xA367	0xE5B9
-0xA368	0xE5BA
-0xA369	0xE5BB
-0xA36A	0xE5BC
-0xA36B	0xE5BD
-0xA36C	0xE5BE
-0xA36D	0xE5BF
-0xA36E	0xE5C0
-0xA36F	0xE5C1
-0xA370	0xE5C2
-0xA371	0xE5C3
-0xA372	0xE5C4
-0xA373	0xE5C5
-0xA374	0xE5C6
-0xA375	0xE5C7
-0xA376	0xE5C8
-0xA377	0xE5C9
-0xA378	0xE5CA
-0xA379	0xE5CB
-0xA37A	0xE5CC
-0xA37B	0xE5CD
-0xA37C	0xE5CE
-0xA37D	0xE5CF
-0xA37E	0xE5D0
-0xA380	0xE5D1
-0xA381	0xE5D2
-0xA382	0xE5D3
-0xA383	0xE5D4
-0xA384	0xE5D5
-0xA385	0xE5D6
-0xA386	0xE5D7
-0xA387	0xE5D8
-0xA388	0xE5D9
-0xA389	0xE5DA
-0xA38A	0xE5DB
-0xA38B	0xE5DC
-0xA38C	0xE5DD
-0xA38D	0xE5DE
-0xA38E	0xE5DF
-0xA38F	0xE5E0
-0xA390	0xE5E1
-0xA391	0xE5E2
-0xA392	0xE5E3
-0xA393	0xE5E4
-0xA394	0xE5E5
-0xA395	0xE5E6
-0xA396	0xE5E7
-0xA397	0xE5E8
-0xA398	0xE5E9
-0xA399	0xE5EA
-0xA39A	0xE5EB
-0xA39B	0xE5EC
-0xA39C	0xE5ED
-0xA39D	0xE5EE
-0xA39E	0xE5EF
-0xA39F	0xE5F0
-0xA3A0	0xE5F1
+0xA2FD	0xE770
+0xA2FE	0xE771
+0xA340	0xE586
+0xA341	0xE587
+0xA342	0xE588
+0xA343	0xE589
+0xA344	0xE58A
+0xA345	0xE58B
+0xA346	0xE58C
+0xA347	0xE58D
+0xA348	0xE58E
+0xA349	0xE58F
+0xA34A	0xE590
+0xA34B	0xE591
+0xA34C	0xE592
+0xA34D	0xE593
+0xA34E	0xE594
+0xA34F	0xE595
+0xA350	0xE596
+0xA351	0xE597
+0xA352	0xE598
+0xA353	0xE599
+0xA354	0xE59A
+0xA355	0xE59B
+0xA356	0xE59C
+0xA357	0xE59D
+0xA358	0xE59E
+0xA359	0xE59F
+0xA35A	0xE5A0
+0xA35B	0xE5A1
+0xA35C	0xE5A2
+0xA35D	0xE5A3
+0xA35E	0xE5A4
+0xA35F	0xE5A5
+0xA360	0xE5A6
+0xA361	0xE5A7
+0xA362	0xE5A8
+0xA363	0xE5A9
+0xA364	0xE5AA
+0xA365	0xE5AB
+0xA366	0xE5AC
+0xA367	0xE5AD
+0xA368	0xE5AE
+0xA369	0xE5AF
+0xA36A	0xE5B0
+0xA36B	0xE5B1
+0xA36C	0xE5B2
+0xA36D	0xE5B3
+0xA36E	0xE5B4
+0xA36F	0xE5B5
+0xA370	0xE5B6
+0xA371	0xE5B7
+0xA372	0xE5B8
+0xA373	0xE5B9
+0xA374	0xE5BA
+0xA375	0xE5BB
+0xA376	0xE5BC
+0xA377	0xE5BD
+0xA378	0xE5BE
+0xA379	0xE5BF
+0xA37A	0xE5C0
+0xA37B	0xE5C1
+0xA37C	0xE5C2
+0xA37D	0xE5C3
+0xA37E	0xE5C4
+0xA380	0xE5C5
+0xA381	0xE5C6
+0xA382	0xE5C7
+0xA383	0xE5C8
+0xA384	0xE5C9
+0xA385	0xE5CA
+0xA386	0xE5CB
+0xA387	0xE5CC
+0xA388	0xE5CD
+0xA389	0xE5CE
+0xA38A	0xE5CF
+0xA38B	0xE5D0
+0xA38C	0xE5D1
+0xA38D	0xE5D2
+0xA38E	0xE5D3
+0xA38F	0xE5D4
+0xA390	0xE5D5
+0xA391	0xE5D6
+0xA392	0xE5D7
+0xA393	0xE5D8
+0xA394	0xE5D9
+0xA395	0xE5DA
+0xA396	0xE5DB
+0xA397	0xE5DC
+0xA398	0xE5DD
+0xA399	0xE5DE
+0xA39A	0xE5DF
+0xA39B	0xE5E0
+0xA39C	0xE5E1
+0xA39D	0xE5E2
+0xA39E	0xE5E3
+0xA39F	0xE5E4
+0xA3A0	0xE5E5
 0xA3A1	0xFF01
 0xA3A2	0xFF02
 0xA3A3	0xFF03
@@ -6782,102 +6786,102 @@
 0xA3FC	0xFF5C
 0xA3FD	0xFF5D
 0xA3FE	0xFFE3
-0xA440	0xE5F2
-0xA441	0xE5F3
-0xA442	0xE5F4
-0xA443	0xE5F5
-0xA444	0xE5F6
-0xA445	0xE5F7
-0xA446	0xE5F8
-0xA447	0xE5F9
-0xA448	0xE5FA
-0xA449	0xE5FB
-0xA44A	0xE5FC
-0xA44B	0xE5FD
-0xA44C	0xE5FE
-0xA44D	0xE5FF
-0xA44E	0xE600
-0xA44F	0xE601
-0xA450	0xE602
-0xA451	0xE603
-0xA452	0xE604
-0xA453	0xE605
-0xA454	0xE606
-0xA455	0xE607
-0xA456	0xE608
-0xA457	0xE609
-0xA458	0xE60A
-0xA459	0xE60B
-0xA45A	0xE60C
-0xA45B	0xE60D
-0xA45C	0xE60E
-0xA45D	0xE60F
-0xA45E	0xE610
-0xA45F	0xE611
-0xA460	0xE612
-0xA461	0xE613
-0xA462	0xE614
-0xA463	0xE615
-0xA464	0xE616
-0xA465	0xE617
-0xA466	0xE618
-0xA467	0xE619
-0xA468	0xE61A
-0xA469	0xE61B
-0xA46A	0xE61C
-0xA46B	0xE61D
-0xA46C	0xE61E
-0xA46D	0xE61F
-0xA46E	0xE620
-0xA46F	0xE621
-0xA470	0xE622
-0xA471	0xE623
-0xA472	0xE624
-0xA473	0xE625
-0xA474	0xE626
-0xA475	0xE627
-0xA476	0xE628
-0xA477	0xE629
-0xA478	0xE62A
-0xA479	0xE62B
-0xA47A	0xE62C
-0xA47B	0xE62D
-0xA47C	0xE62E
-0xA47D	0xE62F
-0xA47E	0xE630
-0xA480	0xE631
-0xA481	0xE632
-0xA482	0xE633
-0xA483	0xE634
-0xA484	0xE635
-0xA485	0xE636
-0xA486	0xE637
-0xA487	0xE638
-0xA488	0xE639
-0xA489	0xE63A
-0xA48A	0xE63B
-0xA48B	0xE63C
-0xA48C	0xE63D
-0xA48D	0xE63E
-0xA48E	0xE63F
-0xA48F	0xE640
-0xA490	0xE641
-0xA491	0xE642
-0xA492	0xE643
-0xA493	0xE644
-0xA494	0xE645
-0xA495	0xE646
-0xA496	0xE647
-0xA497	0xE648
-0xA498	0xE649
-0xA499	0xE64A
-0xA49A	0xE64B
-0xA49B	0xE64C
-0xA49C	0xE64D
-0xA49D	0xE64E
-0xA49E	0xE64F
-0xA49F	0xE650
-0xA4A0	0xE651
+0xA440	0xE5E6
+0xA441	0xE5E7
+0xA442	0xE5E8
+0xA443	0xE5E9
+0xA444	0xE5EA
+0xA445	0xE5EB
+0xA446	0xE5EC
+0xA447	0xE5ED
+0xA448	0xE5EE
+0xA449	0xE5EF
+0xA44A	0xE5F0
+0xA44B	0xE5F1
+0xA44C	0xE5F2
+0xA44D	0xE5F3
+0xA44E	0xE5F4
+0xA44F	0xE5F5
+0xA450	0xE5F6
+0xA451	0xE5F7
+0xA452	0xE5F8
+0xA453	0xE5F9
+0xA454	0xE5FA
+0xA455	0xE5FB
+0xA456	0xE5FC
+0xA457	0xE5FD
+0xA458	0xE5FE
+0xA459	0xE5FF
+0xA45A	0xE600
+0xA45B	0xE601
+0xA45C	0xE602
+0xA45D	0xE603
+0xA45E	0xE604
+0xA45F	0xE605
+0xA460	0xE606
+0xA461	0xE607
+0xA462	0xE608
+0xA463	0xE609
+0xA464	0xE60A
+0xA465	0xE60B
+0xA466	0xE60C
+0xA467	0xE60D
+0xA468	0xE60E
+0xA469	0xE60F
+0xA46A	0xE610
+0xA46B	0xE611
+0xA46C	0xE612
+0xA46D	0xE613
+0xA46E	0xE614
+0xA46F	0xE615
+0xA470	0xE616
+0xA471	0xE617
+0xA472	0xE618
+0xA473	0xE619
+0xA474	0xE61A
+0xA475	0xE61B
+0xA476	0xE61C
+0xA477	0xE61D
+0xA478	0xE61E
+0xA479	0xE61F
+0xA47A	0xE620
+0xA47B	0xE621
+0xA47C	0xE622
+0xA47D	0xE623
+0xA47E	0xE624
+0xA480	0xE625
+0xA481	0xE626
+0xA482	0xE627
+0xA483	0xE628
+0xA484	0xE629
+0xA485	0xE62A
+0xA486	0xE62B
+0xA487	0xE62C
+0xA488	0xE62D
+0xA489	0xE62E
+0xA48A	0xE62F
+0xA48B	0xE630
+0xA48C	0xE631
+0xA48D	0xE632
+0xA48E	0xE633
+0xA48F	0xE634
+0xA490	0xE635
+0xA491	0xE636
+0xA492	0xE637
+0xA493	0xE638
+0xA494	0xE639
+0xA495	0xE63A
+0xA496	0xE63B
+0xA497	0xE63C
+0xA498	0xE63D
+0xA499	0xE63E
+0xA49A	0xE63F
+0xA49B	0xE640
+0xA49C	0xE641
+0xA49D	0xE642
+0xA49E	0xE643
+0xA49F	0xE644
+0xA4A0	0xE645
 0xA4A1	0x3041
 0xA4A2	0x3042
 0xA4A3	0x3043
@@ -6961,113 +6965,113 @@
 0xA4F1	0x3091
 0xA4F2	0x3092
 0xA4F3	0x3093
-0xA4F4	0xE652
-0xA4F5	0xE653
-0xA4F6	0xE654
-0xA4F7	0xE655
-0xA4F8	0xE656
-0xA4F9	0xE657
-0xA4FA	0xE658
-0xA4FB	0xE659
-0xA4FC	0xE65A
-0xA4FD	0xE65B
-0xA4FE	0xE65C
-0xA540	0xE65D
-0xA541	0xE65E
-0xA542	0xE65F
-0xA543	0xE660
-0xA544	0xE661
-0xA545	0xE662
-0xA546	0xE663
-0xA547	0xE664
-0xA548	0xE665
-0xA549	0xE666
-0xA54A	0xE667
-0xA54B	0xE668
-0xA54C	0xE669
-0xA54D	0xE66A
-0xA54E	0xE66B
-0xA54F	0xE66C
-0xA550	0xE66D
-0xA551	0xE66E
-0xA552	0xE66F
-0xA553	0xE670
-0xA554	0xE671
-0xA555	0xE672
-0xA556	0xE673
-0xA557	0xE674
-0xA558	0xE675
-0xA559	0xE676
-0xA55A	0xE677
-0xA55B	0xE678
-0xA55C	0xE679
-0xA55D	0xE67A
-0xA55E	0xE67B
-0xA55F	0xE67C
-0xA560	0xE67D
-0xA561	0xE67E
-0xA562	0xE67F
-0xA563	0xE680
-0xA564	0xE681
-0xA565	0xE682
-0xA566	0xE683
-0xA567	0xE684
-0xA568	0xE685
-0xA569	0xE686
-0xA56A	0xE687
-0xA56B	0xE688
-0xA56C	0xE689
-0xA56D	0xE68A
-0xA56E	0xE68B
-0xA56F	0xE68C
-0xA570	0xE68D
-0xA571	0xE68E
-0xA572	0xE68F
-0xA573	0xE690
-0xA574	0xE691
-0xA575	0xE692
-0xA576	0xE693
-0xA577	0xE694
-0xA578	0xE695
-0xA579	0xE696
-0xA57A	0xE697
-0xA57B	0xE698
-0xA57C	0xE699
-0xA57D	0xE69A
-0xA57E	0xE69B
-0xA580	0xE69C
-0xA581	0xE69D
-0xA582	0xE69E
-0xA583	0xE69F
-0xA584	0xE6A0
-0xA585	0xE6A1
-0xA586	0xE6A2
-0xA587	0xE6A3
-0xA588	0xE6A4
-0xA589	0xE6A5
-0xA58A	0xE6A6
-0xA58B	0xE6A7
-0xA58C	0xE6A8
-0xA58D	0xE6A9
-0xA58E	0xE6AA
-0xA58F	0xE6AB
-0xA590	0xE6AC
-0xA591	0xE6AD
-0xA592	0xE6AE
-0xA593	0xE6AF
-0xA594	0xE6B0
-0xA595	0xE6B1
-0xA596	0xE6B2
-0xA597	0xE6B3
-0xA598	0xE6B4
-0xA599	0xE6B5
-0xA59A	0xE6B6
-0xA59B	0xE6B7
-0xA59C	0xE6B8
-0xA59D	0xE6B9
-0xA59E	0xE6BA
-0xA59F	0xE6BB
-0xA5A0	0xE6BC
+0xA4F4	0xE772
+0xA4F5	0xE773
+0xA4F6	0xE774
+0xA4F7	0xE775
+0xA4F8	0xE776
+0xA4F9	0xE777
+0xA4FA	0xE778
+0xA4FB	0xE779
+0xA4FC	0xE77A
+0xA4FD	0xE77B
+0xA4FE	0xE77C
+0xA540	0xE646
+0xA541	0xE647
+0xA542	0xE648
+0xA543	0xE649
+0xA544	0xE64A
+0xA545	0xE64B
+0xA546	0xE64C
+0xA547	0xE64D
+0xA548	0xE64E
+0xA549	0xE64F
+0xA54A	0xE650
+0xA54B	0xE651
+0xA54C	0xE652
+0xA54D	0xE653
+0xA54E	0xE654
+0xA54F	0xE655
+0xA550	0xE656
+0xA551	0xE657
+0xA552	0xE658
+0xA553	0xE659
+0xA554	0xE65A
+0xA555	0xE65B
+0xA556	0xE65C
+0xA557	0xE65D
+0xA558	0xE65E
+0xA559	0xE65F
+0xA55A	0xE660
+0xA55B	0xE661
+0xA55C	0xE662
+0xA55D	0xE663
+0xA55E	0xE664
+0xA55F	0xE665
+0xA560	0xE666
+0xA561	0xE667
+0xA562	0xE668
+0xA563	0xE669
+0xA564	0xE66A
+0xA565	0xE66B
+0xA566	0xE66C
+0xA567	0xE66D
+0xA568	0xE66E
+0xA569	0xE66F
+0xA56A	0xE670
+0xA56B	0xE671
+0xA56C	0xE672
+0xA56D	0xE673
+0xA56E	0xE674
+0xA56F	0xE675
+0xA570	0xE676
+0xA571	0xE677
+0xA572	0xE678
+0xA573	0xE679
+0xA574	0xE67A
+0xA575	0xE67B
+0xA576	0xE67C
+0xA577	0xE67D
+0xA578	0xE67E
+0xA579	0xE67F
+0xA57A	0xE680
+0xA57B	0xE681
+0xA57C	0xE682
+0xA57D	0xE683
+0xA57E	0xE684
+0xA580	0xE685
+0xA581	0xE686
+0xA582	0xE687
+0xA583	0xE688
+0xA584	0xE689
+0xA585	0xE68A
+0xA586	0xE68B
+0xA587	0xE68C
+0xA588	0xE68D
+0xA589	0xE68E
+0xA58A	0xE68F
+0xA58B	0xE690
+0xA58C	0xE691
+0xA58D	0xE692
+0xA58E	0xE693
+0xA58F	0xE694
+0xA590	0xE695
+0xA591	0xE696
+0xA592	0xE697
+0xA593	0xE698
+0xA594	0xE699
+0xA595	0xE69A
+0xA596	0xE69B
+0xA597	0xE69C
+0xA598	0xE69D
+0xA599	0xE69E
+0xA59A	0xE69F
+0xA59B	0xE6A0
+0xA59C	0xE6A1
+0xA59D	0xE6A2
+0xA59E	0xE6A3
+0xA59F	0xE6A4
+0xA5A0	0xE6A5
 0xA5A1	0x30A1
 0xA5A2	0x30A2
 0xA5A3	0x30A3
@@ -7154,110 +7158,110 @@
 0xA5F4	0x30F4
 0xA5F5	0x30F5
 0xA5F6	0x30F6
-0xA5F7	0xE6BD
-0xA5F8	0xE6BE
-0xA5F9	0xE6BF
-0xA5FA	0xE6C0
-0xA5FB	0xE6C1
-0xA5FC	0xE6C2
-0xA5FD	0xE6C3
-0xA5FE	0xE6C4
-0xA640	0xE6C5
-0xA641	0xE6C6
-0xA642	0xE6C7
-0xA643	0xE6C8
-0xA644	0xE6C9
-0xA645	0xE6CA
-0xA646	0xE6CB
-0xA647	0xE6CC
-0xA648	0xE6CD
-0xA649	0xE6CE
-0xA64A	0xE6CF
-0xA64B	0xE6D0
-0xA64C	0xE6D1
-0xA64D	0xE6D2
-0xA64E	0xE6D3
-0xA64F	0xE6D4
-0xA650	0xE6D5
-0xA651	0xE6D6
-0xA652	0xE6D7
-0xA653	0xE6D8
-0xA654	0xE6D9
-0xA655	0xE6DA
-0xA656	0xE6DB
-0xA657	0xE6DC
-0xA658	0xE6DD
-0xA659	0xE6DE
-0xA65A	0xE6DF
-0xA65B	0xE6E0
-0xA65C	0xE6E1
-0xA65D	0xE6E2
-0xA65E	0xE6E3
-0xA65F	0xE6E4
-0xA660	0xE6E5
-0xA661	0xE6E6
-0xA662	0xE6E7
-0xA663	0xE6E8
-0xA664	0xE6E9
-0xA665	0xE6EA
-0xA666	0xE6EB
-0xA667	0xE6EC
-0xA668	0xE6ED
-0xA669	0xE6EE
-0xA66A	0xE6EF
-0xA66B	0xE6F0
-0xA66C	0xE6F1
-0xA66D	0xE6F2
-0xA66E	0xE6F3
-0xA66F	0xE6F4
-0xA670	0xE6F5
-0xA671	0xE6F6
-0xA672	0xE6F7
-0xA673	0xE6F8
-0xA674	0xE6F9
-0xA675	0xE6FA
-0xA676	0xE6FB
-0xA677	0xE6FC
-0xA678	0xE6FD
-0xA679	0xE6FE
-0xA67A	0xE6FF
-0xA67B	0xE700
-0xA67C	0xE701
-0xA67D	0xE702
-0xA67E	0xE703
-0xA680	0xE704
-0xA681	0xE705
-0xA682	0xE706
-0xA683	0xE707
-0xA684	0xE708
-0xA685	0xE709
-0xA686	0xE70A
-0xA687	0xE70B
-0xA688	0xE70C
-0xA689	0xE70D
-0xA68A	0xE70E
-0xA68B	0xE70F
-0xA68C	0xE710
-0xA68D	0xE711
-0xA68E	0xE712
-0xA68F	0xE713
-0xA690	0xE714
-0xA691	0xE715
-0xA692	0xE716
-0xA693	0xE717
-0xA694	0xE718
-0xA695	0xE719
-0xA696	0xE71A
-0xA697	0xE71B
-0xA698	0xE71C
-0xA699	0xE71D
-0xA69A	0xE71E
-0xA69B	0xE71F
-0xA69C	0xE720
-0xA69D	0xE721
-0xA69E	0xE722
-0xA69F	0xE723
-0xA6A0	0xE724
+0xA5F7	0xE77D
+0xA5F8	0xE77E
+0xA5F9	0xE77F
+0xA5FA	0xE780
+0xA5FB	0xE781
+0xA5FC	0xE782
+0xA5FD	0xE783
+0xA5FE	0xE784
+0xA640	0xE6A6
+0xA641	0xE6A7
+0xA642	0xE6A8
+0xA643	0xE6A9
+0xA644	0xE6AA
+0xA645	0xE6AB
+0xA646	0xE6AC
+0xA647	0xE6AD
+0xA648	0xE6AE
+0xA649	0xE6AF
+0xA64A	0xE6B0
+0xA64B	0xE6B1
+0xA64C	0xE6B2
+0xA64D	0xE6B3
+0xA64E	0xE6B4
+0xA64F	0xE6B5
+0xA650	0xE6B6
+0xA651	0xE6B7
+0xA652	0xE6B8
+0xA653	0xE6B9
+0xA654	0xE6BA
+0xA655	0xE6BB
+0xA656	0xE6BC
+0xA657	0xE6BD
+0xA658	0xE6BE
+0xA659	0xE6BF
+0xA65A	0xE6C0
+0xA65B	0xE6C1
+0xA65C	0xE6C2
+0xA65D	0xE6C3
+0xA65E	0xE6C4
+0xA65F	0xE6C5
+0xA660	0xE6C6
+0xA661	0xE6C7
+0xA662	0xE6C8
+0xA663	0xE6C9
+0xA664	0xE6CA
+0xA665	0xE6CB
+0xA666	0xE6CC
+0xA667	0xE6CD
+0xA668	0xE6CE
+0xA669	0xE6CF
+0xA66A	0xE6D0
+0xA66B	0xE6D1
+0xA66C	0xE6D2
+0xA66D	0xE6D3
+0xA66E	0xE6D4
+0xA66F	0xE6D5
+0xA670	0xE6D6
+0xA671	0xE6D7
+0xA672	0xE6D8
+0xA673	0xE6D9
+0xA674	0xE6DA
+0xA675	0xE6DB
+0xA676	0xE6DC
+0xA677	0xE6DD
+0xA678	0xE6DE
+0xA679	0xE6DF
+0xA67A	0xE6E0
+0xA67B	0xE6E1
+0xA67C	0xE6E2
+0xA67D	0xE6E3
+0xA67E	0xE6E4
+0xA680	0xE6E5
+0xA681	0xE6E6
+0xA682	0xE6E7
+0xA683	0xE6E8
+0xA684	0xE6E9
+0xA685	0xE6EA
+0xA686	0xE6EB
+0xA687	0xE6EC
+0xA688	0xE6ED
+0xA689	0xE6EE
+0xA68A	0xE6EF
+0xA68B	0xE6F0
+0xA68C	0xE6F1
+0xA68D	0xE6F2
+0xA68E	0xE6F3
+0xA68F	0xE6F4
+0xA690	0xE6F5
+0xA691	0xE6F6
+0xA692	0xE6F7
+0xA693	0xE6F8
+0xA694	0xE6F9
+0xA695	0xE6FA
+0xA696	0xE6FB
+0xA697	0xE6FC
+0xA698	0xE6FD
+0xA699	0xE6FE
+0xA69A	0xE6FF
+0xA69B	0xE700
+0xA69C	0xE701
+0xA69D	0xE702
+0xA69E	0xE703
+0xA69F	0xE704
+0xA6A0	0xE705
 0xA6A1	0x0391
 0xA6A2	0x0392
 0xA6A3	0x0393
@@ -7282,14 +7286,14 @@
 0xA6B6	0x03A7
 0xA6B7	0x03A8
 0xA6B8	0x03A9
-0xA6B9	0xE725
-0xA6BA	0xE726
-0xA6BB	0xE727
-0xA6BC	0xE728
-0xA6BD	0xE729
-0xA6BE	0xE72A
-0xA6BF	0xE72B
-0xA6C0	0xE72C
+0xA6B9	0xE785
+0xA6BA	0xE786
+0xA6BB	0xE787
+0xA6BC	0xE788
+0xA6BD	0xE789
+0xA6BE	0xE78A
+0xA6BF	0xE78B
+0xA6C0	0xE78C
 0xA6C1	0x03B1
 0xA6C2	0x03B2
 0xA6C3	0x03B3
@@ -7314,13 +7318,13 @@
 0xA6D6	0x03C7
 0xA6D7	0x03C8
 0xA6D8	0x03C9
-0xA6D9	0xE72D
-0xA6DA	0xE72E
-0xA6DB	0xE72F
-0xA6DC	0xE730
-0xA6DD	0xE731
-0xA6DE	0xE732
-0xA6DF	0xE733
+0xA6D9	0xE78D
+0xA6DA	0xE78E
+0xA6DB	0xE78F
+0xA6DC	0xE790
+0xA6DD	0xE791
+0xA6DE	0xE792
+0xA6DF	0xE793
 0xA6E0	0xFE35
 0xA6E1	0xFE36
 0xA6E2	0xFE39
@@ -7333,121 +7337,121 @@
 0xA6E9	0xFE42
 0xA6EA	0xFE43
 0xA6EB	0xFE44
-0xA6EC	0xE734
-0xA6ED	0xE735
+0xA6EC	0xE794
+0xA6ED	0xE795
 0xA6EE	0xFE3B
 0xA6EF	0xFE3C
 0xA6F0	0xFE37
 0xA6F1	0xFE38
 0xA6F2	0xFE31
-0xA6F3	0xE736
+0xA6F3	0xE796
 0xA6F4	0xFE33
 0xA6F5	0xFE34
-0xA6F6	0xE737
-0xA6F7	0xE738
-0xA6F8	0xE739
-0xA6F9	0xE73A
-0xA6FA	0xE73B
-0xA6FB	0xE73C
-0xA6FC	0xE73D
-0xA6FD	0xE73E
-0xA6FE	0xE73F
-0xA740	0xE740
-0xA741	0xE741
-0xA742	0xE742
-0xA743	0xE743
-0xA744	0xE744
-0xA745	0xE745
-0xA746	0xE746
-0xA747	0xE747
-0xA748	0xE748
-0xA749	0xE749
-0xA74A	0xE74A
-0xA74B	0xE74B
-0xA74C	0xE74C
-0xA74D	0xE74D
-0xA74E	0xE74E
-0xA74F	0xE74F
-0xA750	0xE750
-0xA751	0xE751
-0xA752	0xE752
-0xA753	0xE753
-0xA754	0xE754
-0xA755	0xE755
-0xA756	0xE756
-0xA757	0xE757
-0xA758	0xE758
-0xA759	0xE759
-0xA75A	0xE75A
-0xA75B	0xE75B
-0xA75C	0xE75C
-0xA75D	0xE75D
-0xA75E	0xE75E
-0xA75F	0xE75F
-0xA760	0xE760
-0xA761	0xE761
-0xA762	0xE762
-0xA763	0xE763
-0xA764	0xE764
-0xA765	0xE765
-0xA766	0xE766
-0xA767	0xE767
-0xA768	0xE768
-0xA769	0xE769
-0xA76A	0xE76A
-0xA76B	0xE76B
-0xA76C	0xE76C
-0xA76D	0xE76D
-0xA76E	0xE76E
-0xA76F	0xE76F
-0xA770	0xE770
-0xA771	0xE771
-0xA772	0xE772
-0xA773	0xE773
-0xA774	0xE774
-0xA775	0xE775
-0xA776	0xE776
-0xA777	0xE777
-0xA778	0xE778
-0xA779	0xE779
-0xA77A	0xE77A
-0xA77B	0xE77B
-0xA77C	0xE77C
-0xA77D	0xE77D
-0xA77E	0xE77E
-0xA780	0xE77F
-0xA781	0xE780
-0xA782	0xE781
-0xA783	0xE782
-0xA784	0xE783
-0xA785	0xE784
-0xA786	0xE785
-0xA787	0xE786
-0xA788	0xE787
-0xA789	0xE788
-0xA78A	0xE789
-0xA78B	0xE78A
-0xA78C	0xE78B
-0xA78D	0xE78C
-0xA78E	0xE78D
-0xA78F	0xE78E
-0xA790	0xE78F
-0xA791	0xE790
-0xA792	0xE791
-0xA793	0xE792
-0xA794	0xE793
-0xA795	0xE794
-0xA796	0xE795
-0xA797	0xE796
-0xA798	0xE797
-0xA799	0xE798
-0xA79A	0xE799
-0xA79B	0xE79A
-0xA79C	0xE79B
-0xA79D	0xE79C
-0xA79E	0xE79D
-0xA79F	0xE79E
-0xA7A0	0xE79F
+0xA6F6	0xE797
+0xA6F7	0xE798
+0xA6F8	0xE799
+0xA6F9	0xE79A
+0xA6FA	0xE79B
+0xA6FB	0xE79C
+0xA6FC	0xE79D
+0xA6FD	0xE79E
+0xA6FE	0xE79F
+0xA740	0xE706
+0xA741	0xE707
+0xA742	0xE708
+0xA743	0xE709
+0xA744	0xE70A
+0xA745	0xE70B
+0xA746	0xE70C
+0xA747	0xE70D
+0xA748	0xE70E
+0xA749	0xE70F
+0xA74A	0xE710
+0xA74B	0xE711
+0xA74C	0xE712
+0xA74D	0xE713
+0xA74E	0xE714
+0xA74F	0xE715
+0xA750	0xE716
+0xA751	0xE717
+0xA752	0xE718
+0xA753	0xE719
+0xA754	0xE71A
+0xA755	0xE71B
+0xA756	0xE71C
+0xA757	0xE71D
+0xA758	0xE71E
+0xA759	0xE71F
+0xA75A	0xE720
+0xA75B	0xE721
+0xA75C	0xE722
+0xA75D	0xE723
+0xA75E	0xE724
+0xA75F	0xE725
+0xA760	0xE726
+0xA761	0xE727
+0xA762	0xE728
+0xA763	0xE729
+0xA764	0xE72A
+0xA765	0xE72B
+0xA766	0xE72C
+0xA767	0xE72D
+0xA768	0xE72E
+0xA769	0xE72F
+0xA76A	0xE730
+0xA76B	0xE731
+0xA76C	0xE732
+0xA76D	0xE733
+0xA76E	0xE734
+0xA76F	0xE735
+0xA770	0xE736
+0xA771	0xE737
+0xA772	0xE738
+0xA773	0xE739
+0xA774	0xE73A
+0xA775	0xE73B
+0xA776	0xE73C
+0xA777	0xE73D
+0xA778	0xE73E
+0xA779	0xE73F
+0xA77A	0xE740
+0xA77B	0xE741
+0xA77C	0xE742
+0xA77D	0xE743
+0xA77E	0xE744
+0xA780	0xE745
+0xA781	0xE746
+0xA782	0xE747
+0xA783	0xE748
+0xA784	0xE749
+0xA785	0xE74A
+0xA786	0xE74B
+0xA787	0xE74C
+0xA788	0xE74D
+0xA789	0xE74E
+0xA78A	0xE74F
+0xA78B	0xE750
+0xA78C	0xE751
+0xA78D	0xE752
+0xA78E	0xE753
+0xA78F	0xE754
+0xA790	0xE755
+0xA791	0xE756
+0xA792	0xE757
+0xA793	0xE758
+0xA794	0xE759
+0xA795	0xE75A
+0xA796	0xE75B
+0xA797	0xE75C
+0xA798	0xE75D
+0xA799	0xE75E
+0xA79A	0xE75F
+0xA79B	0xE760
+0xA79C	0xE761
+0xA79D	0xE762
+0xA79E	0xE763
+0xA79F	0xE764
+0xA7A0	0xE765
 0xA7A1	0x0410
 0xA7A2	0x0411
 0xA7A3	0x0412
--- a/make/tools/CharsetMapping/MS936.map	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/tools/CharsetMapping/MS936.map	Tue Jun 25 17:20:25 2013 -0700
@@ -1,31 +1,8 @@
-# Copy/pasted from MS936.b2c
 #
-# This table comes from MS CP936 table posted on unicode.org webpage
-# with the modifications of 
+# This table comes from MultiByteToWideChar, the only entry
+# not included is
 #
-# (1)added Euro sign
-#      0x80 - 0x20ac
-# (2)removed DBCS lead byte entries 
-#      0x80 - 0xff  
-# (3)added GBK UDC block (1894)
-#      0xAAA1 - 0xAFFE  U+E000 - U+E233
-#      0xF8A1 - 0xFEFE  U+E234 - U+E4C5
-#      0xA140 - 0xA7A0  U+E4C6 - U+E79F
-# (4)added Microsoft defined "not GBK" EUDC
-#     a:  u+E586 - u+E591
-#     b:  u+E652 - u+E65C 
-#     c:  u+E6BD - u+E6C4
-#     d:  u+E725 - u+E73F
-#     e:  u+E7A0 - u+E864
-# 
-#    Mapping of (3) and (4) comes from Masayuki Fuse at FUSE@jp.ibm.com
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the cp936 code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in unicode order
+# 0xFF	0xF8F5
 #
 0x00	0x0000
 0x01	0x0001
@@ -6533,12 +6510,12 @@
 0xA2A8	0x2177  #SMALL ROMAN NUMERAL EIGHT
 0xA2A9	0x2178  #SMALL ROMAN NUMERAL NINE
 0xA2AA	0x2179  #SMALL ROMAN NUMERAL TEN
-0xA2AB  0xE586  #PRIVATE USE AREA-E586
-0xA2AC  0xE587  #PRIVATE USE AREA-E587
-0xA2AD  0xE588  #PRIVATE USE AREA-E588
-0xA2AE  0xE589  #PRIVATE USE AREA-E589
-0xA2AF  0xE58A  #PRIVATE USE AREA-E58A
-0xA2B0  0xE58B  #PRIVATE USE AREA-E58B
+0xA2AB  0xE766  #PRIVATE USE AREA-E766
+0xA2AC  0xE767  #PRIVATE USE AREA-E767
+0xA2AD  0xE768  #PRIVATE USE AREA-E768
+0xA2AE  0xE769  #PRIVATE USE AREA-E769
+0xA2AF  0xE76A  #PRIVATE USE AREA-E76A
+0xA2B0  0xE76B  #PRIVATE USE AREA-E76B
 0xA2B1	0x2488  #DIGIT ONE FULL STOP
 0xA2B2	0x2489  #DIGIT TWO FULL STOP
 0xA2B3	0x248A  #DIGIT THREE FULL STOP
@@ -6589,8 +6566,8 @@
 0xA2E0	0x2467  #CIRCLED DIGIT EIGHT
 0xA2E1	0x2468  #CIRCLED DIGIT NINE
 0xA2E2	0x2469  #CIRCLED NUMBER TEN
-0xA2E3  0xE58C  #PRIVATE USE AREA-E58C
-0xA2E4  0xE58D  #PRIVATE USE AREA-E58D
+0xA2E3  0xE76C  #PRIVATE USE AREA-E76C
+0xA2E4  0xE76D  #PRIVATE USE AREA-E76D
 0xA2E5	0x3220  #PARENTHESIZED IDEOGRAPH ONE
 0xA2E6	0x3221  #PARENTHESIZED IDEOGRAPH TWO
 0xA2E7	0x3222  #PARENTHESIZED IDEOGRAPH THREE
@@ -6601,8 +6578,8 @@
 0xA2EC	0x3227  #PARENTHESIZED IDEOGRAPH EIGHT
 0xA2ED	0x3228  #PARENTHESIZED IDEOGRAPH NINE
 0xA2EE	0x3229  #PARENTHESIZED IDEOGRAPH TEN
-0xA2EF  0xE58E  #PRIVATE USE AREA-E58E
-0xA2F0  0xE58F  #PRIVATE USE AREA-E58F
+0xA2EF  0xE76E  #PRIVATE USE AREA-E76E
+0xA2F0  0xE76F  #PRIVATE USE AREA-E76F
 0xA2F1	0x2160  #ROMAN NUMERAL ONE
 0xA2F2	0x2161  #ROMAN NUMERAL TWO
 0xA2F3	0x2162  #ROMAN NUMERAL THREE
@@ -6615,104 +6592,104 @@
 0xA2FA	0x2169  #ROMAN NUMERAL TEN
 0xA2FB	0x216A  #ROMAN NUMERAL ELEVEN
 0xA2FC	0x216B  #ROMAN NUMERAL TWELVE
-0xA2FD  0xE590  #PRIVATE USE AREA-E590
-0xA2FE  0xE591  #PRIVATE USE AREA-E591
-0xA340  0xE592  #PRIVATE USE AREA-E592
-0xA341  0xE593  #PRIVATE USE AREA-E593
-0xA342  0xE594  #PRIVATE USE AREA-E594
-0xA343  0xE595  #PRIVATE USE AREA-E595
-0xA344  0xE596  #PRIVATE USE AREA-E596
-0xA345  0xE597  #PRIVATE USE AREA-E597
-0xA346  0xE598  #PRIVATE USE AREA-E598
-0xA347  0xE599  #PRIVATE USE AREA-E599
-0xA348  0xE59A  #PRIVATE USE AREA-E59A
-0xA349  0xE59B  #PRIVATE USE AREA-E59B
-0xA34A  0xE59C  #PRIVATE USE AREA-E59C
-0xA34B  0xE59D  #PRIVATE USE AREA-E59D
-0xA34C  0xE59E  #PRIVATE USE AREA-E59E
-0xA34D  0xE59F  #PRIVATE USE AREA-E59F
-0xA34E  0xE5A0  #PRIVATE USE AREA-E5A0
-0xA34F  0xE5A1  #PRIVATE USE AREA-E5A1
-0xA350  0xE5A2  #PRIVATE USE AREA-E5A2
-0xA351  0xE5A3  #PRIVATE USE AREA-E5A3
-0xA352  0xE5A4  #PRIVATE USE AREA-E5A4
-0xA353  0xE5A5  #PRIVATE USE AREA-E5A5
-0xA354  0xE5A6  #PRIVATE USE AREA-E5A6
-0xA355  0xE5A7  #PRIVATE USE AREA-E5A7
-0xA356  0xE5A8  #PRIVATE USE AREA-E5A8
-0xA357  0xE5A9  #PRIVATE USE AREA-E5A9
-0xA358  0xE5AA  #PRIVATE USE AREA-E5AA
-0xA359  0xE5AB  #PRIVATE USE AREA-E5AB
-0xA35A  0xE5AC  #PRIVATE USE AREA-E5AC
-0xA35B  0xE5AD  #PRIVATE USE AREA-E5AD
-0xA35C  0xE5AE  #PRIVATE USE AREA-E5AE
-0xA35D  0xE5AF  #PRIVATE USE AREA-E5AF
-0xA35E  0xE5B0  #PRIVATE USE AREA-E5B0
-0xA35F  0xE5B1  #PRIVATE USE AREA-E5B1
-0xA360  0xE5B2  #PRIVATE USE AREA-E5B2
-0xA361  0xE5B3  #PRIVATE USE AREA-E5B3
-0xA362  0xE5B4  #PRIVATE USE AREA-E5B4
-0xA363  0xE5B5  #PRIVATE USE AREA-E5B5
-0xA364  0xE5B6  #PRIVATE USE AREA-E5B6
-0xA365  0xE5B7  #PRIVATE USE AREA-E5B7
-0xA366  0xE5B8  #PRIVATE USE AREA-E5B8
-0xA367  0xE5B9  #PRIVATE USE AREA-E5B9
-0xA368  0xE5BA  #PRIVATE USE AREA-E5BA
-0xA369  0xE5BB  #PRIVATE USE AREA-E5BB
-0xA36A  0xE5BC  #PRIVATE USE AREA-E5BC
-0xA36B  0xE5BD  #PRIVATE USE AREA-E5BD
-0xA36C  0xE5BE  #PRIVATE USE AREA-E5BE
-0xA36D  0xE5BF  #PRIVATE USE AREA-E5BF
-0xA36E  0xE5C0  #PRIVATE USE AREA-E5C0
-0xA36F  0xE5C1  #PRIVATE USE AREA-E5C1
-0xA370  0xE5C2  #PRIVATE USE AREA-E5C2
-0xA371  0xE5C3  #PRIVATE USE AREA-E5C3
-0xA372  0xE5C4  #PRIVATE USE AREA-E5C4
-0xA373  0xE5C5  #PRIVATE USE AREA-E5C5
-0xA374  0xE5C6  #PRIVATE USE AREA-E5C6
-0xA375  0xE5C7  #PRIVATE USE AREA-E5C7
-0xA376  0xE5C8  #PRIVATE USE AREA-E5C8
-0xA377  0xE5C9  #PRIVATE USE AREA-E5C9
-0xA378  0xE5CA  #PRIVATE USE AREA-E5CA
-0xA379  0xE5CB  #PRIVATE USE AREA-E5CB
-0xA37A  0xE5CC  #PRIVATE USE AREA-E5CC
-0xA37B  0xE5CD  #PRIVATE USE AREA-E5CD
-0xA37C  0xE5CE  #PRIVATE USE AREA-E5CE
-0xA37D  0xE5CF  #PRIVATE USE AREA-E5CF
-0xA37E  0xE5D0  #PRIVATE USE AREA-E5D0
-0xA380  0xE5D1  #PRIVATE USE AREA-E5D1
-0xA381  0xE5D2  #PRIVATE USE AREA-E5D2
-0xA382  0xE5D3  #PRIVATE USE AREA-E5D3
-0xA383  0xE5D4  #PRIVATE USE AREA-E5D4
-0xA384  0xE5D5  #PRIVATE USE AREA-E5D5
-0xA385  0xE5D6  #PRIVATE USE AREA-E5D6
-0xA386  0xE5D7  #PRIVATE USE AREA-E5D7
-0xA387  0xE5D8  #PRIVATE USE AREA-E5D8
-0xA388  0xE5D9  #PRIVATE USE AREA-E5D9
-0xA389  0xE5DA  #PRIVATE USE AREA-E5DA
-0xA38A  0xE5DB  #PRIVATE USE AREA-E5DB
-0xA38B  0xE5DC  #PRIVATE USE AREA-E5DC
-0xA38C  0xE5DD  #PRIVATE USE AREA-E5DD
-0xA38D  0xE5DE  #PRIVATE USE AREA-E5DE
-0xA38E  0xE5DF  #PRIVATE USE AREA-E5DF
-0xA38F  0xE5E0  #PRIVATE USE AREA-E5E0
-0xA390  0xE5E1  #PRIVATE USE AREA-E5E1
-0xA391  0xE5E2  #PRIVATE USE AREA-E5E2
-0xA392  0xE5E3  #PRIVATE USE AREA-E5E3
-0xA393  0xE5E4  #PRIVATE USE AREA-E5E4
-0xA394  0xE5E5  #PRIVATE USE AREA-E5E5
-0xA395  0xE5E6  #PRIVATE USE AREA-E5E6
-0xA396  0xE5E7  #PRIVATE USE AREA-E5E7
-0xA397  0xE5E8  #PRIVATE USE AREA-E5E8
-0xA398  0xE5E9  #PRIVATE USE AREA-E5E9
-0xA399  0xE5EA  #PRIVATE USE AREA-E5EA
-0xA39A  0xE5EB  #PRIVATE USE AREA-E5EB
-0xA39B  0xE5EC  #PRIVATE USE AREA-E5EC
-0xA39C  0xE5ED  #PRIVATE USE AREA-E5ED
-0xA39D  0xE5EE  #PRIVATE USE AREA-E5EE
-0xA39E  0xE5EF  #PRIVATE USE AREA-E5EF
-0xA39F  0xE5F0  #PRIVATE USE AREA-E5F0
-0xA3A0  0xE5F1  #PRIVATE USE AREA-E5F1
+0xA2FD  0xE770  #PRIVATE USE AREA-E770
+0xA2FE  0xE771  #PRIVATE USE AREA-E771
+0xA340  0xE586  #PRIVATE USE AREA-E586
+0xA341  0xE587  #PRIVATE USE AREA-E587
+0xA342  0xE588  #PRIVATE USE AREA-E588
+0xA343  0xE589  #PRIVATE USE AREA-E589
+0xA344  0xE58A  #PRIVATE USE AREA-E58A
+0xA345  0xE58B  #PRIVATE USE AREA-E58B
+0xA346  0xE58C  #PRIVATE USE AREA-E58C
+0xA347  0xE58D  #PRIVATE USE AREA-E58D
+0xA348  0xE58E  #PRIVATE USE AREA-E58E
+0xA349  0xE58F  #PRIVATE USE AREA-E58F
+0xA34A  0xE590  #PRIVATE USE AREA-E590
+0xA34B  0xE591  #PRIVATE USE AREA-E591
+0xA34C  0xE592  #PRIVATE USE AREA-E592
+0xA34D  0xE593  #PRIVATE USE AREA-E593
+0xA34E  0xE594  #PRIVATE USE AREA-E594
+0xA34F  0xE595  #PRIVATE USE AREA-E595
+0xA350  0xE596  #PRIVATE USE AREA-E596
+0xA351  0xE597  #PRIVATE USE AREA-E597
+0xA352  0xE598  #PRIVATE USE AREA-E598
+0xA353  0xE599  #PRIVATE USE AREA-E599
+0xA354  0xE59A  #PRIVATE USE AREA-E59A
+0xA355  0xE59B  #PRIVATE USE AREA-E59B
+0xA356  0xE59C  #PRIVATE USE AREA-E59C
+0xA357  0xE59D  #PRIVATE USE AREA-E59D
+0xA358  0xE59E  #PRIVATE USE AREA-E59E
+0xA359  0xE59F  #PRIVATE USE AREA-E59F
+0xA35A  0xE5A0  #PRIVATE USE AREA-E5A0
+0xA35B  0xE5A1  #PRIVATE USE AREA-E5A1
+0xA35C  0xE5A2  #PRIVATE USE AREA-E5A2
+0xA35D  0xE5A3  #PRIVATE USE AREA-E5A3
+0xA35E  0xE5A4  #PRIVATE USE AREA-E5A4
+0xA35F  0xE5A5  #PRIVATE USE AREA-E5A5
+0xA360  0xE5A6  #PRIVATE USE AREA-E5A6
+0xA361  0xE5A7  #PRIVATE USE AREA-E5A7
+0xA362  0xE5A8  #PRIVATE USE AREA-E5A8
+0xA363  0xE5A9  #PRIVATE USE AREA-E5A9
+0xA364  0xE5AA  #PRIVATE USE AREA-E5AA
+0xA365  0xE5AB  #PRIVATE USE AREA-E5AB
+0xA366  0xE5AC  #PRIVATE USE AREA-E5AC
+0xA367  0xE5AD  #PRIVATE USE AREA-E5AD
+0xA368  0xE5AE  #PRIVATE USE AREA-E5AE
+0xA369  0xE5AF  #PRIVATE USE AREA-E5AF
+0xA36A  0xE5B0  #PRIVATE USE AREA-E5B0
+0xA36B  0xE5B1  #PRIVATE USE AREA-E5B1
+0xA36C  0xE5B2  #PRIVATE USE AREA-E5B2
+0xA36D  0xE5B3  #PRIVATE USE AREA-E5B3
+0xA36E  0xE5B4  #PRIVATE USE AREA-E5B4
+0xA36F  0xE5B5  #PRIVATE USE AREA-E5B5
+0xA370  0xE5B6  #PRIVATE USE AREA-E5B6
+0xA371  0xE5B7  #PRIVATE USE AREA-E5B7
+0xA372  0xE5B8  #PRIVATE USE AREA-E5B8
+0xA373  0xE5B9  #PRIVATE USE AREA-E5B9
+0xA374  0xE5BA  #PRIVATE USE AREA-E5BA
+0xA375  0xE5BB  #PRIVATE USE AREA-E5BB
+0xA376  0xE5BC  #PRIVATE USE AREA-E5BC
+0xA377  0xE5BD  #PRIVATE USE AREA-E5BD
+0xA378  0xE5BE  #PRIVATE USE AREA-E5BE
+0xA379  0xE5BF  #PRIVATE USE AREA-E5BF
+0xA37A  0xE5C0  #PRIVATE USE AREA-E5C0
+0xA37B  0xE5C1  #PRIVATE USE AREA-E5C1
+0xA37C  0xE5C2  #PRIVATE USE AREA-E5C2
+0xA37D  0xE5C3  #PRIVATE USE AREA-E5C3
+0xA37E  0xE5C4  #PRIVATE USE AREA-E5C4
+0xA380  0xE5C5  #PRIVATE USE AREA-E5C5
+0xA381  0xE5C6  #PRIVATE USE AREA-E5C6
+0xA382  0xE5C7  #PRIVATE USE AREA-E5C7
+0xA383  0xE5C8  #PRIVATE USE AREA-E5C8
+0xA384  0xE5C9  #PRIVATE USE AREA-E5C9
+0xA385  0xE5CA  #PRIVATE USE AREA-E5CA
+0xA386  0xE5CB  #PRIVATE USE AREA-E5CB
+0xA387  0xE5CC  #PRIVATE USE AREA-E5CC
+0xA388  0xE5CD  #PRIVATE USE AREA-E5CD
+0xA389  0xE5CE  #PRIVATE USE AREA-E5CE
+0xA38A  0xE5CF  #PRIVATE USE AREA-E5CF
+0xA38B  0xE5D0  #PRIVATE USE AREA-E5D0
+0xA38C  0xE5D1  #PRIVATE USE AREA-E5D1
+0xA38D  0xE5D2  #PRIVATE USE AREA-E5D2
+0xA38E  0xE5D3  #PRIVATE USE AREA-E5D3
+0xA38F  0xE5D4  #PRIVATE USE AREA-E5D4
+0xA390  0xE5D5  #PRIVATE USE AREA-E5D5
+0xA391  0xE5D6  #PRIVATE USE AREA-E5D6
+0xA392  0xE5D7  #PRIVATE USE AREA-E5D7
+0xA393  0xE5D8  #PRIVATE USE AREA-E5D8
+0xA394  0xE5D9  #PRIVATE USE AREA-E5D9
+0xA395  0xE5DA  #PRIVATE USE AREA-E5DA
+0xA396  0xE5DB  #PRIVATE USE AREA-E5DB
+0xA397  0xE5DC  #PRIVATE USE AREA-E5DC
+0xA398  0xE5DD  #PRIVATE USE AREA-E5DD
+0xA399  0xE5DE  #PRIVATE USE AREA-E5DE
+0xA39A  0xE5DF  #PRIVATE USE AREA-E5DF
+0xA39B  0xE5E0  #PRIVATE USE AREA-E5E0
+0xA39C  0xE5E1  #PRIVATE USE AREA-E5E1
+0xA39D  0xE5E2  #PRIVATE USE AREA-E5E2
+0xA39E  0xE5E3  #PRIVATE USE AREA-E5E3
+0xA39F  0xE5E4  #PRIVATE USE AREA-E5E4
+0xA3A0  0xE5E5  #PRIVATE USE AREA-E5E5
 0xA3A1	0xFF01  #FULLWIDTH EXCLAMATION MARK
 0xA3A2	0xFF02  #FULLWIDTH QUOTATION MARK
 0xA3A3	0xFF03  #FULLWIDTH NUMBER SIGN
@@ -6807,102 +6784,102 @@
 0xA3FC	0xFF5C  #FULLWIDTH VERTICAL LINE
 0xA3FD	0xFF5D  #FULLWIDTH RIGHT CURLY BRACKET
 0xA3FE	0xFFE3  #FULLWIDTH MACRON
-0xA440  0xE5F2  #PRIVATE USE AREA-E5F2
-0xA441  0xE5F3  #PRIVATE USE AREA-E5F3
-0xA442  0xE5F4  #PRIVATE USE AREA-E5F4
-0xA443  0xE5F5  #PRIVATE USE AREA-E5F5
-0xA444  0xE5F6  #PRIVATE USE AREA-E5F6
-0xA445  0xE5F7  #PRIVATE USE AREA-E5F7
-0xA446  0xE5F8  #PRIVATE USE AREA-E5F8
-0xA447  0xE5F9  #PRIVATE USE AREA-E5F9
-0xA448  0xE5FA  #PRIVATE USE AREA-E5FA
-0xA449  0xE5FB  #PRIVATE USE AREA-E5FB
-0xA44A  0xE5FC  #PRIVATE USE AREA-E5FC
-0xA44B  0xE5FD  #PRIVATE USE AREA-E5FD
-0xA44C  0xE5FE  #PRIVATE USE AREA-E5FE
-0xA44D  0xE5FF  #PRIVATE USE AREA-E5FF
-0xA44E  0xE600  #PRIVATE USE AREA-E600
-0xA44F  0xE601  #PRIVATE USE AREA-E601
-0xA450  0xE602  #PRIVATE USE AREA-E602
-0xA451  0xE603  #PRIVATE USE AREA-E603
-0xA452  0xE604  #PRIVATE USE AREA-E604
-0xA453  0xE605  #PRIVATE USE AREA-E605
-0xA454  0xE606  #PRIVATE USE AREA-E606
-0xA455  0xE607  #PRIVATE USE AREA-E607
-0xA456  0xE608  #PRIVATE USE AREA-E608
-0xA457  0xE609  #PRIVATE USE AREA-E609
-0xA458  0xE60A  #PRIVATE USE AREA-E60A
-0xA459  0xE60B  #PRIVATE USE AREA-E60B
-0xA45A  0xE60C  #PRIVATE USE AREA-E60C
-0xA45B  0xE60D  #PRIVATE USE AREA-E60D
-0xA45C  0xE60E  #PRIVATE USE AREA-E60E
-0xA45D  0xE60F  #PRIVATE USE AREA-E60F
-0xA45E  0xE610  #PRIVATE USE AREA-E610
-0xA45F  0xE611  #PRIVATE USE AREA-E611
-0xA460  0xE612  #PRIVATE USE AREA-E612
-0xA461  0xE613  #PRIVATE USE AREA-E613
-0xA462  0xE614  #PRIVATE USE AREA-E614
-0xA463  0xE615  #PRIVATE USE AREA-E615
-0xA464  0xE616  #PRIVATE USE AREA-E616
-0xA465  0xE617  #PRIVATE USE AREA-E617
-0xA466  0xE618  #PRIVATE USE AREA-E618
-0xA467  0xE619  #PRIVATE USE AREA-E619
-0xA468  0xE61A  #PRIVATE USE AREA-E61A
-0xA469  0xE61B  #PRIVATE USE AREA-E61B
-0xA46A  0xE61C  #PRIVATE USE AREA-E61C
-0xA46B  0xE61D  #PRIVATE USE AREA-E61D
-0xA46C  0xE61E  #PRIVATE USE AREA-E61E
-0xA46D  0xE61F  #PRIVATE USE AREA-E61F
-0xA46E  0xE620  #PRIVATE USE AREA-E620
-0xA46F  0xE621  #PRIVATE USE AREA-E621
-0xA470  0xE622  #PRIVATE USE AREA-E622
-0xA471  0xE623  #PRIVATE USE AREA-E623
-0xA472  0xE624  #PRIVATE USE AREA-E624
-0xA473  0xE625  #PRIVATE USE AREA-E625
-0xA474  0xE626  #PRIVATE USE AREA-E626
-0xA475  0xE627  #PRIVATE USE AREA-E627
-0xA476  0xE628  #PRIVATE USE AREA-E628
-0xA477  0xE629  #PRIVATE USE AREA-E629
-0xA478  0xE62A  #PRIVATE USE AREA-E62A
-0xA479  0xE62B  #PRIVATE USE AREA-E62B
-0xA47A  0xE62C  #PRIVATE USE AREA-E62C
-0xA47B  0xE62D  #PRIVATE USE AREA-E62D
-0xA47C  0xE62E  #PRIVATE USE AREA-E62E
-0xA47D  0xE62F  #PRIVATE USE AREA-E62F
-0xA47E  0xE630  #PRIVATE USE AREA-E630
-0xA480  0xE631  #PRIVATE USE AREA-E631
-0xA481  0xE632  #PRIVATE USE AREA-E632
-0xA482  0xE633  #PRIVATE USE AREA-E633
-0xA483  0xE634  #PRIVATE USE AREA-E634
-0xA484  0xE635  #PRIVATE USE AREA-E635
-0xA485  0xE636  #PRIVATE USE AREA-E636
-0xA486  0xE637  #PRIVATE USE AREA-E637
-0xA487  0xE638  #PRIVATE USE AREA-E638
-0xA488  0xE639  #PRIVATE USE AREA-E639
-0xA489  0xE63A  #PRIVATE USE AREA-E63A
-0xA48A  0xE63B  #PRIVATE USE AREA-E63B
-0xA48B  0xE63C  #PRIVATE USE AREA-E63C
-0xA48C  0xE63D  #PRIVATE USE AREA-E63D
-0xA48D  0xE63E  #PRIVATE USE AREA-E63E
-0xA48E  0xE63F  #PRIVATE USE AREA-E63F
-0xA48F  0xE640  #PRIVATE USE AREA-E640
-0xA490  0xE641  #PRIVATE USE AREA-E641
-0xA491  0xE642  #PRIVATE USE AREA-E642
-0xA492  0xE643  #PRIVATE USE AREA-E643
-0xA493  0xE644  #PRIVATE USE AREA-E644
-0xA494  0xE645  #PRIVATE USE AREA-E645
-0xA495  0xE646  #PRIVATE USE AREA-E646
-0xA496  0xE647  #PRIVATE USE AREA-E647
-0xA497  0xE648  #PRIVATE USE AREA-E648
-0xA498  0xE649  #PRIVATE USE AREA-E649
-0xA499  0xE64A  #PRIVATE USE AREA-E64A
-0xA49A  0xE64B  #PRIVATE USE AREA-E64B
-0xA49B  0xE64C  #PRIVATE USE AREA-E64C
-0xA49C  0xE64D  #PRIVATE USE AREA-E64D
-0xA49D  0xE64E  #PRIVATE USE AREA-E64E
-0xA49E  0xE64F  #PRIVATE USE AREA-E64F
-0xA49F  0xE650  #PRIVATE USE AREA-E650
-0xA4A0  0xE651  #PRIVATE USE AREA-E651
+0xA440  0xE5E6  #PRIVATE USE AREA-E5E6
+0xA441  0xE5E7  #PRIVATE USE AREA-E5E7
+0xA442  0xE5E8  #PRIVATE USE AREA-E5E8
+0xA443  0xE5E9  #PRIVATE USE AREA-E5E9
+0xA444  0xE5EA  #PRIVATE USE AREA-E5EA
+0xA445  0xE5EB  #PRIVATE USE AREA-E5EB
+0xA446  0xE5EC  #PRIVATE USE AREA-E5EC
+0xA447  0xE5ED  #PRIVATE USE AREA-E5ED
+0xA448  0xE5EE  #PRIVATE USE AREA-E5EE
+0xA449  0xE5EF  #PRIVATE USE AREA-E5EF
+0xA44A  0xE5F0  #PRIVATE USE AREA-E5F0
+0xA44B  0xE5F1  #PRIVATE USE AREA-E5F1
+0xA44C  0xE5F2  #PRIVATE USE AREA-E5F2
+0xA44D  0xE5F3  #PRIVATE USE AREA-E5F3
+0xA44E  0xE5F4  #PRIVATE USE AREA-E5F4
+0xA44F  0xE5F5  #PRIVATE USE AREA-E5F5
+0xA450  0xE5F6  #PRIVATE USE AREA-E5F6
+0xA451  0xE5F7  #PRIVATE USE AREA-E5F7
+0xA452  0xE5F8  #PRIVATE USE AREA-E5F8
+0xA453  0xE5F9  #PRIVATE USE AREA-E5F9
+0xA454  0xE5FA  #PRIVATE USE AREA-E5FA
+0xA455  0xE5FB  #PRIVATE USE AREA-E5FB
+0xA456  0xE5FC  #PRIVATE USE AREA-E5FC
+0xA457  0xE5FD  #PRIVATE USE AREA-E5FD
+0xA458  0xE5FE  #PRIVATE USE AREA-E5FE
+0xA459  0xE5FF  #PRIVATE USE AREA-E5FF
+0xA45A  0xE600  #PRIVATE USE AREA-E600
+0xA45B  0xE601  #PRIVATE USE AREA-E601
+0xA45C  0xE602  #PRIVATE USE AREA-E602
+0xA45D  0xE603  #PRIVATE USE AREA-E603
+0xA45E  0xE604  #PRIVATE USE AREA-E604
+0xA45F  0xE605  #PRIVATE USE AREA-E605
+0xA460  0xE606  #PRIVATE USE AREA-E606
+0xA461  0xE607  #PRIVATE USE AREA-E607
+0xA462  0xE608  #PRIVATE USE AREA-E608
+0xA463  0xE609  #PRIVATE USE AREA-E609
+0xA464  0xE60A  #PRIVATE USE AREA-E60A
+0xA465  0xE60B  #PRIVATE USE AREA-E60B
+0xA466  0xE60C  #PRIVATE USE AREA-E60C
+0xA467  0xE60D  #PRIVATE USE AREA-E60D
+0xA468  0xE60E  #PRIVATE USE AREA-E60E
+0xA469  0xE60F  #PRIVATE USE AREA-E60F
+0xA46A  0xE610  #PRIVATE USE AREA-E610
+0xA46B  0xE611  #PRIVATE USE AREA-E611
+0xA46C  0xE612  #PRIVATE USE AREA-E612
+0xA46D  0xE613  #PRIVATE USE AREA-E613
+0xA46E  0xE614  #PRIVATE USE AREA-E614
+0xA46F  0xE615  #PRIVATE USE AREA-E615
+0xA470  0xE616  #PRIVATE USE AREA-E616
+0xA471  0xE617  #PRIVATE USE AREA-E617
+0xA472  0xE618  #PRIVATE USE AREA-E618
+0xA473  0xE619  #PRIVATE USE AREA-E619
+0xA474  0xE61A  #PRIVATE USE AREA-E61A
+0xA475  0xE61B  #PRIVATE USE AREA-E61B
+0xA476  0xE61C  #PRIVATE USE AREA-E61C
+0xA477  0xE61D  #PRIVATE USE AREA-E61D
+0xA478  0xE61E  #PRIVATE USE AREA-E61E
+0xA479  0xE61F  #PRIVATE USE AREA-E61F
+0xA47A  0xE620  #PRIVATE USE AREA-E620
+0xA47B  0xE621  #PRIVATE USE AREA-E621
+0xA47C  0xE622  #PRIVATE USE AREA-E622
+0xA47D  0xE623  #PRIVATE USE AREA-E623
+0xA47E  0xE624  #PRIVATE USE AREA-E624
+0xA480  0xE625  #PRIVATE USE AREA-E625
+0xA481  0xE626  #PRIVATE USE AREA-E626
+0xA482  0xE627  #PRIVATE USE AREA-E627
+0xA483  0xE628  #PRIVATE USE AREA-E628
+0xA484  0xE629  #PRIVATE USE AREA-E629
+0xA485  0xE62A  #PRIVATE USE AREA-E62A
+0xA486  0xE62B  #PRIVATE USE AREA-E62B
+0xA487  0xE62C  #PRIVATE USE AREA-E62C
+0xA488  0xE62D  #PRIVATE USE AREA-E62D
+0xA489  0xE62E  #PRIVATE USE AREA-E62E
+0xA48A  0xE62F  #PRIVATE USE AREA-E62F
+0xA48B  0xE630  #PRIVATE USE AREA-E630
+0xA48C  0xE631  #PRIVATE USE AREA-E631
+0xA48D  0xE632  #PRIVATE USE AREA-E632
+0xA48E  0xE633  #PRIVATE USE AREA-E633
+0xA48F  0xE634  #PRIVATE USE AREA-E634
+0xA490  0xE635  #PRIVATE USE AREA-E635
+0xA491  0xE636  #PRIVATE USE AREA-E636
+0xA492  0xE637  #PRIVATE USE AREA-E637
+0xA493  0xE638  #PRIVATE USE AREA-E638
+0xA494  0xE639  #PRIVATE USE AREA-E639
+0xA495  0xE63A  #PRIVATE USE AREA-E63A
+0xA496  0xE63B  #PRIVATE USE AREA-E63B
+0xA497  0xE63C  #PRIVATE USE AREA-E63C
+0xA498  0xE63D  #PRIVATE USE AREA-E63D
+0xA499  0xE63E  #PRIVATE USE AREA-E63E
+0xA49A  0xE63F  #PRIVATE USE AREA-E63F
+0xA49B  0xE640  #PRIVATE USE AREA-E640
+0xA49C  0xE641  #PRIVATE USE AREA-E641
+0xA49D  0xE642  #PRIVATE USE AREA-E642
+0xA49E  0xE643  #PRIVATE USE AREA-E643
+0xA49F  0xE644  #PRIVATE USE AREA-E644
+0xA4A0  0xE645  #PRIVATE USE AREA-E645
 0xA4A1	0x3041  #HIRAGANA LETTER SMALL A
 0xA4A2	0x3042  #HIRAGANA LETTER A
 0xA4A3	0x3043  #HIRAGANA LETTER SMALL I
@@ -6986,113 +6963,113 @@
 0xA4F1	0x3091  #HIRAGANA LETTER WE
 0xA4F2	0x3092  #HIRAGANA LETTER WO
 0xA4F3	0x3093  #HIRAGANA LETTER N
-0xA4F4  0xE652  #PRIVATE USE AREA-E652
-0xA4F5  0xE653  #PRIVATE USE AREA-E653
-0xA4F6  0xE654  #PRIVATE USE AREA-E654
-0xA4F7  0xE655  #PRIVATE USE AREA-E655
-0xA4F8  0xE656  #PRIVATE USE AREA-E656
-0xA4F9  0xE657  #PRIVATE USE AREA-E657
-0xA4FA  0xE658  #PRIVATE USE AREA-E658
-0xA4FB  0xE659  #PRIVATE USE AREA-E659
-0xA4FC  0xE65A  #PRIVATE USE AREA-E65A
-0xA4FD  0xE65B  #PRIVATE USE AREA-E65B
-0xA4FE  0xE65C  #PRIVATE USE AREA-E65C
-0xA540  0xE65D  #PRIVATE USE AREA-E65D
-0xA541  0xE65E  #PRIVATE USE AREA-E65E
-0xA542  0xE65F  #PRIVATE USE AREA-E65F
-0xA543  0xE660  #PRIVATE USE AREA-E660
-0xA544  0xE661  #PRIVATE USE AREA-E661
-0xA545  0xE662  #PRIVATE USE AREA-E662
-0xA546  0xE663  #PRIVATE USE AREA-E663
-0xA547  0xE664  #PRIVATE USE AREA-E664
-0xA548  0xE665  #PRIVATE USE AREA-E665
-0xA549  0xE666  #PRIVATE USE AREA-E666
-0xA54A  0xE667  #PRIVATE USE AREA-E667
-0xA54B  0xE668  #PRIVATE USE AREA-E668
-0xA54C  0xE669  #PRIVATE USE AREA-E669
-0xA54D  0xE66A  #PRIVATE USE AREA-E66A
-0xA54E  0xE66B  #PRIVATE USE AREA-E66B
-0xA54F  0xE66C  #PRIVATE USE AREA-E66C
-0xA550  0xE66D  #PRIVATE USE AREA-E66D
-0xA551  0xE66E  #PRIVATE USE AREA-E66E
-0xA552  0xE66F  #PRIVATE USE AREA-E66F
-0xA553  0xE670  #PRIVATE USE AREA-E670
-0xA554  0xE671  #PRIVATE USE AREA-E671
-0xA555  0xE672  #PRIVATE USE AREA-E672
-0xA556  0xE673  #PRIVATE USE AREA-E673
-0xA557  0xE674  #PRIVATE USE AREA-E674
-0xA558  0xE675  #PRIVATE USE AREA-E675
-0xA559  0xE676  #PRIVATE USE AREA-E676
-0xA55A  0xE677  #PRIVATE USE AREA-E677
-0xA55B  0xE678  #PRIVATE USE AREA-E678
-0xA55C  0xE679  #PRIVATE USE AREA-E679
-0xA55D  0xE67A  #PRIVATE USE AREA-E67A
-0xA55E  0xE67B  #PRIVATE USE AREA-E67B
-0xA55F  0xE67C  #PRIVATE USE AREA-E67C
-0xA560  0xE67D  #PRIVATE USE AREA-E67D
-0xA561  0xE67E  #PRIVATE USE AREA-E67E
-0xA562  0xE67F  #PRIVATE USE AREA-E67F
-0xA563  0xE680  #PRIVATE USE AREA-E680
-0xA564  0xE681  #PRIVATE USE AREA-E681
-0xA565  0xE682  #PRIVATE USE AREA-E682
-0xA566  0xE683  #PRIVATE USE AREA-E683
-0xA567  0xE684  #PRIVATE USE AREA-E684
-0xA568  0xE685  #PRIVATE USE AREA-E685
-0xA569  0xE686  #PRIVATE USE AREA-E686
-0xA56A  0xE687  #PRIVATE USE AREA-E687
-0xA56B  0xE688  #PRIVATE USE AREA-E688
-0xA56C  0xE689  #PRIVATE USE AREA-E689
-0xA56D  0xE68A  #PRIVATE USE AREA-E68A
-0xA56E  0xE68B  #PRIVATE USE AREA-E68B
-0xA56F  0xE68C  #PRIVATE USE AREA-E68C
-0xA570  0xE68D  #PRIVATE USE AREA-E68D
-0xA571  0xE68E  #PRIVATE USE AREA-E68E
-0xA572  0xE68F  #PRIVATE USE AREA-E68F
-0xA573  0xE690  #PRIVATE USE AREA-E690
-0xA574  0xE691  #PRIVATE USE AREA-E691
-0xA575  0xE692  #PRIVATE USE AREA-E692
-0xA576  0xE693  #PRIVATE USE AREA-E693
-0xA577  0xE694  #PRIVATE USE AREA-E694
-0xA578  0xE695  #PRIVATE USE AREA-E695
-0xA579  0xE696  #PRIVATE USE AREA-E696
-0xA57A  0xE697  #PRIVATE USE AREA-E697
-0xA57B  0xE698  #PRIVATE USE AREA-E698
-0xA57C  0xE699  #PRIVATE USE AREA-E699
-0xA57D  0xE69A  #PRIVATE USE AREA-E69A
-0xA57E  0xE69B  #PRIVATE USE AREA-E69B
-0xA580  0xE69C  #PRIVATE USE AREA-E69C
-0xA581  0xE69D  #PRIVATE USE AREA-E69D
-0xA582  0xE69E  #PRIVATE USE AREA-E69E
-0xA583  0xE69F  #PRIVATE USE AREA-E69F
-0xA584  0xE6A0  #PRIVATE USE AREA-E6A0
-0xA585  0xE6A1  #PRIVATE USE AREA-E6A1
-0xA586  0xE6A2  #PRIVATE USE AREA-E6A2
-0xA587  0xE6A3  #PRIVATE USE AREA-E6A3
-0xA588  0xE6A4  #PRIVATE USE AREA-E6A4
-0xA589  0xE6A5  #PRIVATE USE AREA-E6A5
-0xA58A  0xE6A6  #PRIVATE USE AREA-E6A6
-0xA58B  0xE6A7  #PRIVATE USE AREA-E6A7
-0xA58C  0xE6A8  #PRIVATE USE AREA-E6A8
-0xA58D  0xE6A9  #PRIVATE USE AREA-E6A9
-0xA58E  0xE6AA  #PRIVATE USE AREA-E6AA
-0xA58F  0xE6AB  #PRIVATE USE AREA-E6AB
-0xA590  0xE6AC  #PRIVATE USE AREA-E6AC
-0xA591  0xE6AD  #PRIVATE USE AREA-E6AD
-0xA592  0xE6AE  #PRIVATE USE AREA-E6AE
-0xA593  0xE6AF  #PRIVATE USE AREA-E6AF
-0xA594  0xE6B0  #PRIVATE USE AREA-E6B0
-0xA595  0xE6B1  #PRIVATE USE AREA-E6B1
-0xA596  0xE6B2  #PRIVATE USE AREA-E6B2
-0xA597  0xE6B3  #PRIVATE USE AREA-E6B3
-0xA598  0xE6B4  #PRIVATE USE AREA-E6B4
-0xA599  0xE6B5  #PRIVATE USE AREA-E6B5
-0xA59A  0xE6B6  #PRIVATE USE AREA-E6B6
-0xA59B  0xE6B7  #PRIVATE USE AREA-E6B7
-0xA59C  0xE6B8  #PRIVATE USE AREA-E6B8
-0xA59D  0xE6B9  #PRIVATE USE AREA-E6B9
-0xA59E  0xE6BA  #PRIVATE USE AREA-E6BA
-0xA59F  0xE6BB  #PRIVATE USE AREA-E6BB
-0xA5A0  0xE6BC  #PRIVATE USE AREA-E6BC
+0xA4F4  0xE772  #PRIVATE USE AREA-E772
+0xA4F5  0xE773  #PRIVATE USE AREA-E773
+0xA4F6  0xE774  #PRIVATE USE AREA-E774
+0xA4F7  0xE775  #PRIVATE USE AREA-E775
+0xA4F8  0xE776  #PRIVATE USE AREA-E776
+0xA4F9  0xE777  #PRIVATE USE AREA-E777
+0xA4FA  0xE778  #PRIVATE USE AREA-E778
+0xA4FB  0xE779  #PRIVATE USE AREA-E779
+0xA4FC  0xE77A  #PRIVATE USE AREA-E77A
+0xA4FD  0xE77B  #PRIVATE USE AREA-E77B
+0xA4FE  0xE77C  #PRIVATE USE AREA-E77C
+0xA540  0xE646  #PRIVATE USE AREA-E646
+0xA541  0xE647  #PRIVATE USE AREA-E647
+0xA542  0xE648  #PRIVATE USE AREA-E648
+0xA543  0xE649  #PRIVATE USE AREA-E649
+0xA544  0xE64A  #PRIVATE USE AREA-E64A
+0xA545  0xE64B  #PRIVATE USE AREA-E64B
+0xA546  0xE64C  #PRIVATE USE AREA-E64C
+0xA547  0xE64D  #PRIVATE USE AREA-E64D
+0xA548  0xE64E  #PRIVATE USE AREA-E64E
+0xA549  0xE64F  #PRIVATE USE AREA-E64F
+0xA54A  0xE650  #PRIVATE USE AREA-E650
+0xA54B  0xE651  #PRIVATE USE AREA-E651
+0xA54C  0xE652  #PRIVATE USE AREA-E652
+0xA54D  0xE653  #PRIVATE USE AREA-E653
+0xA54E  0xE654  #PRIVATE USE AREA-E654
+0xA54F  0xE655  #PRIVATE USE AREA-E655
+0xA550  0xE656  #PRIVATE USE AREA-E656
+0xA551  0xE657  #PRIVATE USE AREA-E657
+0xA552  0xE658  #PRIVATE USE AREA-E658
+0xA553  0xE659  #PRIVATE USE AREA-E659
+0xA554  0xE65A  #PRIVATE USE AREA-E65A
+0xA555  0xE65B  #PRIVATE USE AREA-E65B
+0xA556  0xE65C  #PRIVATE USE AREA-E65C
+0xA557  0xE65D  #PRIVATE USE AREA-E65D
+0xA558  0xE65E  #PRIVATE USE AREA-E65E
+0xA559  0xE65F  #PRIVATE USE AREA-E65F
+0xA55A  0xE660  #PRIVATE USE AREA-E660
+0xA55B  0xE661  #PRIVATE USE AREA-E661
+0xA55C  0xE662  #PRIVATE USE AREA-E662
+0xA55D  0xE663  #PRIVATE USE AREA-E663
+0xA55E  0xE664  #PRIVATE USE AREA-E664
+0xA55F  0xE665  #PRIVATE USE AREA-E665
+0xA560  0xE666  #PRIVATE USE AREA-E666
+0xA561  0xE667  #PRIVATE USE AREA-E667
+0xA562  0xE668  #PRIVATE USE AREA-E668
+0xA563  0xE669  #PRIVATE USE AREA-E669
+0xA564  0xE66A  #PRIVATE USE AREA-E66A
+0xA565  0xE66B  #PRIVATE USE AREA-E66B
+0xA566  0xE66C  #PRIVATE USE AREA-E66C
+0xA567  0xE66D  #PRIVATE USE AREA-E66D
+0xA568  0xE66E  #PRIVATE USE AREA-E66E
+0xA569  0xE66F  #PRIVATE USE AREA-E66F
+0xA56A  0xE670  #PRIVATE USE AREA-E670
+0xA56B  0xE671  #PRIVATE USE AREA-E671
+0xA56C  0xE672  #PRIVATE USE AREA-E672
+0xA56D  0xE673  #PRIVATE USE AREA-E673
+0xA56E  0xE674  #PRIVATE USE AREA-E674
+0xA56F  0xE675  #PRIVATE USE AREA-E675
+0xA570  0xE676  #PRIVATE USE AREA-E676
+0xA571  0xE677  #PRIVATE USE AREA-E677
+0xA572  0xE678  #PRIVATE USE AREA-E678
+0xA573  0xE679  #PRIVATE USE AREA-E679
+0xA574  0xE67A  #PRIVATE USE AREA-E67A
+0xA575  0xE67B  #PRIVATE USE AREA-E67B
+0xA576  0xE67C  #PRIVATE USE AREA-E67C
+0xA577  0xE67D  #PRIVATE USE AREA-E67D
+0xA578  0xE67E  #PRIVATE USE AREA-E67E
+0xA579  0xE67F  #PRIVATE USE AREA-E67F
+0xA57A  0xE680  #PRIVATE USE AREA-E680
+0xA57B  0xE681  #PRIVATE USE AREA-E681
+0xA57C  0xE682  #PRIVATE USE AREA-E682
+0xA57D  0xE683  #PRIVATE USE AREA-E683
+0xA57E  0xE684  #PRIVATE USE AREA-E684
+0xA580  0xE685  #PRIVATE USE AREA-E685
+0xA581  0xE686  #PRIVATE USE AREA-E686
+0xA582  0xE687  #PRIVATE USE AREA-E687
+0xA583  0xE688  #PRIVATE USE AREA-E688
+0xA584  0xE689  #PRIVATE USE AREA-E689
+0xA585  0xE68A  #PRIVATE USE AREA-E68A
+0xA586  0xE68B  #PRIVATE USE AREA-E68B
+0xA587  0xE68C  #PRIVATE USE AREA-E68C
+0xA588  0xE68D  #PRIVATE USE AREA-E68D
+0xA589  0xE68E  #PRIVATE USE AREA-E68E
+0xA58A  0xE68F  #PRIVATE USE AREA-E68F
+0xA58B  0xE690  #PRIVATE USE AREA-E690
+0xA58C  0xE691  #PRIVATE USE AREA-E691
+0xA58D  0xE692  #PRIVATE USE AREA-E692
+0xA58E  0xE693  #PRIVATE USE AREA-E693
+0xA58F  0xE694  #PRIVATE USE AREA-E694
+0xA590  0xE695  #PRIVATE USE AREA-E695
+0xA591  0xE696  #PRIVATE USE AREA-E696
+0xA592  0xE697  #PRIVATE USE AREA-E697
+0xA593  0xE698  #PRIVATE USE AREA-E698
+0xA594  0xE699  #PRIVATE USE AREA-E699
+0xA595  0xE69A  #PRIVATE USE AREA-E69A
+0xA596  0xE69B  #PRIVATE USE AREA-E69B
+0xA597  0xE69C  #PRIVATE USE AREA-E69C
+0xA598  0xE69D  #PRIVATE USE AREA-E69D
+0xA599  0xE69E  #PRIVATE USE AREA-E69E
+0xA59A  0xE69F  #PRIVATE USE AREA-E69F
+0xA59B  0xE6A0  #PRIVATE USE AREA-E6A0
+0xA59C  0xE6A1  #PRIVATE USE AREA-E6A1
+0xA59D  0xE6A2  #PRIVATE USE AREA-E6A2
+0xA59E  0xE6A3  #PRIVATE USE AREA-E6A3
+0xA59F  0xE6A4  #PRIVATE USE AREA-E6A4
+0xA5A0  0xE6A5  #PRIVATE USE AREA-E6A5
 0xA5A1	0x30A1  #KATAKANA LETTER SMALL A
 0xA5A2	0x30A2  #KATAKANA LETTER A
 0xA5A3	0x30A3  #KATAKANA LETTER SMALL I
@@ -7179,110 +7156,110 @@
 0xA5F4	0x30F4  #KATAKANA LETTER VU
 0xA5F5	0x30F5  #KATAKANA LETTER SMALL KA
 0xA5F6	0x30F6  #KATAKANA LETTER SMALL KE
-0xA5F7  0xE6BD  #PRIVATE USE AREA-E6BD
-0xA5F8  0xE6BE  #PRIVATE USE AREA-E6BE
-0xA5F9  0xE6BF  #PRIVATE USE AREA-E6BF
-0xA5FA  0xE6C0  #PRIVATE USE AREA-E6C0
-0xA5FB  0xE6C1  #PRIVATE USE AREA-E6C1
-0xA5FC  0xE6C2  #PRIVATE USE AREA-E6C2
-0xA5FD  0xE6C3  #PRIVATE USE AREA-E6C3
-0xA5FE  0xE6C4  #PRIVATE USE AREA-E6C4
-0xA640  0xE6C5  #PRIVATE USE AREA-E6C5
-0xA641  0xE6C6  #PRIVATE USE AREA-E6C6
-0xA642  0xE6C7  #PRIVATE USE AREA-E6C7
-0xA643  0xE6C8  #PRIVATE USE AREA-E6C8
-0xA644  0xE6C9  #PRIVATE USE AREA-E6C9
-0xA645  0xE6CA  #PRIVATE USE AREA-E6CA
-0xA646  0xE6CB  #PRIVATE USE AREA-E6CB
-0xA647  0xE6CC  #PRIVATE USE AREA-E6CC
-0xA648  0xE6CD  #PRIVATE USE AREA-E6CD
-0xA649  0xE6CE  #PRIVATE USE AREA-E6CE
-0xA64A  0xE6CF  #PRIVATE USE AREA-E6CF
-0xA64B  0xE6D0  #PRIVATE USE AREA-E6D0
-0xA64C  0xE6D1  #PRIVATE USE AREA-E6D1
-0xA64D  0xE6D2  #PRIVATE USE AREA-E6D2
-0xA64E  0xE6D3  #PRIVATE USE AREA-E6D3
-0xA64F  0xE6D4  #PRIVATE USE AREA-E6D4
-0xA650  0xE6D5  #PRIVATE USE AREA-E6D5
-0xA651  0xE6D6  #PRIVATE USE AREA-E6D6
-0xA652  0xE6D7  #PRIVATE USE AREA-E6D7
-0xA653  0xE6D8  #PRIVATE USE AREA-E6D8
-0xA654  0xE6D9  #PRIVATE USE AREA-E6D9
-0xA655  0xE6DA  #PRIVATE USE AREA-E6DA
-0xA656  0xE6DB  #PRIVATE USE AREA-E6DB
-0xA657  0xE6DC  #PRIVATE USE AREA-E6DC
-0xA658  0xE6DD  #PRIVATE USE AREA-E6DD
-0xA659  0xE6DE  #PRIVATE USE AREA-E6DE
-0xA65A  0xE6DF  #PRIVATE USE AREA-E6DF
-0xA65B  0xE6E0  #PRIVATE USE AREA-E6E0
-0xA65C  0xE6E1  #PRIVATE USE AREA-E6E1
-0xA65D  0xE6E2  #PRIVATE USE AREA-E6E2
-0xA65E  0xE6E3  #PRIVATE USE AREA-E6E3
-0xA65F  0xE6E4  #PRIVATE USE AREA-E6E4
-0xA660  0xE6E5  #PRIVATE USE AREA-E6E5
-0xA661  0xE6E6  #PRIVATE USE AREA-E6E6
-0xA662  0xE6E7  #PRIVATE USE AREA-E6E7
-0xA663  0xE6E8  #PRIVATE USE AREA-E6E8
-0xA664  0xE6E9  #PRIVATE USE AREA-E6E9
-0xA665  0xE6EA  #PRIVATE USE AREA-E6EA
-0xA666  0xE6EB  #PRIVATE USE AREA-E6EB
-0xA667  0xE6EC  #PRIVATE USE AREA-E6EC
-0xA668  0xE6ED  #PRIVATE USE AREA-E6ED
-0xA669  0xE6EE  #PRIVATE USE AREA-E6EE
-0xA66A  0xE6EF  #PRIVATE USE AREA-E6EF
-0xA66B  0xE6F0  #PRIVATE USE AREA-E6F0
-0xA66C  0xE6F1  #PRIVATE USE AREA-E6F1
-0xA66D  0xE6F2  #PRIVATE USE AREA-E6F2
-0xA66E  0xE6F3  #PRIVATE USE AREA-E6F3
-0xA66F  0xE6F4  #PRIVATE USE AREA-E6F4
-0xA670  0xE6F5  #PRIVATE USE AREA-E6F5
-0xA671  0xE6F6  #PRIVATE USE AREA-E6F6
-0xA672  0xE6F7  #PRIVATE USE AREA-E6F7
-0xA673  0xE6F8  #PRIVATE USE AREA-E6F8
-0xA674  0xE6F9  #PRIVATE USE AREA-E6F9
-0xA675  0xE6FA  #PRIVATE USE AREA-E6FA
-0xA676  0xE6FB  #PRIVATE USE AREA-E6FB
-0xA677  0xE6FC  #PRIVATE USE AREA-E6FC
-0xA678  0xE6FD  #PRIVATE USE AREA-E6FD
-0xA679  0xE6FE  #PRIVATE USE AREA-E6FE
-0xA67A  0xE6FF  #PRIVATE USE AREA-E6FF
-0xA67B  0xE700  #PRIVATE USE AREA-E700
-0xA67C  0xE701  #PRIVATE USE AREA-E701
-0xA67D  0xE702  #PRIVATE USE AREA-E702
-0xA67E  0xE703  #PRIVATE USE AREA-E703
-0xA680  0xE704  #PRIVATE USE AREA-E704
-0xA681  0xE705  #PRIVATE USE AREA-E705
-0xA682  0xE706  #PRIVATE USE AREA-E706
-0xA683  0xE707  #PRIVATE USE AREA-E707
-0xA684  0xE708  #PRIVATE USE AREA-E708
-0xA685  0xE709  #PRIVATE USE AREA-E709
-0xA686  0xE70A  #PRIVATE USE AREA-E70A
-0xA687  0xE70B  #PRIVATE USE AREA-E70B
-0xA688  0xE70C  #PRIVATE USE AREA-E70C
-0xA689  0xE70D  #PRIVATE USE AREA-E70D
-0xA68A  0xE70E  #PRIVATE USE AREA-E70E
-0xA68B  0xE70F  #PRIVATE USE AREA-E70F
-0xA68C  0xE710  #PRIVATE USE AREA-E710
-0xA68D  0xE711  #PRIVATE USE AREA-E711
-0xA68E  0xE712  #PRIVATE USE AREA-E712
-0xA68F  0xE713  #PRIVATE USE AREA-E713
-0xA690  0xE714  #PRIVATE USE AREA-E714
-0xA691  0xE715  #PRIVATE USE AREA-E715
-0xA692  0xE716  #PRIVATE USE AREA-E716
-0xA693  0xE717  #PRIVATE USE AREA-E717
-0xA694  0xE718  #PRIVATE USE AREA-E718
-0xA695  0xE719  #PRIVATE USE AREA-E719
-0xA696  0xE71A  #PRIVATE USE AREA-E71A
-0xA697  0xE71B  #PRIVATE USE AREA-E71B
-0xA698  0xE71C  #PRIVATE USE AREA-E71C
-0xA699  0xE71D  #PRIVATE USE AREA-E71D
-0xA69A  0xE71E  #PRIVATE USE AREA-E71E
-0xA69B  0xE71F  #PRIVATE USE AREA-E71F
-0xA69C  0xE720  #PRIVATE USE AREA-E720
-0xA69D  0xE721  #PRIVATE USE AREA-E721
-0xA69E  0xE722  #PRIVATE USE AREA-E722
-0xA69F  0xE723  #PRIVATE USE AREA-E723
-0xA6A0  0xE724  #PRIVATE USE AREA-E724
+0xA5F7  0xE77D  #PRIVATE USE AREA-E77D
+0xA5F8  0xE77E  #PRIVATE USE AREA-E77E
+0xA5F9  0xE77F  #PRIVATE USE AREA-E77F
+0xA5FA  0xE780  #PRIVATE USE AREA-E780
+0xA5FB  0xE781  #PRIVATE USE AREA-E781
+0xA5FC  0xE782  #PRIVATE USE AREA-E782
+0xA5FD  0xE783  #PRIVATE USE AREA-E783
+0xA5FE  0xE784  #PRIVATE USE AREA-E784
+0xA640  0xE6A6  #PRIVATE USE AREA-E6A6
+0xA641  0xE6A7  #PRIVATE USE AREA-E6A7
+0xA642  0xE6A8  #PRIVATE USE AREA-E6A8
+0xA643  0xE6A9  #PRIVATE USE AREA-E6A9
+0xA644  0xE6AA  #PRIVATE USE AREA-E6AA
+0xA645  0xE6AB  #PRIVATE USE AREA-E6AB
+0xA646  0xE6AC  #PRIVATE USE AREA-E6AC
+0xA647  0xE6AD  #PRIVATE USE AREA-E6AD
+0xA648  0xE6AE  #PRIVATE USE AREA-E6AE
+0xA649  0xE6AF  #PRIVATE USE AREA-E6AF
+0xA64A  0xE6B0  #PRIVATE USE AREA-E6B0
+0xA64B  0xE6B1  #PRIVATE USE AREA-E6B1
+0xA64C  0xE6B2  #PRIVATE USE AREA-E6B2
+0xA64D  0xE6B3  #PRIVATE USE AREA-E6B3
+0xA64E  0xE6B4  #PRIVATE USE AREA-E6B4
+0xA64F  0xE6B5  #PRIVATE USE AREA-E6B5
+0xA650  0xE6B6  #PRIVATE USE AREA-E6B6
+0xA651  0xE6B7  #PRIVATE USE AREA-E6B7
+0xA652  0xE6B8  #PRIVATE USE AREA-E6B8
+0xA653  0xE6B9  #PRIVATE USE AREA-E6B9
+0xA654  0xE6BA  #PRIVATE USE AREA-E6BA
+0xA655  0xE6BB  #PRIVATE USE AREA-E6BB
+0xA656  0xE6BC  #PRIVATE USE AREA-E6BC
+0xA657  0xE6BD  #PRIVATE USE AREA-E6BD
+0xA658  0xE6BE  #PRIVATE USE AREA-E6BE
+0xA659  0xE6BF  #PRIVATE USE AREA-E6BF
+0xA65A  0xE6C0  #PRIVATE USE AREA-E6C0
+0xA65B  0xE6C1  #PRIVATE USE AREA-E6C1
+0xA65C  0xE6C2  #PRIVATE USE AREA-E6C2
+0xA65D  0xE6C3  #PRIVATE USE AREA-E6C3
+0xA65E  0xE6C4  #PRIVATE USE AREA-E6C4
+0xA65F  0xE6C5  #PRIVATE USE AREA-E6C5
+0xA660  0xE6C6  #PRIVATE USE AREA-E6C6
+0xA661  0xE6C7  #PRIVATE USE AREA-E6C7
+0xA662  0xE6C8  #PRIVATE USE AREA-E6C8
+0xA663  0xE6C9  #PRIVATE USE AREA-E6C9
+0xA664  0xE6CA  #PRIVATE USE AREA-E6CA
+0xA665  0xE6CB  #PRIVATE USE AREA-E6CB
+0xA666  0xE6CC  #PRIVATE USE AREA-E6CC
+0xA667  0xE6CD  #PRIVATE USE AREA-E6CD
+0xA668  0xE6CE  #PRIVATE USE AREA-E6CE
+0xA669  0xE6CF  #PRIVATE USE AREA-E6CF
+0xA66A  0xE6D0  #PRIVATE USE AREA-E6D0
+0xA66B  0xE6D1  #PRIVATE USE AREA-E6D1
+0xA66C  0xE6D2  #PRIVATE USE AREA-E6D2
+0xA66D  0xE6D3  #PRIVATE USE AREA-E6D3
+0xA66E  0xE6D4  #PRIVATE USE AREA-E6D4
+0xA66F  0xE6D5  #PRIVATE USE AREA-E6D5
+0xA670  0xE6D6  #PRIVATE USE AREA-E6D6
+0xA671  0xE6D7  #PRIVATE USE AREA-E6D7
+0xA672  0xE6D8  #PRIVATE USE AREA-E6D8
+0xA673  0xE6D9  #PRIVATE USE AREA-E6D9
+0xA674  0xE6DA  #PRIVATE USE AREA-E6DA
+0xA675  0xE6DB  #PRIVATE USE AREA-E6DB
+0xA676  0xE6DC  #PRIVATE USE AREA-E6DC
+0xA677  0xE6DD  #PRIVATE USE AREA-E6DD
+0xA678  0xE6DE  #PRIVATE USE AREA-E6DE
+0xA679  0xE6DF  #PRIVATE USE AREA-E6DF
+0xA67A  0xE6E0  #PRIVATE USE AREA-E6E0
+0xA67B  0xE6E1  #PRIVATE USE AREA-E6E1
+0xA67C  0xE6E2  #PRIVATE USE AREA-E6E2
+0xA67D  0xE6E3  #PRIVATE USE AREA-E6E3
+0xA67E  0xE6E4  #PRIVATE USE AREA-E6E4
+0xA680  0xE6E5  #PRIVATE USE AREA-E6E5
+0xA681  0xE6E6  #PRIVATE USE AREA-E6E6
+0xA682  0xE6E7  #PRIVATE USE AREA-E6E7
+0xA683  0xE6E8  #PRIVATE USE AREA-E6E8
+0xA684  0xE6E9  #PRIVATE USE AREA-E6E9
+0xA685  0xE6EA  #PRIVATE USE AREA-E6EA
+0xA686  0xE6EB  #PRIVATE USE AREA-E6EB
+0xA687  0xE6EC  #PRIVATE USE AREA-E6EC
+0xA688  0xE6ED  #PRIVATE USE AREA-E6ED
+0xA689  0xE6EE  #PRIVATE USE AREA-E6EE
+0xA68A  0xE6EF  #PRIVATE USE AREA-E6EF
+0xA68B  0xE6F0  #PRIVATE USE AREA-E6F0
+0xA68C  0xE6F1  #PRIVATE USE AREA-E6F1
+0xA68D  0xE6F2  #PRIVATE USE AREA-E6F2
+0xA68E  0xE6F3  #PRIVATE USE AREA-E6F3
+0xA68F  0xE6F4  #PRIVATE USE AREA-E6F4
+0xA690  0xE6F5  #PRIVATE USE AREA-E6F5
+0xA691  0xE6F6  #PRIVATE USE AREA-E6F6
+0xA692  0xE6F7  #PRIVATE USE AREA-E6F7
+0xA693  0xE6F8  #PRIVATE USE AREA-E6F8
+0xA694  0xE6F9  #PRIVATE USE AREA-E6F9
+0xA695  0xE6FA  #PRIVATE USE AREA-E6FA
+0xA696  0xE6FB  #PRIVATE USE AREA-E6FB
+0xA697  0xE6FC  #PRIVATE USE AREA-E6FC
+0xA698  0xE6FD  #PRIVATE USE AREA-E6FD
+0xA699  0xE6FE  #PRIVATE USE AREA-E6FE
+0xA69A  0xE6FF  #PRIVATE USE AREA-E6FF
+0xA69B  0xE700  #PRIVATE USE AREA-E700
+0xA69C  0xE701  #PRIVATE USE AREA-E701
+0xA69D  0xE702  #PRIVATE USE AREA-E702
+0xA69E  0xE703  #PRIVATE USE AREA-E703
+0xA69F  0xE704  #PRIVATE USE AREA-E704
+0xA6A0  0xE705  #PRIVATE USE AREA-E705
 0xA6A1	0x0391  #GREEK CAPITAL LETTER ALPHA
 0xA6A2	0x0392  #GREEK CAPITAL LETTER BETA
 0xA6A3	0x0393  #GREEK CAPITAL LETTER GAMMA
@@ -7307,14 +7284,14 @@
 0xA6B6	0x03A7  #GREEK CAPITAL LETTER CHI
 0xA6B7	0x03A8  #GREEK CAPITAL LETTER PSI
 0xA6B8	0x03A9  #GREEK CAPITAL LETTER OMEGA
-0xA6B9  0xE725  #PRIVATE USE AREA-E725
-0xA6BA  0xE726  #PRIVATE USE AREA-E726
-0xA6BB  0xE727  #PRIVATE USE AREA-E727
-0xA6BC  0xE728  #PRIVATE USE AREA-E728
-0xA6BD  0xE729  #PRIVATE USE AREA-E729
-0xA6BE  0xE72A  #PRIVATE USE AREA-E72A
-0xA6BF  0xE72B  #PRIVATE USE AREA-E72B
-0xA6C0  0xE72C  #PRIVATE USE AREA-E72C
+0xA6B9  0xE785  #PRIVATE USE AREA-E785
+0xA6BA  0xE786  #PRIVATE USE AREA-E786
+0xA6BB  0xE787  #PRIVATE USE AREA-E787
+0xA6BC  0xE788  #PRIVATE USE AREA-E788
+0xA6BD  0xE789  #PRIVATE USE AREA-E789
+0xA6BE  0xE78A  #PRIVATE USE AREA-E78A
+0xA6BF  0xE78B  #PRIVATE USE AREA-E78B
+0xA6C0  0xE78C  #PRIVATE USE AREA-E78C
 0xA6C1	0x03B1  #GREEK SMALL LETTER ALPHA
 0xA6C2	0x03B2  #GREEK SMALL LETTER BETA
 0xA6C3	0x03B3  #GREEK SMALL LETTER GAMMA
@@ -7339,13 +7316,13 @@
 0xA6D6	0x03C7  #GREEK SMALL LETTER CHI
 0xA6D7	0x03C8  #GREEK SMALL LETTER PSI
 0xA6D8	0x03C9  #GREEK SMALL LETTER OMEGA
-0xA6D9  0xE72D  #PRIVATE USE AREA-E72D
-0xA6DA  0xE72E  #PRIVATE USE AREA-E72E
-0xA6DB  0xE72F  #PRIVATE USE AREA-E72F
-0xA6DC  0xE730  #PRIVATE USE AREA-E730
-0xA6DD  0xE731  #PRIVATE USE AREA-E731
-0xA6DE  0xE732  #PRIVATE USE AREA-E732
-0xA6DF  0xE733  #PRIVATE USE AREA-E733
+0xA6D9  0xE78D  #PRIVATE USE AREA-E78D
+0xA6DA  0xE78E  #PRIVATE USE AREA-E78E
+0xA6DB  0xE78F  #PRIVATE USE AREA-E78F
+0xA6DC  0xE790  #PRIVATE USE AREA-E790
+0xA6DD  0xE791  #PRIVATE USE AREA-E791
+0xA6DE  0xE792  #PRIVATE USE AREA-E792
+0xA6DF  0xE793  #PRIVATE USE AREA-E793
 0xA6E0	0xFE35  #PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
 0xA6E1	0xFE36  #PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
 0xA6E2	0xFE39  #PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
@@ -7358,121 +7335,121 @@
 0xA6E9	0xFE42  #PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
 0xA6EA	0xFE43  #PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
 0xA6EB	0xFE44  #PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
-0xA6EC  0xE734  #PRIVATE USE AREA-E734
-0xA6ED  0xE735  #PRIVATE USE AREA-E735
+0xA6EC  0xE794  #PRIVATE USE AREA-E794
+0xA6ED  0xE795  #PRIVATE USE AREA-E795
 0xA6EE	0xFE3B  #PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
 0xA6EF	0xFE3C  #PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
 0xA6F0	0xFE37  #PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
 0xA6F1	0xFE38  #PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
 0xA6F2	0xFE31  #PRESENTATION FORM FOR VERTICAL EM DASH
-0xA6F3  0xE736  #PRIVATE USE AREA-E736
+0xA6F3  0xE796  #PRIVATE USE AREA-E796
 0xA6F4	0xFE33  #PRESENTATION FORM FOR VERTICAL LOW LINE
 0xA6F5	0xFE34  #PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
-0xA6F6  0xE737  #PRIVATE USE AREA-E737
-0xA6F7  0xE738  #PRIVATE USE AREA-E738
-0xA6F8  0xE739  #PRIVATE USE AREA-E739
-0xA6F9  0xE73A  #PRIVATE USE AREA-E73A
-0xA6FA  0xE73B  #PRIVATE USE AREA-E73B
-0xA6FB  0xE73C  #PRIVATE USE AREA-E73C
-0xA6FC  0xE73D  #PRIVATE USE AREA-E73D
-0xA6FD  0xE73E  #PRIVATE USE AREA-E73E
-0xA6FE  0xE73F  #PRIVATE USE AREA-E73F
-0xA740  0xE740  #PRIVATE USE AREA-E740
-0xA741  0xE741  #PRIVATE USE AREA-E741
-0xA742  0xE742  #PRIVATE USE AREA-E742
-0xA743  0xE743  #PRIVATE USE AREA-E743
-0xA744  0xE744  #PRIVATE USE AREA-E744
-0xA745  0xE745  #PRIVATE USE AREA-E745
-0xA746  0xE746  #PRIVATE USE AREA-E746
-0xA747  0xE747  #PRIVATE USE AREA-E747
-0xA748  0xE748  #PRIVATE USE AREA-E748
-0xA749  0xE749  #PRIVATE USE AREA-E749
-0xA74A  0xE74A  #PRIVATE USE AREA-E74A
-0xA74B  0xE74B  #PRIVATE USE AREA-E74B
-0xA74C  0xE74C  #PRIVATE USE AREA-E74C
-0xA74D  0xE74D  #PRIVATE USE AREA-E74D
-0xA74E  0xE74E  #PRIVATE USE AREA-E74E
-0xA74F  0xE74F  #PRIVATE USE AREA-E74F
-0xA750  0xE750  #PRIVATE USE AREA-E750
-0xA751  0xE751  #PRIVATE USE AREA-E751
-0xA752  0xE752  #PRIVATE USE AREA-E752
-0xA753  0xE753  #PRIVATE USE AREA-E753
-0xA754  0xE754  #PRIVATE USE AREA-E754
-0xA755  0xE755  #PRIVATE USE AREA-E755
-0xA756  0xE756  #PRIVATE USE AREA-E756
-0xA757  0xE757  #PRIVATE USE AREA-E757
-0xA758  0xE758  #PRIVATE USE AREA-E758
-0xA759  0xE759  #PRIVATE USE AREA-E759
-0xA75A  0xE75A  #PRIVATE USE AREA-E75A
-0xA75B  0xE75B  #PRIVATE USE AREA-E75B
-0xA75C  0xE75C  #PRIVATE USE AREA-E75C
-0xA75D  0xE75D  #PRIVATE USE AREA-E75D
-0xA75E  0xE75E  #PRIVATE USE AREA-E75E
-0xA75F  0xE75F  #PRIVATE USE AREA-E75F
-0xA760  0xE760  #PRIVATE USE AREA-E760
-0xA761  0xE761  #PRIVATE USE AREA-E761
-0xA762  0xE762  #PRIVATE USE AREA-E762
-0xA763  0xE763  #PRIVATE USE AREA-E763
-0xA764  0xE764  #PRIVATE USE AREA-E764
-0xA765  0xE765  #PRIVATE USE AREA-E765
-0xA766  0xE766  #PRIVATE USE AREA-E766
-0xA767  0xE767  #PRIVATE USE AREA-E767
-0xA768  0xE768  #PRIVATE USE AREA-E768
-0xA769  0xE769  #PRIVATE USE AREA-E769
-0xA76A  0xE76A  #PRIVATE USE AREA-E76A
-0xA76B  0xE76B  #PRIVATE USE AREA-E76B
-0xA76C  0xE76C  #PRIVATE USE AREA-E76C
-0xA76D  0xE76D  #PRIVATE USE AREA-E76D
-0xA76E  0xE76E  #PRIVATE USE AREA-E76E
-0xA76F  0xE76F  #PRIVATE USE AREA-E76F
-0xA770  0xE770  #PRIVATE USE AREA-E770
-0xA771  0xE771  #PRIVATE USE AREA-E771
-0xA772  0xE772  #PRIVATE USE AREA-E772
-0xA773  0xE773  #PRIVATE USE AREA-E773
-0xA774  0xE774  #PRIVATE USE AREA-E774
-0xA775  0xE775  #PRIVATE USE AREA-E775
-0xA776  0xE776  #PRIVATE USE AREA-E776
-0xA777  0xE777  #PRIVATE USE AREA-E777
-0xA778  0xE778  #PRIVATE USE AREA-E778
-0xA779  0xE779  #PRIVATE USE AREA-E779
-0xA77A  0xE77A  #PRIVATE USE AREA-E77A
-0xA77B  0xE77B  #PRIVATE USE AREA-E77B
-0xA77C  0xE77C  #PRIVATE USE AREA-E77C
-0xA77D  0xE77D  #PRIVATE USE AREA-E77D
-0xA77E  0xE77E  #PRIVATE USE AREA-E77E
-0xA780  0xE77F  #PRIVATE USE AREA-E77F
-0xA781  0xE780  #PRIVATE USE AREA-E780
-0xA782  0xE781  #PRIVATE USE AREA-E781
-0xA783  0xE782  #PRIVATE USE AREA-E782
-0xA784  0xE783  #PRIVATE USE AREA-E783
-0xA785  0xE784  #PRIVATE USE AREA-E784
-0xA786  0xE785  #PRIVATE USE AREA-E785
-0xA787  0xE786  #PRIVATE USE AREA-E786
-0xA788  0xE787  #PRIVATE USE AREA-E787
-0xA789  0xE788  #PRIVATE USE AREA-E788
-0xA78A  0xE789  #PRIVATE USE AREA-E789
-0xA78B  0xE78A  #PRIVATE USE AREA-E78A
-0xA78C  0xE78B  #PRIVATE USE AREA-E78B
-0xA78D  0xE78C  #PRIVATE USE AREA-E78C
-0xA78E  0xE78D  #PRIVATE USE AREA-E78D
-0xA78F  0xE78E  #PRIVATE USE AREA-E78E
-0xA790  0xE78F  #PRIVATE USE AREA-E78F
-0xA791  0xE790  #PRIVATE USE AREA-E790
-0xA792  0xE791  #PRIVATE USE AREA-E791
-0xA793  0xE792  #PRIVATE USE AREA-E792
-0xA794  0xE793  #PRIVATE USE AREA-E793
-0xA795  0xE794  #PRIVATE USE AREA-E794
-0xA796  0xE795  #PRIVATE USE AREA-E795
-0xA797  0xE796  #PRIVATE USE AREA-E796
-0xA798  0xE797  #PRIVATE USE AREA-E797
-0xA799  0xE798  #PRIVATE USE AREA-E798
-0xA79A  0xE799  #PRIVATE USE AREA-E799
-0xA79B  0xE79A  #PRIVATE USE AREA-E79A
-0xA79C  0xE79B  #PRIVATE USE AREA-E79B
-0xA79D  0xE79C  #PRIVATE USE AREA-E79C
-0xA79E  0xE79D  #PRIVATE USE AREA-E79D
-0xA79F  0xE79E  #PRIVATE USE AREA-E79E
-0xA7A0  0xE79F  #PRIVATE USE AREA-E79F
+0xA6F6  0xE797  #PRIVATE USE AREA-E797
+0xA6F7  0xE798  #PRIVATE USE AREA-E798
+0xA6F8  0xE799  #PRIVATE USE AREA-E799
+0xA6F9  0xE79A  #PRIVATE USE AREA-E79A
+0xA6FA  0xE79B  #PRIVATE USE AREA-E79B
+0xA6FB  0xE79C  #PRIVATE USE AREA-E79C
+0xA6FC  0xE79D  #PRIVATE USE AREA-E79D
+0xA6FD  0xE79E  #PRIVATE USE AREA-E79E
+0xA6FE  0xE79F  #PRIVATE USE AREA-E79F
+0xA740  0xE706  #PRIVATE USE AREA-E706
+0xA741  0xE707  #PRIVATE USE AREA-E707
+0xA742  0xE708  #PRIVATE USE AREA-E708
+0xA743  0xE709  #PRIVATE USE AREA-E709
+0xA744  0xE70A  #PRIVATE USE AREA-E70A
+0xA745  0xE70B  #PRIVATE USE AREA-E70B
+0xA746  0xE70C  #PRIVATE USE AREA-E70C
+0xA747  0xE70D  #PRIVATE USE AREA-E70D
+0xA748  0xE70E  #PRIVATE USE AREA-E70E
+0xA749  0xE70F  #PRIVATE USE AREA-E70F
+0xA74A  0xE710  #PRIVATE USE AREA-E710
+0xA74B  0xE711  #PRIVATE USE AREA-E711
+0xA74C  0xE712  #PRIVATE USE AREA-E712
+0xA74D  0xE713  #PRIVATE USE AREA-E713
+0xA74E  0xE714  #PRIVATE USE AREA-E714
+0xA74F  0xE715  #PRIVATE USE AREA-E715
+0xA750  0xE716  #PRIVATE USE AREA-E716
+0xA751  0xE717  #PRIVATE USE AREA-E717
+0xA752  0xE718  #PRIVATE USE AREA-E718
+0xA753  0xE719  #PRIVATE USE AREA-E719
+0xA754  0xE71A  #PRIVATE USE AREA-E71A
+0xA755  0xE71B  #PRIVATE USE AREA-E71B
+0xA756  0xE71C  #PRIVATE USE AREA-E71C
+0xA757  0xE71D  #PRIVATE USE AREA-E71D
+0xA758  0xE71E  #PRIVATE USE AREA-E71E
+0xA759  0xE71F  #PRIVATE USE AREA-E71F
+0xA75A  0xE720  #PRIVATE USE AREA-E720
+0xA75B  0xE721  #PRIVATE USE AREA-E721
+0xA75C  0xE722  #PRIVATE USE AREA-E722
+0xA75D  0xE723  #PRIVATE USE AREA-E723
+0xA75E  0xE724  #PRIVATE USE AREA-E724
+0xA75F  0xE725  #PRIVATE USE AREA-E725
+0xA760  0xE726  #PRIVATE USE AREA-E726
+0xA761  0xE727  #PRIVATE USE AREA-E727
+0xA762  0xE728  #PRIVATE USE AREA-E728
+0xA763  0xE729  #PRIVATE USE AREA-E729
+0xA764  0xE72A  #PRIVATE USE AREA-E72A
+0xA765  0xE72B  #PRIVATE USE AREA-E72B
+0xA766  0xE72C  #PRIVATE USE AREA-E72C
+0xA767  0xE72D  #PRIVATE USE AREA-E72D
+0xA768  0xE72E  #PRIVATE USE AREA-E72E
+0xA769  0xE72F  #PRIVATE USE AREA-E72F
+0xA76A  0xE730  #PRIVATE USE AREA-E730
+0xA76B  0xE731  #PRIVATE USE AREA-E731
+0xA76C  0xE732  #PRIVATE USE AREA-E732
+0xA76D  0xE733  #PRIVATE USE AREA-E733
+0xA76E  0xE734  #PRIVATE USE AREA-E734
+0xA76F  0xE735  #PRIVATE USE AREA-E735
+0xA770  0xE736  #PRIVATE USE AREA-E736
+0xA771  0xE737  #PRIVATE USE AREA-E737
+0xA772  0xE738  #PRIVATE USE AREA-E738
+0xA773  0xE739  #PRIVATE USE AREA-E739
+0xA774  0xE73A  #PRIVATE USE AREA-E73A
+0xA775  0xE73B  #PRIVATE USE AREA-E73B
+0xA776  0xE73C  #PRIVATE USE AREA-E73C
+0xA777  0xE73D  #PRIVATE USE AREA-E73D
+0xA778  0xE73E  #PRIVATE USE AREA-E73E
+0xA779  0xE73F  #PRIVATE USE AREA-E73F
+0xA77A  0xE740  #PRIVATE USE AREA-E740
+0xA77B  0xE741  #PRIVATE USE AREA-E741
+0xA77C  0xE742  #PRIVATE USE AREA-E742
+0xA77D  0xE743  #PRIVATE USE AREA-E743
+0xA77E  0xE744  #PRIVATE USE AREA-E744
+0xA780  0xE745  #PRIVATE USE AREA-E745
+0xA781  0xE746  #PRIVATE USE AREA-E746
+0xA782  0xE747  #PRIVATE USE AREA-E747
+0xA783  0xE748  #PRIVATE USE AREA-E748
+0xA784  0xE749  #PRIVATE USE AREA-E749
+0xA785  0xE74A  #PRIVATE USE AREA-E74A
+0xA786  0xE74B  #PRIVATE USE AREA-E74B
+0xA787  0xE74C  #PRIVATE USE AREA-E74C
+0xA788  0xE74D  #PRIVATE USE AREA-E74D
+0xA789  0xE74E  #PRIVATE USE AREA-E74E
+0xA78A  0xE74F  #PRIVATE USE AREA-E74F
+0xA78B  0xE750  #PRIVATE USE AREA-E750
+0xA78C  0xE751  #PRIVATE USE AREA-E751
+0xA78D  0xE752  #PRIVATE USE AREA-E752
+0xA78E  0xE753  #PRIVATE USE AREA-E753
+0xA78F  0xE754  #PRIVATE USE AREA-E754
+0xA790  0xE755  #PRIVATE USE AREA-E755
+0xA791  0xE756  #PRIVATE USE AREA-E756
+0xA792  0xE757  #PRIVATE USE AREA-E757
+0xA793  0xE758  #PRIVATE USE AREA-E758
+0xA794  0xE759  #PRIVATE USE AREA-E759
+0xA795  0xE75A  #PRIVATE USE AREA-E75A
+0xA796  0xE75B  #PRIVATE USE AREA-E75B
+0xA797  0xE75C  #PRIVATE USE AREA-E75C
+0xA798  0xE75D  #PRIVATE USE AREA-E75D
+0xA799  0xE75E  #PRIVATE USE AREA-E75E
+0xA79A  0xE75F  #PRIVATE USE AREA-E75F
+0xA79B  0xE760  #PRIVATE USE AREA-E760
+0xA79C  0xE761  #PRIVATE USE AREA-E761
+0xA79D  0xE762  #PRIVATE USE AREA-E762
+0xA79E  0xE763  #PRIVATE USE AREA-E763
+0xA79F  0xE764  #PRIVATE USE AREA-E764
+0xA7A0  0xE765  #PRIVATE USE AREA-E765
 0xA7A1	0x0410  #CYRILLIC CAPITAL LETTER A
 0xA7A2	0x0411  #CYRILLIC CAPITAL LETTER BE
 0xA7A3	0x0412  #CYRILLIC CAPITAL LETTER VE
--- a/make/tools/src/build/tools/javazic/Rule.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/make/tools/src/build/tools/javazic/Rule.java	Tue Jun 25 17:20:25 2013 -0700
@@ -119,7 +119,7 @@
                                                 r1.getDay(), r1.getTime().getTime());
                     long t2 = Time.getLocalTime(y, r2.getMonth(),
                                                 r2.getDay(), r2.getTime().getTime());
-                    return (int)(t1 - t2);
+                    return (t1 > t2) ? 1 : (t1 < t2) ? -1 : 0;
                 }
                 public boolean equals(Object o) {
                     return this == o;
--- a/src/macosx/bin/java_md_macosx.c	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/bin/java_md_macosx.c	Tue Jun 25 17:20:25 2013 -0700
@@ -44,7 +44,6 @@
 #include <Cocoa/Cocoa.h>
 #include <objc/objc-runtime.h>
 #include <objc/objc-auto.h>
-#include <dispatch/dispatch.h>
 
 #include <errno.h>
 #include <spawn.h>
@@ -1001,6 +1000,32 @@
     setenv(envVar, "1", 1);
 }
 
+/* This class is made for performSelectorOnMainThread when java main
+ * should be launched on main thread.
+ * We cannot use dispatch_sync here, because it blocks the main dispatch queue
+ * which is used inside Cocoa
+ */
+@interface JavaLaunchHelper : NSObject {
+    int _returnValue;
+}
+- (void) launchJava:(NSValue*)argsValue;
+- (int) getReturnValue;
+@end
+
+@implementation JavaLaunchHelper
+
+- (void) launchJava:(NSValue*)argsValue
+{
+    _returnValue = JavaMain([argsValue pointerValue]);
+}
+
+- (int) getReturnValue
+{
+    return _returnValue;
+}
+
+@end
+
 // MacOSX we may continue in the same thread
 int
 JVMInit(InvocationFunctions* ifn, jlong threadStackSize,
@@ -1010,16 +1035,22 @@
         JLI_TraceLauncher("In same thread\n");
         // need to block this thread against the main thread
         // so signals get caught correctly
-        __block int rslt;
-        dispatch_sync(dispatch_get_main_queue(), ^(void) {
-            JavaMainArgs args;
-            args.argc = argc;
-            args.argv = argv;
-            args.mode = mode;
-            args.what = what;
-            args.ifn  = *ifn;
-            rslt = JavaMain((void*)&args);
-        });
+        JavaMainArgs args;
+        args.argc = argc;
+        args.argv = argv;
+        args.mode = mode;
+        args.what = what;
+        args.ifn  = *ifn;
+        int rslt;
+        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+        {
+            JavaLaunchHelper* launcher = [[[JavaLaunchHelper alloc] init] autorelease];
+            [launcher performSelectorOnMainThread:@selector(launchJava:)
+                                       withObject:[NSValue valueWithPointer:(void*)&args]
+                                    waitUntilDone:YES];
+            rslt = [launcher getReturnValue];
+        }
+        [pool drain];
         return rslt;
     } else {
         return ContinueInNewThread(ifn, threadStackSize, argc, argv, mode, what, ret);
--- a/src/macosx/classes/com/apple/laf/AquaButtonBorder.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/com/apple/laf/AquaButtonBorder.java	Tue Jun 25 17:20:25 2013 -0700
@@ -83,14 +83,19 @@
         painter.state.set(state);
         painter.state.set((state != State.DISABLED && state != State.INACTIVE) && b.isFocusPainted() && isFocused(b) ? Focused.YES : Focused.NO);
 
+        // Full border size of the component.
+        // g.setColor(new Color(0, 255, 0, 70));
+        // g.drawRect(x, y, width - 1, height - 1);
+
         final Insets subInsets = sizeVariant.insets;
         x += subInsets.left;
         y += subInsets.top;
         width -= (subInsets.left + subInsets.right);
         height -= (subInsets.top + subInsets.bottom);
 
-//        g.setColor(Color.magenta);
-//        g.drawRect(x, y, width - 1, height - 1);
+        // Where the native border should start to paint.
+        // g.setColor(new Color(255, 0, 255, 70));
+        // g.drawRect(x, y, width - 1, height - 1);
 
         doButtonPaint(b, model, g, x, y, width, height);
     }
--- a/src/macosx/classes/com/apple/laf/AquaButtonExtendedTypes.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/com/apple/laf/AquaButtonExtendedTypes.java	Tue Jun 25 17:20:25 2013 -0700
@@ -184,30 +184,30 @@
             new BorderDefinedTypeSpecifier("round", Widget.BUTTON_ROUND, new SizeVariant().alterInsets(2, 0, 0, 0).alterMinSize(28, 28), -3, -3, -3, -3),
             new BorderDefinedTypeSpecifier("texturedRound", Widget.BUTTON_ROUND_INSET, new SizeVariant().alterInsets(0, 0, 0, 0).alterMinSize(26, 26), -2, -2, 0, 0),
 
-            new SegmentedBorderDefinedTypeSpecifier("segmented-first", Widget.BUTTON_SEGMENTED, SegmentPosition.FIRST, new SizeVariant().alterMargins(6, 16, 6, 10).alterInsets(5, 3, 5, 0).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmented-middle", Widget.BUTTON_SEGMENTED, SegmentPosition.MIDDLE, new SizeVariant().alterMargins(6, 9, 6, 10).alterInsets(5, 0, 5, 0).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmented-last", Widget.BUTTON_SEGMENTED, SegmentPosition.LAST, new SizeVariant().alterMargins(6, 9, 6, 16).alterInsets(5, 0, 5, 3).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmented-only", Widget.BUTTON_SEGMENTED, SegmentPosition.ONLY, new SizeVariant().alterMargins(6, 16, 6, 16).alterInsets(5, 3, 5, 3).alterMinSize(34, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmented-first", Widget.BUTTON_SEGMENTED, SegmentPosition.FIRST, new SizeVariant().alterMargins(6, 16, 6, 10).alterInsets(2, 3, 2, 0).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmented-middle", Widget.BUTTON_SEGMENTED, SegmentPosition.MIDDLE, new SizeVariant().alterMargins(6, 9, 6, 10).alterInsets(2, 0, 2, 0).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmented-last", Widget.BUTTON_SEGMENTED, SegmentPosition.LAST, new SizeVariant().alterMargins(6, 9, 6, 16).alterInsets(2, 0, 2, 3).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmented-only", Widget.BUTTON_SEGMENTED, SegmentPosition.ONLY, new SizeVariant().alterMargins(6, 16, 6, 16).alterInsets(2, 3, 2, 3).alterMinSize(34, 28), 0, -3, 0, -3),
 
-            new SegmentedBorderDefinedTypeSpecifier("segmentedRoundRect-first", Widget.BUTTON_SEGMENTED_INSET, SegmentPosition.FIRST, new SizeVariant().alterMargins(6, 12, 6, 8).alterInsets(5, 2, 5, 0).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedRoundRect-middle", Widget.BUTTON_SEGMENTED_INSET, SegmentPosition.MIDDLE, new SizeVariant().alterMargins(6, 8, 6, 8).alterInsets(5, 0, 5, 0).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedRoundRect-last", Widget.BUTTON_SEGMENTED_INSET, SegmentPosition.LAST, new SizeVariant().alterMargins(6, 8, 6, 12).alterInsets(5, 0, 5, 2).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedRoundRect-only", Widget.BUTTON_SEGMENTED_INSET, SegmentPosition.ONLY, new SizeVariant().alterMargins(6, 12, 6, 12).alterInsets(5, 2, 5, 2).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedRoundRect-first", Widget.BUTTON_SEGMENTED_INSET, SegmentPosition.FIRST, new SizeVariant().alterMargins(6, 12, 6, 8).alterInsets(2, 2, 2, 0).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedRoundRect-middle", Widget.BUTTON_SEGMENTED_INSET, SegmentPosition.MIDDLE, new SizeVariant().alterMargins(6, 8, 6, 8).alterInsets(2, 0, 2, 0).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedRoundRect-last", Widget.BUTTON_SEGMENTED_INSET, SegmentPosition.LAST, new SizeVariant().alterMargins(6, 8, 6, 12).alterInsets(2, 0, 2, 2).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedRoundRect-only", Widget.BUTTON_SEGMENTED_INSET, SegmentPosition.ONLY, new SizeVariant().alterMargins(6, 12, 6, 12).alterInsets(2, 2, 2, 2).alterMinSize(0, 28), 0, -3, 0, -3),
 
-            new SegmentedBorderDefinedTypeSpecifier("segmentedTexturedRounded-first", Widget.BUTTON_SEGMENTED_SCURVE, SegmentPosition.FIRST, new SizeVariant().alterMargins(6, 12, 6, 8).alterInsets(5, 2, 5, 0).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedTexturedRounded-middle", Widget.BUTTON_SEGMENTED_SCURVE, SegmentPosition.MIDDLE, new SizeVariant().alterMargins(6, 8, 6, 8).alterInsets(5, 0, 5, 0).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedTexturedRounded-last", Widget.BUTTON_SEGMENTED_SCURVE, SegmentPosition.LAST, new SizeVariant().alterMargins(6, 8, 6, 12).alterInsets(5, 0, 5, 2).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedTexturedRounded-only", Widget.BUTTON_SEGMENTED_SCURVE, SegmentPosition.ONLY, new SizeVariant().alterMargins(6, 12, 6, 12).alterInsets(5, 2, 5, 2).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedTexturedRounded-first", Widget.BUTTON_SEGMENTED_SCURVE, SegmentPosition.FIRST, new SizeVariant().alterMargins(6, 12, 6, 8).alterInsets(2, 2, 2, 0).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedTexturedRounded-middle", Widget.BUTTON_SEGMENTED_SCURVE, SegmentPosition.MIDDLE, new SizeVariant().alterMargins(6, 8, 6, 8).alterInsets(2, 0, 2, 0).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedTexturedRounded-last", Widget.BUTTON_SEGMENTED_SCURVE, SegmentPosition.LAST, new SizeVariant().alterMargins(6, 8, 6, 12).alterInsets(2, 0, 2, 2).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedTexturedRounded-only", Widget.BUTTON_SEGMENTED_SCURVE, SegmentPosition.ONLY, new SizeVariant().alterMargins(6, 12, 6, 12).alterInsets(2, 2, 2, 2).alterMinSize(0, 28), 0, -3, 0, -3),
 
-            new SegmentedBorderDefinedTypeSpecifier("segmentedTextured-first", Widget.BUTTON_SEGMENTED_TEXTURED, SegmentPosition.FIRST, new SizeVariant().alterMargins(6, 12, 6, 8).alterInsets(6, 3, 6, 0).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedTextured-middle", Widget.BUTTON_SEGMENTED_TEXTURED, SegmentPosition.MIDDLE, new SizeVariant().alterMargins(6, 8, 6, 8).alterInsets(6, 0, 6, 0).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedTextured-last", Widget.BUTTON_SEGMENTED_TEXTURED, SegmentPosition.LAST, new SizeVariant().alterMargins(6, 8, 6, 12).alterInsets(6, 0, 6, 3).alterMinSize(0, 28), 0, -3, 0, -3),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedTextured-only", Widget.BUTTON_SEGMENTED_TEXTURED, SegmentPosition.ONLY, new SizeVariant().alterMargins(6, 12, 6, 12).alterInsets(6, 3, 6, 3).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedTextured-first", Widget.BUTTON_SEGMENTED_TEXTURED, SegmentPosition.FIRST, new SizeVariant().alterMargins(6, 12, 6, 8).alterInsets(2, 3, 2, 0).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedTextured-middle", Widget.BUTTON_SEGMENTED_TEXTURED, SegmentPosition.MIDDLE, new SizeVariant().alterMargins(6, 8, 6, 8).alterInsets(2, 0, 2, 0).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedTextured-last", Widget.BUTTON_SEGMENTED_TEXTURED, SegmentPosition.LAST, new SizeVariant().alterMargins(6, 8, 6, 12).alterInsets(2, 0, 2, 3).alterMinSize(0, 28), 0, -3, 0, -3),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedTextured-only", Widget.BUTTON_SEGMENTED_TEXTURED, SegmentPosition.ONLY, new SizeVariant().alterMargins(6, 12, 6, 12).alterInsets(2, 3, 2, 3).alterMinSize(0, 28), 0, -3, 0, -3),
 
-            new SegmentedBorderDefinedTypeSpecifier("segmentedCapsule-first", Widget.BUTTON_SEGMENTED_TOOLBAR, SegmentPosition.FIRST, new SizeVariant().alterMargins(6, 12, 6, 8).alterInsets(5, 2, 5, 0).alterMinSize(0, 28), 0, 0, 0, 0),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedCapsule-middle", Widget.BUTTON_SEGMENTED_TOOLBAR, SegmentPosition.MIDDLE, new SizeVariant().alterMargins(6, 8, 6, 8).alterInsets(5, 0, 5, 0).alterMinSize(0, 28), 0, 0, 0, 0),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedCapsule-last", Widget.BUTTON_SEGMENTED_TOOLBAR, SegmentPosition.LAST, new SizeVariant().alterMargins(6, 8, 6, 12).alterInsets(5, 0, 5, 2).alterMinSize(0, 28), 0, 0, 0, 0),
-            new SegmentedBorderDefinedTypeSpecifier("segmentedCapsule-only", Widget.BUTTON_SEGMENTED_TOOLBAR, SegmentPosition.ONLY, new SizeVariant().alterMargins(6, 12, 6, 12).alterInsets(5, 2, 5, 2).alterMinSize(34, 28), 0, 0, 0, 0),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedCapsule-first", Widget.BUTTON_SEGMENTED_TOOLBAR, SegmentPosition.FIRST, new SizeVariant().alterMargins(6, 12, 6, 8).alterInsets(2, 2, 2, 0).alterMinSize(0, 28), 0, 0, 0, 0),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedCapsule-middle", Widget.BUTTON_SEGMENTED_TOOLBAR, SegmentPosition.MIDDLE, new SizeVariant().alterMargins(6, 8, 6, 8).alterInsets(2, 0, 2, 0).alterMinSize(0, 28), 0, 0, 0, 0),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedCapsule-last", Widget.BUTTON_SEGMENTED_TOOLBAR, SegmentPosition.LAST, new SizeVariant().alterMargins(6, 8, 6, 12).alterInsets(2, 0, 2, 2).alterMinSize(0, 28), 0, 0, 0, 0),
+            new SegmentedBorderDefinedTypeSpecifier("segmentedCapsule-only", Widget.BUTTON_SEGMENTED_TOOLBAR, SegmentPosition.ONLY, new SizeVariant().alterMargins(6, 12, 6, 12).alterInsets(2, 2, 2, 2).alterMinSize(34, 28), 0, 0, 0, 0),
 
             new BorderDefinedTypeSpecifier("segmentedGradient-first", Widget.BUTTON_BEVEL_INSET, new SizeVariant(18, 18).alterMargins(4, 5, 4, 5).replaceInsets(new Insets(-2,-0,-2,-0))),
             new BorderDefinedTypeSpecifier("segmentedGradient-middle", Widget.BUTTON_BEVEL_INSET, new SizeVariant(18, 18).alterMargins(4, 5, 4, 5).replaceInsets(new Insets(-2,-1,-2,-0))),
--- a/src/macosx/classes/com/apple/laf/AquaComboBoxUI.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/com/apple/laf/AquaComboBoxUI.java	Tue Jun 25 17:20:25 2013 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
  * 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,7 +34,6 @@
 import javax.swing.event.*;
 import javax.swing.plaf.*;
 import javax.swing.plaf.basic.*;
-import com.apple.laf.ClientPropertyApplicator;
 import com.apple.laf.ClientPropertyApplicator.Property;
 import apple.laf.JRSUIConstants.Size;
 
@@ -142,35 +141,46 @@
         return new AquaComboBoxEditor();
     }
 
-    class AquaComboBoxEditor extends BasicComboBoxEditor implements UIResource, DocumentListener {
-        protected AquaComboBoxEditor() {
+    final class AquaComboBoxEditor extends BasicComboBoxEditor
+            implements UIResource, DocumentListener {
+
+        AquaComboBoxEditor() {
             super();
             editor = new AquaCustomComboTextField();
             editor.addFocusListener(this);
             editor.getDocument().addDocumentListener(this);
         }
 
+        @Override
         public void focusGained(final FocusEvent e) {
-            arrowButton.repaint();
+            if (arrowButton != null) {
+                arrowButton.repaint();
+            }
         }
 
+        @Override
         public void focusLost(final FocusEvent e) {
-            arrowButton.repaint();
+            if (arrowButton != null) {
+                arrowButton.repaint();
+            }
         }
 
+        @Override
         public void changedUpdate(final DocumentEvent e) {
             editorTextChanged();
         }
 
+        @Override
         public void insertUpdate(final DocumentEvent e) {
             editorTextChanged();
         }
 
+        @Override
         public void removeUpdate(final DocumentEvent e) {
             editorTextChanged();
         }
 
-        protected void editorTextChanged() {
+        private void editorTextChanged() {
             if (!popup.isVisible()) return;
 
             final Object text = editor.getText();
--- a/src/macosx/classes/com/apple/laf/AquaPainter.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/com/apple/laf/AquaPainter.java	Tue Jun 25 17:20:25 2013 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
  * 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,20 +37,19 @@
 import sun.java2d.*;
 import sun.print.*;
 import apple.laf.*;
-import apple.laf.JRSUIConstants.Widget;
 import apple.laf.JRSUIUtils.NineSliceMetricsProvider;
 
 abstract class AquaPainter <T extends JRSUIState> {
     static <T extends JRSUIState> AquaPainter<T> create(final T state) {
-        return new AquaSingleImagePainter<T>(state);
+        return new AquaSingleImagePainter<>(state);
     }
 
     static <T extends JRSUIState> AquaPainter<T> create(final T state, final int minWidth, final int minHeight, final int westCut, final int eastCut, final int northCut, final int southCut) {
-        return AquaPainter.create(state, minWidth, minHeight, westCut, eastCut, northCut, southCut, true);
+        return create(state, minWidth, minHeight, westCut, eastCut, northCut, southCut, true);
     }
 
     static <T extends JRSUIState> AquaPainter<T> create(final T state, final int minWidth, final int minHeight, final int westCut, final int eastCut, final int northCut, final int southCut, final boolean useMiddle) {
-        return AquaPainter.create(state, minWidth, minHeight, westCut, eastCut, northCut, southCut, useMiddle, true, true);
+        return create(state, minWidth, minHeight, westCut, eastCut, northCut, southCut, useMiddle, true, true);
     }
 
     static <T extends JRSUIState> AquaPainter<T> create(final T state, final int minWidth, final int minHeight, final int westCut, final int eastCut, final int northCut, final int southCut, final boolean useMiddle, final boolean stretchHorizontally, final boolean stretchVertically) {
@@ -63,51 +62,54 @@
     }
 
     static <T extends JRSUIState> AquaPainter<T> create(final T state, final NineSliceMetricsProvider metricsProvider) {
-        return new AquaNineSlicingImagePainter<T>(state, metricsProvider);
+        return new AquaNineSlicingImagePainter<>(state, metricsProvider);
     }
 
-    abstract void paint(final Graphics2D g, final T stateToPaint, final Component c);
+    abstract void paint(Graphics2D g, T stateToPaint);
 
     final Rectangle boundsRect = new Rectangle();
     final JRSUIControl control;
     T state;
-    public AquaPainter(final JRSUIControl control, final T state) {
+    AquaPainter(final JRSUIControl control, final T state) {
         this.control = control;
         this.state = state;
     }
 
-    JRSUIControl getControl() {
-        control.set(state = (T)state.derive());
+    final JRSUIControl getControl() {
+        control.set(state = state.derive());
         return control;
     }
 
-    void paint(final Graphics g, final Component c, final int x, final int y, final int w, final int h) {
+    final void paint(final Graphics g, final Component c, final int x,
+                     final int y, final int w, final int h) {
         boundsRect.setBounds(x, y, w, h);
 
-        final T nextState = (T)state.derive();
+        final T nextState = state.derive();
         final Graphics2D g2d = getGraphics2D(g);
-        if (g2d != null) paint(g2d, nextState, c);
+        if (g2d != null) paint(g2d, nextState);
         state = nextState;
     }
 
-    static class AquaNineSlicingImagePainter<T extends JRSUIState> extends AquaPainter<T> {
-        protected final HashMap<T, RecyclableJRSUISlicedImageControl> slicedControlImages;
-        protected final NineSliceMetricsProvider metricsProvider;
+    private static class AquaNineSlicingImagePainter<T extends JRSUIState>
+            extends AquaPainter<T> {
 
-        public AquaNineSlicingImagePainter(final T state) {
+        private final HashMap<T, RecyclableJRSUISlicedImageControl> slicedControlImages;
+        private final NineSliceMetricsProvider metricsProvider;
+
+        AquaNineSlicingImagePainter(final T state) {
             this(state, null);
         }
 
-        public AquaNineSlicingImagePainter(final T state, final NineSliceMetricsProvider metricsProvider) {
+        AquaNineSlicingImagePainter(final T state, final NineSliceMetricsProvider metricsProvider) {
             super(new JRSUIControl(false), state);
             this.metricsProvider = metricsProvider;
-            slicedControlImages = new HashMap<T, RecyclableJRSUISlicedImageControl>();
+            slicedControlImages = new HashMap<>();
         }
 
         @Override
-        void paint(final Graphics2D g, final T stateToPaint, final Component c) {
+        void paint(final Graphics2D g, final T stateToPaint) {
             if (metricsProvider == null) {
-                AquaSingleImagePainter.paintFromSingleCachedImage(g, control, stateToPaint, c, boundsRect);
+                AquaSingleImagePainter.paintFromSingleCachedImage(g, control, stateToPaint, boundsRect);
                 return;
             }
 
@@ -115,7 +117,7 @@
             if (slicesRef == null) {
                 final NineSliceMetrics metrics = metricsProvider.getNineSliceMetricsForState(stateToPaint);
                 if (metrics == null) {
-                    AquaSingleImagePainter.paintFromSingleCachedImage(g, control, stateToPaint, c, boundsRect);
+                    AquaSingleImagePainter.paintFromSingleCachedImage(g, control, stateToPaint, boundsRect);
                     return;
                 }
                 slicesRef = new RecyclableJRSUISlicedImageControl(control, stateToPaint, metrics);
@@ -126,54 +128,57 @@
         }
     }
 
-    static class AquaSingleImagePainter<T extends JRSUIState> extends AquaPainter<T> {
-        public AquaSingleImagePainter(final T state) {
+    private static final class AquaSingleImagePainter<T extends JRSUIState>
+            extends AquaPainter<T> {
+
+        AquaSingleImagePainter(final T state) {
             super(new JRSUIControl(false), state);
         }
 
         @Override
-        void paint(Graphics2D g, T stateToPaint, Component c) {
-            paintFromSingleCachedImage(g, control, stateToPaint, c, boundsRect);
+        void paint(final Graphics2D g, final T stateToPaint) {
+            paintFromSingleCachedImage(g, control, stateToPaint, boundsRect);
         }
 
-        static void paintFromSingleCachedImage(final Graphics2D g, final JRSUIControl control, final JRSUIState controlState, final Component c, final Rectangle boundsRect) {
-            Rectangle clipRect = g.getClipBounds();
-            Rectangle intersection = boundsRect.intersection(clipRect);
-            if (intersection.width <= 0 || intersection.height <= 0) return;
-
-            int imgX1 = intersection.x - boundsRect.x;
-            int imgY1 = intersection.y - boundsRect.y;
-
-            final GraphicsConfiguration config = g.getDeviceConfiguration();
-            final ImageCache cache = ImageCache.getInstance();
-            BufferedImage image = (BufferedImage)cache.getImage(config, boundsRect.width, boundsRect.height, controlState);
-            if (image == null) {
-                image = new BufferedImage(boundsRect.width, boundsRect.height, BufferedImage.TYPE_INT_ARGB_PRE);
-                cache.setImage(image, config, boundsRect.width, boundsRect.height, controlState);
-            } else {
-                g.drawImage(image, intersection.x, intersection.y, intersection.x + intersection.width, intersection.y + intersection.height,
-                        imgX1, imgY1, imgX1 + intersection.width, imgY1 + intersection.height, null);
+        static void paintFromSingleCachedImage(final Graphics2D g,
+                final JRSUIControl control, final JRSUIState controlState,
+                final Rectangle bounds) {
+            if (bounds.width <= 0 || bounds.height <= 0) {
                 return;
             }
 
-            final WritableRaster raster = image.getRaster();
-            final DataBufferInt buffer = (DataBufferInt)raster.getDataBuffer();
+            int scale = 1;
+            if (g instanceof SunGraphics2D) {
+                scale = ((SunGraphics2D) g).surfaceData.getDefaultScale();
+            }
+            final GraphicsConfiguration config = g.getDeviceConfiguration();
+            final ImageCache cache = ImageCache.getInstance();
+            final int imgW = bounds.width * scale;
+            final int imgH = bounds.height * scale;
+            BufferedImage img = (BufferedImage) cache.getImage(config, imgW, imgH, scale, controlState);
+            if (img == null) {
+                img = new BufferedImage(imgW, imgH, BufferedImage.TYPE_INT_ARGB_PRE);
+                cache.setImage(img, config, imgW, imgH, scale, controlState);
+                final WritableRaster raster = img.getRaster();
+                final DataBufferInt buffer = (DataBufferInt) raster.getDataBuffer();
 
-            control.set(controlState);
-            control.paint(SunWritableRaster.stealData(buffer, 0),
-                    image.getWidth(), image.getHeight(), 0, 0, boundsRect.width, boundsRect.height);
-            SunWritableRaster.markDirty(buffer);
+                control.set(controlState);
+                control.paint(SunWritableRaster.stealData(buffer, 0),
+                        imgW, imgH, 0, 0, bounds.width, bounds.height);
+                SunWritableRaster.markDirty(buffer);
+            }
 
-            g.drawImage(image, intersection.x, intersection.y, intersection.x + intersection.width, intersection.y + intersection.height,
-                    imgX1, imgY1, imgX1 + intersection.width, imgY1 + intersection.height, null);
+            g.drawImage(img, bounds.x, bounds.y, bounds.width, bounds.height, null);
         }
     }
 
-    static class RecyclableJRSUISlicedImageControl extends RecyclableSlicedImageControl {
-        final JRSUIControl control;
-        final JRSUIState state;
+    private static class RecyclableJRSUISlicedImageControl
+            extends RecyclableSlicedImageControl {
 
-        public RecyclableJRSUISlicedImageControl(final JRSUIControl control, final JRSUIState state, final NineSliceMetrics metrics) {
+        private final JRSUIControl control;
+        private final JRSUIState state;
+
+        RecyclableJRSUISlicedImageControl(final JRSUIControl control, final JRSUIState state, final NineSliceMetrics metrics) {
             super(metrics);
             this.control = control;
             this.state = state;
@@ -195,17 +200,19 @@
         }
     }
 
-    protected Graphics2D getGraphics2D(final Graphics g) {
+    private Graphics2D getGraphics2D(final Graphics g) {
         try {
             return (SunGraphics2D)g; // doing a blind try is faster than checking instanceof
-        } catch (Exception e) {
+        } catch (Exception ignored) {
             if (g instanceof PeekGraphics) {
                 // if it is a peek just dirty the region
                 g.fillRect(boundsRect.x, boundsRect.y, boundsRect.width, boundsRect.height);
             } else if (g instanceof ProxyGraphics2D) {
                 final ProxyGraphics2D pg = (ProxyGraphics2D)g;
                 final Graphics2D g2d = pg.getDelegate();
-                if (g2d instanceof SunGraphics2D) { return (SunGraphics2D)g2d; }
+                if (g2d instanceof SunGraphics2D) {
+                    return g2d;
+                }
             } else if (g instanceof Graphics2D) {
                 return (Graphics2D) g;
             }
--- a/src/macosx/classes/com/apple/laf/AquaPanelUI.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/com/apple/laf/AquaPanelUI.java	Tue Jun 25 17:20:25 2013 -0700
@@ -32,10 +32,20 @@
 import com.apple.laf.AquaUtils.RecyclableSingleton;
 import com.apple.laf.AquaUtils.RecyclableSingletonFromDefaultConstructor;
 
+import java.awt.Graphics;
+
 public class AquaPanelUI extends BasicPanelUI {
     static RecyclableSingleton<AquaPanelUI> instance = new RecyclableSingletonFromDefaultConstructor<AquaPanelUI>(AquaPanelUI.class);
 
     public static ComponentUI createUI(final JComponent c) {
         return instance.get();
     }
+
+    @Override
+    public final void update(final Graphics g, final JComponent c) {
+        if (c.isOpaque()) {
+            AquaUtils.fillRect(g, c);
+        }
+        paint(g, c);
+    }
 }
--- a/src/macosx/classes/com/apple/laf/AquaRootPaneUI.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/com/apple/laf/AquaRootPaneUI.java	Tue Jun 25 17:20:25 2013 -0700
@@ -319,4 +319,12 @@
             updateComponentTreeUIActivation(element, active);
         }
     }
+
+    @Override
+    public final void update(final Graphics g, final JComponent c) {
+        if (c.isOpaque()) {
+            AquaUtils.fillRect(g, c);
+        }
+        paint(g, c);
+    }
 }
--- a/src/macosx/classes/com/apple/laf/AquaToolBarUI.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/com/apple/laf/AquaToolBarUI.java	Tue Jun 25 17:20:25 2013 -0700
@@ -73,9 +73,7 @@
             g.translate(x, y);
 
             if (c.isOpaque()) {
-                final Color background = c.getBackground();
-                g.setColor(background);
-                g.fillRect(0, 0, w - 1, h - 1);
+                AquaUtils.fillRect(g, c, c.getBackground(), 0, 0, w - 1, h - 1);
             }
 
             final Color oldColor = g.getColor();
@@ -137,4 +135,12 @@
             return true;
         }
     }
+
+    @Override
+    public final void update(final Graphics g, final JComponent c) {
+        if (c.isOpaque()) {
+            AquaUtils.fillRect(g, c);
+        }
+        paint(g, c);
+    }
 }
--- a/src/macosx/classes/com/apple/laf/AquaUtils.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/com/apple/laf/AquaUtils.java	Tue Jun 25 17:20:25 2013 -0700
@@ -28,18 +28,19 @@
 import java.awt.*;
 import java.awt.image.*;
 import java.lang.ref.SoftReference;
-import java.lang.ref.WeakReference;
 import java.lang.reflect.Method;
 import java.security.PrivilegedAction;
 import java.util.*;
 
 import javax.swing.*;
 import javax.swing.border.Border;
+import javax.swing.plaf.UIResource;
 
 import sun.awt.AppContext;
 
 import sun.lwawt.macosx.CImage;
 import sun.lwawt.macosx.CImage.Creator;
+import sun.lwawt.macosx.CPlatformWindow;
 import sun.swing.SwingUtilities2;
 
 import com.apple.laf.AquaImageFactory.SlicedImageControl;
@@ -389,4 +390,51 @@
             return false;
         }
     }
+
+    protected static boolean isWindowTextured(final Component c) {
+        if (!(c instanceof JComponent)) {
+            return false;
+        }
+        final JRootPane pane = ((JComponent) c).getRootPane();
+        if (pane == null) {
+            return false;
+        }
+        Object prop = pane.getClientProperty(
+                CPlatformWindow.WINDOW_BRUSH_METAL_LOOK);
+        if (prop != null) {
+            return Boolean.parseBoolean(prop.toString());
+        }
+        prop = pane.getClientProperty(CPlatformWindow.WINDOW_STYLE);
+        return prop != null && "textured".equals(prop);
+    }
+
+    private static Color resetAlpha(final Color color) {
+        return new Color(color.getRed(), color.getGreen(), color.getBlue(), 0);
+    }
+
+    protected static void fillRect(final Graphics g, final Component c) {
+        fillRect(g, c, c.getBackground(), 0, 0, c.getWidth(), c.getHeight());
+    }
+
+    protected static void fillRect(final Graphics g, final Component c,
+                                   final Color color, final int x, final int y,
+                                   final int w, final int h) {
+        if (!(g instanceof Graphics2D)) {
+            return;
+        }
+        final Graphics2D cg = (Graphics2D) g.create();
+        try {
+            if (color instanceof UIResource && isWindowTextured(c)
+                    && color.equals(SystemColor.window)) {
+                cg.setComposite(AlphaComposite.Src);
+                cg.setColor(resetAlpha(color));
+            } else {
+                cg.setColor(color);
+            }
+            cg.fillRect(x, y, w, h);
+        } finally {
+            cg.dispose();
+        }
+    }
 }
+
--- a/src/macosx/classes/com/apple/laf/ImageCache.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/com/apple/laf/ImageCache.java	Tue Jun 25 17:20:25 2013 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
  * 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 @@
 import java.util.*;
 import java.util.concurrent.locks.*;
 
+import apple.laf.JRSUIConstants;
 import apple.laf.JRSUIState;
 import com.apple.laf.AquaUtils.RecyclableSingleton;
 
@@ -38,9 +39,9 @@
  * SoftReferences so they will be dropped by the GC if heap memory gets tight. When our size hits max pixel count least
  * recently requested images are removed first.
  */
-class ImageCache {
+final class ImageCache {
     // Ordered Map keyed by args hash, ordered by most recent accessed entry.
-    private final LinkedHashMap<Integer, PixelCountSoftReference> map = new LinkedHashMap<Integer, PixelCountSoftReference>(16, 0.75f, true);
+    private final LinkedHashMap<Integer, PixelCountSoftReference> map = new LinkedHashMap<>(16, 0.75f, true);
 
     // Maximum number of pixels to cache, this is used if maxCount
     private final int maxPixelCount;
@@ -50,7 +51,7 @@
     // Lock for concurrent access to map
     private final ReadWriteLock lock = new ReentrantReadWriteLock();
     // Reference queue for tracking lost softreferences to images in the cache
-    private final ReferenceQueue<Image> referenceQueue = new ReferenceQueue<Image>();
+    private final ReferenceQueue<Image> referenceQueue = new ReferenceQueue<>();
 
     // Singleton Instance
     private static final RecyclableSingleton<ImageCache> instance = new RecyclableSingleton<ImageCache>() {
@@ -63,11 +64,11 @@
         return instance.get();
     }
 
-    public ImageCache(final int maxPixelCount) {
+    ImageCache(final int maxPixelCount) {
         this.maxPixelCount = maxPixelCount;
     }
 
-    public ImageCache() {
+    ImageCache() {
         this((8 * 1024 * 1024) / 4); // 8Mb of pixels
     }
 
@@ -80,16 +81,23 @@
         }
     }
 
-    public Image getImage(final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) {
+    public Image getImage(final GraphicsConfiguration config, final int w,
+                          final int h, final int scale,
+                          final JRSUIState state) {
+        final int hash = hash(config, w, h, scale, state);
+        final PixelCountSoftReference ref;
         lock.readLock().lock();
         try {
-            final PixelCountSoftReference ref = map.get(hash(config, w, h, state));
-            // check reference has not been lost and the key truly matches, in case of false positive hash match
-            if (ref != null && ref.equals(config, w, h, state)) return ref.get();
-            return null;
+            ref = map.get(hash);
         } finally {
             lock.readLock().unlock();
         }
+        // check reference has not been lost and the key truly matches,
+        // in case of false positive hash match
+        if (ref != null && ref.equals(config, w, h, scale, state)) {
+            return ref.get();
+        }
+        return null;
     }
 
     /**
@@ -99,11 +107,17 @@
      * @param config The graphics configuration, needed if cached image is a Volatile Image. Used as part of cache key
      * @param w      The image width, used as part of cache key
      * @param h      The image height, used as part of cache key
-     * @param args   Other arguments to use as part of the cache key
-     * @return true if the image could be cached or false if the image is too big
+     * @param scale  The image scale factor, used as part of cache key
+     * @return true if the image could be cached, false otherwise.
      */
-    public boolean setImage(final Image image, final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) {
-        final int hash = hash(config, w, h, state);
+    public boolean setImage(final Image image,
+            final GraphicsConfiguration config, final int w, final int h,
+            final int scale, final JRSUIState state) {
+        if (state.is(JRSUIConstants.Animating.YES)) {
+            return false;
+        }
+
+        final int hash = hash(config, w, h, scale, state);
 
         lock.writeLock().lock();
         try {
@@ -141,44 +155,60 @@
                 }
             }
             // finally put new in map
-            map.put(hash, new PixelCountSoftReference(image, referenceQueue, newPixelCount, hash, config, w, h, state));
+            map.put(hash, new PixelCountSoftReference(image, referenceQueue, newPixelCount, hash, config, w, h, scale, state));
             return true;
         } finally {
             lock.writeLock().unlock();
         }
     }
 
-    private int hash(final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) {
-        int hash = (config != null ? config.hashCode() : 0);
+    private static int hash(final GraphicsConfiguration config, final int w,
+                            final int h, final int scale,
+                            final JRSUIState state) {
+        int hash = config != null ? config.hashCode() : 0;
         hash = 31 * hash + w;
         hash = 31 * hash + h;
+        hash = 31 * hash + scale;
         hash = 31 * hash + state.hashCode();
         return hash;
     }
 
-    /** Extended SoftReference that stores the pixel count even after the image is lost */
+    /**
+     * Extended SoftReference that stores the pixel count even after the image
+     * is lost.
+     */
     private static class PixelCountSoftReference extends SoftReference<Image> {
-        private final int pixelCount;
-        private final int hash;
+
+        // default access, because access to these fields shouldn't be emulated
+        // by a synthetic accessor.
+        final int pixelCount;
+        final int hash;
 
         // key parts
         private final GraphicsConfiguration config;
         private final int w;
         private final int h;
+        private final int scale;
         private final JRSUIState state;
 
-        public PixelCountSoftReference(final Image referent, final ReferenceQueue<? super Image> q, final int pixelCount, final int hash, final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) {
+        PixelCountSoftReference(final Image referent,
+                final ReferenceQueue<? super Image> q, final int pixelCount,
+                final int hash, final GraphicsConfiguration config, final int w,
+                final int h, final int scale, final JRSUIState state) {
             super(referent, q);
             this.pixelCount = pixelCount;
             this.hash = hash;
             this.config = config;
             this.w = w;
             this.h = h;
+            this.scale = scale;
             this.state = state;
         }
 
-        public boolean equals(final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) {
-            return config == this.config && w == this.w && h == this.h && state.equals(this.state);
+        boolean equals(final GraphicsConfiguration config, final int w,
+                       final int h, final int scale, final JRSUIState state) {
+            return config == this.config && w == this.w && h == this.h
+                    && scale == this.scale && state.equals(this.state);
         }
     }
 
--- a/src/macosx/classes/java/util/prefs/MacOSXPreferences.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/java/util/prefs/MacOSXPreferences.java	Tue Jun 25 17:20:25 2013 -0700
@@ -25,6 +25,8 @@
 
 package java.util.prefs;
 
+import java.util.Objects;
+
 class MacOSXPreferences extends AbstractPreferences {
     // fixme need security checks?
 
@@ -33,16 +35,16 @@
     private static final String defaultAppName = "com.apple.java.util.prefs";
 
     // true if this node is a child of userRoot or is userRoot
-    private boolean isUser;
+    private final boolean isUser;
 
     // true if this node is userRoot or systemRoot
-    private boolean isRoot;
+    private final boolean isRoot;
 
     // CF's storage location for this node and its keys
-    private MacOSXPreferencesFile file;
+    private final MacOSXPreferencesFile file;
 
     // absolutePath() + "/"
-    private String path;
+    private final String path;
 
     // User root and system root nodes
     private static MacOSXPreferences userRoot = null;
@@ -71,36 +73,40 @@
 
     // Create a new root node. Called by getUserRoot() and getSystemRoot()
     // Synchronization is provided by the caller.
-    private MacOSXPreferences(boolean newIsUser)
-    {
-        super(null, "");
-        isUser = newIsUser;
-        isRoot = true;
-
-        initFields();
+    private MacOSXPreferences(boolean newIsUser) {
+        this(null, "", false, true, newIsUser);
     }
 
 
     // Create a new non-root node with the given parent.
     // Called by childSpi().
-    private MacOSXPreferences(MacOSXPreferences parent, String name)
+    private MacOSXPreferences(MacOSXPreferences parent, String name) {
+        this(parent, name, false, false, false);
+    }
+
+    private MacOSXPreferences(MacOSXPreferences parent, String name,
+                              boolean isNew)
+    {
+        this(parent, name, isNew, false, false);
+    }
+
+    private MacOSXPreferences(MacOSXPreferences parent, String name,
+                              boolean isNew, boolean isRoot, boolean isUser)
     {
         super(parent, name);
-        isUser = isUserNode();
-        isRoot = false;
-
-        initFields();
+        this.isRoot = isRoot;
+        if (isRoot)
+            this.isUser = isUser;
+        else
+            this.isUser = isUserNode();
+        path = isRoot ? absolutePath() : absolutePath() + "/";
+        file = cfFileForNode(this.isUser);
+        if (isNew)
+            newNode = isNew;
+        else
+            newNode = file.addNode(path);
     }
 
-
-    private void initFields()
-    {
-        path = isRoot ? absolutePath() : absolutePath() + "/";
-        file = cfFileForNode(isUser);
-        newNode = file.addNode(path);
-    }
-
-
     // Create and return the MacOSXPreferencesFile for this node.
     // Does not write anything to the file.
     private MacOSXPreferencesFile cfFileForNode(boolean isUser)
@@ -147,6 +153,7 @@
     // AbstractPreferences implementation
     protected void removeSpi(String key)
     {
+        Objects.requireNonNull(key, "Specified key cannot be null");
         file.removeKeyFromNode(path, key);
     }
 
@@ -194,8 +201,8 @@
         // Add to parent's child list here and disallow sync
         // because parent and child might be in different files.
         synchronized(MacOSXPreferencesFile.class) {
-            file.addChildToNode(path, name);
-            return new MacOSXPreferences(this, name);
+            boolean isNew = file.addChildToNode(path, name);
+            return new MacOSXPreferences(this, name, isNew);
         }
     }
 
@@ -206,9 +213,14 @@
         // Flush should *not* check for removal, unlike sync, but should
         // prevent simultaneous removal.
         synchronized(lock) {
-            // fixme! overkill
-            if (!MacOSXPreferencesFile.flushWorld()) {
-                throw new BackingStoreException("Synchronization failed for node '" + path + "'");
+            if (isUser) {
+                if (!MacOSXPreferencesFile.flushUser()) {
+                    throw new BackingStoreException("Synchronization failed for node '" + path + "'");
+                }
+            } else {
+                if (!MacOSXPreferencesFile.flushWorld()) {
+                    throw new BackingStoreException("Synchronization failed for node '" + path + "'");
+                }
             }
         }
     }
--- a/src/macosx/classes/java/util/prefs/MacOSXPreferencesFile.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/java/util/prefs/MacOSXPreferencesFile.java	Tue Jun 25 17:20:25 2013 -0700
@@ -223,7 +223,23 @@
         return ok;
     }
 
-
+    //Flush only current user preferences
+    static synchronized boolean flushUser() {
+        boolean ok = true;
+        if (changedFiles != null  &&  !changedFiles.isEmpty()) {
+            Iterator<MacOSXPreferencesFile> iterator = changedFiles.iterator();
+            while(iterator.hasNext()) {
+                MacOSXPreferencesFile f = iterator.next();
+                if (f.user == cfCurrentUser) {
+                    if (!f.synchronize())
+                        ok = false;
+                    else
+                        iterator.remove();
+                }
+            }
+        }
+        return ok;
+    }
 
     // Write all prefs changes to disk, but do not clear all cached prefs
     // values. Also kills any scheduled flush task.
@@ -348,11 +364,11 @@
         }
     }
 
-    void addChildToNode(String path, String child)
+    boolean addChildToNode(String path, String child)
     {
         synchronized(MacOSXPreferencesFile.class) {
             markChanged();
-            addChildToNode(path, child+"/", appName, user, host);
+            return addChildToNode(path, child+"/", appName, user, host);
         }
     }
 
@@ -421,7 +437,7 @@
         addNode(String path, String name, long user, long host);
     private static final native void
         removeNode(String path, String name, long user, long host);
-    private static final native void
+    private static final native boolean
         addChildToNode(String path, String child,
                        String name, long user, long host);
     private static final native void
--- a/src/macosx/classes/sun/awt/CGraphicsConfig.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/awt/CGraphicsConfig.java	Tue Jun 25 17:20:25 2013 -0700
@@ -50,7 +50,7 @@
 
     @Override
     public Rectangle getBounds() {
-        final Rectangle2D nativeBounds = nativeGetBounds(device.getCoreGraphicsScreen());
+        final Rectangle2D nativeBounds = nativeGetBounds(device.getCGDisplayID());
         return nativeBounds.getBounds(); // does integer rounding
     }
 
--- a/src/macosx/classes/sun/awt/CGraphicsDevice.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/awt/CGraphicsDevice.java	Tue Jun 25 17:20:25 2013 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
  * 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,20 +25,28 @@
 
 package sun.awt;
 
+import java.awt.AWTPermission;
+import java.awt.DisplayMode;
 import java.awt.GraphicsConfiguration;
 import java.awt.GraphicsDevice;
+import java.awt.Insets;
 import java.awt.Window;
-import java.awt.AWTPermission;
-import java.awt.DisplayMode;
+import java.util.Objects;
 
 import sun.java2d.opengl.CGLGraphicsConfig;
 
-import sun.awt.FullScreenCapable;
+public final class CGraphicsDevice extends GraphicsDevice
+        implements DisplayChangedListener {
 
-public class CGraphicsDevice extends GraphicsDevice {
-
-    // CoreGraphics display ID
-    private final int displayID;
+    /**
+     * CoreGraphics display ID. This identifier can become non-valid at any time
+     * therefore methods, which is using this id should be ready to it.
+     */
+    private volatile int displayID;
+    private volatile Insets screenInsets;
+    private volatile double xResolution;
+    private volatile double yResolution;
+    private volatile int scale;
 
     // Array of all GraphicsConfig instances for this device
     private final GraphicsConfiguration[] configs;
@@ -51,7 +59,7 @@
     // Save/restore DisplayMode for the Full Screen mode
     private DisplayMode originalMode;
 
-    public CGraphicsDevice(int displayID) {
+    public CGraphicsDevice(final int displayID) {
         this.displayID = displayID;
         configs = new GraphicsConfiguration[] {
             CGLGraphicsConfig.getConfig(this, 0)
@@ -59,9 +67,12 @@
     }
 
     /**
+     * Returns CGDirectDisplayID, which is the same id as @"NSScreenNumber" in
+     * NSScreen.
+     *
      * @return CoreGraphics display id.
      */
-    public int getCoreGraphicsScreen() {
+    public int getCGDisplayID() {
         return displayID;
     }
 
@@ -86,7 +97,7 @@
      */
     @Override
     public String getIDstring() {
-        return "Display " + this.displayID;
+        return "Display " + displayID;
     }
 
     /**
@@ -101,20 +112,38 @@
     }
 
     public double getXResolution() {
-        return nativeGetXResolution(displayID);
+        return xResolution;
     }
 
     public double getYResolution() {
-        return nativeGetYResolution(displayID);
+        return yResolution;
     }
 
-    public int getScreenResolution() {
-        // TODO: report non-72 value when HiDPI is turned on
-        return 72;
+    public Insets getScreenInsets() {
+        return screenInsets;
     }
 
-    private static native double nativeGetXResolution(int displayID);
-    private static native double nativeGetYResolution(int displayID);
+    public int getScaleFactor() {
+        return scale;
+    }
+
+    public void invalidate(final int defaultDisplayID) {
+        displayID = defaultDisplayID;
+    }
+
+    @Override
+    public void displayChanged() {
+        xResolution = nativeGetXResolution(displayID);
+        yResolution = nativeGetYResolution(displayID);
+        screenInsets = nativeGetScreenInsets(displayID);
+        scale = (int) nativeGetScaleFactor(displayID);
+        //TODO configs/fullscreenWindow/modes?
+    }
+
+    @Override
+    public void paletteChanged() {
+        // devices do not need to react to this event.
+    }
 
     /**
      * Enters full-screen mode, or returns to windowed mode.
@@ -129,12 +158,12 @@
         boolean fsSupported = isFullScreenSupported();
 
         if (fsSupported && old != null) {
-            // enter windowed mode (and restore original display mode)
-            exitFullScreenExclusive(old);
+            // restore original display mode and enter windowed mode.
             if (originalMode != null) {
                 setDisplayMode(originalMode);
                 originalMode = null;
             }
+            exitFullScreenExclusive(old);
         }
 
         super.setFullScreenWindow(w);
@@ -193,13 +222,20 @@
     }
 
     @Override
-    public void setDisplayMode(DisplayMode dm) {
+    public void setDisplayMode(final DisplayMode dm) {
         if (dm == null) {
             throw new IllegalArgumentException("Attempt to set null as a DisplayMode");
         }
-        nativeSetDisplayMode(displayID, dm.getWidth(), dm.getHeight(), dm.getBitDepth(), dm.getRefreshRate());
-        if (isFullScreenSupported() && getFullScreenWindow() != null) {
-            getFullScreenWindow().setSize(dm.getWidth(), dm.getHeight());
+        if (!Objects.equals(dm, getDisplayMode())) {
+            final Window w = getFullScreenWindow();
+            if (w != null) {
+                exitFullScreenExclusive(w);
+            }
+            nativeSetDisplayMode(displayID, dm.getWidth(), dm.getHeight(),
+                                 dm.getBitDepth(), dm.getRefreshRate());
+            if (isFullScreenSupported() && w != null) {
+                enterFullScreenExclusive(w);
+            }
         }
     }
 
@@ -213,9 +249,17 @@
         return nativeGetDisplayModes(displayID);
     }
 
-    private native void nativeSetDisplayMode(int displayID, int w, int h, int bpp, int refrate);
+    private static native double nativeGetScaleFactor(int displayID);
 
-    private native DisplayMode nativeGetDisplayMode(int displayID);
+    private static native void nativeSetDisplayMode(int displayID, int w, int h, int bpp, int refrate);
 
-    private native DisplayMode[] nativeGetDisplayModes(int displayID);
+    private static native DisplayMode nativeGetDisplayMode(int displayID);
+
+    private static native DisplayMode[] nativeGetDisplayModes(int displayID);
+
+    private static native double nativeGetXResolution(int displayID);
+
+    private static native double nativeGetYResolution(int displayID);
+
+    private static native Insets nativeGetScreenInsets(int displayID);
 }
--- a/src/macosx/classes/sun/awt/CGraphicsEnvironment.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/awt/CGraphicsEnvironment.java	Tue Jun 25 17:20:25 2013 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
  * 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,19 +26,20 @@
 package sun.awt;
 
 import java.awt.*;
-import java.awt.print.*;
 import java.util.*;
 
 import sun.java2d.*;
 
 /**
- * This is an implementation of a GraphicsEnvironment object for the default local GraphicsEnvironment used by the Java
- * Runtime Environment for Mac OS X GUI environments.
+ * This is an implementation of a GraphicsEnvironment object for the default
+ * local GraphicsEnvironment used by the Java Runtime Environment for Mac OS X
+ * GUI environments.
  *
  * @see GraphicsDevice
  * @see GraphicsConfiguration
  */
-public class CGraphicsEnvironment extends SunGraphicsEnvironment {
+public final class CGraphicsEnvironment extends SunGraphicsEnvironment {
+
     // Global initialization of the Cocoa runtime.
     private static native void initCocoa();
 
@@ -53,7 +54,8 @@
     private static native int getMainDisplayID();
 
     /**
-     * Noop function that just acts as an entry point for someone to force a static initialization of this class.
+     * Noop function that just acts as an entry point for someone to force a
+     * static initialization of this class.
      */
     public static void init() { }
 
@@ -72,8 +74,9 @@
     }
 
     /**
-     * Register the instance with CGDisplayRegisterReconfigurationCallback()
-     * The registration uses a weak global reference -- if our instance is garbage collected, the reference will be dropped.
+     * Register the instance with CGDisplayRegisterReconfigurationCallback().
+     * The registration uses a weak global reference -- if our instance is
+     * garbage collected, the reference will be dropped.
      *
      * @return Return the registration context (a pointer).
      */
@@ -85,7 +88,7 @@
     private native void deregisterDisplayReconfiguration(long context);
 
     /** Available CoreGraphics displays. */
-    private final Map<Integer, CGraphicsDevice> devices = new HashMap<Integer, CGraphicsDevice>();
+    private final Map<Integer, CGraphicsDevice> devices = new HashMap<>(5);
 
     /** Reference to the display reconfiguration callback context. */
     private final long displayReconfigContext;
@@ -112,11 +115,18 @@
     /**
      * Called by the CoreGraphics Display Reconfiguration Callback.
      *
-     * @param displayId
-     *            CoreGraphics displayId
+     * @param displayId CoreGraphics displayId
+     * @param removed   true if displayId was removed, false otherwise.
      */
-    void _displayReconfiguration(long displayId) {
-        displayChanged();
+    void _displayReconfiguration(final int displayId, final boolean removed) {
+        synchronized (this) {
+            if (removed && devices.containsKey(displayId)) {
+                final CGraphicsDevice gd = devices.remove(displayId);
+                gd.invalidate(getMainDisplayID());
+                gd.displayChanged();
+            }
+        }
+        initDevices();
     }
 
     @Override
@@ -129,31 +139,30 @@
     }
 
     /**
-     * (Re)create all CGraphicsDevices
-     *
-     * @return
+     * (Re)create all CGraphicsDevices, reuses a devices if it is possible.
      */
-    private synchronized void initDevices() {
-        devices.clear();
+    private void initDevices() {
+        synchronized (this) {
+            final Map<Integer, CGraphicsDevice> old = new HashMap<>(devices);
+            devices.clear();
 
-        int mainID = getMainDisplayID();
+            int mainID = getMainDisplayID();
 
-        // initialization of the graphics device may change
-        // list of displays on hybrid systems via an activation
-        // of discrete video.
-        // So, we initialize the main display first, and then
-        // retrieve actual list of displays.
-        CGraphicsDevice mainDevice = new CGraphicsDevice(mainID);
+            // initialization of the graphics device may change
+            // list of displays on hybrid systems via an activation
+            // of discrete video.
+            // So, we initialize the main display first, and then
+            // retrieve actual list of displays.
+            if (!old.containsKey(mainID)) {
+                old.put(mainID, new CGraphicsDevice(mainID));
+            }
 
-        final int[] displayIDs = getDisplayIDs();
-
-        for (int displayID : displayIDs) {
-            if (displayID != mainID) {
-                devices.put(displayID, new CGraphicsDevice(displayID));
-            } else {
-                devices.put(mainID, mainDevice);
+            for (final int id : getDisplayIDs()) {
+                devices.put(id, old.containsKey(id) ? old.get(id)
+                                                    : new CGraphicsDevice(id));
             }
         }
+        displayChanged();
     }
 
     @Override
@@ -161,7 +170,7 @@
         final int mainDisplayID = getMainDisplayID();
         CGraphicsDevice d = devices.get(mainDisplayID);
         if (d == null) {
-            // we do not exepct that this may happen, the only responce
+            // we do not expect that this may happen, the only response
             // is to re-initialize the list of devices
             initDevices();
 
--- a/src/macosx/classes/sun/font/CCharToGlyphMapper.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/font/CCharToGlyphMapper.java	Tue Jun 25 17:20:25 2013 -0700
@@ -130,6 +130,15 @@
     }
 
     public synchronized int charToGlyph(int unicode) {
+        if (unicode >= 0x10000) {
+           int[] glyphs = new int[2];
+           char[] surrogates = new char[2];
+           int base = unicode - 0x10000;
+           surrogates[0] = (char)((base >>> 10) + HI_SURROGATE_START);
+           surrogates[1] = (char)((base % 0x400) + LO_SURROGATE_START);
+           charsToGlyphs(2, surrogates, glyphs);
+           return glyphs[0];
+        } else
         return charToGlyph((char)unicode);
     }
 
@@ -138,9 +147,9 @@
     }
 
     public synchronized void charsToGlyphs(int count, int[] unicodes, int[] glyphs) {
-        final char[] unicodeChars = new char[count];
-        for (int i = 0; i < count; i++) unicodeChars[i] = (char)unicodes[i];
-        cache.get(count, unicodeChars, glyphs);
+        for (int i = 0; i < count; i++) {
+            glyphs[i] = charToGlyph(unicodes[i]);
+        };
     }
 
     // This mapper returns either the glyph code, or if the character can be
@@ -166,7 +175,7 @@
             firstLayerCache[1] = 1;
         }
 
-        public int get(final char index) {
+        public synchronized int get(final int index) {
             if (index < FIRST_LAYER_SIZE) {
                 // catch common glyphcodes
                 return firstLayerCache[index];
@@ -179,12 +188,12 @@
             }
 
             if (generalCache == null) return 0;
-            final Integer value = generalCache.get(new Integer(index));
+            final Integer value = generalCache.get(index);
             if (value == null) return 0;
             return value.intValue();
         }
 
-        public void put(final char index, final int value) {
+        public synchronized void put(final int index, final int value) {
             if (index < FIRST_LAYER_SIZE) {
                 // catch common glyphcodes
                 firstLayerCache[index] = value;
@@ -204,7 +213,7 @@
                 generalCache = new HashMap<Integer, Integer>();
             }
 
-            generalCache.put(new Integer(index), new Integer(value));
+            generalCache.put(index, value);
         }
 
         private class SparseBitShiftingTwoLayerArray {
@@ -220,14 +229,14 @@
                 this.secondLayerLength = size >> shift;
             }
 
-            public int get(final char index) {
+            public int get(final int index) {
                 final int firstIndex = index >> shift;
                 final int[] firstLayerRow = cache[firstIndex];
                 if (firstLayerRow == null) return 0;
                 return firstLayerRow[index - (firstIndex * (1 << shift))];
             }
 
-            public void put(final char index, final int value) {
+            public void put(final int index, final int value) {
                 final int firstIndex = index >> shift;
                 int[] firstLayerRow = cache[firstIndex];
                 if (firstLayerRow == null) {
@@ -237,77 +246,81 @@
             }
         }
 
-        public void get(int count, char[] indicies, int[] values){
+        public synchronized void get(int count, char[] indicies, int[] values)
+        {
+            // "missed" is the count of 'char' that are not mapped.
+            // Surrogates count for 2.
+            // unmappedChars is the unique list of these chars.
+            // unmappedCharIndices is the location in the original array
             int missed = 0;
-            for(int i = 0; i < count; i++){
-                char code = indicies[i];
+            char[] unmappedChars = null;
+            int [] unmappedCharIndices = null;
+
+            for (int i = 0; i < count; i++){
+                int code = indicies[i];
+                if (code >= HI_SURROGATE_START &&
+                    code <= HI_SURROGATE_END && i < count - 1)
+                {
+                    char low = indicies[i + 1];
+                    if (low >= LO_SURROGATE_START && low <= LO_SURROGATE_END) {
+                        code = (code - HI_SURROGATE_START) * 0x400 +
+                            low - LO_SURROGATE_START + 0x10000;
+                    }
+                }
 
                 final int value = get(code);
-                if(value != 0){
+                if (value != 0 && value != -1) {
                     values[i] = value;
-                }else{
-                    // zero this element out, because the caller does not
-                    // promise to keep it clean
+                    if (code >= 0x10000) {
+                        values[i+1] = INVISIBLE_GLYPH_ID;
+                        i++;
+                    }
+                } else {
                     values[i] = 0;
+                    put(code, -1);
+                    if (unmappedChars == null) {
+                        // This is likely to be longer than we need,
+                        // but is the simplest and cheapest option.
+                        unmappedChars = new char[indicies.length];
+                        unmappedCharIndices = new int[indicies.length];
+                    }
+                    unmappedChars[missed] = indicies[i];
+                    unmappedCharIndices[missed] = i;
+                    if (code >= 0x10000) { // was a surrogate pair
+                        unmappedChars[++missed] = indicies[++i];
+                    }
                     missed++;
                 }
             }
 
-            if (missed == 0) return; // horray! everything is already cached!
-
-            final char[] filteredCodes = new char[missed]; // all index codes requested (partially filled)
-            final int[] filteredIndicies = new int[missed]; // local indicies into filteredCodes array (totally filled)
-
-            // scan, mark, and store the index codes again to send into native
-            int j = 0;
-            int dupes = 0;
-            for (int i = 0; i < count; i++){
-                if (values[i] != 0L) continue; // already filled
-
-                final char code = indicies[i];
-
-                // we have already promised to fill this code - this is a dupe
-                if (get(code) == -1){
-                    filteredIndicies[j] = -1;
-                    dupes++;
-                    j++;
-                    continue;
-                }
-
-                // this is a code we have not obtained before
-                // mark this one as "promise to get" in the global cache with a -1
-                final int k = j - dupes;
-                filteredCodes[k] = code;
-                put(code, -1);
-                filteredIndicies[j] = k;
-                j++;
+            if (missed == 0) {
+                return;
             }
 
-            final int filteredRunLen = j - dupes;
-            final int[] filteredValues = new int[filteredRunLen];
+            final int[] glyphCodes = new int[missed];
 
-            // bulk call to fill in the distinct values
-            nativeCharsToGlyphs(fFont.getNativeFontPtr(), filteredRunLen, filteredCodes, filteredValues);
+            // bulk call to fill in the unmapped code points.
+            nativeCharsToGlyphs(fFont.getNativeFontPtr(),
+                                missed, unmappedChars, glyphCodes);
 
-            // scan the requested list, and fill in values from our
-            // distinct code list which has been filled from "getDistinct"
-            j = 0;
-            for (int i = 0; i < count; i++){
-                if (values[i] != 0L && values[i] != -1L) continue; // already placed
-
-                final int k = filteredIndicies[j]; // index into filteredImages array
-                final char code = indicies[i];
-                if(k == -1L){
-                    // we should have already filled the cache with this value
-                    values[i] = get(code);
-                }else{
-                    // fill the particular code request, and store in the cache
-                    final int ptr = filteredValues[k];
-                    values[i] = ptr;
-                    put(code, ptr);
+            for (int m = 0; m < missed; m++){
+                int i = unmappedCharIndices[m];
+                int code = unmappedChars[m];
+                if (code >= HI_SURROGATE_START &&
+                    code <= HI_SURROGATE_END && m < missed - 1)
+                {
+                    char low = indicies[m + 1];
+                    if (low >= LO_SURROGATE_START && low <= LO_SURROGATE_END) {
+                        code = (code - HI_SURROGATE_START) * 0x400 +
+                            low - LO_SURROGATE_START + 0x10000;
+                    }
                 }
-
-                j++;
+               values[i] = glyphCodes[m];
+               put(code, values[i]);
+               if (code >= 0x10000) {
+                   m++;
+                   values[i + 1] = INVISIBLE_GLYPH_ID;
+                }
             }
         }
     }
--- a/src/macosx/classes/sun/font/CFontManager.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/font/CFontManager.java	Tue Jun 25 17:20:25 2013 -0700
@@ -37,6 +37,7 @@
 import javax.swing.plaf.FontUIResource;
 
 import sun.awt.FontConfiguration;
+import sun.awt.HeadlessToolkit;
 import sun.lwawt.macosx.*;
 
 public class CFontManager extends SunFontManager {
@@ -342,9 +343,14 @@
     @Override
     public String getFontPath(boolean noType1Fonts) {
         // In the case of the Cocoa toolkit, since we go through NSFont, we dont need to register /Library/Fonts
-        if (Toolkit.getDefaultToolkit() instanceof LWCToolkit) {
+        Toolkit tk = Toolkit.getDefaultToolkit();
+        if (tk instanceof HeadlessToolkit) {
+            tk = ((HeadlessToolkit)tk).getUnderlyingToolkit();
+        }
+        if (tk instanceof LWCToolkit) {
             return "";
         }
+
         // X11 case
         return "/Library/Fonts";
     }
--- a/src/macosx/classes/sun/java2d/opengl/CGLGraphicsConfig.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/java2d/opengl/CGLGraphicsConfig.java	Tue Jun 25 17:20:25 2013 -0700
@@ -85,10 +85,8 @@
     private Object disposerReferent = new Object();
 
     private final int cachedMaxTextureSize;
-
-    public static native int getDefaultPixFmt(int screennum);
     private static native boolean initCGL();
-    private static native long getCGLConfigInfo(int screennum, int visualnum,
+    private static native long getCGLConfigInfo(int displayID, int visualnum,
                                                 int swapInterval);
     private static native int getOGLCapabilities(long configInfo);
     private static native int _getMaxTextureSize();
@@ -147,15 +145,16 @@
             // Java-level context and flush the queue...
             OGLContext.invalidateCurrentContext();
 
-            cfginfo = getCGLConfigInfo(device.getCoreGraphicsScreen(), pixfmt,
+            cfginfo = getCGLConfigInfo(device.getCGDisplayID(), pixfmt,
                                        kOpenGLSwapInterval);
-
-            OGLContext.setScratchSurface(cfginfo);
-            rq.flushAndInvokeNow(new Runnable() {
-                public void run() {
-                    ids[0] = OGLContext.getOGLIdString();
-                }
-            });
+            if (cfginfo != 0L) {
+                OGLContext.setScratchSurface(cfginfo);
+                rq.flushAndInvokeNow(new Runnable() {
+                    public void run() {
+                        ids[0] = OGLContext.getOGLIdString();
+                    }
+                });
+            }
         } finally {
             rq.unlock();
         }
@@ -260,8 +259,8 @@
 
     @Override
     public String toString() {
-        int screen = getDevice().getCoreGraphicsScreen();
-        return ("CGLGraphicsConfig[dev="+screen+",pixfmt="+pixfmt+"]");
+        int displayID = getDevice().getCGDisplayID();
+        return ("CGLGraphicsConfig[dev="+displayID+",pixfmt="+pixfmt+"]");
     }
 
 
@@ -485,8 +484,8 @@
     }
 
     public void addDeviceEventListener(AccelDeviceEventListener l) {
-        int screen = getDevice().getCoreGraphicsScreen();
-        AccelDeviceEventNotifier.addListener(l, screen);
+        int displayID = getDevice().getCGDisplayID();
+        AccelDeviceEventNotifier.addListener(l, displayID);
     }
 
     public void removeDeviceEventListener(AccelDeviceEventListener l) {
@@ -516,29 +515,37 @@
 
     @Override
     public int getMaxTextureWidth() {
-        int width;
+        //Temporary disable this logic and use some magic constrain.
+        /*
+         int width;
 
-        synchronized (totalDisplayBounds) {
-            if (totalDisplayBounds.width == 0) {
-                updateTotalDisplayBounds();
-            }
-            width = totalDisplayBounds.width;
-        }
+         synchronized (totalDisplayBounds) {
+         if (totalDisplayBounds.width == 0) {
+         updateTotalDisplayBounds();
+         }
+         width = totalDisplayBounds.width;
+         }
 
-        return Math.min(width, getMaxTextureSize());
+         return Math.min(width, getMaxTextureSize());
+         */
+        return getMaxTextureSize() / (getDevice().getScaleFactor() * 2);
     }
 
     @Override
     public int getMaxTextureHeight() {
-        int height;
+        //Temporary disable this logic and use some magic constrain.
+        /*
+         int height;
 
-        synchronized (totalDisplayBounds) {
-            if (totalDisplayBounds.height == 0) {
-                updateTotalDisplayBounds();
-            }
-            height = totalDisplayBounds.height;
-        }
+         synchronized (totalDisplayBounds) {
+         if (totalDisplayBounds.height == 0) {
+         updateTotalDisplayBounds();
+         }
+         height = totalDisplayBounds.height;
+         }
 
-        return Math.min(height, getMaxTextureSize());
+         return Math.min(height, getMaxTextureSize());
+         */
+        return getMaxTextureSize() / (getDevice().getScaleFactor() * 2);
     }
 }
--- a/src/macosx/classes/sun/java2d/opengl/CGLLayer.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/java2d/opengl/CGLLayer.java	Tue Jun 25 17:20:25 2013 -0700
@@ -40,11 +40,12 @@
 public class CGLLayer extends CFRetainedResource {
 
     private native long nativeCreateLayer();
-
+    private static native void nativeSetScale(long layerPtr, double scale);
     private static native void validate(long layerPtr, CGLSurfaceData cglsd);
     private static native void blitTexture(long layerPtr);
 
     private LWWindowPeer peer;
+    private int scale = 1;
 
     private SurfaceData surfaceData; // represents intermediate buffer (texture)
 
@@ -68,7 +69,7 @@
     }
 
     public boolean isOpaque() {
-        return peer.isOpaque();
+        return !peer.isTranslucent();
     }
 
     public int getTransparency() {
@@ -89,7 +90,7 @@
         // and blits the buffer to the layer surface (in drawInCGLContext callback)
         CGraphicsConfig gc = (CGraphicsConfig)getGraphicsConfiguration();
         surfaceData = gc.createSurfaceData(this);
-
+        setScale(gc.getDevice().getScaleFactor());
         // the layer holds a reference to the buffer, which in
         // turn has a reference back to this layer
         if (surfaceData instanceof CGLSurfaceData) {
@@ -120,6 +121,13 @@
         super.dispose();
     }
 
+    private void setScale(final int _scale) {
+        if (scale != _scale) {
+            scale = _scale;
+            nativeSetScale(getPointer(), scale);
+        }
+    }
+
     // ----------------------------------------------------------------------
     // NATIVE CALLBACKS
     // ----------------------------------------------------------------------
--- a/src/macosx/classes/sun/java2d/opengl/CGLSurfaceData.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/java2d/opengl/CGLSurfaceData.java	Tue Jun 25 17:20:25 2013 -0700
@@ -30,7 +30,6 @@
 import java.awt.GraphicsDevice;
 import java.awt.GraphicsEnvironment;
 import java.awt.Image;
-import java.awt.Insets;
 import java.awt.Rectangle;
 import java.awt.image.ColorModel;
 
@@ -41,6 +40,9 @@
 
 public abstract class CGLSurfaceData extends OGLSurfaceData {
 
+    protected final int scale;
+    protected final int width;
+    protected final int height;
     protected CPlatformView pView;
     private CGLGraphicsConfig graphicsConfig;
 
@@ -52,10 +54,19 @@
     protected native boolean initPbuffer(long pData, long pConfigInfo,
             boolean isOpaque, int width, int height);
 
+    protected CGLSurfaceData(CGLGraphicsConfig gc, ColorModel cm, int type,
+                             int width, int height) {
+        super(gc, cm, type);
+        // TEXTURE shouldn't be scaled, it is used for managed BufferedImages.
+        scale = type == TEXTURE ? 1 : gc.getDevice().getScaleFactor();
+        this.width = width * scale;
+        this.height = height * scale;
+    }
+
     protected CGLSurfaceData(CPlatformView pView, CGLGraphicsConfig gc,
-                             ColorModel cm, int type)
+                             ColorModel cm, int type,int width, int height)
     {
-        super(gc, cm, type);
+        this(gc, cm, type, width, height);
         this.pView = pView;
         this.graphicsConfig = gc;
 
@@ -70,9 +81,9 @@
     }
 
     protected CGLSurfaceData(CGLLayer layer, CGLGraphicsConfig gc,
-                             ColorModel cm, int type)
+                             ColorModel cm, int type,int width, int height)
     {
-        super(gc, cm, type);
+        this(gc, cm, type, width, height);
         this.graphicsConfig = gc;
 
         long pConfigInfo = gc.getNativeConfigInfo();
@@ -157,13 +168,43 @@
         // Overridden in CGLWindowSurfaceData below
     }
 
+    @Override
+    public int getDefaultScale() {
+        return scale;
+    }
+
+    @Override
+    public boolean copyArea(SunGraphics2D sg2d, int x, int y, int w, int h,
+                            int dx, int dy) {
+        final int state = sg2d.transformState;
+        if (state > SunGraphics2D.TRANSFORM_TRANSLATESCALE
+            || sg2d.compositeState >= SunGraphics2D.COMP_XOR) {
+            return false;
+        }
+        if (state <= SunGraphics2D.TRANSFORM_ANY_TRANSLATE) {
+            x += sg2d.transX;
+            y += sg2d.transY;
+        } else if (state == SunGraphics2D.TRANSFORM_TRANSLATESCALE) {
+            final double[] coords = {x, y, x + w, y + h, x + dx, y + dy};
+            sg2d.transform.transform(coords, 0, coords, 0, 3);
+            x = (int) Math.ceil(coords[0] - 0.5);
+            y = (int) Math.ceil(coords[1] - 0.5);
+            w = ((int) Math.ceil(coords[2] - 0.5)) - x;
+            h = ((int) Math.ceil(coords[3] - 0.5)) - y;
+            dx = ((int) Math.ceil(coords[4] - 0.5)) - x;
+            dy = ((int) Math.ceil(coords[5] - 0.5)) - y;
+        }
+        oglRenderPipe.copyArea(sg2d, x, y, w, h, dx, dy);
+        return true;
+    }
+
     protected native void clearWindow();
 
     public static class CGLWindowSurfaceData extends CGLSurfaceData {
 
         public CGLWindowSurfaceData(CPlatformView pView,
                 CGLGraphicsConfig gc) {
-            super(pView, gc, gc.getColorModel(), WINDOW);
+            super(pView, gc, gc.getColorModel(), WINDOW, 0, 0);
         }
 
         @Override
@@ -217,17 +258,12 @@
     public static class CGLLayerSurfaceData extends CGLSurfaceData {
 
         private CGLLayer layer;
-        private int width, height;
 
         public CGLLayerSurfaceData(CGLLayer layer, CGLGraphicsConfig gc,
                                    int width, int height) {
-            super(layer, gc, gc.getColorModel(), FBOBJECT);
-
-            this.width = width;
-            this.height = height;
+            super(layer, gc, gc.getColorModel(), FBOBJECT, width, height);
             this.layer = layer;
-
-            initSurface(width, height);
+            initSurface(this.width, this.height);
         }
 
         @Override
@@ -296,18 +332,13 @@
 
     public static class CGLOffScreenSurfaceData extends CGLSurfaceData {
         private Image offscreenImage;
-        private int width, height;
 
         public CGLOffScreenSurfaceData(CPlatformView pView,
                                        CGLGraphicsConfig gc, int width, int height, Image image,
                                        ColorModel cm, int type) {
-            super(pView, gc, cm, type);
-
-            this.width = width;
-            this.height = height;
+            super(pView, gc, cm, type, width, height);
             offscreenImage = image;
-
-            initSurface(width, height);
+            initSurface(this.width, this.height);
         }
 
         @Override
--- a/src/macosx/classes/sun/lwawt/LWComponentPeer.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/lwawt/LWComponentPeer.java	Tue Jun 25 17:20:25 2013 -0700
@@ -40,6 +40,7 @@
 import java.awt.peer.ComponentPeer;
 import java.awt.peer.ContainerPeer;
 
+import java.awt.peer.KeyboardFocusManagerPeer;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.lang.reflect.Field;
 import java.security.AccessController;
@@ -282,7 +283,7 @@
      * Note that we call setVisible() at the end of initialization.
      */
     public final void initialize() {
-        platformComponent.initialize(target, this, getPlatformWindow());
+        platformComponent.initialize(getPlatformWindow());
         initializeImpl();
         setVisible(target.isVisible());
     }
@@ -424,8 +425,7 @@
 
     @Override
     public final Graphics getGraphics() {
-        Graphics g = getWindowPeerOrSelf().isOpaque() ? getOnscreenGraphics()
-                                                      : getOffscreenGraphics();
+        final Graphics g = getOnscreenGraphics();
         if (g != null) {
             synchronized (getPeerTreeLock()){
                 applyConstrain(g);
@@ -443,46 +443,13 @@
         final LWWindowPeer wp = getWindowPeerOrSelf();
         return wp.getOnscreenGraphics(getForeground(), getBackground(),
                                       getFont());
-    }
 
-    public final Graphics getOffscreenGraphics() {
-        final LWWindowPeer wp = getWindowPeerOrSelf();
-
-        return wp.getOffscreenGraphics(getForeground(), getBackground(),
-                                       getFont());
     }
 
     private void applyConstrain(final Graphics g) {
         final SunGraphics2D sg2d = (SunGraphics2D) g;
-        final Rectangle constr = localToWindow(getSize());
-        // translate and set rectangle constrain.
-        sg2d.constrain(constr.x, constr.y, constr.width, constr.height);
-        // set region constrain.
-        //sg2d.constrain(getVisibleRegion());
-        SG2DConstraint(sg2d, getVisibleRegion());
-    }
-
-    //TODO Move this method to SG2D?
-    private void SG2DConstraint(final SunGraphics2D sg2d, Region r) {
-        sg2d.constrainX = sg2d.transX;
-        sg2d.constrainY = sg2d.transY;
-
-        Region c = sg2d.constrainClip;
-        if ((sg2d.constrainX | sg2d.constrainY) != 0) {
-            r = r.getTranslatedRegion(sg2d.constrainX, sg2d.constrainY);
-        }
-        if (c == null) {
-            c = r;
-        } else {
-            c = c.getIntersection(r);
-            if (c == sg2d.constrainClip) {
-                // Common case to ignore
-                return;
-            }
-        }
-        sg2d.constrainClip = c;
-        //validateCompClip() forced call.
-        sg2d.setDevClip(r.getLoX(), r.getLoY(), r.getWidth(), r.getHeight());
+        final Rectangle size = localToWindow(getSize());
+        sg2d.constrain(size.x, size.y, size.width, size.height, getVisibleRegion());
     }
 
     public Region getVisibleRegion() {
@@ -710,7 +677,7 @@
         // Obtain the metrics from the offscreen window where this peer is
         // mostly drawn to.
         // TODO: check for "use platform metrics" settings
-        Graphics g = getWindowPeer().getOffscreenGraphics();
+        Graphics g = getWindowPeer().getGraphics();
         try {
             if (g != null) {
                 return g.getFontMetrics(f);
@@ -901,15 +868,15 @@
                             ", focusedWindowChangeAllowed=" + focusedWindowChangeAllowed +
                             ", time= " + time + ", cause=" + cause);
         }
-        if (LWKeyboardFocusManagerPeer.getInstance(getAppContext()).
-                processSynchronousLightweightTransfer(getTarget(), lightweightChild, temporary,
-                        focusedWindowChangeAllowed, time)) {
+        if (LWKeyboardFocusManagerPeer.processSynchronousLightweightTransfer(
+                getTarget(), lightweightChild, temporary,
+                focusedWindowChangeAllowed, time)) {
             return true;
         }
 
-        int result = LWKeyboardFocusManagerPeer.getInstance(getAppContext()).
-                shouldNativelyFocusHeavyweight(getTarget(), lightweightChild, temporary,
-                        focusedWindowChangeAllowed, time, cause);
+        int result = LWKeyboardFocusManagerPeer.shouldNativelyFocusHeavyweight(
+                getTarget(), lightweightChild, temporary,
+                focusedWindowChangeAllowed, time, cause);
         switch (result) {
             case LWKeyboardFocusManagerPeer.SNFH_FAILURE:
                 return false;
@@ -958,14 +925,13 @@
                     return false;
                 }
 
-                LWComponentPeer focusOwnerPeer =
-                    LWKeyboardFocusManagerPeer.getInstance(getAppContext()).
-                        getFocusOwner();
-                Component focusOwner = (focusOwnerPeer != null) ? focusOwnerPeer.getTarget() : null;
+                KeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance();
+                Component focusOwner = kfmPeer.getCurrentFocusOwner();
                 return LWKeyboardFocusManagerPeer.deliverFocus(lightweightChild,
                         getTarget(), temporary,
                         focusedWindowChangeAllowed,
                         time, cause, focusOwner);
+
             case LWKeyboardFocusManagerPeer.SNFH_SUCCESS_HANDLED:
                 return true;
         }
@@ -1011,14 +977,33 @@
     @Override
     public final void applyShape(final Region shape) {
         synchronized (getStateLock()) {
-            region = shape;
+            if (region == shape || (region != null && region.equals(shape))) {
+                return;
+            }
+        }
+        applyShapeImpl(shape);
+    }
+
+    void applyShapeImpl(final Region shape) {
+        synchronized (getStateLock()) {
+            if (shape != null) {
+                region = Region.WHOLE_REGION.getIntersection(shape);
+            } else {
+                region = null;
+            }
         }
         repaintParent(getBounds());
     }
 
     protected final Region getRegion() {
         synchronized (getStateLock()) {
-            return region == null ? Region.getInstance(getSize()) : region;
+            return isShaped() ? region : Region.getInstance(getSize());
+        }
+    }
+
+    public boolean isShaped() {
+        synchronized (getStateLock()) {
+            return region != null;
         }
     }
 
@@ -1172,10 +1157,10 @@
     }
 
     protected void sendEventToDelegate(final AWTEvent e) {
+        if (getDelegate() == null || !isShowing() || !isEnabled()) {
+            return;
+        }
         synchronized (getDelegateLock()) {
-            if (getDelegate() == null || !isShowing() || !isEnabled()) {
-                return;
-            }
             AWTEvent delegateEvent = createDelegateEvent(e);
             if (delegateEvent != null) {
                 AWTAccessor.getComponentAccessor()
@@ -1189,7 +1174,12 @@
         }
     }
 
-    protected AWTEvent createDelegateEvent(AWTEvent e) {
+    /**
+     * Changes the target of the AWTEvent from awt component to appropriate
+     * swing delegate.
+     */
+    private AWTEvent createDelegateEvent(final AWTEvent e) {
+        // TODO modifiers should be changed to getModifiers()|getModifiersEx()?
         AWTEvent delegateEvent = null;
         if (e instanceof MouseWheelEvent) {
             MouseWheelEvent me = (MouseWheelEvent) e;
@@ -1251,8 +1241,8 @@
     protected void handleJavaFocusEvent(FocusEvent e) {
         // Note that the peer receives all the FocusEvents from
         // its lightweight children as well
-        LWKeyboardFocusManagerPeer.getInstance(getAppContext()).
-                setFocusOwner(e.getID() == FocusEvent.FOCUS_GAINED ? this : null);
+        KeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance();
+        kfmPeer.setCurrentFocusOwner(e.getID() == FocusEvent.FOCUS_GAINED ? getTarget() : null);
     }
 
     /**
@@ -1386,11 +1376,6 @@
         }
     }
 
-    // Just a helper method, thus final
-    protected final void flushOffscreenGraphics() {
-        flushOffscreenGraphics(getSize());
-    }
-
     protected static final void flushOnscreenGraphics(){
         final OGLRenderQueue rq = OGLRenderQueue.getInstance();
         rq.lock();
@@ -1401,36 +1386,6 @@
         }
     }
 
-    /*
-     * Flushes the given rectangle from the back buffer to the screen.
-     */
-    protected void flushOffscreenGraphics(Rectangle r) {
-        flushOffscreenGraphics(r.x, r.y, r.width, r.height);
-    }
-
-    private void flushOffscreenGraphics(int x, int y, int width, int height) {
-        Image bb = getWindowPeerOrSelf().getBackBuffer();
-        if (bb != null) {
-            // g is a screen Graphics from the delegate
-            final Graphics g = getOnscreenGraphics();
-
-            if (g != null && g instanceof Graphics2D) {
-                try {
-                    Graphics2D g2d = (Graphics2D)g;
-                    Point p = localToWindow(new Point(0, 0));
-                    Composite composite = g2d.getComposite();
-                    g2d.setComposite(AlphaComposite.Src);
-                    g.drawImage(bb, x, y, x + width, y + height, p.x + x,
-                            p.y + y, p.x + x + width, p.y + y + height,
-                            null);
-                    g2d.setComposite(composite);
-                } finally {
-                    g.dispose();
-                }
-            }
-        }
-    }
-
     /**
      * Used by ContainerPeer to skip all the paint events during layout.
      *
--- a/src/macosx/classes/sun/lwawt/LWKeyboardFocusManagerPeer.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/lwawt/LWKeyboardFocusManagerPeer.java	Tue Jun 25 17:20:25 2013 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
  * 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,76 +26,35 @@
 package sun.lwawt;
 
 import java.awt.Component;
-import java.awt.KeyboardFocusManager;
 import java.awt.Window;
-
-import java.util.Map;
-import java.util.HashMap;
-
-import sun.awt.AWTAccessor;
-import sun.awt.AppContext;
 import sun.awt.KeyboardFocusManagerPeerImpl;
 
 public class LWKeyboardFocusManagerPeer extends KeyboardFocusManagerPeerImpl {
+    private static final LWKeyboardFocusManagerPeer inst = new LWKeyboardFocusManagerPeer();
 
-    private Object lock = new Object();
-    private LWWindowPeer focusedWindow;
-    private LWComponentPeer focusOwner;
+    private Window focusedWindow;
+    private Component focusOwner;
 
-    private static Map<KeyboardFocusManager, LWKeyboardFocusManagerPeer> instances =
-        new HashMap<KeyboardFocusManager, LWKeyboardFocusManagerPeer>();
-
-    public static synchronized LWKeyboardFocusManagerPeer getInstance(AppContext ctx) {
-        return getInstance(AWTAccessor.getKeyboardFocusManagerAccessor().
-                           getCurrentKeyboardFocusManager(ctx));
+    public static LWKeyboardFocusManagerPeer getInstance() {
+        return inst;
     }
 
-    public static synchronized LWKeyboardFocusManagerPeer getInstance(KeyboardFocusManager manager) {
-        LWKeyboardFocusManagerPeer instance = instances.get(manager);
-        if (instance == null) {
-            instance = new LWKeyboardFocusManagerPeer(manager);
-            instances.put(manager, instance);
-        }
-        return instance;
-    }
-
-    public LWKeyboardFocusManagerPeer(KeyboardFocusManager manager) {
-        super(manager);
+    private LWKeyboardFocusManagerPeer() {
     }
 
     @Override
-    public Window getCurrentFocusedWindow() {
-        synchronized (lock) {
-            return (focusedWindow != null) ? (Window)focusedWindow.getTarget() : null;
-        }
-    }
-
-    @Override
-    public Component getCurrentFocusOwner() {
-        synchronized (lock) {
-            return (focusOwner != null) ? focusOwner.getTarget() : null;
-        }
-    }
-
-    @Override
-    public void setCurrentFocusOwner(Component comp) {
-        synchronized (lock) {
-            focusOwner = (comp != null) ? (LWComponentPeer)comp.getPeer() : null;
-        }
-    }
-
-    void setFocusedWindow(LWWindowPeer peer) {
+    public void setCurrentFocusedWindow(Window win) {
         LWWindowPeer from, to;
 
-        synchronized (lock) {
-            if (focusedWindow == peer) {
+        synchronized (this) {
+            if (focusedWindow == win) {
                 return;
             }
 
-            from = focusedWindow;
-            to = peer;
+            from = (LWWindowPeer)LWToolkit.targetToPeer(focusedWindow);
+            to = (LWWindowPeer)LWToolkit.targetToPeer(win);
 
-            focusedWindow = peer;
+            focusedWindow = win;
         }
 
         if (from != null) {
@@ -107,21 +66,24 @@
         }
     }
 
-    LWWindowPeer getFocusedWindow() {
-        synchronized (lock) {
+    @Override
+    public Window getCurrentFocusedWindow() {
+        synchronized (this) {
             return focusedWindow;
         }
     }
 
-    void setFocusOwner(LWComponentPeer peer) {
-        synchronized (lock) {
-            focusOwner = peer;
+    @Override
+    public Component getCurrentFocusOwner() {
+        synchronized (this) {
+            return focusOwner;
         }
     }
 
-    LWComponentPeer getFocusOwner() {
-        synchronized (lock) {
-            return focusOwner;
+    @Override
+    public void setCurrentFocusOwner(Component comp) {
+        synchronized (this) {
+            focusOwner = comp;
         }
     }
 }
--- a/src/macosx/classes/sun/lwawt/LWRepaintArea.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/lwawt/LWRepaintArea.java	Tue Jun 25 17:20:25 2013 -0700
@@ -58,9 +58,6 @@
 
     private static void flushBuffers(final LWComponentPeer peer) {
         if (peer != null) {
-            if (!peer.getWindowPeerOrSelf().isOpaque()) {
-                peer.flushOffscreenGraphics();
-            }
             peer.flushOnscreenGraphics();
         }
     }
--- a/src/macosx/classes/sun/lwawt/LWTextAreaPeer.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/lwawt/LWTextAreaPeer.java	Tue Jun 25 17:20:25 2013 -0700
@@ -129,16 +129,6 @@
     }
 
     @Override
-    public void setText(final String l) {
-        // Please note that we do not want to post an event
-        // if TextArea.setText() replaces an empty text by an empty text,
-        // that is, if component's text remains unchanged.
-        if (!l.isEmpty() || getTextComponent().getDocument().getLength() != 0) {
-            super.setText(l);
-        }
-    }
-
-    @Override
     public void replaceRange(final String text, final int start,
                              final int end) {
         synchronized (getDelegateLock()) {
--- a/src/macosx/classes/sun/lwawt/LWTextComponentPeer.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/lwawt/LWTextComponentPeer.java	Tue Jun 25 17:20:25 2013 -0700
@@ -124,7 +124,7 @@
     }
 
     @Override
-    public void setText(final String l) {
+    public final void setText(final String l) {
         synchronized (getDelegateLock()) {
             // JTextArea.setText() posts two different events (remove & insert).
             // Since we make no differences between text events,
--- a/src/macosx/classes/sun/lwawt/LWToolkit.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/lwawt/LWToolkit.java	Tue Jun 25 17:20:25 2013 -0700
@@ -210,9 +210,9 @@
      * and DialogPeer interfaces.
      */
     private LWWindowPeer createDelegatedPeer(Window target, PlatformComponent platformComponent,
-                                             PlatformWindow platformWindow)
+                                             PlatformWindow platformWindow, LWWindowPeer.PeerType peerType)
     {
-        LWWindowPeer peer = new LWWindowPeer(target, platformComponent, platformWindow);
+        LWWindowPeer peer = new LWWindowPeer(target, platformComponent, platformWindow, peerType);
         targetCreatedPeer(target, peer);
         peer.initialize();
         return peer;
@@ -222,22 +222,29 @@
     public WindowPeer createWindow(Window target) {
         PlatformComponent platformComponent = createPlatformComponent();
         PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.SIMPLEWINDOW);
-        return createDelegatedPeer(target, platformComponent, platformWindow);
+        return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.SIMPLEWINDOW);
     }
 
     @Override
     public FramePeer createFrame(Frame target) {
         PlatformComponent platformComponent = createPlatformComponent();
         PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.FRAME);
-        return createDelegatedPeer(target, platformComponent, platformWindow);
+        return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.FRAME);
     }
 
     public LWWindowPeer createEmbeddedFrame(CEmbeddedFrame target) {
         PlatformComponent platformComponent = createPlatformComponent();
-        PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.EMBEDDEDFRAME);
-        return createDelegatedPeer(target, platformComponent, platformWindow);
+        PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.EMBEDDED_FRAME);
+        return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.EMBEDDED_FRAME);
     }
 
+    public LWWindowPeer createEmbeddedFrame(CViewEmbeddedFrame target) {
+        PlatformComponent platformComponent = createPlatformComponent();
+        PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.VIEW_EMBEDDED_FRAME);
+        return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.VIEW_EMBEDDED_FRAME);
+    }
+
+
     CPrinterDialogPeer createCPrinterDialog(CPrinterDialog target) {
         PlatformComponent platformComponent = createPlatformComponent();
         PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.DIALOG);
@@ -254,7 +261,7 @@
 
         PlatformComponent platformComponent = createPlatformComponent();
         PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.DIALOG);
-        return createDelegatedPeer(target, platformComponent, platformWindow);
+        return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.DIALOG);
     }
 
     @Override
@@ -415,8 +422,8 @@
     }
 
     @Override
-    public KeyboardFocusManagerPeer createKeyboardFocusManagerPeer(KeyboardFocusManager manager) {
-        return LWKeyboardFocusManagerPeer.getInstance(manager);
+    public KeyboardFocusManagerPeer getKeyboardFocusManagerPeer() {
+        return LWKeyboardFocusManagerPeer.getInstance();
     }
 
     @Override
@@ -524,12 +531,6 @@
         postEvent(targetToAppContext(event.getSource()), event);
     }
 
-    // use peer's back buffer to implement non-opaque windows.
-    @Override
-    public boolean needUpdateWindow() {
-        return true;
-    }
-
     @Override
     public void grab(Window w) {
         if (w.getPeer() != null) {
--- a/src/macosx/classes/sun/lwawt/LWWindowPeer.java	Mon Jun 24 10:32:19 2013 +0200
+++ b/src/macosx/classes/sun/lwawt/LWWindowPeer.java	Tue Jun 25 17:20:25 2013 -0700
@@ -37,22 +37,24 @@
 import sun.java2d.*;
 import sun.java2d.loops.Blit;
 import sun.java2d.loops.CompositeType;
+import sun.java2d.pipe.Region;
 import sun.util.logging.PlatformLogger;
 
 public class LWWindowPeer
     extends LWContainerPeer<Window, JComponent>
-    implements WindowPeer, FramePeer, DialogPeer, FullScreenCapable, PlatformEventNotifier
+    implements FramePeer, DialogPeer, FullScreenCapable, DisplayChangedListener, PlatformEventNotifier
 {
     public static enum PeerType {
         SIMPLEWINDOW,
         FRAME,
         DIALOG,
-        EMBEDDEDFRAME
+        EMBEDDED_FRAME,
+        VIEW_EMBEDDED_FRAME
     }
 
     private static final PlatformLogger focusLog = PlatformLogger.getLogger("sun.lwawt.focus.LWWindowPeer");
 
-    private PlatformWindow platformWindow;
+    private final PlatformWindow platformWindow;
 
     // Window bounds reported by the native system (as opposed to
     // regular bounds inherited from LWComponentPeer which are
@@ -109,6 +111,12 @@
 
     private volatile boolean skipNextFocusChange;
 
+    private static final Color nonOpaqueBackground = new Color(0, 0, 0, 0);
+
+    private volatile boolean textured;
+
+    private final PeerType peerType;
+
     private final SecurityWarningWindow warningWindow;
 
     /**
@@ -119,10 +127,11 @@
     private LWWindowPeer blocker;
 
     public LWWindowPeer(Window target, PlatformComponent platformComponent,
-                        PlatformWindow platformWindow)
+                        PlatformWindow platformWindow, PeerType peerType)
     {
         super(target, platformComponent);
         this.platformWindow = platformWindow;
+        this.peerType = peerType;
 
         Window owner = target.getOwner();
         LWWindowPeer ownerPeer = (owner != null) ? (LWWindowPeer)owner.getPeer() : null;
@@ -184,6 +193,11 @@
         updateAlwaysOnTopState();
         updateMinimumSize();
 
+        final Shape shape = getTarget().getShape();
+        if (shape != null) {
+            applyShape(Region.getInstance(shape, null));
+        }
+
         final float opacity = getTarget().getOpacity();
         if (opacity < 1.0f) {
             setOpacity(opacity);
@@ -193,8 +207,9 @@
 
         updateInsets(platformWindow.getInsets());
         if (getSurfaceData() == null) {
-            replaceSurfaceData();
+            replaceSurfaceData(false);
         }
+        activateDisplayListener();
     }
 
     // Just a helper method
@@ -216,6 +231,7 @@
 
     @Override
     protected void disposeImpl() {
+        deactivateDisplayListener();
         SurfaceData oldData = getSurfaceData();
         synchronized (surfaceDataLock){
             surfaceData = null;
@@ -229,7 +245,6 @@
         if (warningWindow != null) {
             warningWindow.dispose();
         }
-
         destroyBuffers();
         platformWindow.dispose();
         super.disposeImpl();
@@ -245,8 +260,7 @@
         // TODO: update graphicsConfig, see 4868278
         platformWindow.setVisible(visible);
         if (isSimpleWindow()) {
-            LWKeyboardFocusManagerPeer manager = LWKeyboardFocusManagerPeer.
-                getInstance(getAppContext());
+            KeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance();
 
             if (visible) {
                 if (!getTarget().isAutoRequestFocus()) {
@@ -254,7 +268,7 @@
                 } else {
                     requestWindowFocus(CausedFocusEvent.Cause.ACTIVATION);
                 }
-            } else if (manager.getCurrentFocusedWindow() == getTarget()) {
+            } else if (kfmPeer.getCurrentFocusedWindow() == getTarget()) {
                 // Transfer focus to the owner.
                 LWWindowPeer owner = getOwnerFrameDialog(LWWindowPeer.this);
                 if (owner != null) {
@@ -302,7 +316,7 @@
             // "buffer", that's why numBuffers - 1
             assert numBuffers > 1;
 
-            replaceSurfaceData(numBuffers - 1, caps);
+            replaceSurfaceData(numBuffers - 1, caps, false);
         } catch (InvalidPipeException z) {
             throw new AWTException(z.toString());
         }
@@ -353,6 +367,11 @@
 
     @Override
     public void setBounds(int x, int y, int w, int h, int op) {
+
+        if((op & NO_EMBEDDED_CHECK) == 0 && getPeerType() == PeerType.VIEW_EMBEDDED_FRAME) {
+            return;
+        }
+
         if ((op & SET_CLIENT_SIZE) != 0) {
             // SET_CLIENT_SIZE is only applicable to window peers, so handle it here
             // instead of pulling 'insets' field up to LWComponentPeer
@@ -495,19 +514,44 @@
     public final void setOpaque(final boolean isOpaque) {
         if (this.isOpaque != isOpaque) {
             this.isOpaque = isOpaque;
-            getPlatformWindow().setOpaque(isOpaque);
-            replaceSurfaceData();
-            repaintPeer();
+            updateOpaque();
         }
     }
 
-    public final boolean isOpaque() {
-        return isOpaque;
+    private void updateOpaque() {
+        getPlatformWindow().setOpaque(!isTranslucent());
+        replaceSurfaceData(false);
+        repaintPeer();
     }
 
     @Override
     public void updateWindow() {
-        flushOffscreenGraphics();
+    }
+
+    public final boolean isTextured() {
+        return textured;
+    }
+
+    public final void setTextured(final boolean isTextured) {
+        textured = isTextured;
+    }
+
+    public final boolean isTranslucent() {
+        synchronized (getStateLock()) {
+            /*
+             * Textured window is a special case of translucent window.
+             * The difference is only in nswindow background. So when we set
+             * texture property our peer became fully translucent. It doesn't
+             * fill background, create non opaque backbuffers and layer etc.
+             */
+            return !isOpaque || isShaped() || isTextured();
+        }
+    }
+
+    @Override
+    final void applyShapeImpl(final Region shape) {
+        super.applyShapeImpl(shape);
+        updateOpaque();
     }
 
     @Override
@@ -612,31 +656,25 @@
     }
 
     /**
-     * Called by the delegate when any part of the window should be repainted.
+     * Called by the {@code PlatformWindow} when any part of the window should
+     * be repainted.
      */
     @Override
-    public void notifyExpose(final int x, final int y, final int w, final int h) {
-        // TODO: there's a serious problem with Swing here: it handles
-        // the exposition internally, so SwingPaintEventDispatcher always
-        // return null from createPaintEvent(). However, we flush the
-        // back buffer here unconditionally, so some flickering may appear.
-        // A possible solution is to split postPaintEvent() into two parts,
-        // and override that part which is only called after if
-        // createPaintEvent() returned non-null value and flush the buffer
-        // from the overridden method
-        flushOnscreenGraphics();
-        repaintPeer(new Rectangle(x, y, w, h));
+    public final void notifyExpose(final Rectangle r) {
+        repaintPeer(r);
     }
 
     /**
-     * Called by the delegate when this window is moved/resized by user.
-     * There's no notifyReshape() in LWComponentPeer as the only
-     * components which could be resized by user are top-level windows.
+     * Called by the {@code PlatformWindow} when this window is moved/resized by
+     * user or window insets are changed. There's no notifyReshape() in
+     * LWComponentPeer as the only components which could be resized by user are
+     * top-level windows.
      */
     @Override
     public final void notifyReshape(int x, int y, int w, int h) {
-        boolean moved = false;
-        boolean resized = false;
+        final boolean moved;
+        final boolean resized;
+        final boolean invalid = updateInsets(platformWindow.getInsets());
         synchronized (getStateLock()) {
             moved = (x != sysX) || (y != sysY);
             resized = (w != sysW) || (h != sysH);
@@ -647,25 +685,25 @@
         }
 
         // Check if anything changed
-        if (!moved && !resized) {
+        if (!moved && !resized && !invalid) {
             return;
         }
         // First, update peer's bounds
         setBounds(x, y, w, h, SET_BOUNDS, false, false);
 
         // Second, update the graphics config and surface data
-        checkIfOnNewScreen();
-        if (resized) {
+        final boolean isNewDevice = updateGraphicsDevice();
+        if (resized || isNewDevice) {
             replaceSurfaceData();
-            flushOnscreenGraphics();
         }
 
-        // Third, COMPONENT_MOVED/COMPONENT_RESIZED events
-        if (moved) {
+        // Third, COMPONENT_MOVED/COMPONENT_RESIZED/PAINT events
+        if (moved || invalid) {
             handleMove(x, y, true);
         }
-        if (resized) {
-            handleResize(w, h,true);
+        if (resized || invalid || isNewDevice) {
+            handleResize(w, h, true);
+            repaintPeer();
         }
 
         repositionSecurityWarning();
@@ -676,7 +714,20 @@
                                                getFont());
         if (g != null) {
             try {
-                g.clearRect(0, 0, w, h);
+                if (g instanceof Graphics2D) {
+                    ((Graphics2D) g).setComposite(AlphaComposite.Src);
+                }
+                if (isTranslucent()) {
+                    g.setColor(nonOpaqueBackground);
+                    g.fillRect(0, 0, w, h);
+                }
+                if (!isTextured()) {
+                    if (g instanceof SunGraphics2D) {
+                        ((SunGraphics2D) g).constrain(0, 0, w, h, getRegion());
+                    }
+                    g.setColor(getBackground());
+                    g.fillRect(0, 0, w, h);
+                }
             } finally {
                 g.dispose();
             }
@@ -689,8 +740,9 @@
     }
 
     @Override
-    public void notifyActivation(boolean activation) {
-        changeFocusedWindow(activation);
+    public void notifyActivation(boolean activation, LWWindowPeer opposite) {
+        Window oppositeWindow = (opposite == null)? null : opposite.getTarget();
+        changeFocusedWindow(activation, oppositeWindow);
     }
 
     // MouseDown in non-client area
@@ -735,48 +787,40 @@
                     Point lp = lastMouseEventPeer.windowToLocal(x, y,
                                                                 lastWindowPeer);
                     Component target = lastMouseEventPeer.getTarget();
-                    postMouseEnteredExitedEvent(target, MouseEvent.MOUSE_EXITED,
-                            when, modifiers, lp,
+                    postMouseEnteredExitedEvent(target, id, when, modifiers, lp,
                             screenX, screenY, clickCount, popupTrigger, button);
                 }
-
                 lastMouseEventPeer = null;
             }
         } else {
             if (targetPeer != lastMouseEventPeer) {
-
-                if (id != MouseEvent.MOUSE_DRAGGED || lastMouseEventPeer == null) {
-                    // lastMouseEventPeer may be null if mouse was out of Java windows
-                    if (lastMouseEventPeer != null && lastMouseEventPeer.isEnabled()) {
-                        // Sometimes, MOUSE_EXITED is not sent by delegate (or is sent a bit
-                        // later), in which case lastWindowPeer is another window
-                        if (lastWindowPeer != this) {
-                            Point oldp = lastMouseEventPeer.windowToLocal(x, y, lastWindowPeer);
-                            // Additionally translate from this to lastWindowPeer coordinates
-                            Rectangle lr = lastWindowPeer.getBounds();
-                            oldp.x += r.x - lr.x;
-                            oldp.y += r.y - lr.y;
-                            Component target = lastMouseEventPeer.getTarget();
-                            postMouseEnteredExitedEvent(target, MouseEvent.MOUSE_EXITED,
-                                    when, modifiers, oldp,
-                                    screenX, screenY, clickCount, popupTrigger, button);
-                        } else {
-                            Point oldp = lastMouseEventPeer.windowToLocal(x, y, this);
-                            Component target = lastMouseEventPeer.getTarget();
-                            postMouseEnteredExitedEvent(target, MouseEvent.MOUSE_EXITED,
-                                    when, modifiers, oldp,
-                                    screenX, screenY, clickCount, popupTrigger, button);
-                        }
-                    }
-                    if (targetPeer != null && targetPeer.isEnabled() && id != MouseEvent.MOUSE_ENTERED) {
-                        Point newp = targetPeer.windowToLocal(x, y, curWindowPeer);
-                        Component target = targetPeer.getTarget();
-                        postMouseEnteredExitedEvent(target, MouseEvent.MOUSE_ENTERED,
-                                when, modifiers, newp,
+                // lastMouseEventPeer may be null if mouse was out of Java windows
+                if (lastMouseEventPeer != null && lastMouseEventPeer.isEnabled()) {
+                    // Sometimes, MOUSE_EXITED is not sent by delegate (or is sent a bit
+                    // later), in which case lastWindowPeer is another window
+                    if (lastWindowPeer != this) {
+                        Point oldp = lastMouseEventPeer.windowToLocal(x, y, lastWindowPeer);
+                        // Additionally translate from this to lastWindowPeer coordinates
+                        Rectangle lr = lastWindowPeer.getBounds();
+                        oldp.x += r.x - lr.x;
+                        oldp.y += r.y - lr.y;
+                        Component target = lastMouseEventPeer.getTarget();
+                        postMouseEnteredExitedEvent(target, id, when, modifiers, oldp,
+                                screenX, screenY, clickCount, popupTrigger, button);
+                    } else {
+                        Point oldp = lastMouseEventPeer.windowToLocal(x, y, this);
+                        Component target = lastMouseEventPeer.getTarget();
+                        postMouseEnteredExitedEvent(target, id, when, modifiers, oldp,
                                 screenX, screenY, clickCount, popupTrigger, button);
                     }
                 }
                 lastMouseEventPeer = targetPeer;
+                if (targetPeer != null && targetPeer.isEnabled() && id != MouseEvent.MOUSE_ENTERED) {
+                    Point newp = targetPeer.windowToLocal(x, y, curWindowPeer);
+                    Component target = targetPeer.getTarget();
+                    postMouseEnteredExitedEvent(target, id, when, modifiers, newp,
+                            screenX, screenY, clickCount, popupTrigger, button);
+                }
             }
             // TODO: fill "bdata" member of AWTEvent
 
@@ -845,7 +889,8 @@
                     postMouseEnteredExitedEvent(targetPeer.getTarget(), id,
                             when, modifiers, lp, screenX, screenY,
                             clickCount, popupTrigger, button);
-                }   else {
+
+                } else {
                     MouseEvent event = new MouseEvent(targetPeer.getTarget(), id,
                                                   when, modifiers, lp.x, lp.y,
                                                   screenX, screenY, clickCount,
@@ -914,25 +959,33 @@
     public void notifyKeyEvent(int id, long when, int modifiers,
                                int keyCode, char keyChar, int keyLocation)
     {
-        LWComponentPeer focusOwner =
-            LWKeyboardFocusManagerPeer.getInstance(getAppContext()).
-                getFocusOwner();
+        LWKeyboardFocusManagerPeer kfmPeer = LWKeyboardFocusManagerPeer.getInstance();
+        Component focusOwner = kfmPeer.getCurrentFocusOwner();
 
-        // Null focus owner may receive key event when
-        // application hides the focused window upon ESC press
-        // (AWT transfers/clears the focus owner) and pending ESC release
-        // may come to already hidden window. This check eliminates NPE.
-        if (focusOwner != null) {
-            KeyEvent event =
-                new KeyEvent(focusOwner.getTarget(), id, when, modifiers,
-                             keyCode, keyChar, keyLocation);
-            focusOwner.postEvent(event);
+        if (focusOwner == null) {
+            focusOwner = kfmPeer.getCurrentFocusedWindow();
+            if (focusOwner == null) {
+                focusOwner = this.getTarget();
+            }
         }
+        postEvent(new KeyEvent(focusOwner, id, when, modifiers, keyCode, keyChar, keyLocation));
     }
 
 
     // ---- UTILITY METHODS ---- //
 
+    private void activateDisplayListener() {
+        final GraphicsEnvironment ge =
+                GraphicsEnvironment.getLocalGraphicsEnvironment();
+        ((SunGraphicsEnvironment) ge).addDisplayChangedListener(this);
+    }
+
+    private void deactivateDisplayListener() {
+        final GraphicsEnvironment ge =
+                GraphicsEnvironment.getLocalGraphicsEnvironment();
+        ((SunGraphicsEnvironment) ge).removeDisplayChangedListener(this);
+    }
+
     private void postWindowStateChangedEvent(int newWindowState) {
         if (getTarget() instanceof Frame) {
             AWTAccessor.getFrameAccessor().setExtendedState(
@@ -976,7 +1029,7 @@
             }
             // If window's graphics config is changed from the app code, the
             // config correspond to the same device as before; when the window
-            // is moved by user, graphicsDevice is updated in checkIfOnNewScreen().
+            // is moved by user, graphicsDevice is updated in notifyReshape().
             // In either case, there's nothing to do with screenOn here
             graphicsConfig = gc;
         }
@@ -984,54 +1037,42 @@
         return true;
     }
 
-    private void checkIfOnNewScreen() {
+    /**
+     * Returns true if the GraphicsDevice has been changed, false otherwise.
+     */
+    public boolean updateGraphicsDevice() {
         GraphicsDevice newGraphicsDevice = platformWindow.getGraphicsDevice();
         synchronized (getStateLock()) {
             if (graphicsDevice == newGraphicsDevice) {
-                return;
+                return false;
             }
             graphicsDevice = newGraphicsDevice;
         }
 
-        // TODO: DisplayChangedListener stuff
         final GraphicsConfiguration newGC = newGraphicsDevice.getDefaultConfiguration();
 
-        if (!setGraphicsConfig(newGC)) return;
+        if (!setGraphicsConfig(newGC)) return false;
 
         SunToolkit.executeOnEventHandlerThread(getTarget(), new Runnable() {
             public void run() {
                 AWTAccessor.getComponentAccessor().setGraphicsConfiguration(getTarget(), newGC);
             }
         });
+        return true;
     }
 
-    /**
-     * This method returns a back buffer Graphics to render all the
-     * peers to. After the peer is painted, the back buffer contents
-     * should be flushed to the screen. All the target painting
-     * (Component.paint() method) should be done directly to the screen.
-     */
-    protected final Graphics getOffscreenGraphics(Color fg, Color bg, Font f) {
-        final Image bb = getBackBuffer();
-        if (bb == null) {
-            return null;
-        }
-        if (fg == null) {
-            fg = SystemColor.windowText;
-        }
-        if (bg == null) {
-            bg = SystemColor.window;
-        }
-        if (f == null) {
-            f = DEFAULT_FONT;
-        }
-        final Graphics2D g = (Graphics2D) bb.getGraphics();
-        if (g != null) {
-            g.setColor(fg);
-            g.setBackground(bg);
-            g.setFont(f);
-        }
-        return g;
+    @Override
+    public final void displayChanged() {
+        updateGraphicsDevice();
+        // Replace surface unconditionally, because internal state of the
+        // GraphicsDevice could be changed.
+        replaceSurfaceData();
+        repaintPeer();
+    }
+
+    @Override
+    public final void paletteChanged() {
+        // components do not need to react to this event.
     }
 
     /*
@@ -1044,11 +1085,16 @@
     }
 
     private void replaceSurfaceData() {
-        replaceSurfaceData(backBufferCount, backBufferCaps);
+        replaceSurfaceData(true);
+    }
+
+    private void replaceSurfaceData(boolean blit) {
+        replaceSurfaceData(backBufferCount, backBufferCaps, blit);
     }
 
     private void replaceSurfaceData(int newBackBufferCount,
-                                                 BufferCapabilities newBackBufferCaps) {
+                                    BufferCapabilities newBackBufferCaps,
+                                    boolean blit) {
         synchronized (surfaceDataLock) {
             final SurfaceData oldData = getSurfaceData();
             surfaceData = platformWindow.replaceSurfaceData();
@@ -1061,7 +1107,10 @@
             if (getSurfaceData() != null && oldData != getSurfaceData()) {
                 clearBackground(size.width, size.height);
             }
-            blitSurfaceData(oldData, getSurfaceData());
+
+            if (blit) {
+                blitSurfaceData(oldData, getSurfaceData());
+            }
 
             if (oldData != null && oldData != getSurfaceData()) {
                 // TODO: drop oldData for D3D/WGL pipelines
@@ -1076,11 +1125,18 @@
                 Graphics g = backBuffer.getGraphics();
                 try {
                     Rectangle r = getBounds();
-                    g.setColor(getBackground());
                     if (g instanceof Graphics2D) {
                         ((Graphics2D) g).setComposite(AlphaComposite.Src);
                     }
+                    g.setColor(nonOpaqueBackground);
                     g.fillRect(0, 0, r.width, r.height);
+                    if (g instanceof SunGraphics2D) {
+                       ((SunGraphics2D) g).constrain(0, 0, r.width, r.height, getRegion());
+                    }
+                    if (!isTextured()) {
+                        g.setColor(getBackground());
+                        g.fillRect(0, 0, r.width, r.height);
+                    }
                     if (oldBB != null) {
                         // Draw the old back buffer to the new one
                         g.drawImage(oldBB, 0, 0, null);
@@ -1091,6 +1147,7 @@
                 }
             }
         }
+        flushOnscreenGraphics();
     }
 
     private void blitSurfaceData(final SurfaceData src, final SurfaceData dst) {
@@ -1098,14 +1155,15 @@
         if (src != dst && src != null && dst != null
             && !(dst instanceof NullSurfaceData)
             && !(src instanceof NullSurfaceData)
-            && src.getSurfaceType().equals(dst.getSurfaceType())) {
-            final Rectangle size = getSize();
+            && src.getSurfaceType().equals(dst.getSurfaceType())
+            && src.getDefaultScale() == dst.getDefaultScale()) {
+            final Rectangle size = src.getBounds();
             final Blit blit = Blit.locate(src.getSurfaceType(),
                                           CompositeType.Src,
                                           dst.getSurfaceType());
             if (blit != null) {
-                blit.Blit(src, dst, ((Graphics2D) getGraphics()).getComposite(),
-                          getRegion(), 0, 0, 0, 0, size.width, size.height);
+                blit.Blit(src, dst, AlphaComposite.Src, null, 0, 0, 0, 0,
+                          size.width, size.height);
             }
         }
     }
@@ -1118,27 +1176,21 @@
         return backBufferCaps;
     }
 
-    /*
-     * Request the window insets from the delegate and compares it
-     * with the current one. This method is mostly called by the
-     * delegate, e.g. when the window state is changed and insets
-     * should be recalculated.
-     *
+    /**
+     * Request the window insets from the delegate and compares it with the
+     * current one. This method is mostly called by the delegate, e.g. when the
+     * window state is changed and insets should be recalculated.
+     * <p/>
      * This method may be called on the toolkit thread.
      */
-    public boolean updateInsets(Insets newInsets) {
-        boolean changed = false;
+    public final boolean updateInsets(final Insets newInsets) {
         synchronized (getStateLock()) {
-            changed = (insets.equals(newInsets));
+            if (insets.equals(newInsets)) {
+                return false;
+            }
             insets = newInsets;
         }
-
-        if (changed) {
-            replaceSurfaceData();
-            repaintPeer();
-        }
-
-        return changed;
+        return true;
     }
 
     public static LWWindowPeer getWindowUnderCursor() {
@@ -1170,6 +1222,9 @@
         Window currentActive = KeyboardFocusManager.
             getCurrentKeyboardFocusManager().getActiveWindow();
 
+        Window opposite = LWKeyboardFocusManagerPeer.getInstance().
+            getCurrentFocusedWindow();
+
         // Make the owner active window.
         if (isSimpleWindow()) {
             LWWindowPeer owner = getOwnerFrameDialog(this);
@@ -1196,16 +1251,17 @@
             }
 
             // DKFM will synthesize all the focus/activation events correctly.
-            changeFocusedWindow(true);
+            changeFocusedWindow(true, opposite);
             return true;
 
         // In case the toplevel is active but not focused, change focus directly,
         // as requesting native focus on it will not have effect.
         } else if (getTarget() == currentActive && !getTarget().hasFocus()) {
 
-            changeFocusedWindow(true);
+            changeFocusedWindow(true, opposite);
             return true;
         }
+
         return platformWindow.requestWindowFocus();
     }